如何實(shí)現(xiàn)比以太坊快1000倍的區(qū)塊鏈?

以太坊是最大的工程化的區(qū)塊鏈“計(jì)算機(jī)”畏铆。它同時(shí)做到了數(shù)字資產(chǎn)交易和合約的上鏈,但由于交易記賬和智能合約應(yīng)用的性能要求不同专挪,經(jīng)常出現(xiàn)“道窄車(chē)多”的問(wèn)題及志,擴(kuò)容就成了當(dāng)前基礎(chǔ)公鏈技術(shù)的主要拓展方向片排。本期嘉賓蘭榮堅(jiān)將圍繞“如何用分片技術(shù)對(duì)區(qū)塊鏈擴(kuò)容”寨腔,進(jìn)行詳細(xì)的解讀。

主講嘉賓

講座內(nèi)容

【項(xiàng)目簡(jiǎn)介】Harmony是基于分片等技術(shù)的新一代高性能區(qū)塊鏈率寡,專(zhuān)注于為去中心化經(jīng)濟(jì)提供可信迫卢,可靠,高效的基礎(chǔ)設(shè)施冶共。Harmony的設(shè)計(jì)思維來(lái)源于一片名為Omniledger的學(xué)術(shù)研究乾蛤。

一每界、現(xiàn)有區(qū)塊鏈的擴(kuò)容問(wèn)題?

現(xiàn)有區(qū)塊鏈比如比特幣和以太坊的交易處理速度非常慢,比特幣大概每秒處理5筆交易家卖,而以太坊也僅能處理大概12筆交易眨层。這使得很多應(yīng)用場(chǎng)景無(wú)法實(shí)現(xiàn),比如比特幣最開(kāi)始的設(shè)計(jì)是要作為一個(gè)交易系統(tǒng)上荡,而因?yàn)榈退俣纫约鞍殡S的高交易費(fèi)問(wèn)題趴樱,現(xiàn)在只能作為價(jià)值存儲(chǔ)媒介。

以太坊上的一些應(yīng)用酪捡,比如去年紅極一時(shí)的cryptokitties叁征,一度使整個(gè)以太坊癱瘓長(zhǎng)達(dá)幾天時(shí)間,今年FCoin的新式上幣規(guī)則逛薇,產(chǎn)生了大量交易捺疼,也是以太坊網(wǎng)絡(luò)吃不消;之前的Fomo3D游戲也是因?yàn)橐蕴蝗菀鬃枞膯?wèn)題永罚,讓黑客鉆了空子啤呼,拿到了最終大獎(jiǎng)∧馗ぃ總之媳友,現(xiàn)有的區(qū)塊鏈急需提高速度,也就是擴(kuò)容产捞。

那么為什么比特幣和以太坊這么慢呢醇锚?原因是其背后的POW共識(shí)算法非常慢,POW是最長(zhǎng)鏈共識(shí)機(jī)制坯临,每筆交易需要全網(wǎng)驗(yàn)證焊唬,理論上POW的速度不可能高于一個(gè)節(jié)點(diǎn)的處理能力,并且為了避免分叉看靠,全網(wǎng)數(shù)據(jù)需要盡量同步赶促,所以區(qū)塊間隔不能太短,這就是為什么比特幣是十分鐘一個(gè)塊的原因挟炬。

現(xiàn)有的一些解決方案在不同程度上增加了共識(shí)過(guò)程的TPS(每秒交易處理量)鸥滨。比如對(duì)POW的改進(jìn),包括Bitcoin Cash, 將區(qū)塊大小從1MB提高到了8MB谤祖,這樣在同樣時(shí)間內(nèi)婿滓,可以被處理的交易數(shù)量也能提高大概同樣的倍數(shù)。

Segwit (隔離見(jiàn)證)也是在同樣的數(shù)據(jù)大小上做文章粥喜,把一筆交易內(nèi)的簽名數(shù)據(jù)提出來(lái)單獨(dú)放置凸主,這樣每筆交易的體積就變小了,每個(gè)區(qū)塊能包含的交易數(shù)量就得到了提高额湘,進(jìn)而提高TPS卿吐。這類(lèi)解決方案的問(wèn)題是旁舰,數(shù)據(jù)量變大之后,全網(wǎng)更不容易同步嗡官,所以更容易產(chǎn)生分叉箭窜。

POS把POW算力證明用持幣數(shù)量來(lái)替代,期待在不用計(jì)算哈希值的情況下衍腥,達(dá)到POW同樣的效果绽快,但POS現(xiàn)階段有兩個(gè)重要問(wèn)題沒(méi)有很好地解決。

1.nothing-at-stake attack:是指用同樣的代幣去押注不同的分叉紧阔,這樣會(huì)導(dǎo)致更多的分叉坊罢;2.long-range attack:因?yàn)镻OS不需要任何物理上的資源,所以很容易在私下算出一條很長(zhǎng)的鏈出來(lái)擅耽,甚至超過(guò)大家共識(shí)的鏈活孩。

DPOS取消了全網(wǎng)隨機(jī)選取出塊者的過(guò)程,取而代之的是通過(guò)鏈下拉票的方式乖仇,人工選出少數(shù)節(jié)點(diǎn)讓大家達(dá)成共識(shí)憾儒,很像是人民代表大會(huì)制度。因?yàn)楣沧R(shí)節(jié)點(diǎn)數(shù)顯著減少乃沙,所以達(dá)成共識(shí)的速度提升很多起趾,但問(wèn)題是幾十個(gè)節(jié)點(diǎn)組成的共識(shí)網(wǎng)絡(luò)的安全性,不能讓人放心警儒,如果其中一些節(jié)點(diǎn)合謀作惡怎么辦训裆!

DAG的方案是用有向無(wú)環(huán)圖取代區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu),讓多個(gè)區(qū)塊可以同時(shí)被提出蜀铲,但問(wèn)題是不同區(qū)塊鏈的數(shù)據(jù)一致性很難保證边琉,數(shù)據(jù)中會(huì)存在很多冗余的交易。

最后一類(lèi)解決方案訴諸于鏈下擴(kuò)容记劝,比如狀態(tài)通道和側(cè)鏈技術(shù)变姨,他們雖然可以大量的提高TPS,但是問(wèn)題是安全性上存在風(fēng)險(xiǎn)厌丑,因?yàn)榻灰讻](méi)有得到全網(wǎng)驗(yàn)證定欧,只有少數(shù)節(jié)點(diǎn)在驗(yàn)證,如果一旦出問(wèn)題怒竿,交易者必須自己去鏈上討回公道砍鸠。

二、怎么用分片技術(shù)來(lái)實(shí)現(xiàn)擴(kuò)容?

說(shuō)了這些提高TPS愧口,或者說(shuō)擴(kuò)容的解決方案睦番,那么到底什么是擴(kuò)容問(wèn)題类茂?在傳統(tǒng)的分布式系統(tǒng)中的定義是耍属,系統(tǒng)的性能會(huì)隨著某個(gè)因素的增加而提高托嚣。

其中分為兩類(lèi),一類(lèi)是縱向擴(kuò)容厚骗,是指通過(guò)增加服務(wù)器的處理性能來(lái)提高整體系統(tǒng)的性能示启,第二類(lèi)叫做橫向擴(kuò)容,是指通過(guò)添加更多服務(wù)器领舰,通過(guò)并行處理的辦法夫嗓,提高系統(tǒng)的處理速度。

我們剛才所述的幾個(gè)解決方案冲秽,理論上都是縱向擴(kuò)容舍咖。他們是在共識(shí)算法的性能上做文章,以提高一次共識(shí)的效率來(lái)提高整體的TPS锉桑。

但在區(qū)塊鏈領(lǐng)域有這不可能三角這個(gè)理論排霉,意思是所有共識(shí)算法都只能在速度,安全性和去中心化中三選二民轴,三方面都完美實(shí)現(xiàn)是不可能的攻柠。他們都是在降低安全性,或者減少去中心化程度之后達(dá)到提高TPS的目的后裸。并且目前這些解決方案最多也只能達(dá)到幾千的TPS瑰钮。

然而,很多應(yīng)用場(chǎng)景微驶,比如去中心化交易所浪谴,高交互性的游戲,和去中心化的交易市場(chǎng)因苹,都需要上萬(wàn)甚至上百萬(wàn)的TPS较店,我們比如里面橫向擴(kuò)容,也就是分片技術(shù)容燕,才有可能達(dá)到這么高的TPS梁呈。

剛才我們提到,在沒(méi)有分片的區(qū)塊鏈系統(tǒng)中蘸秘,每筆交易都需要全網(wǎng)每個(gè)節(jié)點(diǎn)的驗(yàn)證官卡,并且每個(gè)節(jié)點(diǎn)都存儲(chǔ)著整個(gè)區(qū)塊鏈的數(shù)據(jù)。

而在一個(gè)基于分片的區(qū)塊鏈系統(tǒng)中醋虏,比如Omniledger的設(shè)計(jì)寻咒,每個(gè)節(jié)點(diǎn)是被分配到不同的分片里的(network sharding),并且每個(gè)分片單獨(dú)做共識(shí)颈嚼,只處理一部分的交易(transaction sharding)毛秘,而且只存儲(chǔ)一個(gè)分的區(qū)塊鏈數(shù)據(jù)(state sharding)。而且只存儲(chǔ)一個(gè)“部分”的區(qū)塊鏈數(shù)據(jù)(state sharding)。

那么我們?cè)趺纯梢园踩陌压?jié)點(diǎn)分配到不同的分片呢叫挟?

在單一分片里艰匙,怎么達(dá)成共識(shí)?

同時(shí)片和片之間怎么實(shí)現(xiàn)交易呢抹恳?

首先员凝,節(jié)點(diǎn)需要“隨機(jī)”地被分配到不同的分片,這是為了保證每個(gè)分片內(nèi)的惡意節(jié)點(diǎn)比例和全網(wǎng)預(yù)期的比例是一致的奋献,這樣單一分片就不容易被惡意節(jié)點(diǎn)所攻擊健霹。

意思是他們的占比不會(huì)超過(guò)安全范圍,比如33%或50%)瓶蚂。為了達(dá)到這個(gè)比例的一致性糖埋,每個(gè)分片的節(jié)點(diǎn)數(shù)也要盡量多,這樣統(tǒng)計(jì)上窃这,這兩個(gè)比例才會(huì)更接近阶捆。

左邊是沒(méi)有完全隨機(jī)的分片,可以看到惡意節(jié)點(diǎn)可以通過(guò)某種方式钦听,集中到某一個(gè)分片洒试,占領(lǐng)大部分節(jié)點(diǎn),從而控制整個(gè)分片朴上,讓其變得不可信垒棋,這樣整個(gè)網(wǎng)絡(luò)也不可信。

相反痪宰,右邊采用完全隨機(jī)的過(guò)程分片叼架,每個(gè)分片的惡意節(jié)點(diǎn)的比例和全網(wǎng)的比例一樣,依然在安全范圍衣撬,全網(wǎng)也是安全的乖订。

那么問(wèn)題來(lái)了!怎么隨機(jī)的分配節(jié)點(diǎn)呢具练?這個(gè)隨機(jī)的來(lái)源從哪兒獲得呢乍构?依賴(lài)一個(gè)節(jié)點(diǎn)產(chǎn)生的隨機(jī)數(shù)肯定是不行的,因?yàn)檫@個(gè)節(jié)點(diǎn)可以通過(guò)影響隨機(jī)數(shù)扛点,來(lái)影響最后分片的結(jié)果哥遮。

我們需要一個(gè)不可預(yù)測(cè)、不可干擾陵究,同時(shí)又可以驗(yàn)證的隨機(jī)數(shù)眠饮,答案就是用MPC 多方計(jì)算的辦法。具體講就是從全網(wǎng)中選擇一部分節(jié)點(diǎn)铜邮,比如500個(gè)仪召,讓他們跑這個(gè)MPC的過(guò)程寨蹋,每個(gè)人都貢獻(xiàn)一部分的隨機(jī)數(shù),最后產(chǎn)生的隨機(jī)數(shù)扔茅,是公平公正的已旧,沒(méi)有任何一個(gè)人,或者少數(shù)幾個(gè)人人可以左右這個(gè)結(jié)果咖摹。

現(xiàn)在我們有了一個(gè)安全的分片機(jī)制评姨,每個(gè)分片都可以保證惡意節(jié)點(diǎn)數(shù)量不會(huì)過(guò)高难述,那么如果在分片之后萤晴,某一個(gè)分片的節(jié)點(diǎn)被壞人收買(mǎi)或者攻破了怎么辦?那個(gè)分片不也就變壞了么胁后?

答案是我們需要定期的對(duì)分片的節(jié)點(diǎn)進(jìn)行打散店读,踢出舊的節(jié)點(diǎn),加入新的節(jié)點(diǎn)攀芯。這個(gè)期限叫做Epoch屯断,它的長(zhǎng)短是一個(gè)全網(wǎng)的參數(shù),具體多長(zhǎng)需要看預(yù)期壞人攻破一個(gè)分片的大部分節(jié)點(diǎn)所需要的時(shí)間侣诺。

如果需要一天時(shí)間殖演,那么這Epoch就需要設(shè)置為小于一天。在Epoch開(kāi)始時(shí)年鸳,進(jìn)行分片趴久,之后分片結(jié)構(gòu)不變,每個(gè)分片進(jìn)行正常的共識(shí)搔确,直到Epoch結(jié)束彼棍,重新分片。

剛才說(shuō)到需要有新節(jié)點(diǎn)加入膳算,那么哪些節(jié)點(diǎn)可以加入呢座硕?這要說(shuō)到Sybil Attack,意思是一個(gè)壞人可以在網(wǎng)絡(luò)中分身出無(wú)數(shù)多的身份涕蜂,占據(jù)你的系統(tǒng)华匾,在這里我們用跟其他區(qū)塊鏈類(lèi)似的解決方案,就是POW或者POS來(lái)驗(yàn)證身份机隙,只有成功做過(guò)POW或者POS的節(jié)點(diǎn)才可以加入新的Epoch瘦真。

每一個(gè)Epoch內(nèi)合法節(jié)點(diǎn)的身份我們用一個(gè)Identity Chain的鏈進(jìn)行存儲(chǔ),每一個(gè)Epoch有一個(gè)Identity Block里面存了所有新節(jié)點(diǎn)的信息黍瞧,以及剛才講的隨機(jī)數(shù)诸尽,和最后分片的結(jié)構(gòu)。這樣網(wǎng)絡(luò)中每個(gè)人都知道自己在哪個(gè)片印颤,片里同伴有誰(shuí)您机,其他片是什么結(jié)構(gòu),以方便消息認(rèn)證。

三际看、怎么安全的實(shí)現(xiàn)節(jié)點(diǎn)的分片?

關(guān)于分片內(nèi)如何達(dá)成共識(shí)咸产,我們用的是改進(jìn)的PBFT算法。傳統(tǒng)的PBFT的消息復(fù)雜度是O(n^2)仲闽,所以最多只能支持20個(gè)左右的節(jié)點(diǎn)脑溢,并且它只可以容忍33%的惡意節(jié)點(diǎn)。但PBFT沒(méi)有分叉的風(fēng)險(xiǎn)赖欣,并且每個(gè)塊一經(jīng)共識(shí)屑彻,就立即被確認(rèn),不需要等待顶吮,這使得整個(gè)分片系統(tǒng)可以更快的達(dá)成數(shù)據(jù)一致性社牲。

之前我提到,每個(gè)分片如果想要足夠安全悴了,需要盡量多的節(jié)點(diǎn)數(shù)才行搏恤,為什么呢?在PBFT33%的惡意節(jié)點(diǎn)閾值下湃交,我們假設(shè)全網(wǎng)惡意節(jié)點(diǎn)的比例在25%熟空,那么每一個(gè)分片的節(jié)點(diǎn)選擇,就類(lèi)似于一個(gè)隨機(jī)抽樣過(guò)程搞莺。

惡意節(jié)點(diǎn)的概率是p=25%息罗,在抽樣次數(shù)為600時(shí),惡意節(jié)點(diǎn)數(shù)量超過(guò)200(33%) 的概率遵循binomial cumulative distribution,概率大概為0.000003,這個(gè)數(shù)字意味著一百年分片才有可能出現(xiàn)一次問(wèn)題腮敌。

既然我們需要600+個(gè)節(jié)點(diǎn)達(dá)成共識(shí)阱当,PBFT又只能支持20個(gè)節(jié)點(diǎn),我們于是需要對(duì)PBFT進(jìn)行改進(jìn)糜工,使它能夠支持600+個(gè)節(jié)點(diǎn)弊添。做法是采用Schnorr多重簽名,每個(gè)節(jié)點(diǎn)的簽名投票信息可以被壓縮打包成一個(gè)多重簽名的大小捌木。

這樣省去了每個(gè)節(jié)點(diǎn)去廣播自己投票的消息油坝,只需要通過(guò)leader廣播多重簽名,就可以達(dá)到同樣的效果刨裆,但是復(fù)雜度已經(jīng)從O(n^2)降到了O(n)澈圈。

具體為什么要用Schnorr多重簽名,是因?yàn)閭鹘y(tǒng)的ECDSA的簽名算法是非線性的,所以多個(gè)簽名的數(shù)據(jù)沒(méi)法被加和到一起進(jìn)行驗(yàn)證,需要分別驗(yàn)證锄贼,這里面沒(méi)有任何工作量的減少规哪。但Schnorr簽名是線性的已脓,多個(gè)簽名可以被結(jié)合為一個(gè)簽名大小的多重簽名同木,并且可以一起驗(yàn)證皱坛,提高效率肢簿。

四报慕、怎么實(shí)現(xiàn)跨片的交易

在片和片之間做交易方面深浮,假設(shè)我在片1和片2里各有一個(gè)幣,如果我想把他們一起轉(zhuǎn)到片3眠冈,我怎么能保證這兩個(gè)幣可以同時(shí)花掉飞苇,而不會(huì)有中間狀態(tài),比如一個(gè)花了蜗顽,另一個(gè)沒(méi)花布卡。解決方案就是需要用鎖定的機(jī)制。具體步驟如下:

首先诫舅,我把我的交易廣播給片1和片2羽利。

他們收到交易后宫患,驗(yàn)證其合法性刊懈,并且鎖定我要轉(zhuǎn)的幣,并且達(dá)成共識(shí)娃闲,把共識(shí)的證明發(fā)回給我虚汛。這個(gè)證明根據(jù)驗(yàn)證情況,可以是接受或者拒絕處理皇帮。

當(dāng)我收到兩個(gè)分片的證明后卷哩,根據(jù)證明的內(nèi)容(是否存在拒絕證明),我可以繼續(xù)交易属拾,或者撤銷(xiāo)交易将谊。

如果有任何一個(gè)分片認(rèn)為我的交易它不能處理的話,我收到的證明里會(huì)包含它的拒絕證明渐白,有了這個(gè)證明尊浓,我可以通過(guò)廣播它和其他證明,讓所有片安全的把我的幣解鎖纯衍,也就是Rollback我的交易栋齿。

如果一切順利,片1和片2都認(rèn)為我的交易他們可以處理襟诸,那我會(huì)收到兩個(gè)肯定的證明瓦堵,我通過(guò)廣播這兩個(gè)證明,片3就可以放心的轉(zhuǎn)入(生成)我的兩個(gè)幣歌亲,片1和片2也可以安全的解鎖我的幣菇用,并且把他們轉(zhuǎn)出(刪除)。

【補(bǔ)充】提高交易延遲(結(jié)算速度)的方法

我們基于PBFT的共識(shí)算法已經(jīng)可以快速結(jié)算陷揪,但也要等大概5-10秒的時(shí)間惋鸥,對(duì)于一些小額快速的交易泉唁,比如去星巴克買(mǎi)杯咖啡,這個(gè)處理速度還是略慢揩慕,我們希望交易處理延遲能在1秒內(nèi)完成亭畜。

解決辦法就是進(jìn)行optimistic verify,意思是先通過(guò)幾個(gè)少數(shù)節(jié)點(diǎn)進(jìn)行驗(yàn)證迎卤,一切通過(guò)拴鸵,就立即返回確認(rèn),這樣用戶(hù)的延遲會(huì)大大降低蜗搔。

但這樣會(huì)存在少數(shù)節(jié)點(diǎn)作惡的風(fēng)險(xiǎn)劲藐,所以交易之后還需要發(fā)到片內(nèi)的所有節(jié)點(diǎn)做共識(shí),在那之后樟凄,交易才會(huì)上鏈聘芜,如果交易沒(méi)有通過(guò)大部分節(jié)點(diǎn)驗(yàn)證,那么說(shuō)明之前的幾個(gè)節(jié)點(diǎn)有問(wèn)題缝龄,那么我們會(huì)對(duì)他們進(jìn)行相應(yīng)的懲罰汰现。

問(wèn)答&交流

M:怎么分的片,沒(méi)看明白,有一個(gè)主鏈+一堆片嗎?怎么解決double-spending(雙花)?

蘭榮堅(jiān):簡(jiǎn)單說(shuō)就是隨機(jī)分片,每個(gè)片有600個(gè)節(jié)點(diǎn)叔壤,有一個(gè)Identity鏈瞎饲,類(lèi)似于主鏈,但它不需要處理交易炼绘,只作為reference嗅战。double spending是通過(guò)片內(nèi)PBFT的共識(shí)和片間的atomic transaction來(lái)防止的。

W:有沒(méi)有狀態(tài)分片俺亮,和Zilliqa 相比驮捍,有何不同?

蘭榮堅(jiān):每個(gè)分片存儲(chǔ)不同的數(shù)據(jù)脚曾,所以是狀態(tài)分片东且,zilliqa每個(gè)分片存儲(chǔ)全網(wǎng)數(shù)據(jù),不是狀態(tài)分片斟珊,并且zilliqa的分片隨機(jī)數(shù)是用的POW哈希值苇倡,我們會(huì)用多方計(jì)算的安全隨機(jī)數(shù)。

M:目測(cè)片內(nèi)pbft與片間atomic trans防止不了double spending囤踩,我在片1花費(fèi)的,片2怎么知道呢?除非有個(gè)全局狀態(tài)賬本

蘭榮堅(jiān):因?yàn)槭菭顟B(tài)分片旨椒,所以片1花錢(qián),只是花片1的錢(qián)堵漱,跟片2沒(méi)關(guān)系综慎,片2不需要知道片1的內(nèi)容,(你在片1的錢(qián) 只能在片1花一次勤庐,你去片2是花不了片1的錢(qián)的)只有在片間轉(zhuǎn)錢(qián)時(shí)示惊,才需要片和片的溝通好港,用atomic transaction可以保證片和片間的交易沒(méi)有問(wèn)題。

M:也就是,我只能在片1內(nèi)活動(dòng)?片不是會(huì)打亂重新分么?另外mpc與隨機(jī)數(shù)也沒(méi)看懂,mpc一般用于zero knowledge

蘭榮堅(jiān):打亂重分的是節(jié)點(diǎn)米罚,目的是防止作惡钧汹,但是數(shù)據(jù)(狀態(tài))是不會(huì)重分的,因?yàn)闆](méi)有必要录择,也不應(yīng)該隨便打亂拔莱。MPC只是大意上的概念,任何需要多方參與的計(jì)算過(guò)程 都可以歸為MPC.這里我們用的是RandHound隨機(jī)數(shù)生成算法隘竭,里面用到了VSS (verifiable secret sharing).

M:那有幾種token呢? 數(shù)據(jù)(狀態(tài))就是ledger吧? 不重分也就能理解了塘秦,一種token,怎么判斷我在哪個(gè)片里?

蘭榮堅(jiān):鏈本身就一種token,對(duì)狀態(tài)就是ledger动看,你的token可以在多個(gè)分片里尊剔,比如片1有5個(gè),片2有8個(gè) ...因?yàn)槭菭顟B(tài)分片菱皆,所以如果交易涉及的內(nèi)容都在一個(gè)片內(nèi)存在须误,就不需要和其它片溝通,只有當(dāng)交易涉及到多個(gè)分片的數(shù)據(jù)時(shí)搔预,才需要他們協(xié)調(diào)處理霹期。

M:我原始的token怎么得到? 又是如何分到不同的片里的叶组?pow是挖的,pos是創(chuàng)世一次出來(lái),然后各種方式'分發(fā)

蘭榮堅(jiān):這個(gè)具體我們還沒(méi)有確定拯田。對(duì)于POW,當(dāng)然是片內(nèi)的挖礦者在片內(nèi) 得到幣甩十。POS的話船庇,幣可以均勻分布在每個(gè)片÷录啵可以這么理解鸭轮,狀態(tài)分片基本上就是協(xié)同合作的多個(gè)鏈,但重點(diǎn)是需要保證每一個(gè)分片的鏈都能安全橄霉,并且全局網(wǎng)絡(luò)也安全窃爷。

M:用簽名的方法改進(jìn)pbft,看上去通信量變成o(n)姓蜂,但是實(shí)際的時(shí)延也是o(n)按厘,比普通的pbft還要大,o(n)還需要網(wǎng)絡(luò)的拓?fù)淇煽亍?/b>

蘭榮堅(jiān):O(n)是指網(wǎng)絡(luò)傳輸復(fù)雜度钱慢,并不是時(shí)間復(fù)雜度逮京,PBFT的時(shí)間復(fù)雜度要看critical path, 相對(duì)比較難衡量。但網(wǎng)絡(luò)傳輸量減少時(shí)束莫,算法速度自然也會(huì)有提升懒棉。O(n)是理論上的計(jì)算草描,具體部署到網(wǎng)絡(luò)中肯定有影響,但是理論上肯定是比傳統(tǒng)PBFT快很多的策严。

W:節(jié)點(diǎn)隨機(jī)劃分的話穗慕,就會(huì)缺少局部性、內(nèi)聚性妻导,可能會(huì)頻繁跨鏈溝通揍诽,這個(gè)性能是很差的,有考慮過(guò)這個(gè)問(wèn)題嗎栗竖?還有每隔一個(gè)時(shí)間打亂節(jié)點(diǎn)暑脆,那它存儲(chǔ)的原來(lái)分片的數(shù)據(jù)咋辦,直接丟切狐肢?新加入的直接下載添吗?

蘭榮堅(jiān):是的,這是基于分片的區(qū)塊鏈的一大難題份名,分片間的溝通是非常低效的碟联,所以我們會(huì)盡量讓數(shù)據(jù)間的dependency不跨片,如果必須跨片的話僵腺,我們也會(huì)采用網(wǎng)絡(luò)路徑上的優(yōu)化鲤孵,比如用Kademlia routing來(lái)提高溝通速度。

數(shù)據(jù)同步也是一個(gè)很重要的問(wèn)題辰如,我們會(huì)通過(guò)一些優(yōu)化普监,比如先同步狀態(tài),再同步歷史琉兜,使得節(jié)點(diǎn)可以快速進(jìn)入驗(yàn)證狀態(tài)凯正。同時(shí)節(jié)點(diǎn)根據(jù)存儲(chǔ)量可以自行選擇是否丟掉之前的片的數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豌蟋,一起剝皮案震驚了整個(gè)濱河市廊散,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梧疲,老刑警劉巖允睹,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異幌氮,居然都是意外死亡缭受,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)浩销,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贯涎,“玉大人,你說(shuō)我怎么就攤上這事慢洋√瘤ǎ” “怎么了陆盘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)败明。 經(jīng)常有香客問(wèn)我隘马,道長(zhǎng),這世上最難降的妖魔是什么妻顶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任酸员,我火速辦了婚禮,結(jié)果婚禮上讳嘱,老公的妹妹穿的比我還像新娘幔嗦。我一直安慰自己,他們只是感情好沥潭,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布邀泉。 她就那樣靜靜地躺著,像睡著了一般钝鸽。 火紅的嫁衣襯著肌膚如雪汇恤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天拔恰,我揣著相機(jī)與錄音因谎,去河邊找鬼。 笑死颜懊,一個(gè)胖子當(dāng)著我的面吹牛财岔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饭冬,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼使鹅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了昌抠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲁僚,失蹤者是張志新(化名)和其女友劉穎炊苫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體冰沙,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侨艾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拓挥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唠梨。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侥啤,靈堂內(nèi)的尸體忽然破棺而出当叭,到底是詐尸還是另有隱情茬故,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布蚁鳖,位于F島的核電站磺芭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏醉箕。R本人自食惡果不足惜钾腺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讥裤。 院中可真熱鬧放棒,春花似錦、人聲如沸己英。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剧辐。三九已至寒亥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荧关,已是汗流浹背溉奕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忍啤,地道東北人加勤。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像同波,于是被迫代替她去往敵國(guó)和親鳄梅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 總覺(jué)得自己越活越失敗了未檩。
    滿貓君閱讀 80評(píng)論 0 0
  • 趙客縵胡纓戴尸,吳鉤霜雪明。銀鞍照白馬冤狡,颯沓如流星孙蒙。 十步殺一人,千里不留行悲雳。事了拂衣去挎峦,深藏身與名。 閑過(guò)信陵飲合瓢,脫...
    布朗克的黑貓閱讀 383評(píng)論 0 0
  • 人永遠(yuǎn)無(wú)法活在未來(lái)坦胶,一刻都不可以,能夠感知的生命不過(guò)是一連串孤立的過(guò)往場(chǎng)景和片段,靠著回憶和幻想顿苇,用當(dāng)下的經(jīng)驗(yàn)和感...
    一葦一粟閱讀 194評(píng)論 0 0
  • 高考結(jié)束峭咒,各種忙碌、各種選擇岖圈,并沒(méi)有感受到分離的氣息讹语,兒子那種不緊不慢的性格讓我這當(dāng)娘的萬(wàn)分捉雞,高考剛結(jié)束的孩子...
    笨笨的六毛閱讀 203評(píng)論 0 0