C語言中文網 目錄
首頁 > 區塊鏈 閱讀:75

EOS的共識機制與區塊生成

在《EOSIO 技術白皮書》中,對 EOS 的共識機制 BFT-DPOS(拜占庭容錯算法+權益委托共識機制)進行了說明。其中拜占庭容錯算法(Byzantin eFault Tolerance)的用途是:

所有的出塊者都要對所有區塊簽名,以確保在同一時間戳或者同一區塊高度上,沒有區塊生產者能夠同時在兩個區塊上簽名。一旦一個區塊有了 15 個區塊生產者的簽名,該區塊就被認為是不可逆的。任一區塊生產者如果想在同一時間戳或者同一區塊高度的兩個區塊上簽名,就會留下密碼學證據。在這一模式下,一秒之內就可以達成不可逆的共識。


在白皮書中,EOS 對其區塊的出塊機制進行了介紹,轉摘如下:

根據這一算法,在使用 EOSIO 軟件構建的區塊鏈上持有通證的人,可以通過一個持續進行的投票系統來選擇區塊生產者。任何人都可以選擇參加區塊生產,只要能夠說服通證持有人為其投票,就會有機會參與區塊的生產。

EOSIO 軟件可以讓區塊每 0.5 秒生成一個。在任何時刻,只有一個生產者被授權生產區塊。如果在計劃的某個時間內沒有成功出塊,則跳過該塊。如果有一個或更多的區塊被跳過,則在區塊鏈上會有 0.5 秒或者更久的空白。

使用 EOSIO 軟件,區塊的產生以 126 個區塊(每個出塊者六個區塊,乘以 21 個出塊者)為一個周期。在每個出塊周期開始時,軟件會根據通證持有人所投票數選出 21 個區塊生產者。被選中的區塊生產者的出塊順序要獲得 15 個及以上的區塊生產者的同意。

如果出塊者錯過了一個塊,并且在最近 24 小時內沒有產生任何塊,則這個出塊者將被剔除在考慮范圍之外,直到他們通知區塊鏈可以重新開始產生區塊。這確保了網絡的順利運行,把被證明為不可靠的區塊生產者排除在出塊排序之外,這一方式使得錯過區塊的數量最小化。

資料來源:

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo