比特币算法软件 比特币?读到这里就够了!(中):算法很神奇

币种 3周前 (06-18) 13次浏览 0个评论

本文将介绍比特币所涉及的算法。由于这篇文章比较高能,白皮大哥先预测下,下一篇给大家带来低能彩蛋:“币圈小白?快来看币圈问快答吧!”。

白皮哥知道大部分朋友看到“算法”已经晕了,所以只问两个问题:

在钱包里:

永远不要告诉别人你的私钥,因为私钥=货币!

挖矿过程类似于做一个因式分解问题,例如:56 = 2 * 2 * 2 * 7。它的特点是只能在暴力循环中找到答案(效率低),但是一旦找到了解决方案,执行反向检查(2 * 2 * 2 * 7 = 56))非常方便。

好了,打酱油的人都可以下台了。以下内容为

你的。

或者这张图:

这个过程称为非对称加密,并不是区块链独有的。它在很多很多场合都有应用(比如浏览器地址栏中的https协议)。具体来说,下图所示的椭圆曲线算法和哈希函数主要应用在区块链技术中。

椭圆曲线算法

详解比特币挖矿算法_比特币算法软件_比特币算法软件

椭圆曲线算法有什么用?它可以让每一笔交易都非常容易验证真实性。

例如:

1.是一个矿工,他挖了1个比特币(上一期讲过,交易),然后有一个交易0,它生成了一个锁脚本,只有这个锁脚本是解锁的,这个1比特币可以花费。

2. 这时候如果他想把这个比特币转给addr,就新建一个交易1,这个交易1需要有一个进出账户的地址,并生成一个addr锁脚本,就是类似于上一个。但最重要的是要有交易0的解锁脚本,因为这个比特币是从交易0衍生而来的。用自己的私钥生成公钥和签名,然后生成交易0的解锁脚本放上去进入交易 1。将交易 1 广播到整个网络。

3. 任何收到的矿工节点都会预先计算解锁脚本,这需要验证三件事:

交易1的传出公钥与解锁脚本公钥相同;

数字签名用于交易;

数字签名由交易1的传出公钥对应的私钥签名比特币算法软件

详解比特币挖矿算法_比特币算法软件_比特币算法软件

如果全部通过,矿工节点将开始挖矿。最快的矿工将交易写入区块链,addr 钱包应用程序会发现 1 个比特币已记入其地址。addr 花费 0.005 比特币从 cafe 购买咖啡的过程类似。

可以注意到,得益于椭圆曲线算法,这里只有签名和公钥在网络上传播,私钥受到严密保护,但任何接收者都可以快速验证交易来源正确且拥有足够的币.

哈希函数

散列函数应用更广泛。它是一种将任意长度的数据转换为字符串的算法。只要输入不同,输出必然不同。它是一种数字指纹。当你下载电影时,电脑需要判断下载的文件是否完整,你可以使用哈希函数来检查你机器中电影的哈希值是否和完整版一样。

区块链中,它用于计算比特币地址的公钥(SHA256 和双哈希)和挖矿时。钱包在前面的例子中已经讲清楚了,我们用挖矿过程来描述魔法哈希函数(SHA256).

之前说过,在挖矿过程中,矿工收到一笔交易后,首先验证交易是否有效,如果有效则开始挖矿计算,那么挖矿的流程是怎样的呢?首先,矿工将这个有效的交易放入区块包中。矿工的目标是利用哈希函数计算打包的区块,使输出的哈希值小于某个值目标:

SHA256(块)

你可能会问,函数本身(SHA256,一种哈希函数)和块(block)是确定性的,如果计算量大于目标怎么办?这里不得不说,区块中除了打包的数千笔交易外,还有一个随机值nonce。计算机可以不断尝试不同的nonce值来获得不同的hash,因为block中只有一点点数据需要修改(就像电影一样)。文件中丢失了一个帧),哈希值变化很大,例如:

详解比特币挖矿算法_比特币算法软件_比特币算法软件

我是中本聪 =>…

我是中本聪 =>…

我是中本聪 =>…

我是中本聪 =>…

如果我需要哈希值的前 6 位,那么矿工的计算机会不断循环查找这个随机值,最后:

我是中本聪 =>…

宣布采矿成功。

比特币算法软件_比特币算法软件_详解比特币挖矿算法

因为比特币的设计是10分钟左右挖一个块,但是全球算力变化,所以比特币网络每隔一段时间就会通过修改0前面的位数来调整难度。越多,就越困难。

虽然算法的概念很难理解(这里还是省略了数学原理),但是当你理解它的时候,你会感叹它的巧妙和美丽。正是区块链中的椭圆曲线、哈希算法和其他算法共同创造了区块链复杂的信任魔法。

如果您不是开发人员,我们下次再见。

以下是补充问题!下面我们来介绍一下区块链中涉及的其他一些算法相关的问题:

1. 公私越和地址格式:

公钥:公钥是私钥与椭圆曲线相乘得到的,所以实际上是曲线上的一个点,坐标为xy。因此,有两种格式:一种以04开头,然后直接拼接坐标04xy,称为未压缩格式(130位);另一种是因为y可以从x中推断出来,所以只保留x和y的正负。编号信息,称为压缩格式(66 位)。

私钥:私钥是随机生成的,有二进制、十六进制格式,但是太长无法直接显示。为了减少长度,使用算法(即去掉0、O、l、I和10个数字的大小写字母,26*2+10-4=58)压缩,得到压缩后的WIF格式。对应未压缩的公钥直接称为WIF格式,对应的压缩格式公钥称为压缩格式私钥(其实就是WIF私钥被压缩了,这里的压缩是指它对应于压缩的公钥)。

地址:((SHA256(公钥)))=地址

比特币算法软件_详解比特币挖矿算法_比特币算法软件

也就是先通过SHA256哈希计算,得到结果再输入哈希,得到一个20位的哈希值,然后再次编码得到比特币地址。

注意这里的算法不是单向的,而是可以双向解码,类似于Base64编码,也就是很多小图片会被编码成一串字符串保存在网页中,然后交给浏览器将图片解码并显示给用户。.

2. 默克尔树

前面椭圆曲线的例子说addr钱包在区块链上发现了一笔交易(交易1)被输入到了自己的地址,这是怎么做到的呢?addr首先告诉比特币网络,它只是为了它的address. 交易有兴趣,这叫布隆过滤器,一旦有符合条件的交易,其他节点会将交易信息推送到addr(message)。但是addr是一个SPV钱包(见上一篇),它本身并不是完整的区块链,如何验证呢?需要验证交易1在某个区块中,并且这个区块在区块链上。

区块很容易在区块链上追踪。只要消息中存在前一个区块的信息,addr就可以一路回溯比特币算法软件,证明这个区块确实在链上。但是,每个区块有数千笔交易,如果整个区块的大小太大,则需要遍历。这里 SPV 钱包采用 Merkle 树算法。

Merkle 树是哈希二叉树:

它不断地对区块中每笔交易的哈希值两两进行哈希运算,最终得到一个默克尔根,并将其存储在区块中。要证明一个交易(比如HK)在这个区块中,只需要它经过的路径的hash值(图中蓝底框),通过逐层hash计算,如果最终的root可以在 Merkle 根对上,交易在区块中。因此,只要消息中有 Merkle root 和 Merkle path,SPV 钱包就可以检查输入账户的交易是否在某个区块中,然后通过回溯验证该区块在区块链上,以确认该区块是否在区块链上。输入的交易在链上。这将来自网络的 SPV 钱包请求的大小从 1M 减少到 1K。

下一篇白皮哥给大家带来:币圈小白?快来看币圈问快答吧!

欢迎在本文评论区留言,提供你的意见。将本文转发给志同道合的朋友,共同学习、交流、成长。

如果您想投资数字货币,请点击公众号下方菜单中的交易平台,选择平台进入。

或直接发送“投资”到后台,您将收到投资条目。

挖矿网Ethos中文站简单易用的挖矿系统,为挖矿产业提供教程软件以及矿机测评交易信息等,挖矿网各种数字货币挖矿收益对比计算,挖矿网介绍挖矿的工具,以及矿场的最新消息等。http://www.ethospool.com/

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址