EOS 共识机制 (3)DPOS+BFT
1. DPoS共識
-
通過在一群數量有限的節點中,使用輪換或者其他算法來篩選出某個節點作為主節點。并且賦予該節點出塊的權利。
-
主節點是將該時段的交易打包成區塊后用自己的私鑰對該區塊簽名,并將其廣播到所有節點。
-
當主節點收到至少三分之二的不同節點的簽名區塊后,則該區塊完成了所有節點的驗證成為不可逆區塊串聯到區塊鏈中
70個節點數 = 21個主節點(生產區塊)+ 49個備用節點。
當21個主節點出問題時,通過競選機制,備用節點可上任成為主節點。
1.1 BFT(拜占庭容錯機制)
當一個小區塊在區塊鏈網絡內被廣播時,其余節點將會立即對這個區塊進行確認。經過2/3節點確認的區塊將會進入不可逆狀態。在這個共識機制下,安全確認的時間為0.5s(區塊間隔)+0.3s(區塊傳播延時)<1s,從而到了秒級的確認性能。
- 惡意攻擊
除非控制了超過2/3的節點,否則無法惡意區塊進入不可逆狀態。這里特意提一下,如果惡意節點控制了超過1/2但小于2/3的節點,由于惡意區塊不會進入不可逆狀態,這樣可以留給其它觀察者節點和見證人節點足夠的時間,將惡意節點投票出局。
EOS區塊的出塊順序和速度都是安排好的,并不存在哪個節點權力大,哪個節點權力小的問題。要惡意控制EOS超級節點來達到威脅網絡安全的目的的話,需要控制21個節點中的15個,才能有效地發起攻擊。
1. 2 不可逆狀態
一旦某個區塊后面跟隨了超過2/3總見證人數量的區塊,則該區塊進入不可逆狀態,等于確認了該區塊是主鏈中的區塊的地位,之后再也不可回滾回該區塊之前的區塊進行分成,否則視為違規。
因為每個節點最多同時參與一條鏈,所以只可能同一個高度的區塊只可能存在一個不可逆的區塊,這更加保證了區塊的安全性,防止惡意攻擊及惡性分叉。
一般來說,在21個區塊產生節點的模型里,15個區塊(15/21>2/3)進入不可逆狀態的時間(即交易100%安全)為45秒
1.3 小區塊
為了加快出塊速度,該改進的核心思想是讓同一個節點產生6個小塊。這個能提升性能的核心原因是6個小塊的產生沒有等待確認的環節。
- 如果將小塊的出塊間隔繼續分割,理論上確認所需要的時間,會約等于區塊傳播的網絡延時,甚至可以小于0.5秒。將3秒的區塊繼續分割成間隔為0.5秒的若干小塊,這些小塊之間不切換記賬權。
- 每一個小塊一出來之后,就會馬上廣播。
這樣的設計可以使得區塊更加快速得到確認的同時,盡可能減少因為網絡延遲而產生的分叉影響。
參考
[1]. csdn. EOS的BFT-DPOS共識機制的進化過程及背后邏輯
總結
以上是生活随笔為你收集整理的EOS 共识机制 (3)DPOS+BFT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EOS 共识机制 (1)DPOS共识介绍
- 下一篇: EOS 共识机制 (2)DPOS再议