比特币的挖矿难度调整
一、挖矿难度
挖矿需满足区块头的哈希值小于等于target阈值,公式为:
挖矿难度与target成反比,target越小,挖矿难度越高,难度公式为:
挖矿难度决定了出块时间,难度越高,出块就越慢;那么如果尽量降低难度,缩短出块时间,从而增大比特币吞吐量,是否可行呢?
二、挖矿难度不能太低
如果通过降低难度,缩短出块时间,那么会导致分叉成为常态,无法达成共识,如下图所示红色部分:
分叉太多的话,还会造成算力的分散,这时只要集中足量的算力在很久之前的某一条区块后面挖矿,很快就会让自己的这条链成为最长合法链,继而推翻之前最长合法链上的交易,分叉攻击会变得非常容易,如上图深蓝色部分所示。
在以太坊中,出块时间降低到15s,同样存在分叉过多的问题,以太坊使用uncle reward机制防止算力分散。
三、挖矿难度调整策略
比特币规定每2016个区块调整一次难度,由于每个区块的产生时间大约是10min,所有大约每14天调整一次难度,推导如下:
调整target阈值,即为调整挖矿难度,target阈值计算公式为(其中expected time取值2016×10min):
如果公式计算出的难度调整比例低于1/4,则:
如果公式计算出的难度调整比例高于4倍,则:
根据公式可得,如果算力越高,target阈值会变小,挖矿难度变大,币的价值也就得到了保证。