Vitalik發(fā)布的欺詐證明論文,對區(qū)塊鏈擴容的工作發(fā)揮了重要作用
以太坊聯(lián)合創(chuàng)始人Vitalik Buterin和倫敦大學學院的兩名博士生Mustafa Al-Bassam和Alberto Sonnino發(fā)布了一篇關于欺詐證明(fraud proof)的論文,以便“輕客戶端可以獲得接近全節(jié)點等效的區(qū)塊有效性保證”。
輕客戶端就是智能手機上的以太坊錢包。它們非常輕,對礦工非常信任,自身也不驗證協(xié)議規(guī)則。到目前為止,一切都很順利,但是分片對安全性的要求更高,這一要求也會讓輕型錢包更加安全。論文中說:
“我們的論文對于使用分片對區(qū)塊鏈進行擴容的工作也能發(fā)揮重要作用,因為在分片系統(tǒng)中,網絡中單個節(jié)點不會下載并驗證所有分片的狀態(tài),因此必須使用欺詐證明來檢測來自惡意分片的無效區(qū)塊?!?/p>
這篇高度技術性但也能讓人理解的論文描述了一種方法,通過該方法,節(jié)點可以驗證區(qū)塊,然后發(fā)布這種有效性的證明。然后,輕錢包或分片可以驗證該證明,如果有任何錯誤,它們會拒絕該區(qū)塊。但是有一個問題:“惡意區(qū)塊生產者可以通過扣留重新計算dataRooti所需的數(shù)據(jù)并僅將區(qū)塊頭釋放到網絡來阻止整個節(jié)點生成欺詐證明。區(qū)塊生產者能在區(qū)塊發(fā)布后很長時間后釋放可能包含無效交易或狀態(tài)轉換的數(shù)據(jù),使區(qū)塊無效。這將導致未來區(qū)塊分類賬上的交易回滾?!?/p>
證明部分可以說是相對容易的,但這個數(shù)據(jù)扣留問題很難解決。 Buterin說:“基本上,現(xiàn)在會使用抹除碼和欺詐證明將‘100%數(shù)據(jù)可用性’問題轉換為‘75%數(shù)據(jù)可用性’問題,轉換后的問題可以通過隨機抽樣技術更容易地解決。”
Vitalik的論文更深入地描述了這個過程,本文也在某種程度上引用了論文中的相關內容,以便于讓讀者更容易理解:“區(qū)塊生產者編譯由k個share組成的數(shù)據(jù)塊,使用Reed-Solomon編碼將數(shù)據(jù)擴展到2k個share,并在擴展數(shù)據(jù)(每個葉對應一個share)上計算Merkle root(dataRooTI)。
當輕客戶端使用dataRooTI接收區(qū)塊頭時,它們會從dataRooTI所代表哈希樹中隨機采樣share,并且只有在收到所有請求的share后才接受區(qū)塊。如果一個對抗性的區(qū)塊生產者使超過50%的share無法使用,從而使完整數(shù)據(jù)無法恢復,則有50%的可能性客戶將在第一次抽樣中隨機抽取不可用的share,兩次抽樣后有25%的概率,三次后為12.5%,依此類推。這是使用替換抽樣時的情況,在完整的方案中,會在沒有替換的情況下進行抽樣,因此概率會更低。
請注意,要使此方案正常工作,網絡中必須有足夠的輕客戶端采樣足夠的share,以便區(qū)塊生產者需要釋放超過50%的share才能通過所有輕客戶端的抽樣挑戰(zhàn),從而可以恢復整個區(qū)塊?!?/p>
有了完整的區(qū)塊以后,我們可以創(chuàng)建欺詐證明,輕節(jié)點可以檢查它,而輕型節(jié)點實際上可以變成一個完整的節(jié)點。
這里假設至少有一個完整節(jié)點是誠實的,顯然誠實的完整節(jié)點越多越好。在分片的情況下,則假設每個分片至少有一個誠實的節(jié)點,這意味著分片中的節(jié)點將是非常重要的,并且在某種程度上可以理解為為節(jié)點越多,容量越大。
前Blockstream CTO和現(xiàn)比特幣核心開發(fā)人員Gregory Maxwell的反應是:“錯誤編碼的反扣留問題已被多次討論過——而且我一直很沮喪,因為我無法激發(fā)人們對這個想法的興趣?!?/p>
論文中也表示:“網絡上一直有關于如何設計欺詐證明系統(tǒng)的討論,但是沒有提出處理所有區(qū)塊無效案例和數(shù)據(jù)可用性的完整設計?!?/p>
Vitalik的論文包含一個欺詐證明原型和一個數(shù)據(jù)可用性原型。由于欺詐證明一直被認為是公共區(qū)塊鏈擴容的主要瓶頸,因此這似乎是一種技術上的突破。按照當前的方案,資源使用消耗量為每1MB區(qū)塊14kb,驗證時間大約為1秒。
輕客戶端必須為每個區(qū)塊執(zhí)行上述操作,但它們不需要存儲這些證明。 一旦它們檢查發(fā)現(xiàn)該區(qū)塊是有效的,它們就可以忽略14kb的資源使用消耗量,因此看起來似乎不會消耗存儲空間。這意味著在這種設計中,輕節(jié)點可以自動拒絕無效區(qū)塊,從而讓礦工不能欺騙它們,因為在這種設計中,輕節(jié)點將像完整節(jié)點一樣支持協(xié)議規(guī)則。
如果情況確實如此的話,那么完整節(jié)點存儲和同步可能不再是問題,可擴展性問題有能得到解決。