比特币的挖矿难度调整

文章目录

  • 一、挖矿难度的定义
  • 二、挖矿难度不能太低
  • 三、挖矿难度调整策略

一、挖矿难度的定义

挖矿需满足区块头的哈希值小于等于target阈值,公式为:
H ( b l o c k h e a d e r ) ≤ t a r g e t H(block header) ≤ target H(blockheader)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} difficulty=targetdifficulty_1_target

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

二、挖矿难度不能太低

如果通过降低难度,缩短出块时间,因为网络传输也需要一定时间,造成不同节点收到的区块会不一样,那么会导致分叉成为常态,无法达成共识,如下图所示红色部分:
比特币的挖矿难度调整_第1张图片
分叉太多的话,还会造成算力的分散,这时只要集中足量的算力在很久之前的某一条区块后面挖矿,很快就会让自己的这条链成为最长合法链,继而推翻之前最长合法链上的交易,分叉攻击会变得非常容易,如上图深蓝色部分所示。

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

三、挖矿难度调整策略

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

调整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} target=target×expected timeactual time

target阈值调整比例不能太低,如果低于1/4,则:
t a r g e t = t a r g e t × 1 4 target=target×\frac{1}{4} target=target×41
target阈值调整比例不能太高,如果高于4倍,则:
t a r g e t = t a r g e t × 4 target=target×4 target=target×4
根据公式可得,如果算力越高,target阈值会变小,挖矿难度变大,这使得不会在短时间发行出大量比特币,保证了比特币不会贬值。

你可能感兴趣的:(比特币)