比特币居然是这样挖出来的(高能预警,全程烧脑)
传统的挖矿比如黄金,需要准备铁锹、钻机、灯、矿车等一系列设备,才能开始工作。
比特币生产被称为挖矿,是因为生产过程很像挖黄金。挖比特币也需要准备一系列的工作,比如先构建一个区块头。
△区块头长度
字段
描述
4字节
版本
版本号,就是第几个版本
32字节
前区块哈希
可以在上一个区块找到
32字节
Merkle根
由区块中所有的交易组成的merkle树的哈希值
4字节
时间戳
由Unix纪元1970.1.1开始到当下秒数,记录该区块生产的时间
4字节
难度目标
挖矿标准的核对目标
4字节
Nonce
挖矿就是找到该随机数
旷工在填写好这些信息后,会生出一个区块头,但是该区块头暂时不被比特币系统认可。
需要找到本区块的哈希值,然后广播给全网,获得全网认可后,把该区块链接到当前的区块链上,形成一个+1区块链,不断重复此过程就叫挖矿。
说简单点,任何旷工都可以填写该信息,此时每个旷工填写的区块都是“假区块”,一旦有某个旷工找到了该区块的哈希值,它的“假区块”就变成了真区块,被比特币系统认可,然后获得比特币奖励。
所以,挖矿的本质是找到本区块的哈希值,找到该哈希值的旷工会获得比特币奖励。
如何找到该区块的哈希值呢?你猜,你猜,你猜猜猜。
其实找哈希值的过程真是靠猜。那如何猜呢?
找到区块头里Nonce的哈希值,小于难度目标的哈希值。难度目标是固定的,我们要猜的就是这个随机数Nonce,区块的哈希值就是Nonce哈希运算后得出的哈希值。
我们以277316的区块举例,难度目标为0x1745fb53,哈希计算后的哈希值为:
0x0000000000000003A30C00000000000000000000000000000000000000000000
*如何哈希计算?可以查看《精通比特币》8.7.2难度表示
我们要找到一个小于目标哈希值A的哈希值B,通过把Nonce套进公式,会得到一个哈希值B,拿该哈希值和目标哈希值A比较,小于A,那就寻找成功。
为方便理解,我把与Nonce有关的公式做了修改。你也可以查找精通比特币,8.7.1工作量证明算法,查看原公式。
公式如下:
听风很帅=》1ce654cf64656ba43247
听风很帅(1)=》512198e52aa12427531
听风很帅(2)=》101654c68d5321c9647
听风很帅(3)=》0cb82dq9846fa6c48647
听风很帅(4)=》0465464ce20cc21e7541
听风很帅(5)=》14edc1cad25121e25487
()里的数就是Nonce,公式右边是哈希值,通过不断地Nonce+1的方式套进公式,让左边哈希运算,得出右边的哈希值。
然后拿该哈希值与目标哈希值0x0000000000000003A30C00000000000000000000000000000000000000000000比较。如果运算出的哈希值小于该值,就找到了正确的Nonce。
平时我们的理解是A+1得到的哈希值与运算完全没有规律,只要输入变化一点点,得出来的哈希值就千变万化。所以要不停拿数字进去套,直到找出符合条件的Nonce。
不断拿Nonce去套的过程,也叫哈希碰撞,就是试图找到一个符合条件的Nonce。最终套到924591752时,得出哈希值
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4
拿它与目标值比较
0000000000000003A30C00000000000000000000000000000000000000000000
左边0数量一样,1比3小,证明是我们要找的Nonce
然后旷工把924591752填入Nonce,再把区块接入区块链中,接着广播给其他节点验证是否小于目标值,其他节点验证验通过,把该区块加入区块链中。
验证过程就很简单,把得出的Nonce套进公式,就会得出一样的哈希值输出。只有同一个输入,才能得到同一个输出。
拿输出结果与目标哈希值一对比,就知道是否小于目标值。比特币的挖矿需要N亿次计算,验证答案是否正确,只需要1次计算即可。
这就是比特币的挖矿,不断把Nonce套进公式,直到找出符合条件的那个Nonce,然后经过哈希运算,把哈希值填入区块,广播给全网认证,认证通过获得比特币奖励的过程。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。