在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

披露Monoxide具體是如何突破區(qū)塊鏈不可能三角的

電子工程師 ? 來源:lq ? 2019-02-11 14:18 ? 次閱讀

導(dǎo)言:

過去一兩年有許多號(hào)稱區(qū)塊鏈 3.0 的公鏈項(xiàng)目都宣稱克服了所謂不可能三角,但大體而言,至今尚未出現(xiàn)一個(gè)具信服力、并廣為接受的解方。不過,由分布式系統(tǒng)專家王嘉平等人提出的 Monoxide 擴(kuò)容方案,近日獲計(jì)算機(jī)頂級(jí)學(xué)術(shù)會(huì)議 NSDI 2019 收錄。這是繼 2017 年著名的 AlgoRand 項(xiàng)目登上 SOSP 大會(huì)后,睽違近兩年再有區(qū)塊鏈公鏈論文投中計(jì)算機(jī)頂會(huì)。

王嘉平為微軟總部研究院前主管研究員,專注于分布式系統(tǒng)等領(lǐng)域研究。2016 年起他在創(chuàng)新工場擔(dān)任執(zhí)行董事,負(fù)責(zé)區(qū)塊鏈和人工智能等投資方向,曾主導(dǎo)了對(duì)比特大陸的首輪機(jī)構(gòu)投資,成為三大主要投資方之一。去年他曾發(fā)表“區(qū)塊鏈到底有什么了不起”等系列文章,梳理出為什么他相信區(qū)塊鏈?zhǔn)且豁?xiàng)了不起的技術(shù),在行業(yè)內(nèi)引發(fā)廣大回響。

DeepTech 很高興邀請(qǐng)到王嘉平博士成為 DeepHash 專欄作者,這是他除了個(gè)人公眾號(hào)外首度在媒體上開設(shè)專欄。他將在以下的首篇專欄文章中,獨(dú)家披露 Monoxide 具體是如何突破區(qū)塊鏈不可能三角的,包含其研究中提出的“連弩挖礦”與“最終原子性”兩個(gè)重要?jiǎng)?chuàng)新。

Monoxide:突破區(qū)塊鏈不可能三角的極簡架構(gòu)

圖| Monoxide :以異步共識(shí)組來拓展區(qū)塊鏈(來源:王嘉平)

上圖是我們的論文,在 NSDI 會(huì)場的海報(bào)展示環(huán)節(jié)將使用的海報(bào)。本文將順著海報(bào)的邏輯介紹 Monoxide 的設(shè)計(jì)架構(gòu)和實(shí)現(xiàn)原理。雖然 Monoxide 架構(gòu)可以采用不同的共識(shí)算法作為其共識(shí)組內(nèi)的共識(shí)機(jī)制,本文將基于最簡單最干凈的Nakamoto(中本聰)共識(shí)算法(Proof-of-Work)展開討論。

而Monoxide 將同時(shí)滿足區(qū)塊鏈的安全,性能和去中心化這三項(xiàng)需求。這里需要強(qiáng)調(diào)的是,Monoxide 是 Layer 1 的區(qū)塊鏈技術(shù),不假設(shè)交易結(jié)構(gòu)的任何局部特性,也不假設(shè)跨共識(shí)組的交易會(huì)比較少。

什么是區(qū)塊鏈不可能三角?

第一角:怎么樣算安全

區(qū)塊鏈系統(tǒng)必須是安全的,這一點(diǎn)是不容妥協(xié)的,否則所有其它特性將毫無意義。具體落實(shí)到技術(shù)指標(biāo),就是在系統(tǒng)中構(gòu)造一系列非法區(qū)塊并得到全網(wǎng)認(rèn)可所需付出的代價(jià)。這個(gè)代價(jià)就 PoW (工作證明)共識(shí)機(jī)制而言,就是實(shí)施攻擊的最小挖礦算力。Nakamoto 共識(shí)算法保證惡意算力在50% 以下的時(shí)候,系統(tǒng)是安全的。我們保證的是采用 Monoxide 架構(gòu)之后,這個(gè) 50% 算力的安全邊界不會(huì)顯著變低。同時(shí),我們繼承了 Nakamoto 算法的其它安全特性,例如不要求出塊節(jié)點(diǎn)始終在線,全節(jié)點(diǎn)物理 IP 地址僅在一個(gè)很小的范圍內(nèi)暴露等。

第二角:怎么樣算高性能

Monoxide 架構(gòu)將完全隔離每個(gè)共識(shí)組的四大工作負(fù)荷,即:帶寬(廣播區(qū)塊數(shù)據(jù)和未確認(rèn)交易)、計(jì)算(驗(yàn)證交易和更新賬簿狀態(tài))、內(nèi)存(存儲(chǔ)賬簿的最新狀態(tài))、磁盤讀寫(記錄歷史區(qū)塊)。我們強(qiáng)調(diào)這四個(gè)方面的負(fù)荷必須全部被切分隔離,才能真正獲得高伸縮性的區(qū)塊鏈系統(tǒng),而不是僅完成部分工作符合的隔離,即所謂的網(wǎng)絡(luò)分片,交易分片和狀態(tài)分片。

具體落實(shí)到技術(shù)指標(biāo),性能包含兩個(gè)方面。一個(gè)是眾所周知的吞吐量,即最高每秒處理多少筆交易 (TPS),而另一個(gè)是全網(wǎng)表達(dá)賬簿狀態(tài)的總有效內(nèi)存總量。前者是速度,后者是容量。

我們實(shí)現(xiàn)了吞吐量大致 n/2 倍的線性提升以及狀態(tài)容量的 n 倍的線性提升 (以支付交易計(jì)算為例)。這里的 n 是共識(shí)組的個(gè)數(shù),提升是相對(duì)于共識(shí)組內(nèi)部采用的單鏈共識(shí)系統(tǒng)的性能。現(xiàn)在一個(gè)單鏈共識(shí)系統(tǒng),比較輕松能達(dá)到的是幾百 TPS 的吞吐量和數(shù)十 GB 的狀態(tài)空間。注意,這里并不是說 Monoxide 可以無限提升性能,在現(xiàn)有的互聯(lián)網(wǎng)平均帶寬的約束下(15Mbps),共識(shí)組的個(gè)數(shù) n 最高只能到數(shù)萬這個(gè)量級(jí)。

第三角:怎么樣算去中心化

首先,公鏈必須是 permissionless 系統(tǒng),并且系統(tǒng)中不存在不可替代的角色或者節(jié)點(diǎn),這是一個(gè)定性的要求。在滿足這個(gè)要求之后,去中心化可以落實(shí)到具體的技術(shù)指標(biāo),即需要多少IT 資源才能順利地參與全網(wǎng)的監(jiān)管(部分或者全部),也就是全節(jié)點(diǎn)的參與門檻。

而這個(gè)門檻最關(guān)鍵的因素是帶寬,高帶寬只有部署在數(shù)據(jù)中心才能獲得,其鏈路的地理位置也容易被追蹤;而其它資源諸如 CPU、內(nèi)存、磁盤等,都可以不受特定地理位置的約束,也無法追蹤,花點(diǎn)錢就有。

Monoxide 架構(gòu)在獲得幾個(gè)數(shù)量級(jí)的性能提升的同時(shí),始終將全節(jié)點(diǎn)帶寬消耗控制在普通家用互聯(lián)網(wǎng)接入可以承受的范圍(15Mbps),從而使得 Monoxide 的全節(jié)點(diǎn)可以像現(xiàn)在的以太坊全節(jié)點(diǎn)一樣,隨便在家里找個(gè)普通電腦就開起來。同時(shí) Monoxide 的共識(shí)組劃分了歷史交易歸檔的工作量,使得完整同步一個(gè)全節(jié)點(diǎn)的時(shí)間會(huì)比現(xiàn)在的以太坊少幾百倍。強(qiáng)調(diào)全節(jié)點(diǎn)進(jìn)入門檻的原因是,只有全節(jié)點(diǎn)才能夠在不信任其它節(jié)點(diǎn)的情況下,獨(dú)立驗(yàn)證交易,重建賬簿狀態(tài),而不是像云計(jì)算那樣,需要依賴于信任特定的節(jié)點(diǎn)(或服務(wù)器),這是區(qū)塊鏈和云計(jì)算的本質(zhì)區(qū)隔之一。

Monoxide 的總體設(shè)計(jì)

圖| Monoxide 總體設(shè)計(jì)(來源:王嘉平)

總體來說,Monoxide 的設(shè)計(jì)哲學(xué)是盡量簡單,在能滿足上述三角特性的前提下,盡量不引入額外的實(shí)體,不引入額外的機(jī)制,并盡量避免修改現(xiàn)有的機(jī)制。Monoxide 網(wǎng)絡(luò)是一個(gè)并發(fā)的多鏈系統(tǒng),每一個(gè)鏈我們稱之為"共識(shí)組"。

每個(gè)"共識(shí)組"其組成部分和現(xiàn)在單鏈系統(tǒng)完全一致,有自己的賬簿狀態(tài),區(qū)塊的鏈條,未確認(rèn)交易的集合,同步區(qū)塊數(shù)據(jù)和交易數(shù)據(jù)的廣播網(wǎng)絡(luò)以及一堆全節(jié)點(diǎn)(包括礦工)。各個(gè)共識(shí)組之間完全對(duì)等,無主次之分,除此之外這個(gè)網(wǎng)絡(luò)就沒有任何其它的角色了,沒有之前那些方案提出的母鏈,根鏈之類的,也沒有任何掌控全局的調(diào)度節(jié)點(diǎn)或驗(yàn)證節(jié)點(diǎn)。引入這些實(shí)體會(huì)使得一些功能更容易實(shí)現(xiàn)(例如動(dòng)態(tài)負(fù)載平衡),但是他們會(huì)犧牲去中心化特性,甚至還可能導(dǎo)致嚴(yán)重的性能瓶頸。

全網(wǎng)所有共識(shí)組用一個(gè)整數(shù)編號(hào)(0到n-1),我們限定共識(shí)組的總個(gè)數(shù)為 2 的 k 次冪,即n=2^k。任何一個(gè)賬簿地址,根據(jù)其地址二進(jìn)制數(shù)據(jù)的前 k 個(gè)比特,永久地被分配在一個(gè)共識(shí)組中。每個(gè)交易則根據(jù)交易的驗(yàn)證方的地址(例如轉(zhuǎn)賬交易的支付方),被分配在驗(yàn)證方所屬的共識(shí)組。所以 Monoxide 網(wǎng)絡(luò)的劃分不需要任何中心化的機(jī)制來分配地址和交易。

Monoxide 全網(wǎng)由各個(gè)共識(shí)組的出塊過程和未確認(rèn)交易集合完全獨(dú)立,共識(shí)組之間完全并行、異步且無需鎖定和同步,即使某一個(gè)共識(shí)組發(fā)生擁塞也不會(huì)干擾其它共識(shí)組的吞吐和出塊。

Monoxide 全網(wǎng)由各個(gè)共識(shí)組的獨(dú)立廣播子網(wǎng)所構(gòu)成,但這些廣播子網(wǎng)互相不重疊、互相不打攪。在我們的設(shè)計(jì)中,這些廣播子網(wǎng)由 DHT 的 Swarm 實(shí)現(xiàn),每一個(gè)廣播子網(wǎng)對(duì)應(yīng)一個(gè) Swarm。新啟動(dòng)的全節(jié)點(diǎn)根據(jù)其想要加入的共識(shí)組編號(hào)直接計(jì)算Swarm地址,然后利用 DHT的路由機(jī)制找到同一共識(shí)組里面的其它全節(jié)點(diǎn),并嘗試連接、入網(wǎng)。

全節(jié)點(diǎn)可以隨機(jī)選擇加入任意一個(gè)或多個(gè)共識(shí)組,或由上層應(yīng)用來決定。例如,錢包節(jié)點(diǎn)通常會(huì)加入登錄用戶的錢包地址所在的共識(shí)組,以便實(shí)時(shí)獲取其賬戶余額等狀態(tài)。Monoxide全節(jié)點(diǎn)不記錄任何用戶登錄狀態(tài)或用戶私鑰,以避免以太網(wǎng)全節(jié)點(diǎn)之前出現(xiàn)的 RPC 接口安全隱患。除非其上層應(yīng)用請(qǐng)求,通常一個(gè)共識(shí)組的全節(jié)點(diǎn)不會(huì)主動(dòng)連接另一個(gè)共識(shí)組的節(jié)點(diǎn)。

同樣礦工可以自由選擇參與一個(gè)或多個(gè)共識(shí)組,進(jìn)行挖礦,以期獲得每一個(gè)共識(shí)組中的出塊獎(jiǎng)勵(lì)。正常情況下,礦工會(huì)優(yōu)先選擇參與當(dāng)前算力較低的共識(shí)組,以獲得更高的利潤,從而導(dǎo)致各個(gè)共識(shí)組會(huì)收斂到一致的挖礦算力和出塊難度。

Monoxide 如何突破區(qū)塊鏈不可能三角?

從這個(gè)設(shè)計(jì),我們可以看到 Monoxide 架構(gòu)滿足區(qū)塊鏈三角的情況。

1.安全:只要各個(gè)共識(shí)組本身是安全的,Monoxide 就會(huì)是安全的。交易的安全和正確(例如避免雙花)依賴于每個(gè)共識(shí)組內(nèi)部的共識(shí)算法。Monoxide全網(wǎng)應(yīng)對(duì)女巫攻擊(Sybil Attack)也依賴于共識(shí)組內(nèi)部的共識(shí)算法本身的抵御能力。就 PoW 而言,每個(gè)共識(shí)組的安全,依賴于其內(nèi)部挖礦算力。所以 Monoxide 架構(gòu)的安全保障,核心是要能夠抵御算力分散的問題,即全網(wǎng)算力分散到每個(gè)共識(shí)組之后,每個(gè)共識(shí)組的算力將是全網(wǎng)的 1/n,這時(shí)單個(gè)共識(shí)組的防御壁壘將下降到 51/n %,(即所謂的1%攻擊)。這是一個(gè)完全無法接受的值。為了解決這個(gè)算力分散的問題,Monoxide引入了”連弩挖礦”(Chu-ko-nu Mining),使得單個(gè)共識(shí)組的防御壁壘回升到 51%。

2.性能:由于各共識(shí)組的區(qū)塊驗(yàn)證、存儲(chǔ)和賬簿狀態(tài)更新完全獨(dú)立,所以這三個(gè)方面將獲得無代價(jià)的無限線性提升。共識(shí)組之間唯一需要打交道的地方,就是為了正確處理跨共識(shí)組的交易。這使得在數(shù)據(jù)傳輸方面,性能提升是有代價(jià)的,并且不是無限的。為了高效完成跨共識(shí)組交易,Monoxide 引入了最終原子性(Eventual Atomicity),使得即使跨共識(shí)組交易的比例就算是接近 100%,全網(wǎng)仍舊可以輕松地完成交易吞吐,其性能代價(jià)為一個(gè)和共識(shí)組個(gè)數(shù)無關(guān)的常數(shù)。

3.去中心化:根據(jù)上面的描述,Monoxide 依舊是一個(gè)徹底的 permessionless 的系統(tǒng),并且每個(gè)共識(shí)組內(nèi)部的全節(jié)點(diǎn)的負(fù)擔(dān)始終保持在同維護(hù)一個(gè)單鏈系統(tǒng)相當(dāng)?shù)乃剑梢员惠p松部署到大部分有互聯(lián)網(wǎng)接入的角落。

所以論文最重要的兩大技術(shù)貢獻(xiàn)就是”連弩挖礦”(Chu-ko-nu Mining)和”最終原子性”(Eventual Atomicity)。后面我們將就這兩個(gè)方面,詳細(xì)展開,并以 Bitcoin (比特幣)數(shù)據(jù)結(jié)構(gòu)為藍(lán)本,給出這兩個(gè)機(jī)制對(duì) PoW 共識(shí)協(xié)議的改進(jìn)。

”連弩挖礦”(Chu-ko-nu Mining),放大有效算力

在 PoW 共識(shí)機(jī)制中,礦工需要不斷隨機(jī)刺探塊頭中的 Nonce (隨機(jī)數(shù)值)并重算哈希函數(shù),以使得這個(gè)塊頭的哈希值滿足當(dāng)前算力難度的要求,可以最終出塊。這個(gè)過程的瓶頸在于計(jì)算哈希函數(shù)的速度,所以挖礦算力被定義為哈希速率(Hashrate)。這里,我們將實(shí)際計(jì)算哈希的速度,定義為物理算力(PhysicalMining Power),提高物理算力的唯一方法就是部署更多的礦機(jī),消耗更多的能源。

然而,在 PoW 共識(shí)機(jī)制中,每個(gè)礦工的物理算力是無法直接知道的,這個(gè)物理算力最終體現(xiàn)為特定挖礦難度下的出塊速度。全網(wǎng)算力統(tǒng)計(jì)也是基于這個(gè)出塊速度而反算哈希速率而估計(jì)到的。

在發(fā)生算力攻擊的時(shí)候,無論是最長鏈,還是最難子樹(Ghost協(xié)議),都是依據(jù)各個(gè)分叉上出塊的數(shù)量和難度而定,而非各個(gè)礦工的實(shí)際哈希速率。我們將這個(gè)依據(jù)挖礦難度和出塊速度反算出來的哈希速率,定義有效算力(Effective Mining Power)。當(dāng)然在單鏈系統(tǒng)中,有效算力和物理算力,在統(tǒng)計(jì)意義上來說是完全相等的。

前面提到的算力分散問題是這樣的一個(gè)攻擊模型:在有 n 個(gè)共識(shí)組的 Monoxide 系統(tǒng)中,全網(wǎng)有效算力為 H,每個(gè)共識(shí)組的有效算力為 H/n。攻擊者在實(shí)施攻擊的時(shí)候,將其所有物理算力 T 分配到一個(gè)特定共識(shí)組,在這個(gè)共識(shí)組中獲得有效算力T。那邊當(dāng)其物理算力超過 T > H/n × 51% 的時(shí)候,攻擊將可以成功,并構(gòu)造不一致交易(例如雙花交易)。

為了抵御這個(gè)算力聚焦的攻擊模型,我們的思路是強(qiáng)制礦工將算力分散到各個(gè)共識(shí)組,使其無法集中算力到特定共識(shí)組。但在一個(gè)去中心化的permissionless 系統(tǒng)中,我們無法控制礦工如何分配其物理算力。

因此,Monoxide 引入了連弩挖礦,其效果是將使得全網(wǎng)的有效算力放大為物理算力的 n 倍,并且在協(xié)議的數(shù)據(jù)結(jié)構(gòu)層面再約束了這種放大后的有效算力必須平均分配到各個(gè)共識(shí)組,從而規(guī)避了這種算力聚焦的攻擊模型。

連弩挖礦允許礦工同時(shí)參與多個(gè)編號(hào)連續(xù)的共識(shí)組(例如從編號(hào)b到b+m-1),每次出塊的時(shí)候哈希函數(shù)將覆蓋多個(gè)將要出塊的塊頭進(jìn)行計(jì)算,同時(shí)這些塊頭將共用一個(gè) Nonce。具體做法是將這個(gè) m 個(gè)塊頭按序排列,構(gòu)造 Merkle 樹。然后算力哈希計(jì)算將覆蓋下列數(shù)據(jù)結(jié)構(gòu):

出塊時(shí),下列數(shù)據(jù)結(jié)構(gòu)會(huì)被廣播到特定的共識(shí)組 i (b≤i

其 MerkleTreePath_i是 Block_i在 Merkle 樹路徑上的左右兄弟節(jié)點(diǎn)的哈希值,需要 32 × log_2 m個(gè)字節(jié)。注意這里沒有顯式給 Block_i 在 Merkle樹中的位置,而是需要 Block_i中的共識(shí)組編號(hào)減去 b 推算出來,這樣做是為了約束連弩挖礦出塊的時(shí)候,每個(gè)共識(shí)組只能出一個(gè)塊。

從這個(gè)結(jié)構(gòu)中可以看到,即使在連弩挖礦的情況下,各個(gè)共識(shí)組也不會(huì)受到其它共識(shí)組出塊情況的影響。連弩挖礦并不要求各個(gè)共識(shí)組同步接受這些塊,甚至有些塊最終被認(rèn)為是無效分叉,也不會(huì)影響其它塊在其它共識(shí)組中被接受。同時(shí),這個(gè)結(jié)構(gòu)允許連弩挖礦包含算力難度不同的共識(shí)組,一旦部分共識(shí)組的挖礦難度被滿足,這些的塊就可以先發(fā)出去。

連弩挖礦將礦工有效算力放大,同時(shí)也放大了單位物理算力可以獲得的出塊獎(jiǎng)勵(lì),同樣的物理算力,同樣的能源消耗,參與到越多的共識(shí)組挖礦,所獲得的出塊獎(jiǎng)勵(lì)也會(huì)越多。所以,全網(wǎng)會(huì)收斂到主流的礦工都會(huì)采用連弩挖礦,并且參與到所有的共識(shí)組中。從而,使得全網(wǎng)的有效算力達(dá)到 H × n,單個(gè)共識(shí)組的有效算力達(dá)到H 。這樣使得攻擊單個(gè)共識(shí)組的物理算力要求和攻擊全網(wǎng)的物理算力相當(dāng),有效抵御算力聚焦的攻擊。

同時(shí)參與到多個(gè)共識(shí)組挖礦,需要更多的 IT 資源用來同步和驗(yàn)證每個(gè)共識(shí)組的交易和區(qū)塊(不僅僅是塊頭),也需要更多的磁盤存儲(chǔ)和內(nèi)存。基于去中心化的考慮,參與連弩挖礦與否,以及參與的共識(shí)組個(gè)數(shù)是一個(gè)礦工可以自行配置的選項(xiàng),Monoxide 并不要求所有礦工都參與所有共識(shí)組的挖礦。

同時(shí),得益于共識(shí)組獨(dú)立性,一個(gè)參與所有共識(shí)組挖礦的礦場,很容易在其公司內(nèi)部實(shí)現(xiàn)一個(gè)分布式的挖礦數(shù)據(jù)中心,用不同的主機(jī)監(jiān)控各個(gè)共識(shí)組,用不同主機(jī)確認(rèn)交易構(gòu)造新區(qū)塊,然后在內(nèi)部的高速網(wǎng)絡(luò)中匯總這些塊頭的哈希(Merkle的葉節(jié)點(diǎn)),并送給礦機(jī)集群。參與更多的共識(shí)組會(huì)線性增加IT資源的開銷,但是這些和大型礦場的礦機(jī)開銷來說,可以忽略不計(jì)了。

最后,順便提一下聯(lián)合挖礦(Merge Mining),在允許礦工同時(shí)參與多條鏈的挖礦這一點(diǎn)上,是很類似的。但是連弩挖礦設(shè)計(jì)初衷和工作場景和聯(lián)合挖礦完全不同,前者是為了放大有效算力,并強(qiáng)制放大后的算力均分在各個(gè)共識(shí)組,以防止算力集中攻擊特定共識(shí)組。而后者是為了借用大算力的鏈,來保證小算力鏈的安全。

''最終原子性''(Eventual Atomicity)

在 Monoxide 中,我們采用非常簡單的和去中心化的方式,將用戶和交易分配到共識(shí)組,并不企圖減少跨共識(shí)組交易發(fā)生概率,我們認(rèn)為利用交易結(jié)構(gòu)的局域性是Layer 2 技術(shù)的事情。全網(wǎng)性能越高,共識(shí)組數(shù)量越多,跨共識(shí)組交易發(fā)生概率一定會(huì)越高,這不是一個(gè)可以回避的問題。

在我們的實(shí)驗(yàn)中,當(dāng)共識(shí)組數(shù)量達(dá)到 64 的時(shí)候,跨共識(shí)組交易的比例已經(jīng)超過了 95% (實(shí)驗(yàn)的測(cè)試數(shù)據(jù)為以太坊 ERC20 的完整歷史交易記錄)。Monoxide 引入了最終原子性來實(shí)現(xiàn)高效的跨共識(shí)組交易處理,使得每個(gè)跨共識(shí)組交易帶來的額外開銷是一個(gè)很小的常數(shù),并且和共識(shí)組數(shù)量 n 無關(guān)。

區(qū)塊鏈系統(tǒng),每一個(gè)交易都是一個(gè)原子操作。在單鏈系統(tǒng)中,就好比單線程,這個(gè)原子操作并沒有被強(qiáng)調(diào),因?yàn)榻灰妆緛砭褪潜灰粋€(gè)一個(gè)地確認(rèn)和處理,系統(tǒng)無需做任何額外的事情,原子性就自然有保障。而在 Monoxide 中,不同地址的狀態(tài)在不同共識(shí)組中維護(hù),互相不可見,其狀態(tài)的更新也被兩個(gè)不同的鏈驅(qū)動(dòng),就好比多線程。

一個(gè)原子操作要在這樣的架構(gòu)下正確安全地完成,就不是一個(gè)簡單的事情了。通常為了協(xié)同多線程,我們有兩種辦法,一個(gè)是互相對(duì)所涉及的資源加鎖,另一個(gè)則是借由消息傳遞。我們選擇了后者,一方面是因?yàn)榧渔i會(huì)阻塞對(duì)應(yīng)的共識(shí)組的吞吐,嚴(yán)重影響性能,另一方面是因?yàn)樗械膯捂渽^(qū)塊鏈天生就有一個(gè)消息傳遞機(jī)制(未確認(rèn)交易集合),從而避免引入新的實(shí)體。

我們先以最簡單的支付交易為例,介紹我們的設(shè)計(jì)。一個(gè)數(shù)量為 x 的從地址 A 到地址 B 的支付交易,并且 A 和 B 處于不同的共識(shí)組。這是一個(gè)原子操作,其中包含一個(gè)扣款操作,這個(gè)操作有條件,并且不同的執(zhí)行順序會(huì)導(dǎo)致不同的狀態(tài)。另一個(gè)是存款操作,這個(gè)操作無條件,并且不同的執(zhí)行順序不會(huì)導(dǎo)致不一致的最終狀態(tài)。

對(duì)于這樣的交易邏輯,Monoxide 將先在共識(shí)組 A 中,嘗試完成扣款操作。如果成功,則將向共識(shí)組 B 轉(zhuǎn)發(fā)一個(gè)接力交易,一種特殊的未確認(rèn)交易。接力交易和普通未確認(rèn)交易一樣,描述了用什么參數(shù),調(diào)用哪個(gè)智能合約里面的函數(shù)。和普通未確認(rèn)交易不同的是權(quán)限校驗(yàn)方式。普通未確認(rèn)交易,通常由錢包簽發(fā),通過其攜帶數(shù)字簽名來校驗(yàn)權(quán)限。而接力交易攜帶的是來自另一個(gè)共識(shí)組的出塊證明:

為了校驗(yàn)這個(gè)接力交易,共識(shí)組的塊頭將包含兩個(gè) MerkleRoot,一個(gè)是之前就有的覆蓋所有被本塊確認(rèn)的交易的 Merkle 樹,另一個(gè)是新增的覆蓋由本塊中的交易發(fā)出去的所有接力交易。后者將被其它共識(shí)組接收,并用于校驗(yàn)由其發(fā)出去的接力交易。

默認(rèn)情況下,構(gòu)造和轉(zhuǎn)發(fā)接力交易由確認(rèn)初始交易的那個(gè)礦工(在共識(shí)組 A)完成。萬一這個(gè)轉(zhuǎn)發(fā)失效,共識(shí)組 A 中任何一個(gè)全節(jié)點(diǎn),都有能力從交易歷史中根據(jù)那個(gè)初始交易重新構(gòu)造并轉(zhuǎn)發(fā)丟失的接力交易,無需額外的共識(shí)或證明。

無論是接力交易,還是普通的未確認(rèn)交易,都將以類似的方式在目標(biāo)共識(shí)組的廣播子網(wǎng)中傳播,并被暫存在未確認(rèn)交易的集合中。礦工在出塊的時(shí)候,將同等對(duì)待接力交易和未確認(rèn)交易,通常根據(jù)其手續(xù)費(fèi)多少來排優(yōu)先級(jí)。任何產(chǎn)生一個(gè)或多個(gè)接力交易的初始交易,其手續(xù)費(fèi)會(huì)以一定比例分配給初始交易和多個(gè)接力交易,給到最終在其它共識(shí)組確認(rèn)這些交易的礦工。在 Monoxide 中,這個(gè)分配比例可以由智能合約代碼控制。

從上述流程中,我們可以看到在 Monoxide 系統(tǒng)中交易原子性并沒有得到立即滿足,而是要等到所有接力交易被確認(rèn)和執(zhí)行之后,才最終得以完成。我們將此稱為最終原子性,而不是要求即時(shí)的原子性。

最終原子性使得跨共識(shí)組的交易可以被無阻塞地在多個(gè)共識(shí)組間接力執(zhí)行,使得多個(gè)交易可以完全并行地重疊交錯(cuò)執(zhí)行,這樣 Monoxide 系統(tǒng)的全網(wǎng)吞吐能力就得以完全釋放,即使再多的跨共識(shí)組的交易也不會(huì)顯著影響性能。

我們即使假設(shè) 100% 的交易都是跨共識(shí)組的交易,一個(gè)支付交易將會(huì)變成兩個(gè)交易,粗略地說,會(huì)使吞吐量減半。但是這個(gè)開銷,和共識(shí)組的總數(shù)無關(guān)。當(dāng)全網(wǎng)性能獲得幾個(gè)數(shù)量級(jí)的提升時(shí),這個(gè)開銷始終是吞吐量減半。

故而,在我們的實(shí)驗(yàn)中,2048 個(gè)共識(shí)組能夠獲得近 1000 倍的吞吐量提升。基于最終原子性的執(zhí)行邏輯,需要初始操作和接力操作滿足前述的正確性約束,否則可能導(dǎo)致不一致的最終狀態(tài)。誠然,這會(huì)對(duì) Monoxide 平臺(tái)上的智能合約開發(fā)帶來一些難度。不過我們認(rèn)為這是一個(gè)不可避免的代價(jià),就好像給 GPU 寫代碼,給 OpenMP 寫代碼或者是給Hadoop 寫代碼,就是會(huì)比單機(jī)單線程的 CPU 的代碼要困難一些,思路上要繞一些。當(dāng)然,結(jié)合恰當(dāng)?shù)暮霞s語言模型、形式化驗(yàn)證工具,以及開發(fā)和調(diào)試工具的支持,開發(fā)的難度也會(huì)大大減少。

Oxidation 語言是 Monoxide 平臺(tái)的智能合約語言,一種基于函數(shù)編程(Functional programming)的語言。這個(gè)語言模型的設(shè)計(jì)并不是論文的一部分,這部分工作也尚未全部完成。這里給出一個(gè)類似 ERC20 代幣的合約示例代碼。這里比較特殊的是系統(tǒng)調(diào)用 yield 。這個(gè)調(diào)用將在合約執(zhí)行的過程中生成接力交易,如果 b 為一個(gè)跨共識(shí)組的地址的話。代碼中可以出現(xiàn)多個(gè) yield 調(diào)用,也可以有條件地調(diào)用 yield,但是 yield 調(diào)用不允許重入。

伸縮性的上限——為什么說區(qū)塊鏈不可能三角被突破了?

為了正確完成跨共識(shí)組交易,接力交易的權(quán)限校驗(yàn)需要接收到發(fā)起方所在的共識(shí)組的對(duì)應(yīng)的塊頭。這件事情成為了 Monoxide 全網(wǎng)伸縮性的最主要瓶頸。這意味著,每個(gè)全節(jié)點(diǎn)都需要同步并跟蹤所有共識(shí)組中的塊頭,同時(shí)加上連弩挖礦機(jī)制,這個(gè)同步消耗的帶寬為:

( BlockHeadSize + 32 ×log2 n ) × n / BlockInterval

BlockHeadSize 為塊頭的元數(shù)據(jù),大致 120 字節(jié)。這個(gè)部分為不定長,是因?yàn)镸onoxide 采用可變長度的 Nonce,以適配不同的挖礦難度。32 × log2 n 部分為連弩挖礦機(jī)制引入的算力證明,即前文的 MerkleTreePath_i。BlockInterval為出塊間隔。基本上,這是一個(gè) O(nlog2 n)的開銷,只要 n 大到一定程度,性能的提升會(huì)低于這個(gè)開銷的增加,從而確定了伸縮性的天花板。

既然,每個(gè)全節(jié)點(diǎn)都需要同步并跟蹤所有共識(shí)組中的塊頭,我們將給出另一種連弩挖礦的出塊數(shù)據(jù)結(jié)構(gòu),改為一次出所有的塊頭,而不是按逐個(gè)共識(shí)組出塊頭,不可用的塊頭(哈希難度未達(dá)到挖礦難度的)用其哈希值代替。當(dāng)然區(qū)塊本身仍舊是逐個(gè)共識(shí)組分開廣播的。同時(shí)為了實(shí)現(xiàn)這個(gè)優(yōu)化,我們將引入一個(gè)全局的特殊廣播子網(wǎng),僅用來傳播塊頭或者成批的塊頭,并要求所有全節(jié)點(diǎn)和挖礦節(jié)點(diǎn)加入這個(gè)特殊的廣播子網(wǎng)。這樣就可以省去原先每個(gè)塊頭的算力證明部分,將帶寬消耗將降到 O(n):

BlockHeadSize × n / BlockInterval

即使優(yōu)化之后,對(duì)于每個(gè)全節(jié)點(diǎn)來說,這仍舊是一個(gè)不容忽視的開銷。n總能大到一定程度,使得本地帶寬被耗盡。那么我們來推演一下這個(gè)天花板到底是多少。假設(shè)約束全節(jié)點(diǎn)帶寬為 15Mbps,即上限為 1.88MB/s。以 Nakamoto 共識(shí)為基礎(chǔ),我們?cè)O(shè)定其出塊間隔為 1 分鐘,出塊大小為 8MB。

這樣單個(gè)共識(shí)組單鏈吞吐量將約為 560 TPS,區(qū)塊傳輸開銷為 0.13MB/s。當(dāng)共識(shí)組數(shù)量為 65536 個(gè)的時(shí)候,全網(wǎng)塊頭傳輸開銷也為 0.13MB/s。加起來也遠(yuǎn)小于帶寬上限,有足夠的剩余帶寬用于下行廣播。然后,這個(gè)時(shí)候全網(wǎng)吞吐量約為 15M TPS 左右,狀態(tài)容量在幾百 TB 的數(shù)量級(jí)。無論是再多的共識(shí)組總量,還是再高的共識(shí)組單鏈吞吐量,都會(huì)逐漸使得全節(jié)點(diǎn)本地帶寬顯得局促。

所以,我們認(rèn)為 Monoxide 的伸縮性天花板大致在這個(gè)水平,千萬 TPS 的吞吐量和幾百 TB 的狀態(tài)容量。千萬 TPS 這個(gè)數(shù)量級(jí),已經(jīng)可以應(yīng)付大部分互聯(lián)網(wǎng)級(jí)別應(yīng)用的峰值流量,同時(shí)仍舊滿足區(qū)塊鏈對(duì)安全和去中心化的要求。這就是為什么我們說,區(qū)塊鏈不可能三角被突破了。當(dāng)然,要伸縮到這個(gè)程度,也需要整個(gè)社區(qū)的總參與節(jié)點(diǎn)數(shù)到達(dá)百萬數(shù)量級(jí)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10873

    瀏覽量

    212038
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    47352

    瀏覽量

    238791
  • 區(qū)塊鏈
    +關(guān)注

    關(guān)注

    111

    文章

    15562

    瀏覽量

    106187

原文標(biāo)題:DeepHash專欄|Monoxide:突破區(qū)塊鏈不可能三角的極簡架構(gòu)

文章出處:【微信號(hào):deeptechchina,微信公眾號(hào):deeptechchina】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    區(qū)塊行業(yè)發(fā)展,金融領(lǐng)域應(yīng)用方向?

    的新一代信息技術(shù)加速突破應(yīng)用。”“信息、生命、制造、能源、空間、海洋等的原創(chuàng)突破為前沿技術(shù)、顛覆性技術(shù)提供了更多創(chuàng)新源泉。”區(qū)塊作為前沿技術(shù),已經(jīng)引起國家領(lǐng)導(dǎo)人的關(guān)注,其
    發(fā)表于 08-06 17:34

    區(qū)塊對(duì)我們的生活有什么影響

    的每一個(gè)參與者都要檢查每個(gè)塊的一致性,試圖破解區(qū)塊就像試圖潛入一個(gè)由上百條狗守衛(wèi)的單門。這是不可能的。透明度每個(gè)塊對(duì)網(wǎng)絡(luò)中的每個(gè)成員都可見,確保各方之間的信任。協(xié)作由于區(qū)塊
    發(fā)表于 07-10 04:20

    區(qū)塊從不忘事兒

    俗話說,大象從不忘事兒。區(qū)塊亦是如此。內(nèi)存是區(qū)塊的核心,它是一種以關(guān)鍵方式構(gòu)建的突破性計(jì)算機(jī)編程語言,與人的心智非常相似。正如我們的記憶
    發(fā)表于 07-29 06:08

    打破區(qū)塊不可能三角!2華人專家論文將登NSDI 2019計(jì)算機(jī)頂會(huì)

    在今年 NSDI 接受的 49 篇文章中,亦僅有 Monoxide 一篇論文是區(qū)塊相關(guān)。王嘉平認(rèn)為,區(qū)塊技術(shù)相關(guān)研究在整個(gè)學(xué)術(shù)界還是非常
    的頭像 發(fā)表于 01-29 14:05 ?3545次閱讀

    混合共識(shí)將如何彌補(bǔ)區(qū)塊不可能三角的弊端

    目前所衍生出來的XX即挖礦的眾多應(yīng)用場景的靈感也都源自于POW,比如交易即挖礦、發(fā)文即挖礦、評(píng)論即挖礦、看視頻即挖礦、導(dǎo)航即挖礦,等等等等。都是為了調(diào)動(dòng)使用者的積極性,這種分發(fā)機(jī)制無疑是最公平的,其他方式都是直接購買,這并非是區(qū)塊所追求的去中心化。
    發(fā)表于 02-14 14:21 ?561次閱讀

    什么是區(qū)塊不可能三角為什么不可突破

    CAP定理證明了:當(dāng)網(wǎng)絡(luò)存在分區(qū)時(shí),提供可靠的原子一致性數(shù)據(jù)是不可能的,但是想要實(shí)現(xiàn)一致性、可用性、分區(qū)容錯(cuò)性,個(gè)屬性中的兩個(gè)是可行的。在異步通信系統(tǒng)中,當(dāng)沒有鎖提供時(shí),如果出現(xiàn)消息丟失,即使允許過時(shí)的數(shù)據(jù)返回,提供一致性數(shù)據(jù)也是不可
    發(fā)表于 02-26 11:03 ?3245次閱讀
    什么是<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b><b class='flag-5'>不可能</b><b class='flag-5'>三角</b>為什么<b class='flag-5'>不可</b><b class='flag-5'>突破</b>

    如何解決區(qū)塊技術(shù)不可能三角的行業(yè)問題

    比特幣的區(qū)塊技術(shù)就是追求的“不可能三角”里的“去中心化”和“安全性”。它的每一個(gè)節(jié)點(diǎn)都下載和儲(chǔ)存所有的交易數(shù)據(jù),但也同時(shí)帶來了巨大的儲(chǔ)存空間損耗和較長的校驗(yàn)時(shí)間。比特幣每秒只能處理7
    發(fā)表于 03-11 10:40 ?1444次閱讀

    區(qū)塊技術(shù)還長期面臨著一個(gè)不可能三角技術(shù)的瓶頸

    區(qū)塊由“數(shù)據(jù)塊”和“鏈條”組成,是一種分布式記賬底層技術(shù)。一般認(rèn)為,區(qū)塊具有去中心化、高安全性等核心優(yōu)點(diǎn),可以完美解決共享經(jīng)濟(jì)發(fā)展過程中的信息不對(duì)稱、交易成本高、陌生人信任等難題。
    發(fā)表于 05-08 10:16 ?758次閱讀

    Amino將成為解決區(qū)塊不可能三角的破局方案

    Amino是一個(gè)5G智能Cloud-edge云邊計(jì)算網(wǎng)絡(luò),通過節(jié)點(diǎn)分布式協(xié)作、數(shù)據(jù)分析機(jī)制和創(chuàng)新的PoC體系,優(yōu)化調(diào)度算力資源。跳出上治理和下擴(kuò)容,Amino提出將AI治理作為解決“區(qū)塊
    發(fā)表于 05-14 10:54 ?2833次閱讀

    區(qū)塊協(xié)議存在著高耗能不夠民主容易分叉可拓展性差等問題的缺陷

    所謂魚和熊掌不可得兼,很多人已經(jīng)默認(rèn)區(qū)塊里的「不可能三角」問題是無法解決的,正如 Micali 所說,“2000 年來的
    發(fā)表于 06-17 11:18 ?848次閱讀

    如何解決公面臨的不可能三角模型問題

    「底層公 → 解決方案 → 行業(yè)應(yīng)用」是區(qū)塊業(yè)內(nèi)公認(rèn)的發(fā)展邏輯。作為底層技術(shù),公支撐整個(gè)行業(yè)的發(fā)展,決定區(qū)塊
    發(fā)表于 07-19 10:58 ?2180次閱讀
    如何解決公<b class='flag-5'>鏈</b>面臨的<b class='flag-5'>不可能</b><b class='flag-5'>三角</b>模型問題

    Layer2 二層網(wǎng)絡(luò)解決方案可以解決區(qū)塊什么問題

    區(qū)塊行業(yè)存在一個(gè)“不可能三角”問題,即安全、可擴(kuò)展性、去中心化,只能犧牲其中一個(gè)去實(shí)現(xiàn)另外兩個(gè)。
    發(fā)表于 08-12 14:39 ?2055次閱讀

    什么是區(qū)塊中的不可能三角

    區(qū)塊本質(zhì)上是一個(gè)去中心化的分布式賬本數(shù)據(jù)庫,它也存在“不可能三角”。今天,我們就來講講“不可能三角
    發(fā)表于 12-13 08:59 ?8522次閱讀

    區(qū)塊的分片技術(shù)是怎樣的技術(shù)

    區(qū)塊難題是區(qū)塊網(wǎng)絡(luò)和點(diǎn)對(duì)點(diǎn)(P2P)交易操作面臨的挑戰(zhàn)之一,大多數(shù)加密貨幣平臺(tái)必須在去中心化,安全性和可擴(kuò)展性之間選擇兩個(gè)功能,也就是我們通常提到的“
    發(fā)表于 01-07 11:25 ?2287次閱讀

    區(qū)塊如何解決醫(yī)療數(shù)據(jù)中的不可能三角

    不可能三角”一詞,最早來自金融經(jīng)濟(jì)領(lǐng)域,指的是資本自由流動(dòng)、匯率穩(wěn)定和貨幣政策獨(dú)立性不可能兼得。
    發(fā)表于 01-17 10:26 ?1624次閱讀
    主站蜘蛛池模板: 免费福利午夜影视网| 性满足久久久久久久久| 天天摸天天操天天爽| 午夜欧美精品| 奇米777狠狠| 激情www| 182tv免费视视频线路一二三| 欧美专区欧美吧| 亚洲视频一区| 曰曰摸天天摸人人看久久久| 伊人网网站| 四虎国产精品永久在线看| 欧美一级高清片在线| 红怡院欧洲| 亚洲第一区视频在线观看| 看片午夜| 国产视频h| 综合激情网五月| 色婷婷综合久久久| 久久精品国产2020观看福利色| 国产3p在线播放| 手机在线看| wwwxxx亚洲| 日本不卡一区二区三区视频 | 国产簧片| 天天黄色| 视频在线免费看| 国产精品污视频| 色网站在线| 国产特级毛片| 天堂网www中文在线| 欧美h网| 五月婷婷深深爱| 玖玖爱在线播放| 新午夜影院| 欧美激情啪啪| 亚洲日韩图片专区第1页| 免费看真人a一级毛片| 亚洲禁片| 黄色网址播放| 性 色 黄 一级|