比特币的挖矿难度调整

一、挖矿难度

挖矿需满足区块头的哈希值小于等于target阈值,公式为:
H ( b l o c k h e a d e r ) t a r g e t H(block header) ≤ target
挖矿难度与target成反比,target越小,挖矿难度越高,难度公式为:
d i f f i c u l t y = d i f f i c u l t y _ 1 _ t a r g e t t a r g e t difficulty = \frac{difficulty\_1\_target}{target}

挖矿难度决定了出块时间,难度越高,出块就越慢;那么如果尽量降低难度,缩短出块时间,从而增大比特币吞吐量,是否可行呢?

二、挖矿难度不能太低

如果通过降低难度,缩短出块时间,那么会导致分叉成为常态,无法达成共识,如下图所示红色部分:
在这里插入图片描述
分叉太多的话,还会造成算力的分散,这时只要集中足量的算力在很久之前的某一条区块后面挖矿,很快就会让自己的这条链成为最长合法链,继而推翻之前最长合法链上的交易,分叉攻击会变得非常容易,如上图深蓝色部分所示。

在以太坊中,出块时间降低到15s,同样存在分叉过多的问题,以太坊使用uncle reward机制防止算力分散。

三、挖矿难度调整策略

比特币规定每2016个区块调整一次难度,由于每个区块的产生时间大约是10min,所有大约每14天调整一次难度,推导如下:
2016 × 10 m i n 60 m i n × 24 h 14 \frac{2016×10min}{60min×24h}≈14天

调整target阈值,即为调整挖矿难度,target阈值计算公式为(其中expected time取值2016×10min):
t a r g e t = t a r g e t × a c t u a l   t i m e e x p e c t e d   t i m e target=target×\frac{actual\ time}{expected\ time}

如果公式计算出的难度调整比例低于1/4,则:
t a r g e t = t a r g e t × 1 4 target=target×\frac{1}{4}
如果公式计算出的难度调整比例高于4倍,则:
t a r g e t = t a r g e t × 4 target=target×4
根据公式可得,如果算力越高,target阈值会变小,挖矿难度变大,币的价值也就得到了保证。

发布了8 篇原创文章 · 获赞 0 · 访问量 1500

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104171128