比特币是一本大账本,账本需要有人来记账,记账的奖励就是比特币。而这个记账的权利是需要大家来抢的,挖矿就是抢夺记账权。谁的算力大,谁就更有可能抢到这个记账权。
挖矿算法
挖矿算法为SHA256。在挖矿过程中,矿工将比特币的80个字节长度的区块头数据进行两次SHA256运算,运算结果就是一个256位(32字节)长度的字符串。通过比较与当前难度值的大小判断当前区块是否合法。即满足下列条件:
SHA256(SHA256(block_header))< difficulty
如果不满足上面的条件,则需要在区块头中改变一下随机值,或者使用随机数据填充coinbase交易,这样就能改变区块头的数据,从而找到满足条件的区块。这就是PoW机制的精髓所在,使用单向函数,迫使矿工不断地尝试随机数找到符合条件的区块以完成一定的计算量,保障系统的安全稳定。
现在的更新周期平均是10分钟。TARGET越小,解出x的难度就越大,每产生2016个block(约14天),网络会根据这段时间产生新block的平均间隔调整之后的TARGET。
并不是计算速度最快的人就能解出来。那么同时解出来又要怎么办?
block chain会出现分叉,部分客户端接受了A,部分接受了B,直到某个分支变得更长,所有人就会选择这个更长的分支。如果你挖出来的不幸没有被选中,你的挖矿所得就无效了。
既然选更长的分支,那我用很低的难度去求解怎么办?
客户端在众多分支中找到符合当前难度且最长的。
举个例子:
1.首先获取区块号为100000的区块原始数据
2.获取的数据是16进制的,其中前80个字节是区块头数据。对前80个字节数据进行双SHA256运算,得到当前区块的哈希值。Go语言代码如下:
3.运行结果为:
4. 可以发现经过两次SHA256运算之后得到的结果就是区块哈希。
文章来源:900lm.com/xwzx/cpdt/191.html
编辑作者:重庆匿名科技
所有权归原著所有,转载请注明来源