達(dá)世幣未來(lái)將如何應(yīng)用Graphene協(xié)議
為了確保區(qū)塊鏈網(wǎng)絡(luò)的平穩(wěn)運(yùn)行,新的區(qū)塊必須具備向其它節(jié)點(diǎn)快速傳播的能力。很多研究都就“如何在盡可能小的寬帶條件下實(shí)現(xiàn)區(qū)塊傳播”這一課題展開(kāi)了深入的探討。簡(jiǎn)而言之,占用的寬帶越小,則傳播的速率就越快。正因?yàn)檫@樣,Graphene協(xié)議才使用公認(rèn)寬帶占用最少的方案來(lái)完成區(qū)塊傳播。
區(qū)塊傳播的原理和寬帶的阻塞點(diǎn)
當(dāng)達(dá)世幣用戶(hù)進(jìn)行交易時(shí),交易會(huì)在不同的計(jì)算機(jī)或節(jié)點(diǎn)上傳遞,也就是說(shuō),許多節(jié)點(diǎn)都會(huì)參與到交易的發(fā)送進(jìn)程當(dāng)中。最終,幾乎每個(gè)節(jié)點(diǎn)都會(huì)存有這一交易的信息,以便完成對(duì)交易的處理。在這個(gè)過(guò)程當(dāng)中,所有未經(jīng)處理的交易都會(huì)存儲(chǔ)在內(nèi)存當(dāng)中并被統(tǒng)稱(chēng)為mempool。通常情況下,該交易會(huì)在兩分半鐘之內(nèi)被寫(xiě)入在一個(gè)區(qū)塊中,在這種情況下,該交易被視為有效并且已經(jīng)由網(wǎng)絡(luò)處理。
以上述知識(shí)為基礎(chǔ),如果一個(gè)節(jié)點(diǎn)需要傳播一個(gè)區(qū)塊上的所有交易,那么它將有如下選擇:一是傳遞包含所有交易的整個(gè)區(qū)塊,這也是最早的比特幣所采用的方法;二是為區(qū)塊中的所有交易及其次序傳遞標(biāo)識(shí)符,以便接收到標(biāo)識(shí)符的節(jié)點(diǎn)能夠基于mempool中已有的交易來(lái)構(gòu)建區(qū)塊,而Compact Blocks、Xthin和Graphene正是借助這種方式來(lái)減少區(qū)塊傳播所需的帶寬。
Graphene如何緩解對(duì)寬帶占用過(guò)大的問(wèn)題
基于Graphene協(xié)議還原新區(qū)塊的節(jié)點(diǎn)往往會(huì)構(gòu)建兩個(gè)數(shù)據(jù)結(jié)構(gòu):首先,它會(huì)構(gòu)造一個(gè)包含區(qū)塊中的所有交易的布隆過(guò)濾器;其次,它構(gòu)建包含區(qū)塊中的所有交易的IBLT(即可逆的布隆查找表)。隨后,這些不附帶整個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)都會(huì)被發(fā)送到各個(gè)節(jié)點(diǎn)上。接收這些數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)將通過(guò)布隆過(guò)濾器傳遞mempool中的所有交易,從而提供區(qū)塊中所有交易的列表。然而,由于布隆過(guò)濾器可能存在一定的誤報(bào)率,因此列表中的交易可能會(huì)多于實(shí)際數(shù)量,也可能會(huì)遺漏mempool中的交易。考慮到這一隱患,接收數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)將會(huì)從IBLT中解壓縮待處理的交易,從而識(shí)別任何誤報(bào)或遺漏的交易。最后,接收數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)還會(huì)在必要的情況下向其它節(jié)點(diǎn)查詢(xún)遺漏的交易。
自此,Graphene協(xié)議的這兩個(gè)數(shù)據(jù)結(jié)構(gòu)足以恢復(fù)區(qū)塊中的整個(gè)交易集合。那么,接下來(lái)的步驟就是將還原的交易回歸到正確的順序了。第一個(gè)版本的Graphene協(xié)議會(huì)通過(guò)布隆過(guò)濾器和IBLT來(lái)傳遞有關(guān)順序的信息。雖然這些信息占用的寬帶并不大,但還是會(huì)隨著區(qū)塊中的交易數(shù)量的增加而增加。舉幾個(gè)例子,當(dāng)區(qū)塊中的交易少于256筆時(shí),每筆交易占用的寬帶還不到1字節(jié);當(dāng)區(qū)塊中的交易少于65,000筆時(shí),每筆交易占用的寬帶還不到2字節(jié);而當(dāng)區(qū)塊中的交易少于1600萬(wàn)筆時(shí),每筆交易占用的寬帶還不到3字節(jié)。相比之下,如果達(dá)世幣的區(qū)塊可以處理1600萬(wàn)筆交易,那么這一平均交易量將達(dá)到維薩卡的24倍。
Bitcoin Unlimited進(jìn)一步推進(jìn)了Graphene協(xié)議的發(fā)展。去年11月,比特幣現(xiàn)金的區(qū)塊鏈出現(xiàn)了硬分叉,此次分叉的目的是為了更改共識(shí)準(zhǔn)則并要求區(qū)塊以既定順序進(jìn)行交易。這種順序選擇也被稱(chēng)作規(guī)范次序。在此更改之后,借助Graphene協(xié)議進(jìn)行的區(qū)塊傳播可以不包含順序信息。此舉進(jìn)一步強(qiáng)化了Graphene協(xié)議的優(yōu)勢(shì)——區(qū)塊可以變得極大,而最佳的布隆過(guò)濾器和IBLT卻可以維持極小的狀態(tài)。
Graphene協(xié)議面臨的挑戰(zhàn)
雖然Graphene協(xié)議具備上述優(yōu)勢(shì),但現(xiàn)實(shí)的情況卻更加復(fù)雜。由馬薩諸塞大學(xué)阿默斯特分校的研究人員開(kāi)發(fā)的Graphene協(xié)議應(yīng)用實(shí)例假定所有的內(nèi)存中都存有所有的交易。而達(dá)世幣在亞利桑那州立大學(xué)創(chuàng)建的實(shí)驗(yàn)室的研究人員則認(rèn)為,mempools將不可避免地存在一些差異,也就是mempool分歧。此外,研究還表明,隨著網(wǎng)絡(luò)的發(fā)展,mempool分歧還會(huì)進(jìn)一步惡化。這意味著由Umass研究人員計(jì)算的IBLT解碼的概率在實(shí)踐中將變得更小。換言之,Graphene協(xié)議的性能不會(huì)像預(yù)期的那樣優(yōu)秀。
在由達(dá)世幣核心團(tuán)隊(duì)贊助的Nakul Chawla暑期實(shí)習(xí)期間,我們探討了如何從容地應(yīng)對(duì)IBLT解碼失敗的情況。實(shí)際上,任何節(jié)點(diǎn)都可以提供另一個(gè)布隆過(guò)濾器和IBLT。在獲得布隆過(guò)濾器和IBLT之后,它們就可以組合在一起,從而實(shí)現(xiàn)完成解碼。我們甚至可以借鑒同時(shí)向三個(gè)節(jié)點(diǎn)申請(qǐng)布隆過(guò)濾器和IBLT的BitcoinXT的經(jīng)驗(yàn)。換句話(huà)說(shuō),我們可以嘗試解碼第一次完整響應(yīng),如果解碼失敗,我們就可以參考其它節(jié)點(diǎn)的補(bǔ)充響應(yīng),并將它與第一次完整響應(yīng)的數(shù)據(jù)相結(jié)合。在這次實(shí)習(xí)期間,我們確定了導(dǎo)致無(wú)限循環(huán)的畸形IBLT,并提供了簡(jiǎn)單有效的應(yīng)對(duì)措施,不僅如此,我們還研發(fā)出了使用Graphene協(xié)議的實(shí)用工具。我們已經(jīng)對(duì)這個(gè)客戶(hù)端進(jìn)行了一些測(cè)試,但在廣泛的網(wǎng)絡(luò)推廣之前,我們還需要做一些收尾工作。即使在上線(xiàn)前經(jīng)歷一些挫折也是雖敗猶榮和有益的。不過(guò),在我看來(lái),前期的這些工作已經(jīng)起到了拋磚引玉的作用,催生了更妙的創(chuàng)意。
達(dá)世幣未來(lái)將如何應(yīng)用Graphene協(xié)議?
我們需要明確的一點(diǎn)是,目前達(dá)世幣還沒(méi)有引入Graphene協(xié)議的具體計(jì)劃,因?yàn)閳F(tuán)隊(duì)需要在Evolution上線(xiàn)后才能做出相關(guān)的規(guī)劃。我們期待屆時(shí)能出現(xiàn)更適宜達(dá)世幣網(wǎng)絡(luò)新屬性的創(chuàng)意。Graphene協(xié)議確實(shí)具有許多優(yōu)良的性能,但我在上文中并沒(méi)有提到它的一個(gè)重大缺陷,也就是眾所周知的毒塊攻擊。具體來(lái)說(shuō),惡意礦工可以開(kāi)挖含有大量未廣播到網(wǎng)絡(luò)上的交易的區(qū)塊,在這種情況下,Graphene協(xié)議將始終無(wú)法解碼。這樣的攻擊雖然不會(huì)造成毀滅性的后果,但卻會(huì)像持續(xù)打嗝一樣帶來(lái)不適或不便。
我們希望能在未來(lái)為大家?guī)?lái)有關(guān)毒塊攻擊的更多講解,然后講解如何通過(guò)亞利桑那州立大學(xué)區(qū)塊鏈研究實(shí)驗(yàn)室的方法來(lái)降低這種攻擊的風(fēng)險(xiǎn)并且同時(shí)維持快速的大型區(qū)塊傳播。