共識和執行的分離是狀態機復制系統的基本架構設計之一(可參見 Base 20013)。分離的好處可參見 Yin et al 2003。在傳統的狀態機復制系統(SMR)中,命令不僅要復制并傳播到所有副本,還得在所有副本上執行。
在很多系統中,可拓展性的瓶頸是 執行 指令的成本。對 SMR 系統的一種主要拒絕服務攻擊工段是發出合法的命令,讓整個系統浪費時間在執行上(詳情請參閱:例 1 和例 2)。很多系統通過設計領域專用語言來(Domain Specific Language)避免攻擊。
比特幣用比特幣腳本,小心翼翼地限制每筆交易的計算復雜性。
以太坊用 gas 機制來限制執行的復雜性,并用效率來激勵人們對 Gas 的使用。
并行化執行
讓狀態機并行化執行也是一種提高執行能力的方法。當在區塊中的大部分命令無狀態競用(相互獨立,或者說可互換順序)的情況下,這個方法是有效的。它的主要思想是設想一種在無競用的條件下并行執行、在有競用時維護安全性的協議,用該協議模擬出連續執行的結果。詳情請參看 Eve 2012、 Dickerson、 Gazzillo、 Herlihy、 Koskinen 2017 和 Saraph 和 Herlihy 2019。
不在 SMR 內執行,使用經濟激勵和錯誤性證明來驗證
(optimistic rollups 類型)
在這類解決方案中,指令作為數據提交到 SMR 內,但是執行不是由驗證狀態機副本完成的。狀態機副本僅充當 數據可用性層。
不用副本來執行指令,而用經濟激勵機制——玩家可以通過 發布債券 來成為執行者。鎖定了保證金的執行者都可以提交執行結果,而其他人可以通過提交錯誤性證明來舉報執行人提交了不正確的執行結果。如果這份錯誤性證明是正確的,執行者將受到 懲罰,而提交者將得到部分獎勵。如果挑戰者在錯誤性證明上說謊,那他的保證金就會大幅罰沒。
實現高效挑戰的協議起源于 Feige Kilian 2000,而 Canetti, Riva, Rothblum 2011 沿著這條道路推進,最終演化成采用鏈上激勵的 TrueBit Teutsch, Reitwie?ner 2017 和 Buterin’s Off-Chain Oracles 。如今,這種方法在名為 optimistic rollups 的方案中中得到進一步發揚(詳情可參看 merged consensus、Adler, Mikerah、Quintyne-Collins、Al-Bassam、Sonnino、Buterin 和 LazyLedger)。
不在 SMR 內執行、用簡潔的證明來驗證
(zk rollups 類型)
在本方案中,指令同樣作為 數據 提交到 SMR 中,執行同樣不關驗證狀態機副本的事。副本只是作為指令的數據可用性層。
不同于用挑戰游戲和錯誤性證明來驗證執行結果,利用 簡潔的非交互式證明 也是可以的(PCP、Groth 10、Groth 16、 Ben-Sasson、Chiesa、Tromer、Virza 2013-2019 和 survey)。這些密碼學技術允許驗證者生成非常短的證明,同時對這些證明的驗證在密碼學上具有高度的可靠性和完整性。執行(和證明生成)只能由同一實體完成。有了簡潔證明后,驗證狀態機副本只需要驗證簡潔證明,而不需要重新執行長交易。Zexe 用這個方法來建構了基于 nano-kernel 的證明系統,人們因此可以在 UTXO 中實現隱私交易。
Buterin 論述 zk-roll-up 的文章和 Ben-Sasson 的 podcast 強調了這種拓展交易處理量的方法。詳情請查看 Buterin 的視頻,進一步去了解如何將隱私(零知識)添加到簡潔的證明中(zk zk rollups)中。
這種簡潔的證明有很多好處:驗證證據正確性的成本非常低。而短處在于構造指令執行的證明通常比單單去執行指令的成本要高得多。還有一個壞處在于這些協議增加了大量的復雜性。此外,某些協議還需要繁復的受信任初始設置儀式。
需要注意的是,以上介紹的方法意在克服執行可拓展性的瓶頸,而不在改變數據可拓展性的瓶頸。
感謝
我們想借此機會感謝 Ling Ren、Kartik Nayak、 Alin Tomescu、 Pratyush Mishra、Louis Guthmann 和 John Adler。感謝他們給本文提供了富有教益的反饋。
(完)
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。