區塊鏈的幾種共識演算法簡介
區塊鏈是一種在對等網路上執行的分散式分類賬,對於像比特幣這樣的公共區塊鏈,數千甚至數百萬的匿名使用者都參與了這個區塊鏈。我們如何在這樣的系統或私有區塊鏈中獲得信任?這也就是需要達成共識的地方,共識確保參與者相互信任以及下一個區塊的有效性。達成共識可確保遵循網路規則,並且區塊鏈環境中只有一個事實 。
不同區塊鏈型別,就有不同的一致性演算法,從而確保區塊鏈中的最後一個區塊反映每個時刻的世界狀態。在本文中,我們將簡要探討不同的共識演算法。
工作證明
讓我們從比特幣和以太坊的區塊鏈開始。工作證明演算法要求礦工解決涉及密碼學的複雜數學問題。這是一個計算能力發揮重要作用的博彩比賽。基本上,需要獲取塊的資料並使用計數器對其進行加密,直到計算獲得有效的雜湊值。
優點:很難找到有效的雜湊,但很容易控制雜湊的有效性,這使得欺騙系統變得不可能,在有大量節點情況下可以很好地擴充套件。
缺點:耗費能源,時間長,一般需要10分鐘左右,如果一方控制51%的計算能力,則易受攻擊。
股權證明
以太坊正朝著利益共識的方向發展,尋找下一個區塊ID的礦工是根據隨機引數的各種組合來選擇的,例如他們已經擁有的通證Token數量,或者持有通證的時間......這種演算法有不同的例項,如存款證明或燃燒證明(proof ofburn ,PoB) 。非常簡單地說,如果節點X具有1個通證並且節點Y具有2個通證,則節點Y有兩倍的可能性實現呼叫並驗證塊。
優點:工作證明更節能
缺點:更多安全問題?如果同時在不同的鏈中進行也不會引來什麼重罰,在嘗試建立並保持單一事實 方面可能會產生漏洞。因為沒有工作證明那樣事務序列化,但是吞吐量會提供。
消逝時間證明(PoET)
消失時間證明是Hyperledger' Sawtooth專案中使用的共識。每個參與者都要求從安全區域請求一個等待時間引數,具有最短等待時間的參與者被選為領導者,然後等待一段它被賦予的時間以後,可以提交一個塊。
優點:領導者一直在變化。
缺點:安全區是一項複雜的技術,可能比工作證明更容易作弊。有集中化的趨勢,因為我們必須使用第三方信任的證書頒發機構來確保安全。
簡化的拜占庭容錯(SBFT)
在該演算法中,塊的驗證器是已知實體,例如,它可能是商業網路中的監管者。該驗證器建立並提交新的交易塊,在SBFT共識中,滿足一定數量的節點接受該塊就視同達成共識,具體取決於故障節點的數量。
具體數量演算法是:至少2f + 1個 節點必須接受業務網路中的新塊,其中f 是故障節點的數量。
例如,當我們採用一個有30個參與者的系統,網路中有5個故障節點。對於要驗證的新塊,11(2 * 5 + 1)個節點必須接受該塊;如果故障節點的數量達到10,則21(2 * 10 + 1)個節點必須就新塊達成一致。
錯誤意思代表惡意或無功能的節點。
優點:比工作證明更快,可擴充套件性更好。
缺點:集中化的趨勢(類似Paxos的集中化共識演算法)。一個驗證器提交下一個塊。
授權證明(PoA)
適用於不需要分發信任的專用網路,這個概念相對簡單:網路中的某些人在滿足某些條件後被識別為驗證者,例如身份檢查。這些驗證器負責維護區塊鏈的資料。
優點:非常適合私人網路。使它非常快。
缺點:犧牲信任。
結論
以上是對區塊鏈世界中使用的一些共識演算法的非常快速的概述。總的來說,我們可以區分三種類型的共識:
- 標準工作證明共識
- 基於投票許可的共識(PoA,SBFT)
- 基於彩票許可的共識(PoET)
在區塊鏈實現中選擇哪種共識取決於網路型別和處理的資料。
彩票型別更適合大型網路;投票型別更適合較小的網路,並將延遲降至最低。