來(lái)源|王嘉平
好吧,前幾個(gè)月吹的牛即彪,今天來(lái)兌現(xiàn)一下。我們實(shí)現(xiàn)了"異步共識(shí)組"模型,可以將一個(gè)現(xiàn)有的單鏈共識(shí)算法隶校,橫向擴(kuò)展1000倍以上漏益。這樣的擴(kuò)展將使得吞吐量(TPS)提升1000倍以上,同時(shí)也將全網(wǎng)計(jì)算能力(CPU)提升2000倍以上深胳,將狀態(tài)表達(dá)的內(nèi)存空間(RAM)提升2000倍以上绰疤。
異步共識(shí)組系統(tǒng)的性能提升,絲毫沒(méi)有犧牲去中心化特性舞终,隨著全網(wǎng)的橫向擴(kuò)展提升轻庆,每一個(gè)全節(jié)點(diǎn)的工作壓力(帶寬、計(jì)算敛劝、內(nèi)存余爆、磁盤(pán)IO)并沒(méi)有顯著的加大,始終保證一臺(tái)普通中檔價(jià)位的電腦可以輕松地作為網(wǎng)絡(luò)的一個(gè)全節(jié)點(diǎn)夸盟,通過(guò)普通家用寬帶網(wǎng)絡(luò)接入主網(wǎng)蛾方。 異步共識(shí)組系統(tǒng)的性能提升,是在保證安全的基礎(chǔ)上的上陕。雖然系統(tǒng)允許全網(wǎng)被劃分成上千個(gè)獨(dú)立異步工作的共識(shí)組桩砰,但是我們的協(xié)議使得攻擊任何一個(gè)單獨(dú)分片的實(shí)際需要的物理算力,和攻擊整個(gè)網(wǎng)絡(luò)的物理算力相當(dāng)释簿。這樣使得這個(gè)高度分片之后的異步共識(shí)組系統(tǒng)具備和單鏈系統(tǒng)一樣的安全性亚隅。
異步共識(shí)組系統(tǒng)的性能提升,對(duì)上層交易結(jié)構(gòu)是中立的辕万。這個(gè)技術(shù)不引入任何交易結(jié)構(gòu)上的假設(shè)(例如假設(shè)少數(shù)人直接頻繁交易之類(lèi))枢步。可以完美支持任意場(chǎng)景的大規(guī)模支付系統(tǒng)的需求渐尿。 這個(gè)工作醉途,除了我和汪浩之外,還有張小兵(前pplive技術(shù)合伙人)一起參與研究和實(shí)現(xiàn)砖茸。借這個(gè)機(jī)會(huì)也感謝我們的導(dǎo)師沈向洋老師隘擎,還有Lidong Zhou老師的指導(dǎo),以及bob, minghao凉夯,sophia货葬,shumo,shuang等同學(xué)們的建議和挑戰(zhàn)劲够。
NSDI 2019
11月30號(hào)那天周五晚上震桶,汪浩突然打電話給我,說(shuō)看郵件征绎,論文中了蹲姐。本來(lái)官方聲稱(chēng)是3號(hào)周一才發(fā)錄用通知的。在論文委員會(huì)開(kāi)會(huì)討論(table discussion)之前,提早發(fā)通知柴墩,通常是兩種情況忙厌,論文毫無(wú)爭(zhēng)議地被錄用,或者毫無(wú)爭(zhēng)議地被拒收江咳。腦補(bǔ)一下逢净,汪浩剛剛收到郵件還沒(méi)點(diǎn)開(kāi)之前的心情。要知道之前無(wú)數(shù)專(zhuān)注公鏈性能的團(tuán)隊(duì)歼指,希望可以在NSDI爹土,OSDI 或者 SOSP 這樣的系統(tǒng)領(lǐng)域國(guó)際頂會(huì)上通過(guò)嚴(yán)格的同行評(píng)語(yǔ),發(fā)表自己的論文东臀。但是極為不易着饥,上一篇區(qū)塊鏈公鏈論文,是2017年的SOSP惰赋,就是著名的AlgoRand項(xiàng)目。
論文被接受的郵件通知呵哨,投稿時(shí)論文取了一個(gè)更為樸素的標(biāo)題
我們的基礎(chǔ)實(shí)現(xiàn)和實(shí)驗(yàn)驗(yàn)證赁濒,在今年夏天的時(shí)候完成,9月份的時(shí)候投稿了NSDI 2019孟害。12月初完成嚴(yán)格的同行評(píng)議拒炎,同另外49篇論文一起被該會(huì)議接收,將于2019年2月底在波士頓正式公開(kāi)發(fā)表挨务。我們之所以愿意等待击你,是因?yàn)槲覀冇X(jué)得考驗(yàn)新技術(shù)必須來(lái)自于國(guó)際主流學(xué)術(shù)同行的認(rèn)可,尤其是那些和我們?cè)谕粋€(gè)研究方向上競(jìng)爭(zhēng)的學(xué)者們谎柄。而不是自說(shuō)自話地發(fā)個(gè)白皮書(shū)或者丟一個(gè)沒(méi)有評(píng)審過(guò)的arXiv的文章丁侄。通常技術(shù)白皮書(shū)是幫助使用者更好地理解一項(xiàng)已經(jīng)產(chǎn)品化的成熟技術(shù),而不是用來(lái)提出尚未驗(yàn)證的新技術(shù)朝巫。論文需要非常清楚地定義問(wèn)題鸿摇,說(shuō)明新設(shè)計(jì)的動(dòng)機(jī)和取舍,探討新技術(shù)的邊界和局限性劈猿,而不是像白皮書(shū)那樣僅僅說(shuō)明這個(gè)新技術(shù)提供了什么拙吉。在工科的論文中,推導(dǎo)過(guò)程比結(jié)論重要揪荣,思路比解法重要筷黔,失敗案例比成功案例重要,實(shí)驗(yàn)的設(shè)計(jì)和規(guī)范比實(shí)驗(yàn)結(jié)果重要仗颈,從而啟發(fā)后繼的研究工作佛舱,推進(jìn)相關(guān)領(lǐng)域的發(fā)展。
之前區(qū)塊鏈相關(guān)工作很多發(fā)表在密碼學(xué)會(huì)議或者網(wǎng)絡(luò)安全會(huì)議,我們?yōu)槭裁赐禢SDI呢? 因?yàn)槲覀兊墓ぷ骱诵耐黄圃谟诖蠓嵘齾^(qū)塊鏈系統(tǒng)的伸縮性名眉,而不是提出了另一個(gè)的共識(shí)算法粟矿。NSDI全稱(chēng)是Networked Systems Design and Implementation,是 USENIX (Advanced Computing Systems Association)旗下的旗艦會(huì)議之一损拢,也是計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)領(lǐng)域久負(fù)盛名的頂級(jí)會(huì)議陌粹。NSDI 側(cè)重于網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),注重系統(tǒng)的性能和伸縮性福压。眾所周知的著名大數(shù)據(jù)系統(tǒng) Spark 就發(fā)表在 2012 年的 NSDI 大會(huì)上掏秩。最懂網(wǎng)絡(luò)系統(tǒng)伸縮性的學(xué)者,在這個(gè)領(lǐng)域荆姆。 在今年接受的49篇文章中蒙幻,有超一半來(lái)自美國(guó)頂尖高校(MIT, UC Berkeley, Stanford, CMU, Princeton, Cornell, UW, Harvard, Yale等等等),另外近一半來(lái)自微軟胆筒,Google邮破,Intel等美國(guó)知名云計(jì)算相關(guān)企業(yè)。其中國(guó)內(nèi)高校僅有清華大學(xué)有3篇文章被錄用仆救,分別是關(guān)于網(wǎng)絡(luò)系統(tǒng)建模抒和、超算系統(tǒng)監(jiān)控以及RFID無(wú)線技術(shù)。另外值得一提的是彤蔽,今日頭條(Bytedance)有5篇文章被接收摧莽,全部是和微軟合作發(fā)表。果然是不少人從微軟跳去了頭條 (微笑 顿痪。 在今年錄取的論文中镊辕, 僅有我們這一篇論文是和區(qū)塊鏈相關(guān),很榮幸被安排在會(huì)議的第一天蚁袭,分布式系統(tǒng)專(zhuān)場(chǎng)征懈,進(jìn)行演講,同一個(gè)場(chǎng)次的還有兩篇分別來(lái)自Stanford和MIT的論文撕阎。區(qū)塊鏈相關(guān)技術(shù)在整個(gè)學(xué)術(shù)界還是非常新興的研究課題受裹,希望能有更多同學(xué)來(lái)這個(gè)領(lǐng)域。
異步共識(shí)組 (Asynchronous Consensus Zones)
這篇文章的標(biāo)題為: Monoxide: Scale Out Blockchain with Asynchronous Consensus Zones虏束。其關(guān)鍵設(shè)計(jì)就是這個(gè)Asynchronous Consensus Zones棉饶,異步共識(shí)組。這里的核心是Consensus Zone镇匀,而不是Asynchronous 照藻。異步是一個(gè)重要的特性,但其核心是共識(shí)組這個(gè)模型汗侵。然后Monoxide是這個(gè)項(xiàng)目的code name幸缕。 我們回顧一下這個(gè)共識(shí)組的概念:共識(shí)組由多個(gè)同質(zhì)的群发、功能上完全一致、地位上也完全平等发乔,并邏輯上盡量隔離的獨(dú)立共識(shí)系統(tǒng)的實(shí)例所構(gòu)成熟妓,他們并行工作,分?jǐn)側(cè)W(wǎng)的吞吐栏尚、計(jì)算起愈、存儲(chǔ)的壓力,分?jǐn)側(cè)W(wǎng)狀態(tài)的維護(hù)工作译仗。
0. 具備獨(dú)立的相對(duì)穩(wěn)定的節(jié)點(diǎn)集合抬虽,邏輯上不要求一個(gè)節(jié)點(diǎn)參與到多個(gè)共識(shí)組
1. 具備獨(dú)立的賬簿,承載全網(wǎng)的一部分用戶(hù)(組內(nèi)用戶(hù))纵菌。各個(gè)共識(shí)組的組內(nèi)用戶(hù)沒(méi)有交集
2. 具備獨(dú)立的Chain of Blocks阐污,僅記錄已經(jīng)確認(rèn)的和組內(nèi)用戶(hù)相關(guān)的交易 3. 具備獨(dú)立的非阻塞的出塊過(guò)程,各個(gè)組之間沒(méi)有任何同步的需要 (如需要互斥鎖定特定資源)
4. 具備獨(dú)立的未確認(rèn)交易集合咱圆,僅有和組內(nèi)用戶(hù)相關(guān)的未確認(rèn)交易會(huì)被暫存
5. 具備獨(dú)立的出塊候選或競(jìng)爭(zhēng)機(jī)制笛辟,礦工僅限于組內(nèi)競(jìng)爭(zhēng),和其他組的礦工無(wú)直接競(jìng)爭(zhēng)關(guān)系
6. 具備獨(dú)立的Gossip網(wǎng)絡(luò)序苏,完成區(qū)塊和未確認(rèn)交易的廣播隘膘,不波及其他共識(shí)組的節(jié)點(diǎn)
我們就是設(shè)計(jì)了這樣的一個(gè)系統(tǒng)以及協(xié)議,保證其上的跨分片交易可以正確杠览、高效地完成,保證攻擊單個(gè)共識(shí)組的代價(jià)同攻擊整個(gè)網(wǎng)絡(luò)代價(jià)相當(dāng)纵势,保證單個(gè)運(yùn)行中的全節(jié)點(diǎn)需要承擔(dān)的系統(tǒng)壓力不會(huì)隨著全網(wǎng)性能的提升而變大踱阿。具體在單個(gè)共識(shí)組內(nèi)部采用的共識(shí)算法,可以是PoW钦铁,也可以是類(lèi)BFT或者VRF算法软舌。我們的基礎(chǔ)實(shí)現(xiàn),基于最樸素的PoW算法牛曹。
伸縮性
同通過(guò)新的共識(shí)算法來(lái)實(shí)現(xiàn)性能提升的設(shè)計(jì)不同佛点,對(duì)于異步共識(shí)組這樣的分片系統(tǒng)來(lái)說(shuō),系統(tǒng)的性能不是一個(gè)定值黎比,是一個(gè)和系統(tǒng)資源配置相關(guān)的超营,可以被調(diào)整的值。就好像一個(gè)多個(gè)穩(wěn)定轉(zhuǎn)速的發(fā)動(dòng)機(jī)阅虫,不同的油耗就有不同的推力演闭。在異步共識(shí)組中,這個(gè)油耗就是全網(wǎng)有多少全節(jié)點(diǎn)颓帝,有多少礦工節(jié)點(diǎn)米碰。不過(guò)窝革,相信大家總是希望看到一個(gè)數(shù)字,我這里也得列一下吕座。
這個(gè)是最高48000個(gè)節(jié)點(diǎn)的測(cè)試網(wǎng)絡(luò)中的實(shí)測(cè)吞吐量虐译,橫軸是這些節(jié)點(diǎn)被劃分成了多少個(gè)共識(shí)組,縱軸是平均每秒處理的交易量吴趴。在我們的測(cè)試中漆诽,最大的共識(shí)組數(shù)量為2048,此時(shí)吞吐量為11694 TPS史侣。這個(gè)數(shù)字已經(jīng)遠(yuǎn)超現(xiàn)今所有公開(kāi)發(fā)表的運(yùn)行于互聯(lián)網(wǎng)上的公鏈項(xiàng)目拴泌,當(dāng)然那些只在機(jī)房里面跑,單節(jié)點(diǎn)采用怪獸般服務(wù)器的項(xiàng)目除外惊橱。
但是我這里想說(shuō)的是蚪腐,這個(gè)絕對(duì)數(shù)字不是重點(diǎn)。這個(gè)圖核心要展示的是這個(gè)方案的線性伸縮性税朴,也就是隨著共識(shí)組數(shù)量的增加回季,全網(wǎng)的吞吐量將獲得線性地提升。同時(shí)正林,全網(wǎng)的的狀態(tài)內(nèi)存空間泡一、交易處理的計(jì)算力、歸檔交易的存儲(chǔ)空間也將同時(shí)得到線性的提升觅廓。這才是所謂的伸縮性鼻忠。下面我進(jìn)一步展開(kāi)介紹這個(gè)實(shí)驗(yàn)的細(xì)節(jié)。
1. 單節(jié)點(diǎn)壓力 這個(gè)實(shí)驗(yàn)在1200臺(tái)主機(jī)(8核CPU杈绸,32G內(nèi)存)上帖蔓,最多運(yùn)行了48000個(gè)全節(jié)點(diǎn)實(shí)例,每個(gè)節(jié)點(diǎn)限定最高帶寬30Mbps瞳脓。從幾十個(gè)共識(shí)組塑娇,到幾千個(gè)共識(shí)組,單節(jié)點(diǎn)的壓力始終不大劫侧,可以輕松運(yùn)行在這樣配置的主機(jī)上埋酬。最極端的情況,一個(gè)主機(jī)運(yùn)行了40個(gè)實(shí)例烧栋。
2. 測(cè)試工作集 在這個(gè)實(shí)驗(yàn)中写妥,我們展現(xiàn)的是處理一對(duì)一支付交易的性能。每一個(gè)交易還有支付源和宿的地址劲弦,以及和源地址對(duì)應(yīng)的簽名耳标,還有支付金額,總共百來(lái)個(gè)字節(jié)邑跪。為了使得測(cè)試更為真實(shí)次坡,尤其是跨片的發(fā)生概率的真實(shí)情況呼猪,我們的測(cè)試工作集使用以太坊上所有ERC20代幣支付的歷史記錄(截止高度5867279),而不是自行隨機(jī)生成交易砸琅。其中包含1.6千萬(wàn)個(gè)地址宋距,和7.6千萬(wàn)條交易記錄。我們將這個(gè)工作集在全網(wǎng)重放(忽略原始時(shí)間)症脂,以獲得測(cè)試結(jié)果谚赎。
3. 物理網(wǎng)絡(luò) 我們將1200臺(tái)主機(jī),平均分布在全球15個(gè)不同國(guó)家的城市诱篷,從而使得測(cè)試網(wǎng)絡(luò)接近真實(shí)的互聯(lián)網(wǎng)延遲壶唤。我們實(shí)測(cè)的平均延遲為102毫秒。
4. 共識(shí)算法 我們?cè)趩蝹€(gè)共識(shí)組中棕所,采用了類(lèi)GHOST的POW算法闸盔,目標(biāo)出塊間隔15秒,單個(gè)共識(shí)組的吞吐量為15.6 TPS琳省。這是一個(gè)非常保守的設(shè)定迎吵,可以簡(jiǎn)單地通過(guò)擴(kuò)大塊尺寸獲得額外幾十倍的提升。當(dāng)然针贬,通過(guò)這種方式獲得的提升击费,并不能體現(xiàn)我們自身的技術(shù)價(jià)值。
5. 交易延遲 在異步共識(shí)組中桦他,非跨片交易交易確認(rèn)時(shí)間和單鏈系統(tǒng)無(wú)異蔫巩。跨片交易的確認(rèn)時(shí)間將會(huì)最大延長(zhǎng)到原來(lái)的2倍快压,平均1.5倍批幌,即22.5秒左右。
6. 跨片開(kāi)銷(xiāo) 處理跨片交易是會(huì)有額外的開(kāi)銷(xiāo)的嗓节,但是好在我們的算法使得這個(gè)開(kāi)銷(xiāo)是個(gè)常數(shù),和共識(shí)組的數(shù)量無(wú)關(guān)皆警。細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn)拦宣,15.6 TPS × 2048 = 31948.8 TPS 遠(yuǎn)大于 我們實(shí)測(cè)的 11694.9 TPS。事實(shí)上信姓,每一次共識(shí)組數(shù)量翻倍鸵隧,其性能提升并不是2倍,而是一個(gè)稍低的數(shù)字意推。這個(gè)在圖中的第一段更為明顯豆瘫,那一段是提升是1.6倍,第二段是1.8倍菊值,之后逐漸收斂到1.9倍外驱。這部分的額外開(kāi)銷(xiāo)育灸,同跨片交易比例增高有關(guān),也和需要協(xié)同更多的共識(shí)組有關(guān)昵宇。 下圖展示了在基于以太坊歷史交易記錄的測(cè)試集中磅崭,跨共識(shí)組交易的比例。很顯然分片越多瓦哎,用戶(hù)會(huì)被切得更細(xì)砸喻,就會(huì)有更大的概率使得交易雙方處于不同分片。圖中可以看到蒋譬,在分片到128個(gè)共識(shí)組的時(shí)候割岛,跨共識(shí)組交易的比例就幾乎已經(jīng)是100%了。我們的算法并不回避這個(gè)狀況犯助,而是給出了高效的跨片處理方案癣漆,從而使得全網(wǎng)的伸縮性繼續(xù)保持線性提升,而不受跨片交易的制約也切。
算法和協(xié)議上的挑戰(zhàn)
為了讓這樣的一個(gè)系統(tǒng)設(shè)計(jì)可以正確扑媚,安全地工作。有一系列的技術(shù)挑戰(zhàn)雷恃。也是論文在學(xué)術(shù)層面所作出的貢獻(xiàn)疆股。
1. 高效處理跨片交易 我們?cè)谡撐闹胁捎昧藷o(wú)須狀態(tài)鎖定的異步執(zhí)行方式,最終原子性(Eventual Atomicity)倒槐,最大限度地保證了各個(gè)共識(shí)組可以高效吞吐旬痹,不會(huì)互相阻塞。而這里的安全性是通過(guò)源共識(shí)組的共識(shí)證明來(lái)完成讨越。這一點(diǎn)在思路上有些類(lèi)似一些跨鏈的工作两残,但是有一個(gè)本質(zhì)的不同。在共識(shí)組中把跨,各個(gè)組是互相配合人弓,互相信任的,他們互相承認(rèn)對(duì)方的共識(shí)證明着逐,所以我們可以找到不引入任何中心化節(jié)點(diǎn)的方式來(lái)保證安全崔赌。而通常的跨鏈算法中,至少有一條鏈?zhǔn)遣慌浜系乃时穑怀姓J(rèn)甚至根本就讀不到對(duì)方鏈的狀態(tài)健芭。
2. 跨分片交易邏輯 如果只是支付,跨分片交易邏輯可以拆分成 "扣款" 和 "存款" 兩個(gè)交易步驟秀姐,然后分別在不同分片中完成慈迈。那么為什么這么拆開(kāi)了就可以順利地完成跨分片交易,更為復(fù)雜的交易邏輯該如何處理呢省有? 我們?cè)谡撐闹刑岢隽薕xidation編程模型痒留,用來(lái)定義分片系統(tǒng)中的智能合約谴麦。編程模型不是說(shuō)我們用Javascript、C++狭瞎、PHP细移,還是用Web Assembly,亦或是Solidity熊锭。這里的區(qū)別是類(lèi)似面向?qū)ο缶幊毯兔嫦蜻^(guò)程編程的區(qū)別弧轧,具體語(yǔ)法,語(yǔ)義碗殷,格式等方面的差異并不重要精绎。Oxidation編程模型其核心邏輯基于函數(shù)編程(Functional Programming),這么做的原因是交易邏輯的代碼能夠比較容易在編譯器層面被切分锌妻,繼而方便在各個(gè)共識(shí)組中接力運(yùn)行代乃。而上層開(kāi)發(fā)者則比較容易用函數(shù)編程的方式來(lái)表達(dá)對(duì)分片系統(tǒng)比較友好的交易邏輯。至于其他計(jì)算表達(dá)仿粹,狀態(tài)定義搁吓,流程控制等編程特性分片系統(tǒng)不需要語(yǔ)言層面的特殊支持,與普通系統(tǒng)無(wú)異吭历。
3. 保證單共識(shí)組的安全 在單鏈系統(tǒng)中堕仔,系統(tǒng)的安全性依賴(lài)多數(shù)誠(chéng)實(shí)礦工或驗(yàn)證者來(lái)保障安全,例如PoW系統(tǒng)需要51%晌区,類(lèi)BFT系統(tǒng)通常需要2/3等摩骨。當(dāng)全網(wǎng)被N個(gè)分片隔離,每個(gè)分片獨(dú)立出塊的時(shí)候朗若,簡(jiǎn)單的思路會(huì)導(dǎo)致單個(gè)分片內(nèi)部最低只有1/N的誠(chéng)實(shí)算力(或驗(yàn)證墊資)來(lái)抵御攻擊恼五。在我們提出的異步共識(shí)組中,我們拓展了PoW的挖礦機(jī)制哭懈,運(yùn)行一個(gè)礦工同時(shí)參與多個(gè)共識(shí)組內(nèi)部的挖礦競(jìng)爭(zhēng)灾馒,可以收獲到多個(gè)共識(shí)組里面的出塊獎(jiǎng)勵(lì)。至關(guān)重要的是遣总,對(duì)于一個(gè)參與K個(gè)共識(shí)組挖礦的礦工你虹,其實(shí)際有效算力會(huì)被放大為其物理算力的K倍,并且其放大后的算力必須平均分配到這K個(gè)共識(shí)組彤避。從而使得單個(gè)共識(shí)組的實(shí)際有效算力,將等同于全網(wǎng)的物理算力夯辖,那么攻擊單個(gè)共識(shí)組將變得和攻擊全網(wǎng)一樣的難琉预。我們將這個(gè)機(jī)制稱(chēng)為連弩挖礦(Chu-ko-nu Mining),這個(gè)機(jī)制保證了將誠(chéng)實(shí)礦工(平均貢獻(xiàn)算力到多個(gè)共識(shí)組)的有效算力放大了N倍蒿褂,而對(duì)于攻擊者(針對(duì)特定共識(shí)組)來(lái)說(shuō)圆米,這里的算力放大則無(wú)效卒暂。注意,這里的誠(chéng)實(shí)礦工的有效算力放大倍數(shù)娄帖,和全網(wǎng)的分片個(gè)數(shù)相同也祠,從而保障了全網(wǎng)在高度分片之后仍舊具備同單鏈系統(tǒng)一樣的安全性。
局限性
估計(jì)大家很少看到介紹自己工作的文章近速,會(huì)有這個(gè)章節(jié)诈嘿。但其實(shí)我覺(jué)得應(yīng)該有,讓大家知道特定的技術(shù)邊界削葱,總好過(guò)事后牛皮吹破奖亚,系統(tǒng)實(shí)現(xiàn)不出來(lái)。首先這個(gè)技術(shù)算是突破了區(qū)塊鏈所謂的不可能三角嗎析砸? 我認(rèn)為是昔字,雖然還不算徹底,但是可以說(shuō)撕開(kāi)了一個(gè)巨大的口子首繁。這個(gè)工作并不能實(shí)現(xiàn)無(wú)限的伸縮性作郭,基于當(dāng)前互聯(lián)網(wǎng)帶寬,系統(tǒng)的伸縮性大致會(huì)止步于百萬(wàn)TPS和幾十萬(wàn)個(gè)共識(shí)組的規(guī)模弦疮。這是因?yàn)榧性埽瑸榱耸沟每缙灰椎靡哉_安全地完成,共識(shí)組之間需要傳遞成鏈的塊頭信息挂捅,這部分信息在共識(shí)組數(shù)量達(dá)到一定規(guī)模之后芹助,會(huì)占據(jù)相當(dāng)?shù)膸捪摹?/p>
具體來(lái)說(shuō),每個(gè)單節(jié)點(diǎn)的需要觀察所有共識(shí)組中的構(gòu)造鏈的過(guò)程以及他們可能出現(xiàn)的分叉闲先。這個(gè)代價(jià)是 每個(gè)共識(shí)組每塊大致256個(gè)字節(jié)状土。那么在我們現(xiàn)在的實(shí)驗(yàn)中,達(dá)到11694.9 TPS的時(shí)候伺糠,這個(gè)部分的消耗是279.6kbps蒙谓,與之相關(guān)的存儲(chǔ)和計(jì)算代價(jià)可以忽略不計(jì)。按照前面實(shí)驗(yàn)中單節(jié)點(diǎn)帶寬限定训桶,這個(gè)部分占據(jù)了近1%累驮。也就是說(shuō)在30Mbps的單節(jié)點(diǎn)帶寬約束之下,共識(shí)組的數(shù)量的天花板在20萬(wàn)左右舵揭,當(dāng)然這時(shí)全網(wǎng)吞吐量將可以高達(dá)百萬(wàn)TPS谤专,全網(wǎng)狀態(tài)內(nèi)存容量將超過(guò)1PB (1,000,000 GB)。 值得一提的是午绳,這個(gè)代價(jià)是和出塊尺寸無(wú)關(guān)妆偏,需要傳播的僅為塊頭抚笔,和單位時(shí)間出塊個(gè)數(shù)有關(guān)伤极。那么逼友,我們可以擴(kuò)大出塊尺寸,同時(shí)等比提高出塊間隔,來(lái)降低這個(gè)部分的開(kāi)銷(xiāo),并且保持吞吐量不變,單節(jié)點(diǎn)壓力也不增加蠢甲。只是這樣做會(huì)使得交易確認(rèn)時(shí)間變長(zhǎng)。
限制共識(shí)組數(shù)量的另一個(gè)因素是社區(qū)的規(guī)模据忘,全網(wǎng)礦工節(jié)點(diǎn)和全節(jié)點(diǎn)的總和鹦牛。對(duì)于單個(gè)共識(shí)組來(lái)說(shuō),參與其中的節(jié)點(diǎn)不能太少(至少要過(guò)百吧)若河,否則會(huì)容易暴露出塊節(jié)點(diǎn)(礦工)的物理IP地址能岩,也會(huì)增大全節(jié)點(diǎn)被隔離欺騙(與全節(jié)點(diǎn)連接的其他對(duì)等節(jié)點(diǎn)全部是惡意節(jié)點(diǎn))的概率。雖然這兩點(diǎn)都不會(huì)直接導(dǎo)致共識(shí)算法失效萧福,但是有可能降低攻擊壁壘拉鹃。在異步共識(shí)組中,我們鼓勵(lì)一個(gè)全節(jié)點(diǎn)參與多個(gè)共識(shí)組鲫忍,而礦工節(jié)點(diǎn)參與多個(gè)共識(shí)組更是有利可圖膏燕,這在一定程度上緩解了這個(gè)問(wèn)題。
所以悟民,對(duì)于分片系統(tǒng)來(lái)說(shuō)坝辫,吞吐量和容量從來(lái)都不是一個(gè)單一的數(shù)字,而是一個(gè)根據(jù)具體應(yīng)用場(chǎng)景射亏,安全約束近忙,延遲敏感程度,社區(qū)發(fā)展階段智润,交易活躍度等多方面考慮的權(quán)衡設(shè)計(jì)及舍,是一個(gè)可以調(diào)整的東西。當(dāng)然窟绷,無(wú)論具體應(yīng)用場(chǎng)景是什么锯玛,異步共識(shí)組的1000倍提升這個(gè)底線總是可以輕松獲得的。
2019年2月底兼蜈,波士頓見(jiàn)
我們將在2月26日攘残,NDSI 2019第一天的會(huì)議上,宣講論文的技術(shù)細(xì)節(jié)为狸。歡迎大家來(lái)波士頓面基歼郭,探討合作。
我們這個(gè)工作重點(diǎn)在于有效地橫向擴(kuò)容辐棒,在技術(shù)上和很多研究新型共識(shí)機(jī)制的工作是正交的病曾,我們的實(shí)驗(yàn)中共識(shí)組內(nèi)部采用了最樸素的經(jīng)典PoW算法(15.6TPS)姊途,完全可以替換為其他更高效的新型單鏈共識(shí)系統(tǒng)。我們樂(lè)于和現(xiàn)有的或者未來(lái)的公鏈團(tuán)隊(duì)合作知态,為現(xiàn)有的單鏈系統(tǒng)作橫向的擴(kuò)容,在不增加單節(jié)點(diǎn)壓力的前提下立叛,輕松獲得至少百倍吞吐量和性能的提升负敏。