挖礦難度

Demonwuwen發表於2020-09-28

H ( b l o c k h e a d e r ) ⩽ t a r g e t H(block header) \leqslant target H(blockheader)target
t a r g e targe targe是目標閾值, t a r g e targe targe越小,挖礦難度越大,調整挖礦難度,就是調整目標空間在整個輸出空間的比例。

比特幣用的hash演算法是SHA-256,這產生的hash值是256位,所以整個輸出空間的是 2 256 2^{256} 2256個可能的取值。

挖礦難度與目標閾值是稱反比的: d i f f i c 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 difficlty=\frac{difficulty(1)target}{target} difficlty=targetdifficulty1target,分子指的是挖礦難度等於1的時候所對應的閾值。

通過調整挖礦難度,可以保持出塊時間穩定。

比特幣中規定,每個2016個區塊,調整一下目標閾值,大概每兩個星期調整一下。調整公式: 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 \times \frac{actual \ time}{expected\ time} target=target×expected timeactual time
其中: e x p e c t e d   t i m e = 2016 × 10 expected\ time = 2016 \times 10 expected time=2016×10大概位兩個星期, a c t u a l   t i m e actual \ time actual time就是系統最近的2016個塊實際所花的時間。

也可以用挖礦難度來表示:
n e x t    d i f f i c u l t y = p r e v i o u s   d i f f i c u l t y   ∗ ( 2   w e e k s ) / ( t i m e   t o   i m i n e   l a s t   2016   b l o c k s ) next \ \ difficulty = previous\ difficulty \ * (2 \ weeks)/(time \ to \ imine \ last \ 2016 \ blocks) next  difficulty=previous difficulty (2 weeks)/(time to imine last 2016 blocks).

參考資料:https://www.bilibili.com/video/BV1Vt411X7JF?p=7

相關文章