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





