YOUChain Research
YOUChain 研究團隊,成員畢業於國內外頂級名校,有長期的工業界經驗。我們持續跟蹤的區塊鏈學界和業界的前沿發展,致力於深入區塊鏈本質,推動學術和技術發展。團隊誠邀加密、算法、區塊鏈、工程人才加入!
本文來自 yipast@YOUChainResearch
一、背景知識
一提到Algorand就想到了VRF抽籤。關於VRF,已有專門的文章進行了詳細的分析 傳送門,本文專注於Algorand早期版本的共識算法設計原理。
Algorand在2017年發佈的協議是基於拜占庭共識(BA),命名爲 BA∗BA^*
BA∗ 協議,主要包含兩階段:
-
第一階段:分級共識協議 GC
GC
GC 。 -
第二階段:二元拜占庭協議 BBA* 。
首先,我們來了解下這兩個階段詳細的背景知識。
1.1 分級共識協議 GC
結合 graded broadcast 與 crusader agreement,分級共識協議概念的定義如下。
gradecast 就是一個 (n,t)(n,t)
(n,t) 分級的共識協議,包含了3-Step。而Algorand共識算法中第一階段的GC包含了 gradecast 的最後兩步。具體的內容如下。
Step 1:每個節點 ii
i 給所有節點發送 vi′v_i^{'}
vi′
Step 2:當且僅當 #i2(x)⩾2t+1\#_i^2(x) \geqslant 2t+1
#i2(x)⩾2t+1 時,每個節點 ii
i 給所有節點發送字符串 xx
x
輸出決定條件:
BBA∗BBA^*
BBA∗
1.2 二元拜占庭協議 二元拜占庭協議BBA∗BBA^*
BBA∗借鑑了Feldman、Micali提出的二元BA協議。
前提:誠實節點超過 2/3,即總節點數 n≥3t+1
n \geq 3t+1
n≥3t+1,其中 tt
t 代表惡意節點的最大可能數量。不管惡意節點如何操作,每次主循環的執行都有 1/3 的概率把節點帶入協議中。
該協議有一個設置的要求:需要一個共同的隨機字符串 rr
r,不依賴節點的key (Algorand中是 QrQ^r
Qr)。
協議實際上是一個3步循環:節點間不停的交換布爾值。
節點可以在任意時間退出該循環。如果節點 i
i
i 在退出前,在某步驟廣播了一個值 bb
b,退出後,其它節點就假裝從 ii
i 那收到了 bb
b 值。
另外,協議用了一個計數器 γ\gamma
γ,標記3步循環執行的次數。
3步循環:
1.3 BA 協議
BA協議可以通過分級共識協議`GC、二元拜占庭協議 BBA來描述。
Step 1、2:每個節點執行GC,輸入爲初始值,計算出一對(,)。
Step 3:每個節點執行 BBA,初始輸入爲0(若=2,則爲1),計算bit位。
輸出決定條件:若=0,則每個節點的輸出爲,否則爲⊥。注:輸出即達成共識。
爲何能在Algorand中使用 BA協議?
首先,Algorand中的通信都是通過廣播,而BA 協議不僅僅適用於傳統的通信網絡,同時適用於gossip網絡。
其次,Algorand最大的特性之一是節點可替換,而BA協議完全滿足這一屬性。
綜上,只要滿足節點可替換、能在gossip網絡工作的BA 協議都適用於Algorand系統。Micali、Vaikunthannatan對 BA進行了擴展,使得其能在大部分節點是誠實的系統中高效運行。這個協議同樣可用於Algorand。
二、Algorand共識核心
在瞭解Algorand共識的具體內容之前,我們先來看看它的整個思考過程。
在Algorand的設想中,理想的每一輪共識 rr
r 都需要滿足兩個屬性:
-
完全的正確。所有誠實的節點對同一個區塊B達成一致。
-
完備性。最大化B中的交易集合PAY
由於惡意節點的存在,同時滿足這兩個屬性比較困難。所以Algorand採取了更實際的目標: 帶着壓倒性的概率,保證完全正確和完備性接近 hh
h (h>2/3h > 2/3
h>2/3,是誠實節點的比例)。換而言之,優先滿足正確性。畢竟,未在當前輪處理的交易可以在下一輪處理,而分叉是無法容受的。
於是,問題轉化爲協議如何設計來滿足完全的正確,以及最大程度的保證完備性。
2.1 符號定義
r⩾0r \geqslant 0
r⩾0:第幾輪
s⩾1s \geqslant 1
s⩾1:第幾步
:第 rr
r 輪生成的區塊
:第 r−1r-1
r−1 輪結束後第 rr
r 輪開始時的公鑰集合
第 r−1r-1
r−1 輪結束後第 rr
r 輪開始時的狀態
:第 rr
r 輪的支付集合
:第 rr
r 輪的領導者,它選擇第 rr
r 輪的支付集合,並決定種子
:第 rr
r 輪結束時生成的種子,被用來選擇第 r+1r+1
r+1 輪的驗證者。獨立於區塊中的支付集合,且不能被操縱。
:第 rr
r 輪第 ss
s 步選中的驗證者集合
2.2 領導者選擇
參考了 Micali、Rivest 設計的微支付機制,Algorand規定節點 ii
i 只有滿足以下條件,才能成爲potential leader:
2.3 驗證者選擇
根據論文,從第 r−kr-k
r−k 輪的系統節點中隨機選擇一部分來組成第 rr
r 輪的驗證者集合。節點 ii
i 只有滿足以下條件,才能成爲中的驗證者:
這兩個條件說明了:
-
在BA協議的最後一步,至少需要給定數量的誠實節點對新區塊 Br
B^r
Br 進行數字簽名; -
每輪只有一個區塊擁有必需數量的簽名;
-
BA協議每一步都需要2/3的誠實節點。
2.4 區塊的生成
領導者 若是誠實的,則新區塊的形式如下:
假若領導者 是惡意的,則新區塊會是以下兩種形式之一:
-
形式(1):有可能交易集合=∅;i
i
i是第 輪的potential leader,然而 不一定是領導者(當 不展示它的憑證,導致其它節點無法驗證時)。 -
形式(2):在BA協議的第 輪中,所有誠實節點輸出默認值,即空區塊
時,出現這種形式。
儘管形式(1)、(2)中都會出現交易集合爲空的情況,但是兩者是不同的區塊,且在不同的情況下出現:
Algoran 中第輪生成區塊B 的過程
2.5 問題
交流羣
受限於筆者的學識和能力,文章內容難免有紕漏之處。技術探討,請添加加微信 kvdoth
備註「YOUChain 技術交流」,進羣交流。
公衆號
歡迎添加「有令」公衆號,瞭解項目最新進展和技術分享。