??挖礦的定義:H(block header) ≤ target ( target 越小,挖礦難度越大 )
??位元幣用的 hash 演算法是 SHA-256 ,輸出 256 bit,因此整個輸出空間有
2
256
2^{256}
2256 種,
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?
??difficulty_ 1_target:表示挖礦難度等于1時對應的目標閾值
- 為什么要調整挖礦難度?出塊時間太短會有什么問題?
??出塊時間太短,分岔會成為常態,其中不止有二分叉,分叉過多,不利于系統達成共識并且威脅到系統的安全性,
??分叉過多,不同的礦工可能選擇不同的分叉繼續往下擴展,因此系統的算力會被分散,而惡意的節點可以集中算力,擴展某一個分叉,使得該分叉變成最長合法鏈,在這種情況下,惡意節點不再需要51%的算力才能發動攻擊(51% attack),從而危害系統的安全性!
??位元幣中出塊時間 10min ,以太坊中出塊時間 15s ,以太坊中有新的共識協議:GHOST協議
??需要調整挖礦難度,使得出塊時間維持穩定!
-
如何調整挖礦難度?
??位元幣中每隔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?
??expected time 等于 2016 × \times × 10min 表示兩個星期
??actual time表示系統最近的2016個區塊實際花費的時間
??actual time = time spent mining the last 2016 blocks
??上調閾值最大為 4 × \times × target,下調閾值最小為0.25 × \times × target -
惡意節點不調整挖礦難度咋辦?
??block header中有 nBits 域(32bits),用于存盤 target (256bits) 編碼的版本, 如果有惡意節點不調整挖礦難度,那么該區塊的合法性驗證 (nBits域) 不能通過, -
位元幣系統的實際情況:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/299239.html
標籤:區塊鏈
上一篇:區塊鏈-智能合約-合約特性
下一篇:聯盟鏈-智能合約-入門介紹
