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