Vitalik發布關于輕客戶端欺詐證明問題的論文區塊鏈

                  trustnodes 2018-09-27 14:02
                  分享到:
                  導讀

                  網絡上一直有關于如何設計欺詐證明系統的討論,但是沒有提出處理所有區塊無效案例和數據可用性的完整設計。

                  以太坊聯合創始人Vitalik Buterin和倫敦大學學院的兩名博士生Mustafa Al-Bassam和Alberto Sonnino發布了一篇關于欺詐證明(fraud proof)的論文,以便“輕客戶端可以獲得接近全節點等效的區塊有效性保證”。

                  fraud-proofs-sep-2018

                  輕客戶端就是智能手機上的以太坊錢包。它們非常輕,對礦工非常信任,自身也不驗證協議規則。到目前為止,一切都很順利,但是分片對安全性的要求更高,這一要求也會讓輕型錢包更加安全。論文中說:

                  “我們的論文對于使用分片對區塊鏈進行擴容的工作也能發揮重要作用,因為在分片系統中,網絡中單個節點不會下載并驗證所有分片的狀態,因此必須使用欺詐證明來檢測來自惡意分片的無效區塊?!?/p>

                  這篇高度技術性但也能讓人理解的論文描述了一種方法,通過該方法,節點可以驗證區塊,然后發布這種有效性的證明。然后,輕錢包或分片可以驗證該證明,如果有任何錯誤,它們會拒絕該區塊。但是有一個問題:

                  “惡意區塊生產者可以通過扣留重新計算dataRooti所需的數據并僅將區塊頭釋放到網絡來阻止整個節點生成欺詐證明。區塊生產者能在區塊發布后很長時間后釋放可能包含無效交易或狀態轉換的數據,使區塊無效。這將導致未來區塊分類賬上的交易回滾?!?/p>

                  證明部分可以說是相對容易的,但這個數據扣留問題很難解決。 Buterin說:

                  “基本上,現在會使用抹除碼和欺詐證明將'100%數據可用性'問題轉換為'75%數據可用性'問題,轉換后的問題可以通過隨機抽樣技術更容易地解決?!?/p>

                  Vitalik的論文更深入地描述了這個過程,本文也在某種程度上引用了論文中的相關內容,以便于讓讀者更容易理解:

                  “區塊生產者編譯由k個share組成的數據塊,使用Reed-Solomon編碼將數據擴展到2k個share,并在擴展數據(每個葉對應一個share)上計算Merkle root(dataRooti)。

                  當輕客戶端使用dataRooti接收區塊頭時,它們會從dataRooti所代表哈希樹中隨機采樣share,并且只有在收到所有請求的share后才接受區塊。如果一個對抗性的區塊生產者使超過50%的share無法使用,從而使完整數據無法恢復,則有50%的可能性客戶將在第一次抽樣中隨機抽取不可用的share,兩次抽樣后有25%的概率,三次后為12.5%,依此類推。這是使用替換抽樣時的情況,在完整的方案中,會在沒有替換的情況下進行抽樣,因此概率會更低。

                  請注意,要使此方案正常工作,網絡中必須有足夠的輕客戶端采樣足夠的share,以便區塊生產者需要釋放超過50%的share才能通過所有輕客戶端的抽樣挑戰,從而可以恢復整個區塊?!?/p>

                  有了完整的區塊以后,我們可以創建欺詐證明,輕節點可以檢查它,而輕型節點實際上可以變成一個完整的節點。

                  這里假設至少有一個完整節點是誠實的,顯然誠實的完整節點越多越好。在分片的情況下,則假設每個分片至少有一個誠實的節點,這意味著分片中的節點將是非常重要的,并且在某種程度上可以理解為為節點越多,容量越大。

                  前Blockstream CTO和現比特幣核心開發人員Gregory Maxwell的反應是:

                  “錯誤編碼的反扣留問題已被多次討論過——而且我一直很沮喪,因為我無法激發人們對這個想法的興趣。”

                  論文中也表示:

                  “網絡上一直有關于如何設計欺詐證明系統的討論,但是沒有提出處理所有區塊無效案例和數據可用性的完整設計?!?/p>

                  Vitalik的論文包含一個欺詐證明原型和一個數據可用性原型。由于欺詐證明一直被認為是公共區塊鏈擴容的主要瓶頸,因此這似乎是一種技術上的突破。按照當前的方案,資源使用消耗量為每1MB區塊14kb,驗證時間大約為1秒。

                  fraud-proofs-size-sep-2018

                  欺詐證明的大小,2018年9月

                  fraud-proofs-validation-time-sep-2018

                  欺詐證明的驗證時間,2018年9月

                  輕客戶端必須為每個區塊執行上述操作,但它們不需要存儲這些證明。 一旦它們檢查發現該區塊是有效的,它們就可以忽略14kb的資源使用消耗量,因此看起來似乎不會消耗存儲空間。這意味著在這種設計中,輕節點可以自動拒絕無效區塊,從而讓礦工不能欺騙它們,因為在這種設計中,輕節點將像完整節點一樣支持協議規則。

                  如果情況確實如此的話,那么完整節點存儲和同步可能不再是問題,可擴展性問題有能得到解決。

                  區塊 節點 證明 使用 數據
                  分享到:

                  1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
                  2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
                  3.作者投稿可能會經TMT觀察網編輯修改或補充。