比特币挖矿难度
挖矿难度 挖矿就是不断尝试block header里面的nonce,使得整个block header 的hash值小于等于给定的目标阈值 H(block header)<= target target越小,挖矿难度越大,调整挖矿难度就是调整目标空间在整个输出空间中所占的比例,比特币用的hash算法是SHA-256,产生的hash值是256位,输出空间是2 256 ,调整目标空间在输出空间的比例通俗说就是hash值前面多少个0,合法的区块要求算出来的hash前面至少70个0,这是一种通俗的说法,不是特别准确,因为目标阈值并不是说前面都是0,从某一位开始后面都是1,严格来说,上面的公式才是对的。 挖矿难度和目标阈值是成反比的 difficulty_1_target表示挖矿难度等于1的时候所对应的目标阈值,挖矿难度最小就是1,这个时候对应的目标阈值是个非常大的数。 为什么要调整挖矿难度? 系统总算力不断增强,挖矿难度保持不变,出块时间就会越来越短。出块时间越来越短会有什么问题,比如说不到1s出一个区块,这个区块在网络上传输可能需要几十s,别的节点在没有收到这个区块时会继续沿着已有的区块链往下继续扩展,如果有两个节点差不多同时都收到这个区块,差不多同时都发布一个区块,这个时候会出现一个分叉。出块时间越来越短,分叉就会越来越频繁,越来越多。分叉过多对于系统达成共识是没有好处的