計算機頂級學術會議 NSDI 2019 收錄的唯一區塊鏈論文究竟如何實現 TPS 過萬?

鏈聞曾在去年 12 月份獨家報道了頂級計算機學術會議「NSDI 2019」收錄了由華人分佈式系統專家王嘉平和汪浩撰寫的區塊鏈擴容論文,二人提出的「Monoxide」方案在一個由 4.8 萬個全球節點組成的測試環境中,實現了比比特幣網絡高出 1000 倍的每秒事務處理量、1000 倍的狀態內存容量,有望打破不可能三角瓶頸。

最近,鏈聞和該方案的提出者王嘉平進行了深入交流,請他詳細介紹了該方案原理以及測試的具體細節。

NSDI 2019 大會聯合主席接受鏈聞採訪,表示王嘉平和汪浩的論文是本屆大會唯一一篇專攻區塊鏈領域的論文,「評審委員會成員對這篇論文提出的想法非常興奮,認爲這個想法值得討論並且將引發相應的後續工作。」

鏈聞相信,區塊鏈技術出現突破性發展離不開計算機科學、密碼學等基礎學科研究的推進,也離不開工程學上的實現。區塊鏈領域的創新性研究在 NSDI、OSDI、SOSP 這樣的學術會議上通過嚴格的同行評語,對整個行業的發展意義重大。我們可以查到的信息是,最近一次頂級學術會議接受區塊鏈公鏈方案的論文,是 2017 年 SOSP 大會,接受了 MIT 研究團隊提出的「Algorand」方案。

來源:鏈聞 ChainNews

王嘉平清楚的記得,那是去年 11 月 30 日,一個週五的晚上。他突然接到了俄亥俄州立大學計算機及工程學系研究科學家汪浩打來的電話。

「快看下郵件,NSDI 論文委員會給我們發來了郵件…」汪浩在電話中說。

就在那一瞬間,王嘉平的心突然咯噔一下,懸在了半空。

NSDI 的全稱是「 Networked Systems Design and Implementation」,是一個行業內備受尊敬的獨立機構「USENIX」所組織的旗艦會議。該機構由計算機系統大型用戶、開發者和研究者組成,其組織的這個大會是計算機網絡系統領域久負盛名的頂級學術會議。

王嘉平和汪浩二人在兩個月前曾向 NSDI 2019 大會提交了一份論文,提出了一個可以將現有區塊鏈單鏈共識算法橫向擴展 1000 倍以上的方法。

此時,他們此時正在焦急地等待評論文審委員會的迴應,期待論文能夠通過以嚴苛而聞名的同行審閱流程,被大會接受。

NSDI 2019 大會官方此前已經多次申明,會在 12 月 3 日週一論文委員會開會討論之後,統一發出錄用通知。而在在論文委員會開會討論之前提前收到通知,通常只會是兩種情況:論文毫無爭議地被錄用,或者毫無爭議地被拒收。

汪浩帶來的是個好消息:他們的論文入選了。

與組委會通知郵件同時抵達的,是請他們在 NSDI 2019 大會第一天的上午環節宣講論文的邀請。

硬核 | 王嘉平說,要用「一氧化物」撕開區塊鏈不可能三角NSDI 2019 大會收錄王嘉平和汪浩撰寫的區塊鏈擴容論文,「Monoxide」方案有望打破不可能三角瓶頸

在接下來幾天裏,王嘉平和汪浩認真研讀了 NSDI 2019 大會接受的所有論文。今年 NSDI 接受的 49 篇文章中,有超一半來自麻省理工學院、加州大學伯克利分校、斯坦福大學等美國頂尖高校,另外近一半則來自微軟、谷歌、因特爾等大型雲計算相關企業,國內高校僅有清華大學有三篇文章被錄用,分別是關於網絡系統建模、超算系統監控以及 RFID 無線技術。

NSDI 2019 大會的聯合主席 Jay Lorch 告訴鏈聞,王嘉平和汪浩的論文,是本屆大會唯一一篇專攻區塊鏈領域的論文。「評審委員會的成員對這篇論文提出的想法非常興奮,認爲這個想法值得討論並且將引發相應的後續工作」,Jay Lorch 說。

NSDI 是與 OSDI、SOSP 等會議同列爲全球計算繫系統頂級學術會議的大會,不過,NSDI 更加側重於網絡系統的設計與實現,注重計算機系統的性能和伸縮性等方向。由於該會議採用嚴格的雙盲評審,每篇文章都要經過兩輪總計六到八個審稿人審閱,之後還需要經過程序委員會的討論篩選,衆所周知的關於大數據系統 Spark 的研究論文,就由其主要研究者 Matei Zaharia 發表在 2012 年的 NSDI 大會上。

「一氧化物」的威力

面對鏈聞記者,王嘉平對 11 月末聽到自己論文入選 NSDI 大會時的心情記憶猶新。儘管對他來說,論文發表在頂級學術期刊、被學術會議認可並不是什麼新鮮事。

畢業於中科院計算技術研究所的王嘉平曾在微軟研究院工作多年,專注分佈式系統、計算機圖形學和視覺,以及用於機器學習的 GPU 集羣等領域的研究工作。在微軟研究院,他師從微軟全球執行副總裁、微軟研究院負責人沈向洋,被沈稱爲「最喜歡的學生」,曾有數十項研究成果發表在 ACM SIGGRAPH/ToG 等頂級國際期刊上,獲得十餘項美國專利。2016 年底,他加入創新工場,主導區塊鏈和人工智能方向的投資,在那裏,他主導了對比特大陸的首輪機構投資,成爲其首輪三大主要投資方之一。

硬核 | 王嘉平說,要用「一氧化物」撕開區塊鏈不可能三角王嘉平多年從事分佈式系統研究工作

王嘉平向鏈聞介紹,在「NSDI 2019」大會上入選的這篇論文中,他和自己的團隊提出了一個名爲「一氧化物 Monoxide」的方案,實現了「異步共識組」模型,可以將一個現有區塊鏈單鏈的共識算法橫向擴展 1000 倍以上。

更準確地說,這種擴展方法「將使得吞吐量(TPS)提升 1000 倍以上,同時也將全網計算能力(CPU)提升 2000 倍以上,將狀態表達的內存空間(RAM)提升 2000 倍以上」。

「一氧化物 Monoxide」是項目名。王嘉平說,「一氧化物」這個項目中最關鍵的設計在於利用「異步共識組 Asynchronous Consensus Zones」實現分佈式系統性能的提升。其中,核心又是「共識組 Consensus Zone」。

硬核 | 王嘉平說,要用「一氧化物」撕開區塊鏈不可能三角_「一氧化物」通過異步共識組實現分佈式系統性能的提升 _

據王嘉平介紹,所謂「共識組」,實際上由多個同質的、功能上完全一致、地位上也完全平等,並且邏輯上儘量隔離的獨立共識系統的實例所構成,「他們並行工作,分攤全網的吞吐、計算、存儲的壓力,分攤全網狀態的維護工作」。

具體而言,他指出這些「共識組」具有如下特徵:

  • 具備獨立且相對穩定的節點集合,邏輯上不要求一個節點參與到多個共識組
  • 具備獨立的賬簿,承載全網的一部分用戶,即組內用戶,各個共識組的組內用戶沒有交集
  • 具備獨立的 Chain of Blocks,僅記錄已經確認的和組內用戶相關的交易
  • 具備獨立的非阻塞的出塊過程,各個組之間沒有任何同步的需要,比如需要互斥鎖定特定資源
  • 具備獨立的未確認交易集合,僅有和組內用戶相關的未確認交易會被暫存
  • 具備獨立的出塊候選或競爭機制,礦工僅限於組內競爭,和其他組的礦工無直接競爭關係
  • 具備獨立的 Gossip 網絡,完成區塊和未確認交易的廣播,不波及其他共識組的節點

王嘉平和汪浩的論文,就是設計了這樣的一個可以實現如上「共識組」的系統和協議。

王嘉平說,這個系統可以實現協議上的跨分片交易,可以正確、高效地完成,保證攻擊單個共識組的代價與攻擊整個網絡代價相當,同時還可以保證單個運行中的全節點需要承擔的系統壓力不會隨着全網性能的提升而變大。

至於具體在單個共識組內部採用的共識算法,王嘉平稱,可以是 PoW,也可以是類 BFT 或者 VRF 算法,「我們的基礎實現,基於最樸素的 PoW 算法。」

區塊鏈伸縮性大幅改善,吞吐量達到 11694 TPS

區塊鏈的伸縮性,或者稱爲區塊鏈的性能,一直是制約區塊鏈技術走向實際應用的瓶頸。

在公鏈領域,一個普遍流行的說法爲「不可能三角」,即系統的安全性、去中心化和性能,三者只能取其中之二。無論是最早的比特幣區塊鏈,還是以太坊區塊鏈,甚至過去一兩年中湧現出的自稱爲「區塊鏈 3.0」的新型公鏈項目,全世界最聰明的計算機系統科學研究者、密碼學家、計算機工程開發者,紛紛進入這個領域,試圖解決這個難題。

據王嘉平的介紹,「一氧化物」這個解決方案與傳統研究方式多數關注於用新的共識算法來實現性能提升的設計大有不同。

這是一個採用了「異步共識組」的分片系統。對於採用了「異步共識組」這樣的分片系統來說,系統的性能不是一個定值,是一個和系統資源配置相關,並且可以被調整的值。他解釋說,就好像一個多個穩定轉速的發動機,不同的油耗就有不同的推力,「在異步共識組中,這個油耗就是全網有多少全節點,有多少礦工節點。」

他也向鏈聞展示了一張在一個最高有 4.8 萬個節點組成的測試網絡中的實測吞吐量圖表。這張圖表顯示出,不同的共識組數量這個「油耗」,可以實現怎樣的不同的「推力」,即區塊鏈的吞吐量。

硬核 | 王嘉平說,要用「一氧化物」撕開區塊鏈不可能三角圖 1,測試網絡中不同的共識組數量與性能提升的關係

在這張圖表中,橫軸代表的是測試網絡中的節點被劃分成了多少個共識組,而縱軸則是平均每秒處理的交易量。

在王嘉平和汪浩進行的測試中,最大的共識組數量爲 2048,此時吞吐量達到了 11694 TPS。讓他們興奮的是,這個數字已經遠超現今所有公開發表的運行於互聯網上的公鏈項目。

「測試網上實現的這個結果讓我們非常激動。」王嘉平用半開玩笑的語氣說,「當然了,這個結果不能和那些只在機房裏面跑、單節點、並且採用了怪獸一樣的服務器的項目去比較,因爲後者根本無法部署成爲開放的公鏈。」

更讓他們激動的是,除了區塊鏈吞吐量絕對值數字超越了目前已有公鏈項目之外,這個方案在測試網絡中表現出來的線性伸縮性,顯示了利用「異步共識組」的分片系統的巨大潛能:隨着共識組數量的增加,全網的吞吐量將獲得線性地提升,於此同時,全網的狀態內存空間、交易處理的計算力、歸檔歷史交易的存儲空間也將同時得到線性的提升。

「在我看來,只有同步實現了所有方面的提升,才能避免某一個資源成爲瓶頸,這纔是真正的伸縮性。」王嘉平向鏈聞表示。

一場橫跨 15 個城市、4.8 萬節點的測試

爲了證明理論的可行性,王嘉平和俄亥俄州立大學的分佈式系統研究者汪浩、PPLive 前技術合夥人張小兵、OCaml 編譯器的核心開發成員張宏波一同組建了一個研究與實驗小組,進行了一系列實驗和測試。

其中,汪浩是 NSDI 2019 所收錄的論文的第二作者,也是王嘉平的博士同班同學。他們曾經都曾就讀於中科院計算技術研究所,獲得博士學位。

硬核 | 王嘉平說,要用「一氧化物」撕開區塊鏈不可能三角俄亥俄州立大學計算機及工程學系研究科學家汪浩,「Monoxide」方案論文的第二作者

這個實驗小組部署了一個遍佈全球不同國家、由 1200 臺主機組成的物理網絡,這些主機平均分佈在全球 15 個不同國家的城市中,這樣做的目的是希望讓測試網絡儘量接近真實的互聯網延遲。該網絡的實測平均延遲爲 102 毫秒。而主機的配置也儘量接近實際情況,他們選擇了 8 核 CPU、32G 內存的配置,避免使用過高配置的機器。

在這 1200 臺主機上,實驗小組最多運行了 4.8 萬個全節點實例,每個節點限定最高帶寬 30Mbps,然後,從幾十個共識組進行實驗,直到幾千個共識組。測試首先顯示出,即便在幾千個共識組的情況下,單節點的壓力始終不大,可以輕鬆運行在如此配置的主機上。甚至在最極端的情況下,一個主機運行了 40 個實例。

爲了測試這個網絡處理一對一支付交易的性能,他們進行了工作集測試。王嘉平和團隊選擇了截止高度到 5867279 的以太坊上所有 ERC20 代幣支付的歷史記錄,作爲測試用工作集,而不是隨機構造一堆交易。

「這樣是爲了讓測試更爲真實,尤其是想測試跨片的發生概率的真實情況。」王嘉平說,「這個工作集中包含了 1600 萬個地址、7600 萬條交易記錄,每一個交易還有支付源和宿的地址,以及和源地址對應的簽名,還有支付金額,總共百來個字節。我們把這個工作集在全網重放,來獲得測試結果。」

他介紹說,在單個共識組中,採用了類 GHOST 的 PoW 算法,目標出塊間隔 15 秒,測試結果顯示,單個共識組的吞吐量達到了 15.6 TPS。

「這是一個非常保守的設定,完全可以簡單地通過擴大塊尺寸來獲得額外幾十倍的提升。不過我認爲,通過這種方式獲得的提升並不能體現我們自身的技術價值。」王嘉平說。

在實驗中,他們測試了最大共識組數量爲 2048 的場景,此時整個網絡的吞吐量達到了 11694 TPS。

「細心人可能會發現,單個共識組的吞吐量可以達到 15.6 TPS,我們測試的最大共識組數量爲 2048 個,如果 15.6 TPS 乘以 2048 個共識組,整個系統理論上應該實現 31948.8 TPS 纔對,這個理論值應該遠大於我們實測的 11694.9 TPS。其中原因也很簡單。事實上,每一次共識組數量翻倍,其性能提升並不是 2 倍,而是一個稍低的數字。」王嘉平解釋說,「處理跨片交易是會有額外的開銷的,好在我們的算法使得這個開銷是個常數,和共識組的數量無關。這樣,就可以讓整個網絡的性能實現與共識組數量的增長呈現線性的正相關增高。」

具體而言,據王嘉平的觀察,進行共識組數量翻倍之後,首先會出現「額外開銷」較大的情況,然後,這種「額外開銷」會逐漸減少 具體見上文圖一。據他的統計,進行共識組翻倍之後,第一段可以將 TPS 提升 1.6 倍,繼續進行翻倍,第二段可以將 TPS 提升 1.6 倍,之後,「額外開銷」逐漸收窄,系統性能的提升基本可以穩定在隨着共識組數量增長一倍而提高至原性能的 1.9 倍左右。

「把不可能三角撕開一個巨大的口子」

王嘉平介紹,在這個異步共識組組成的系統中,進行非跨片交易時,交易確認時間和單鏈系統無異,而跨片交易的確認時間會最大延長到原來的 2 倍,平均達到 1.5 倍,即 22.5 秒左右。

他和團隊還在實驗中測試了在以太坊歷史交易記錄的測試集中,跨共識組交易佔到的比例。

他向鏈聞展示了一張圖表,其中顯示,當在分片達到 128 個共識組的時候,跨共識組交易的比例就幾乎已經是 100% 了。

硬核 | 王嘉平說,要用「一氧化物」撕開區塊鏈不可能三角

「很顯然,分片越多,用戶會被切得更細,就會有更大的概率使得交易雙方處於不同分片上。我們的算法並不迴避這個狀況,而是給出了高效的跨片處理方案,從而使得全網的伸縮性繼續保持線性提升,而不受跨片交易的制約。」王嘉平說平。

不過,王嘉平也毫無保留的指出了這個系統的侷限性。

他說,理論上隨着共識組的規模的不斷擴大,這個系統的伸縮性會線性提升,但是最終還是會有一個「止步」的邊界,而最主要會受制於當前互聯網帶寬的限制。

「應該讓大家知道特定的技術邊界。我們設計的這個系統中,爲了使得跨片交易得以正確安全地完成,共識組之間需要傳遞成鏈的塊頭信息,這部分信息在共識組數量達到一定規模之後,會佔據相當的帶寬消耗。」王嘉平說。

他說,具體來說,共識組之間需要傳遞成鏈的塊頭信息大約爲每個共識組每塊 256 個字節左右,在其實驗中,當系統達到 11694.9 TPS 的時候,該部分消耗的帶寬是 279.6Kbps 左右,與之相關的存儲和計算代價可以忽略不計,在 30Mbps 的單節點帶寬約束之下,「共識組數量的天花板在 20 萬左右」。

如果實現 20 萬個共識組的情況下,據該團隊測算,全網吞吐量在理論上可以達到百萬 TPS,此時,全網狀態內存容量將超過 1PB 左右。

「這個代價和出塊尺寸無關,因爲需要傳播的僅爲塊頭,這和單位時間出塊個數有關。我們想到的解決辦法是擴大出塊尺寸,同時等比提高出塊間隔,來降低這個部分的開銷,並且保持吞吐量不變,同時也不增加單節點壓力。付出的代價是,這樣做會使得交易確認時間變長。」王嘉平說。

此外,影響共識組數量的另一個因素是社區的規模,即全網礦工節點和全節點的總和。

王嘉平說,對於單個共識組來說,參與其中的節點不能太少,至少應該過百,否則會容易暴露出塊節點 即礦工 的物理 IP 地址,也會增大全節點被隔離欺騙 與全節點連接的其他對等節點全部是惡意節點 的概率。「在我們設計的異步共識組中,我們鼓勵一個全節點參與多個共識組,而礦工節點參與多個共識組更是有利可圖,這在一定程度上緩解了這個問題。」

此外,他向鏈聞強調,對於分片系統來說,吞吐量和容量從來都不是一個單一的數字,而是一個根據具體應用場景、安全約束、延遲敏感程度、社區發展階段、交易活躍度等多方面考慮的權衡設計,是一個可以調整的東西。

而不論怎樣,讓他興奮的是,無論具體應用場景是什麼,他和汪浩在論文中提出的異步共識組將現有區塊鏈網絡性能提升 1000 倍這個最基本底線是可以輕鬆獲得的。

「你說這個技術算是突破了區塊鏈所謂的不可能三角嗎? 我認爲是,雖然還不算徹底,但是,可以說撕開了一個巨大的口子。」王嘉平說。

現在,他正等待 2 月 26 日在波士頓舉辦的「NDSI 2019」大會上講解自己的論文。

他說,在一個全球頂級的學術評審團隊對他的論文進行了同行審閱之後,他更期待在論文正式在大會上發表之後,行業中更多廣泛的研究者和開發者可以共同審閱並提出意見,更期待共同合作,「我們的工作重點在於有效地橫向擴容,在技術上和很多研究新型共識機制的工作是正交的。我們樂於與現有的或未來繼續湧現的公鏈團隊展開合作和交流,爲現有的單鏈系統作橫向的擴容,在不增加單節點壓力的前提下,輕鬆獲得至少百倍吞吐量和性能的提升。」