區塊鏈知識系列 - DPoS+Pipelined BFT共識機制

2020-09-24 17:00:14

EOS 目前採用DPoS+Pipelined BFT 共識機制。

DPoS共識 - 如何成為出塊節點

DPoS(Delegated Proof of Stake)是權益委託證明機制。相比於位元幣的PoW機制,DPoS不用浪費算力資源爭奪記賬權,而是通過賦予通證持有人投票權,EOS 將投票選出21個「超級節點」來擔任記賬人(Block Producer:區塊生產者簡稱BP)的角色,保證整個網路的正常執行。

出塊機制

每0.5秒生產一個區塊。超級節點輪流出塊,每輪每個超級節點連續出12個塊。以 21*12 個區塊為一個週期。在每個出塊週期開始時,21個區塊生產者會被投票選出。同時,為了防止因網路延遲而使超級節點漏掉區塊,EOS 採用確定的出塊順序,通訊時延低的超級節點互為鄰居出塊者。

Pipelined BFT - 如何進行區塊確認

Pipelined BFT(Pipelined Byzantine Fault Tolerance)是基於流水線的拜占庭容錯機制。
常規的PBFT(Practical Byzantine Fault Tolerance)都是生產一個區塊,等待共識,然後再生產一個區塊。因而共識需要比較長的時間,沒法滿足0.5s出塊的需求。

EOS 採取了不同的實現方式,出塊和共識是可以流水並行工作的,區塊生產完成後,不等待PBFT共識,繼續生產同時參與並處理上一個區塊的PBFT共識,當PBFT共識完成後即修改為不可逆狀態。

懲罰機制

任何時刻,只有一個生產者被授權產生區塊。如果在某個時間內沒有成功出塊,則跳過該塊。如果出塊者錯過了一個塊,並且在最近24小時內沒有產生任何塊,則這個出塊者將被刪除。這確保了網路的順利執行。

會不會分叉

在正常情況下,DPS區塊鏈不會經歷分叉,因為塊生產者合作生產區塊而不是競爭。如果有區塊分叉,共識將自動切換到最長的鏈條。具有更多生產者的區塊鏈長度將比具有較少生產者的區塊鏈增長速度更快。此外,應該沒有塊生產者會同時在兩個區塊鏈分叉上生產塊。如果一個塊生產者發現這麼做了,就可能被投票出局。