header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

以太坊拜占庭協議 Casper FFG 的安全性分析 | Sperax 專欄

閱讀本文需 9 分鐘
Buterin and Griffith 證明了Casper FFG 具有安全性和合理活性

作者:王永革教授,著名華裔密碼學家,北卡羅來納大學夏洛特分校 (UNC, Charlotte) 計算機系終身教授,德國海德堡大學獲得博士學位。

今天我們來探討以太坊拜占庭協議 Casper FFG 的安全性問題。我們的分析是基於以下論文中的 Casper FFG 協議:


●V. Buterin和V. Griffith。卡斯珀友好的結局小工具。預印本arXiv:1710.09437v4, 2019。https://arxiv.org/pdf/1710.09437.pdf


傳統的拜占庭協議主要用於複製狀態機(state machine replications SMR)環境。區塊鏈的環境不同於複製狀態機的環境。所以我們可以給區塊鏈設計比較簡化的拜占庭協議。Buterin and Griffith 在如上文章中嘗試着設計一種簡化的拜占庭協議作爲區塊最終確定性的小掛件。特別的,Buterin and Griffith 設計了拜占庭協議 Casper the Friendly Finality Gadget (Casper FFG)。在 Casper FFG 中,PoW 系統產生的區塊需要得到一些參與者(區塊驗證者)的投票確認。這樣可以防止區塊鏈的分叉。爲了簡化我們的討論,我們假定系統裏有 n = 3t + 1 個等權重的區塊驗證者。爲了減輕驗證的工作量,我們先構造一個檢查點樹。檢查點樹的節點僅包括區塊鏈上高度爲 100 ∗ k 的區塊節點。假定 s 和 t 是檢查點樹上的兩個節點,並且 s 是 t 的祖先。如果一個區塊驗證者 Pi 認爲 s 到 t 的區塊可以被確認,Pi 對所有的驗證者廣播一個簽名了的投票 ⟨Pi : s, t⟩。對兩個檢查點 a 和 b,如果我們收到 2t + 1 個投票⟨P : s, t⟩,那麼我們說 a → b 有一個絕對多數的連接。如果我們有一個從根節點 a0 開始的絕對多數的連接鏈 a0 → a1 → · · · → a,那我們說檢查點 a 是合乎情理的。如果我們有一個從根節點 a0 開始的絕對多數的連接鏈 a0 → a1 → ··· → ai → a 並且 a 是 ai 的親生子,那我們說檢查點 a 是被確認的。


對一個檢查點 s,我們用 h(s) 表示檢查點 s 在檢查點樹上的高度。在 Casper FFG 中,一個誠實的區塊驗證者 Pi 不應公佈兩個滿足以下條件的不同的投票⟨Pi : s1,t1⟩和⟨Pi : s2,t2⟩:


  「h(t1) = h(t2)」或者「h(s1) < h(s2) < h(t2) < h(t1)」


●,如果一個區塊驗證者 Pi 被發現投出了滿足以上條件的兩票,那他的押金將被沒收。Buterin and Griffith 證明了 Casper FFG 的如下特性: 


●,在 Casper FFG 中,兩個相互矛盾的檢查點是不可能被同時確認的。所以我們達到了系統的安全性


如果底層的區塊鏈構造機制總能夠產生出被確認了的檢查點的後代,那麼絕對多數的連接鏈可以總是被延長從而產生新的被確認的檢查點。換句話說,系統具有合理活性


爲了保證系統的活性,Buterin and Griffith 推薦底層的區塊鏈構造機制使用「correct by construction」的分叉機制:總是去延長最長的合乎情理的檢查點。


Buterin and Griffith 的分析認爲:如果用戶總是定期(比如至少一月一次)的登入系統來獲取系統更新,並且從不回覆到確認了的區塊之前,那麼 Casper FFG 可以防止 long-range revision 攻擊。Buterin and Griffith 也建議,如果一個區塊驗證者長期不投票,那麼他的押金將逐漸的被沒收。這樣可以防止機毀人亡的悲劇(比如,由於網絡分塊,t+1 個區塊驗證者不能投票)。雖然 Casper FFG 可以解決很多以太坊所面臨的問題,Buterin and Griffith 承認網絡分塊攻擊仍然是一個未解決的問題。


在 Buterin and Griffith 的文章中,作者沒有討論他們的網絡模型。在同步網絡中,Casper FFG 的安全性應該能夠得到保證。但是在異步網絡中,有些消息可能被推遲到 GST 後纔到達,並且有些消息可能會丟失。所以 Casper FFG 在異步網絡裏的安全性問題需要進行仔細的分析。在以下的段落裏,我們給出幾個異步網絡的情景。在這些情景下,Casper FFG 很可能是無法具有活性的(也就是說 Casper FFG 也可能會處於死機狀態)。


1. 假定在時刻 T,檢查點 a 被確認 (有一個從 a 到其親生子 b 的絕對多數連接) 並且還沒有區塊驗證者給 b 的後代檢查點投過票。如果一個誠實的節點 Pi 的投票 ⟨Pi : b, c⟩ 被系統丟失了並且所有的 t 個不誠實節點都不給 b 的後代投票。那麼沒有節點可以得到足夠多的投票。這種情形類似於 Casper FFG 所分析的機毀人亡的情景(但是有點不同)。


2. Buterin and Griffith 在他們的文章中,並沒有仔細的分析達到其合理活性特徵所必備的條件。Buterin and Griffith 只是說 Casper FFG 可以用於大部分 PoW 區塊鏈之上。但是如果我們不給 PoW 機制加入特別的條件,Casper FFG 是可以進入死機狀態的(從而達不到其合理活性)。假定在時刻 T,檢查點 a 被確認 (有一個從 a 到其親生子 b 的絕對多數連接) 並且還沒有區塊驗證者給 b 的後代檢查點投過票。現在假定底層的區塊鏈構造機制從區塊 b 開始分叉。換句話說,b 有兩個檢查點後代 c 和 d。如果 t 個誠實的區塊驗證者投票給 c,t+1 個誠實的區塊驗證者投票給 d,t 個不誠實的區塊驗證者隨機投票。那麼從 b 節點起,沒有檢查點可以被確認。從而產生死機狀態。因爲所有的區塊驗證者都在投票,Buterin and Griffith 所建議的防止機毀人亡的機制沒發解決這兒的問題。我們的分析指出,在理論上,Casper FFG 並無法防止系統死機狀態。也就是說,Casper FFG 不具有活性。但是在實際中,如果檢查節點樹的構造是以 100 個基本節點爲一個單位,並且節點的生成速度足夠慢,那麼發起以上攻擊的可能性比較低(可能性仍然是存在的)。



歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交