其他的拜占庭算法
其他的拜占庭算法
dBFT(delegated BFT )授權拜占庭容錯算法
小蟻采用的dBFT機制,是由權益來選出記賬人,然后記賬人之間通過拜占庭容錯算法來達成共識,此算法在PBFT基礎上進行了以下改進:
將C/S架構的請求響應模式,改進為適合P2P網絡的對等節點模式;
將靜態的共識參與節點改進為可動態進入、退出的動態共識參與節點;
為共識參與節點的產生設計了一套基于持有權益比例的投票機制,通過投票決定共識參與節點(記賬節點);
在區塊鏈中引入數字證書,解決了投票中對記賬節點真實身份的認證問題。
dBFT的優點是:專業化的記賬人,可以容忍任何類型的錯誤,記賬由多人協同完成,每一個區塊都有最終性,不會分叉,算法的可靠性有嚴格的數學證明。dBFT機制最核心的一點,就是最大限度地確保系統的最終性,使區塊鏈能夠適用于真正的金融應用場景。
BFT-DPoS
EOS為了改進傳統的 DPoS 算法,我們可以借鑒 PBFT(Practical Byzantine Fault Tolerance,拜占庭容錯算法)的機制。在傳統 DPoS 共識機制中,我們讓每個見證人在出塊時向全網廣播這個區塊,但即使其他見證人收到了目前的新區塊,也無法對新區塊進行確認,需要等待輪到自己出塊時,才能通過生產區塊來確認之前的區塊。
在新的機制下,每個見證人出塊時依然全網廣播,其他見證人收到新區塊后,立即對此區塊進行驗證,并將驗證簽名完成的區塊立即返回出塊見證人,不需等待其他見證人自己出塊時再確認。從當前的出塊見證人看來,他生產了一個區塊,并全網廣播,然后陸續收到了其他見證人對此區塊的確認,在收到 2/3 見證人確認的瞬間,區塊(包括其中的交易)就不可逆了。交易確認時間大大縮短,從 45 秒縮短至 3 秒左右(主要為等待生產區塊的時間)。這種機制可以稱為初級版的 BFT-DPoS 共識機制。
為了挖掘 EOS 系統的性能,Daniel Larimer 在以上基礎上又進行了修改。首先,他將出塊速度由 3 秒 縮短至 0.5 秒,理論上這樣可以極大提升系統性能,但帶來了網絡延遲問題:0.5 秒的確認時間會導致下一個出塊者還沒有收到上一個出塊者的區塊,就該生產下一個區塊了,那么下一個出塊者會忽略上一個區塊,導致區塊鏈分叉(相同區塊高度有兩個區塊)。比如:中國見證人后面可能就是美國見證人,中美網絡延遲有時高達 300ms,很有可能到時美國見證人沒有收到中國見證人的區塊時,就該出塊了,那么中國見證人的區塊就會被略過。
為解決這個問題,Daniel Larimer 將原先的隨機出塊順序改為由見證人商議后確定的出塊順序,這樣網絡連接延遲較低的見證人之間就可以相鄰出塊。比如:日本的見證人后面是中國的見證人,再后面是俄羅斯的見證人,再后面是英國的見證人,再后面是美國的見證人。這樣可以大大降低見證人之間的網絡延遲。使得 0.5 秒的出塊速度有了理論上的可能。
為了保證萬無一失,不讓任何一個見證人因為網絡延遲的意外而被跳過,Daniel Larimer 讓每個見證人連續生產 6 個區塊,也就是每個見證人還是負責 3 秒的區塊生產,但是由最初的只生產 1 個變成生產 6 個。最惡劣的情況下,6 個區塊中,最后一個或兩個有可能因為網絡延遲或其他意外被下一個見證人略過,但 6 個區塊中的前幾個會有足夠的時間傳遞給下一個見證人。
再來討論 BFT-DPoS 的交易確認時間問題:每個區塊生產后立即進行全網廣播,區塊生產者一邊等待 0.5 秒生產下一個區塊,同時會接收其他見證人對于上一個區塊的確認結果。新區塊的生產和舊區塊確認的接收同時進行。大部分的情況下,交易會在 1 秒之內確認(不可逆)。這其中包括了 0.5 秒的區塊生產,和要求其他見證人確認的時間。
EOS 系統規定,一旦區塊達到不可逆狀態(2/3見證人確認),就無法在此之前進行分叉,保證了交易的永久可信。另外,即使多數見證人想分叉區塊鏈,也只能以相同的速度(0.5秒)與主鏈競爭,就算主鏈只剩下一個見證人,分叉鏈也永遠不會追上主鏈,保證了系統的穩定。
總結
- 上一篇: 共识机制-权益证明 PoS
- 下一篇: 两种拜占庭算法