伊斯坦堡拜占庭容錯演算法區塊鏈
對一筆交易,如果利益不相干的若干個節點能夠達成共識,我們就可以認為全網對此也能夠達成共識。
共識機制是區塊鏈網絡用來達成交易確認共識的協議,伊斯坦堡拜占庭容錯演算法是共識機制的一種,共識機制是通過特殊節點的投票,在很短的時間內完成對交易的驗證和確認;對一筆交易,如果利益不相干的若干個節點能夠達成共識,我們就可以認為全網對此也能夠達成共識。
我們先了解一下拜占庭容錯,其思想淵源來自拜占庭將軍問題,是一種解決分布式系統容錯問題的通用方案。PBFT算法的核心理論是n>=3f 1,n是系統中的總節點數,f是允許出現故障的節點數。換句話說,如果這個系統允許出現f個故障,那么這個系統必須包括n個節點,才能解決故障。基于拜占庭將軍問題,PBFT 算法包括四個階段來達成共識:請求(request)、預準備(Pre-Prepare)、準備(Prepare) 和確認(Commit)。流程如下圖所示:
其中C為發送請求端,0123為服務端,3為宕機的服務端,具體步驟如下:
1. Request:請求端C發送請求到任意一節點,這里是0
2. Pre-Prepare:服務端0收到C的請求后進行廣播,擴散至123
3. Prepare:123,收到后記錄并再次廣播,1->023,2->013,3因為宕機無法廣播
4. Commit:0123節點在Prepare階段,若收到超過一定數量的相同請求,則進入Commit階段,廣播Commit請求
5.Reply:0123節點在Commit階段,若收到超過一定數量的相同請求,則對C進行反饋,根據上述流程,在 N ≥ 3F 1 的情況下一致性是可能解決,N為總計算機數,F為有問題的計算機總數。
伊斯坦堡拜占庭容錯演算法通過使用3相一致,從原來PBFT繼承PRE-PREPARE,PREPARE,和COMMIT。系統可以容忍驗證器節點網絡F中的大多數故障節點N,其中N = 3F 1。在每輪之前,驗證器將默認以循環方式選擇其中一個作為提議者。然后,提議者將提出新的塊提議并將其與PRE-PREPARE消息一起廣播。在收到PRE-PREPARE來自提議者的消息后,驗證者進入狀態,PRE-PREPARED然后廣播PREPARE消息。這一步是為了確保所有驗證器都在同一個序列和同一輪上工作。當接收2F 1的PREPARE消息,驗證程序進入的狀態PREPARED,然后廣播COMMIT信息。此步驟是通知其對等方它接受建議的塊并將塊插入鏈。最后,驗證等待2F 1的COMMIT消息進入COMMITTED狀態,然后插入塊鏈。
伊斯坦堡拜占庭容錯演算法(Istanbul BFT)中的塊是塊是最終的,這意味著沒有分叉,任何有效塊必須位于主鏈的某個位置。為了防止故障節點從主鏈生成完全不同的鏈,每個驗證器將2F 1接收的COMMIT簽名附加到extraData標頭中的字段,然后將其插入鏈中。因此,塊是可自我驗證的,并且也可以支持輕客戶端。但是,動態extraData會導致塊哈希計算出現問題。由于來自不同驗證器的相同塊可以具有不同的COMMIT簽名集,因此相同的塊也可以具有不同的塊散列。為了解決這個問題,我們通過排除來計算塊哈希COMMIT簽名部分。因此,我們仍然可以保持塊/塊哈希一致性,并將共識證明放在塊頭中。
狀態:
NEW ROUND:提議者發送新的阻止提案。驗證器等待PRE-PREPARE消息。
PRE-PREPARED:驗證程序已收到PRE-PREPARE消息和廣播PREPARE消息。然后,它等待2F 1的PREPARE或COMMIT消息。
PREPARED:驗證器接收到2F 1的PREPARE消息和廣播COMMIT消息。然后,它等待2F 1的COMMIT消息。
COMMITTED:驗證器接收到2F 1的COMMIT消息,并且能夠將提出塊插入blockchain。
FINAL COMMITTED:新塊已成功插入區塊鏈,驗證器已準備好進入下一輪。
ROUND CHANGE:驗證器正在等待同一個建議的輪數2F 1的ROUND CHANGE消息。
下圖是他們之間的狀態裝換
A提議發出者 1 2 3 代表驗證者
NEW ROUND- > PRE-PREPARED:
投保人從txpool收集交易。
Proposer生成塊提議并將其廣播給驗證者。然后它進入PRE-PREPARED狀態。
每個驗證器PRE-PREPARED在收到PRE-PREPARE具有以下條件的消息時進入:
§ 1.阻止提案來自有效的提議者。
§ 2.塊頭有效。
§ 3.阻止提案的序列和舍入匹配驗證器的狀態。
ValidatorPREPARE向其他驗證器廣播消息。
PRE-PREPARED- > PREPARED:
驗證器接收2F 1有效PREPARE消息以進入PREPARED狀態。有效消息符合以下條件:
§ 1.匹配序列和圓形。
§ 2.匹配塊哈希。
§ 3.消息來自已知的驗證器。
ValidatorCOMMIT在進入PREPARED狀態時廣播消息。
PREPARED- > COMMITTED:
驗證器接收2F 1有效COMMIT消息以進入COMMITTED狀態。有效消息符合以下條件:
§ 1.匹配序列和圓形。
§ 2.匹配塊哈希。
§ 3.消息來自已知的驗證器。
COMMITTED- > FINAL COMMITTED:
Validator將2F 1承諾簽名附加到extraData并嘗試將塊插入區塊鏈。
FINAL COMMITTED插入成功后,驗證器進入狀態。
FINAL COMMITTED- > NEW ROUND:
驗證器選擇一個新的提議器并啟動一個新的循環計時器
伊斯坦堡拜占庭容錯演算法(Istanbul BFT)它適合金融實務需求的伊斯坦堡拜占庭容錯演算法(Istanbul BFT),將搶先應用于摩根大通(J.P. Morgan)“Quorum”金融區塊鏈平臺上。
其實伊斯坦堡拜占庭容錯演算法還在燎原連上進行了應用。EUBT的核心算法為IBFT,通過伊斯坦堡拜占庭容錯演算法(Istanbul BFT)的應用,相對于拜占庭容錯演算法(PBFT),大幅提升現有的以太坊架構的信息交換效率,整合了更多符合區塊鏈實際應用的功能。相對于比特幣等公有區塊鏈上常用的工作量校驗(Proof-of-Work,簡稱PoW或俗稱「挖礦」演算法)共識演算法,PBFT對此做出很多重大改良,而IBFT更進一步改良,相對于POW不能接受可結束(Final)的區塊鏈區塊(Block),導致每一個區塊都有被分支(Fork)的微幾率,IBFT區塊能夠即時達到Final狀態,共識完成就可以將上傳區塊,不會衍生更多分支,因此可以大幅提升區塊生產力。而產生區塊的過程不需要競爭,有別于比拼區塊長度的POW,不浪費能源及運行資源。
總結
共識機制
伊斯坦堡拜占庭容錯演算法
燎原鏈的共識機制
參考文獻
維基百科共識機制的分類
燎原鏈白皮書和技術白皮書
燎原鏈官網:www.eubchain.com
加入燎原鏈社區,了解更多最新動態
Telegram:
t.me/eubsparkchain
Twitter:
twitter.com/eubchain
Facebook:
m.facebook.com/Eubchain-153177778671597
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。