Casper FFG 的可審計安全性和近似活性

買賣虛擬貨幣
感謝 Carl Beekhuizen 的審閱。區塊鏈需要向使用者提供兩種保障—— 1)區塊的確定性(finality)和 2).區塊鏈的活性(liveness)—— 區塊鏈的底層共識機制就負責提供這兩種保障。以太坊 2.0 中 ,共識過程只在信標鏈(beacon chain)上發生,並使用 Casper Friendly Finality Gadget (FFG) 機制來幫助達成共識。本篇文章旨在描述基本的 FFG 機制,並證明它能提供上述兩種保障。Casper FFG 是一種“確定性工具”,這意味著 Casper FFG 規範了區塊的確定性規則,並能在事件發生之後檢查區塊的確定性。FFG 機制與鏈的增長脫鉤,可以作為獨立元件附加在任意可用的區塊鏈協議上來提供區塊確定性。因為 Casper FFG 機制沒有能夠保證區塊鏈活性的策略,因此從這個角度來看,它並不算是完全成熟的共識協議。(也許之後我會再寫一篇關於以太坊 2.0 信標鏈的活性注意事項的文章!) 讓我們先從 Casper FFG 的結構開始,然後深入 Casper FFG 機制的規則,最終了解它提供的安全性 & 活性保證。

投票

驗證者透過提交見證訊息(表明自己認為的 “有效轉換(valid transitions)”)來對鏈上的區塊投票。投票的格式為(S, T),包含兩部分資訊:來源區塊(S)目標區塊(T)—— 目標區塊必須是 S 的派生區塊具體來說,投票所包含的資訊包括驗證者的數字簽名、用於確認區塊的區塊雜湊和塊高。

合理化(Justification)與確定性達成(Finalization)

合理化(Justification)與確定性達成(Finalization)是 Casper FFG 共識過程的兩個階段,可以和傳統拜占庭容錯(BFT)共識的 “prepare” 和 “commit” 階段做橫向對比。

合理化:只要某區塊 B 滿足下列條件,則該塊就被合理化:

· 區塊 B 是創世區塊,或
· 超過 2/3 以上的驗證者將選票投給 (A, B),其中 B 是 A 的後代區塊,且 A 在此前已被合理化。

確定性:只要區塊 B 滿足以下條件,即獲得確定性:

· 區塊 B 是創世區塊,或
· B 已滿足合理性,且有超過 2/3 的驗證者選票投給 (B, C),其中 C 是 B 的直系子塊(即,區塊高度(C) = 區塊高度(B) + 1 )。

注意:關於確定性的定義,在以太坊 2.0 中 Casper FFG 有更一般化的定義,詳見此文。使用上文這種表述是為了保證通俗易懂。

Casper FFG 規則

Casper FFG 只有兩條簡單的限制規則,應用這兩個規則就能防止驗證者同時給 (S1, T1) 和 (S2, T2) 投票:

(Casper FFG 不允許:)

· 區塊高度(T1) = 區塊高度(T2),或
· 區塊高度(S1) < 區塊高度(S2) < 區塊高度(T2) < 區塊高度(T1)

Casper FFG 的設計目的,是提供共識安全性和針對區塊敲定過程的活性。講得具體點,Casper FFG 提供以下保證:

· 可追責的安全性:如果兩個相互衝突的區塊都達成了確定性,則至少有 1/3 的驗證者違反 Casper FFG 規則,而 Casper FFG 可以識別出這些驗證者。
· 近似活性:無論協議執行處於什麼狀態,驗證者都能繼續履行職責、能在不違反 Casper FFG 規則的前提下敲定新區塊。

儘管和傳統的 BFT 文獻相比,這裡提到的安全性和活性定義不是那麼規範,但這種詮釋是非常適合用於分析區塊鏈的確定性工具的!

事實上,熟悉 BFT 文獻的人可能會覺得 “近似活性” 的概念簡直異想天開;不過因為 Casper FFG 只是“確定性工具”,整個機制只要確保誠實的驗證者能在不違反 FFG 規則的情況下推動推進協議,而不會被卡在任何一個環節,即可。

至於可追責安全性的定義,我們的重點是可追責性(即能夠識別出違反規則的驗證者),然後這部分資訊能夠被權益證明機制沿用、用於在區塊鏈上處罰惡意驗證者。最終目的還是為權益證明機制提供資訊,使後者的激勵機制能生效,促使共識過程形成協議一開始設想的均衡狀態。

安全性證明

假設兩個相互衝突的區塊(都不是對方的子塊)A 和 B 都被敲定了,那麼可能有兩種情況:

· 區塊高度(A) = 區塊高度(B)
因為 A 和 B 在得到確定性之前先要獲得合理性,則它們各自都要收到至少 2/3 的驗證者投票,這意味著一旦它倆都達到要求,則至少有 1/3 的驗證者違反了 Casper FFG 規則。

· 區塊高度(A) < 區塊高度(B) (具備普適性)

為了讓 A 達成確定性,需要超過 2/3 以上的驗證者將選票投給 (A, C),其中 C 是 A 的子塊。
為了讓 B 達成合理性,則在 B 之前必須存在連續升序的區塊(創世塊、B_0、 B_1、 ... 、B_n、B),且每個區塊都已經被它的後一區塊合理化(即,至少 2/3 的驗證者投票給(G, B_0)、(B_0, B_1)、...... )。假設區塊 B_m 是這串連續區塊中的首塊,區塊高度(A) < 區塊高度(B_m)。
注意,這串連續的區塊不存在與區塊 A 或 C 相同的塊高,不然就變成了上一種情形(塊高相等的衝突區塊情形,違反 Casper FFG 規則一) 。
現在假設我們將票投給 (B_n, B_m) (其中 n = m-1) ,使得 B_m 獲得合理性。則因為區塊高度(B_m)、區塊高度(B_m) 皆不等於區塊高度(A) /區塊高度(C),因此情況一定是區塊高度(B_n) < 區塊高度(A) < 區塊高度(C) < 區塊高度(B_m)。
這樣一來我們就能說——至少有 2/3 的驗證者違反了 Casper FFG 規則二。

而且只要確認票證集合、找出衝突選票、檢查驗證者簽名,就能輕易揪出違反 Casper FFG 規則的驗證者。

活性證明

· 假設 P_0 是最新的合理區塊,Q 是曾得到過驗證者投票的最新區塊。
· 接下來,任何屬於 P_0 子塊的區塊 P_1(區塊高度(Q) < 區塊高度(P_1) )都能在不違反 FFG 規則的情況下收到 2/3 驗證者的的投票(P_0, P_1),進而取得合理性。
· P_1 也能在不違反 FFG 規則的情況下收到 2/3 驗證者的的投票 (P_1, P_2),進而獲得確定性,其中 P_2 是 P_1 的子塊。

因此,至少有一組驗證者(超過 2/3)能夠敲定新塊。

進階閱讀材料

Casper FFG 初版論文 —— Casper the Friendly Finality Gadget
對 Eth2.0 應用 Casper FFG 方法的分析 —— Combining GHOST and Casper

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;