基于區(qū)塊鏈中心化應(yīng)用設(shè)計(jì)的下一代高性能公鏈MultiVAC介紹
MultiVAC 是為大規(guī)模去中心化應(yīng)用設(shè)計(jì)的下一代高性能公鏈,通過(guò)可信分片技術(shù)為區(qū)塊鏈系統(tǒng)賦予了可持續(xù)無(wú)限擴(kuò)展的能力。MulTIVAC 首次提出了基于可驗(yàn)證隨機(jī)函數(shù)選擇分片節(jié)點(diǎn)的可信度概率模型,并將該模型運(yùn)用到區(qū)塊鏈交易、計(jì)算、存儲(chǔ)等關(guān)鍵環(huán)節(jié)中,使得任務(wù)目標(biāo)可以在部分節(jié)點(diǎn)參與的情況下達(dá)到極高的可靠性。MulTIVAC 將網(wǎng)絡(luò)中的交易根據(jù)經(jīng)典 UTXO 賬戶模型分片,通過(guò)可信度概率模型選擇礦工記賬,將公鏈性能提升到企業(yè)級(jí)商用水平。作為區(qū)塊鏈領(lǐng)域中首個(gè)提供彈性計(jì)算模型的公鏈,MulTIVAC 創(chuàng)造性地提出了可驗(yàn)證計(jì)算任務(wù)的 PoIE 共識(shí)、專為區(qū)塊鏈設(shè)計(jì)的 BISC 指令集、具備通用計(jì)算能力的 MVM 虛擬機(jī)等技術(shù),使得開發(fā)者能夠自主權(quán)衡分布式應(yīng)用中的一致性,可用性和分區(qū)容忍性要求,為應(yīng)用層復(fù)雜業(yè)務(wù)邏輯提供完備支持,從而更便捷地構(gòu)筑多元化的公鏈生態(tài)體系。
1.要解決的問(wèn)題
區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式,是一種全球化、去中心化的技術(shù)網(wǎng)絡(luò)。安全性、可擴(kuò)展性、去中心化構(gòu)成一個(gè)不可能三角。以 Bitcoin、Ethereum為代表的公鏈完全不具備擴(kuò)展性,全網(wǎng)計(jì)算能力等同于單個(gè)礦工計(jì)算能力,全網(wǎng)總處理能力與節(jié)點(diǎn)規(guī)模不相關(guān)甚至負(fù)相關(guān)(更大的通訊成本)。以 EOS為代表的公鏈嘗試用超級(jí)節(jié)點(diǎn)解決性能瓶頸,卻放棄了去中心化。以 Zilliqa、Dfinity為代表的分片方案放棄了一定的安全性,以 Plasma為代表狀態(tài)通道(State Channel)技術(shù)則使用了技術(shù)結(jié)合現(xiàn)實(shí)的手段來(lái)處理安全性問(wèn)題。
目前大量研發(fā)投入到提高每秒交易數(shù)量的技術(shù)方案上。最新公鏈將每秒交易量提升到數(shù)千水平(e.g. EOS,Seele在實(shí)驗(yàn)環(huán)境下達(dá)到 1000-3000 tps, tps = transacTIons per second)。但是這一交易處理速度依然受到共識(shí)制約,主要瓶頸在于單一礦工的硬件處理能力。本質(zhì)上,很多公鏈沒(méi)有實(shí)質(zhì)性地突破“區(qū)塊鏈?zhǔn)且粋€(gè)賬本”的認(rèn)知。
同時(shí),網(wǎng)絡(luò)擴(kuò)張的速度和規(guī)模也不盡如人意:截止 2018年 5 月 13 日 12:00 Noon (UTC 時(shí)間),問(wèn)世近 10 年的 Bitcoin的全節(jié)點(diǎn)僅有 10424 個(gè),Ethereum 的全節(jié)點(diǎn)僅有 14383個(gè)。賬本龐大及挖礦困難,建立一個(gè)全節(jié)點(diǎn)本身并不具備足夠收益,導(dǎo)致普通用戶不愿意建立全節(jié)點(diǎn)。
MultiVAC 認(rèn)為區(qū)塊鏈能否真正商用化的關(guān)鍵在于區(qū)塊鏈能否提供通用計(jì)算能力,以及全網(wǎng)交易和合約處理性能是否能夠可擴(kuò)展、可增長(zhǎng)與可適應(yīng)。
據(jù)此,MultiVAC 提出可信分片計(jì)算模型,旨在去中心化網(wǎng)絡(luò)的不可信節(jié)點(diǎn)之間,建立一種計(jì)算上的分工與可信關(guān)系,使得全球節(jié)點(diǎn)可以匯總交易能力,構(gòu)建成算力可以無(wú)限擴(kuò)張的基礎(chǔ)公鏈網(wǎng)絡(luò)。
同時(shí),MultiVAC 將交易處理與智能合約進(jìn)行獨(dú)立分片設(shè)計(jì),構(gòu)建了一個(gè)具有極強(qiáng)支持性和彈性的區(qū)塊鏈底層平臺(tái)。
DApp 可實(shí)現(xiàn)通用計(jì)算層面上的業(yè)務(wù)邏輯,并可根據(jù)自我需要靈活選擇由多大規(guī)模的節(jié)點(diǎn)來(lái)進(jìn)行計(jì)算和達(dá)成共識(shí)。
為此,MultiVAC 要解決的核心問(wèn)題是:
1, 如何在全網(wǎng)中選取若干個(gè)節(jié)點(diǎn)組成可信分片
2, 如何通過(guò)可信分片處理網(wǎng)絡(luò)交易并記錄賬本
3, 如何驗(yàn)證節(jié)點(diǎn)是否誠(chéng)實(shí)可信地完成了計(jì)算任務(wù)
其中問(wèn)題 1 決定了 MultiVAC 如何在交易和合約層面進(jìn)行分片,問(wèn)題 2 決定了 MultiVAC 如何在交易分片內(nèi)達(dá)成出塊共識(shí),問(wèn)題 3 決定了 MultiVAC 如何將彈性計(jì)算分片應(yīng)用到智能合約。
MultiVAC 利用 VRF 構(gòu)建可靠概率模型,解決了在交易和合約中如何安全、高效、隨機(jī)選取分片節(jié)點(diǎn)的問(wèn)題;采用UTXO 賬本分片和共識(shí)族達(dá)成片內(nèi)共識(shí),實(shí)現(xiàn)交易可信分片構(gòu)建;設(shè)計(jì) BISC 區(qū)塊鏈專用指令集和 MVM 通用計(jì)算虛擬機(jī)運(yùn)行智能合約,通過(guò)PoIE共識(shí)機(jī)制驗(yàn)證計(jì)算任務(wù),為DApp業(yè)務(wù)邏輯處理提供了基于可信分片的彈性執(zhí)行環(huán)境。
2.可驗(yàn)證隨機(jī)函數(shù) VRF
共識(shí)算法的本質(zhì)是在分布式網(wǎng)絡(luò)中如何選取一個(gè)或多個(gè)節(jié)點(diǎn)成為記賬人。MultiVAC 中關(guān)于交易處理和合約計(jì)算的分片方案都以 VRF(Verifiable Random Function,可驗(yàn)證隨機(jī)函數(shù)為基礎(chǔ)。VRF 是一種共識(shí)框架,也是數(shù)學(xué)工具。
理想狀態(tài)下,區(qū)塊鏈系統(tǒng)中每一個(gè)誠(chéng)實(shí)節(jié)點(diǎn)都應(yīng)該有權(quán)力參與整個(gè)網(wǎng)絡(luò)的記賬工作。共識(shí)機(jī)制創(chuàng)新本質(zhì)需要兼顧節(jié)點(diǎn)選擇的公平性和系統(tǒng)運(yùn)行的效率。Bitcoin 及 Ethereum 的PoW 算法機(jī)制,保證記賬節(jié)點(diǎn)的選取充分隨機(jī),且只有掌控超過(guò)全網(wǎng) 51%算力才能破壞規(guī)則。PoW 具備數(shù)學(xué)優(yōu)雅性,充分體現(xiàn)去中心化的公平性,不過(guò)存在巨大的資源浪費(fèi)。而以石墨烯技術(shù)為代表的 DPoS 算法傾向于提高系統(tǒng)吞吐量而犧牲節(jié)點(diǎn)選取隨機(jī)性,并舍棄了普通節(jié)點(diǎn)的參與機(jī)會(huì),犧牲數(shù)學(xué)的優(yōu)雅性和去中心化的公平性換取效率優(yōu)勢(shì)。其他共識(shí)算法如 PBFT 算法(O(n2)的復(fù)雜度)及其各類改良版本、RAFT 算法等,受限于較高的交互成本等原因,難以大規(guī)模應(yīng)用于公鏈系統(tǒng)。
MultiVAC 認(rèn)為,Bitcoin、Ethereum 的節(jié)點(diǎn)選擇機(jī)制具有良好的隨機(jī)性,并賦予所有節(jié)點(diǎn)平等記賬權(quán)力,這是區(qū)塊鏈系統(tǒng)存在和發(fā)展的基石。Ethereum 還專門針對(duì) ASIC 專業(yè)礦機(jī)設(shè)計(jì) ETHash,將記賬權(quán)力從中心化礦場(chǎng)歸還給普通節(jié)點(diǎn)。但必須承認(rèn),PoW 節(jié)點(diǎn)選擇帶來(lái)巨大資源消耗,哈希計(jì)算本身不能創(chuàng)造實(shí)際價(jià)值。
理想的共識(shí)算法應(yīng)該兼顧隨機(jī)性和效率。隨機(jī)性(去中心化)是區(qū)塊鏈存在的核心意義,而現(xiàn)實(shí)是現(xiàn)有公鏈性能拓展決定了區(qū)塊鏈的未來(lái)。VRF 是解決這一矛盾的最佳突破方向。一個(gè)良好的 VRF,應(yīng)該具有以下特點(diǎn):
1, VRF 可驗(yàn)證隨機(jī)數(shù)發(fā)生器,為分布式系統(tǒng)提供數(shù)學(xué)上嚴(yán)謹(jǐn)?shù)碾S機(jī)性。
2, VRF 具有不可預(yù)測(cè)、不可控制性,從數(shù)學(xué)上保證安全性。
3, VRF 可以是非交互式的,傳播成本低、效率高。
目前,采用 VRF 進(jìn)行選擇的區(qū)塊鏈共識(shí)方案有Algorand,Dfinity 中使用的 BLS 算法,以及 Cardano中的 Ouroboros Praos 算法。
VRF 是一個(gè)三元組:
以上可證,VRF 在數(shù)學(xué)上定義了完善的隨機(jī)數(shù)發(fā)生器,可以應(yīng)用于區(qū)塊鏈系統(tǒng)中節(jié)點(diǎn)的選擇、檢查點(diǎn)的生成等諸多問(wèn)題,是隨機(jī)選取記賬礦工的優(yōu)異方案。
但是,在具備上述概率正確性、唯一證明性、偽隨機(jī)性三大性質(zhì)之外,區(qū)塊鏈系統(tǒng)中的隨機(jī)數(shù)還應(yīng)該具備不可預(yù)測(cè)性。一旦記賬礦工在還沒(méi)有完成記賬時(shí)就暴露,則有可能遭遇來(lái)自作惡者的攻擊而導(dǎo)致記賬失敗。
因此,還需要一種可驗(yàn)證的不可預(yù)測(cè)函數(shù)(Verifiable Unpredictable Functions, VUF),同樣是一個(gè)三元組:
VUF = {Generate,Evaluate,Verify}VUF 的定義和 VRF 完全一樣,并且滿足 VRF 中的概率正確性、唯一證明性兩個(gè)性質(zhì),除此之外,它還需要滿足不可預(yù)測(cè)性,即:
3 分片選取概率模型
VRF 提供了一種快捷、有效的方式,實(shí)現(xiàn)從一個(gè)分布式網(wǎng)絡(luò)中選取一部分節(jié)點(diǎn)。
假設(shè)全網(wǎng)共有V個(gè)節(jié)點(diǎn),要建立一個(gè)具有m個(gè)節(jié)點(diǎn)的分片。MultiVAC 在主鏈上產(chǎn)生隨機(jī)數(shù)R,節(jié)點(diǎn)i根據(jù)自身私鑰對(duì)R進(jìn)行加密,得到Ri,這里,Ri是一個(gè) 256bit 的隨機(jī)數(shù)。其被選中為片內(nèi)節(jié)點(diǎn)的條件是:
這是一個(gè)與N無(wú)關(guān)的表示,即在一個(gè)節(jié)點(diǎn)充分多的網(wǎng)絡(luò)環(huán)境中,分片的構(gòu)造只和預(yù)設(shè)的片內(nèi)節(jié)點(diǎn)個(gè)數(shù)m有關(guān),與全局網(wǎng)絡(luò)節(jié)點(diǎn)個(gè)數(shù)無(wú)關(guān)。
從這一數(shù)學(xué)基礎(chǔ)出發(fā),完全可以將 Bitcoin 或 Ethereum看作是龐大的現(xiàn)代互聯(lián)網(wǎng)中的一個(gè)分片,而這個(gè)分片的可信度僅和 Bitcoin 或者 Ethereum 的參與節(jié)點(diǎn)個(gè)數(shù)相關(guān),而和整個(gè)互聯(lián)網(wǎng)有多大并無(wú)太大關(guān)系。故,我們有以下兩個(gè)論斷:
4 交易與共識(shí)
基于 VRF 和可信度概率模型,我們可以將全網(wǎng)構(gòu)建成為多個(gè)分片,每一筆交易可以委派給某一個(gè)特定分片來(lái)執(zhí)行。但如何設(shè)計(jì)合適的交易處理機(jī)制,以實(shí)現(xiàn)多個(gè)分片之間的協(xié)同交互,是一件非常有挑戰(zhàn)性的事情。交易分片方案需要綜合考慮賬本如何管理、在分片內(nèi)部達(dá)成的共識(shí)是否足夠安全、以及跨多個(gè)分片之間的交易如何執(zhí)行等問(wèn)題。
現(xiàn)有技術(shù)方案,如 Elastico,Zilliqa使用了統(tǒng)一的賬本數(shù)據(jù),雖然實(shí)現(xiàn)了分片處理交易,但數(shù)據(jù)之間的同步成本依然存在,本質(zhì)上沒(méi)有解決數(shù)據(jù)分 片問(wèn)題。
OmniLedge設(shè)計(jì)了名為 Atomix 的拜占庭分片原子提交協(xié)議(Byzantine Shard Atomic Commit (Atomix) protocol),實(shí)現(xiàn)對(duì)每一個(gè)交易的原子處理,但這一協(xié)議邏輯比較復(fù)雜,工程實(shí)現(xiàn)難度較大。
MultiVAC 設(shè)計(jì)分片 UTXO 機(jī)制來(lái)解決這一問(wèn)題。網(wǎng)絡(luò)將交易根據(jù)賬戶分配到不同分片,同一個(gè)賬戶的所有支出交易在同一個(gè)分片中執(zhí)行。在 UTXO 交易模型之下,每一個(gè)UTXO 交易的輸入都是一筆或多筆已確認(rèn)交易,而輸出不需要與交易接收方進(jìn)行數(shù)據(jù)交互,如圖 2 所示。所以當(dāng)一個(gè)賬戶始終在同一個(gè)片內(nèi)被處理時(shí),保證了 UTXO 交易只對(duì)分片內(nèi)數(shù)據(jù)進(jìn)行寫操作,對(duì)分片外賬本數(shù)據(jù)均為只讀操作,避免了跨片的復(fù)雜數(shù)據(jù)邏輯。此方法邏輯簡(jiǎn)單、清晰,執(zhí)行效率高,易于工程實(shí)現(xiàn)。
圖 2:MultiVAC 中的 UTXO 模型。交易依據(jù)支付者的地址被分到不同的分片執(zhí)行。UTXO 的輸入是其它分片上已經(jīng)被確認(rèn)的交易,所以跨片的數(shù)據(jù)交互都是只讀的操作。
賬本分片的潛在問(wèn)題是作惡者如果需要篡改某筆交易或想要實(shí)現(xiàn)雙重支付,則不需要攻擊全網(wǎng),只需要對(duì)特定的分片實(shí)施攻擊,或聯(lián)合該分片的礦工實(shí)現(xiàn)作惡。解決的方案有兩種途徑,一種是動(dòng)態(tài)調(diào)整用戶所歸屬的分片,另一種是動(dòng)態(tài)調(diào)整所屬分片的礦工。兩種方法都可以使作惡者的難度提升至攻擊全網(wǎng)的難度,MultiVAC 選擇第二種方案。同時(shí),MultiVAC 在分片內(nèi)共識(shí)選用 PBFT、異步 BFT 或 BA?等不會(huì)(或極低概率)產(chǎn)生分叉的算法,且一旦作惡產(chǎn)生錯(cuò)誤的區(qū)塊必定會(huì)留下密碼學(xué)痕跡。而 Bitcoin 中的 PoW 算法并不適用于片內(nèi)共識(shí),因?yàn)榉制乃懔θ跤谌W(wǎng)算力,攻擊者在分片內(nèi)更容易占據(jù)多數(shù)算力,在分片內(nèi)產(chǎn)生分叉。令分片的可信度要求為q,則分片大小m應(yīng)滿足:
對(duì)于公鏈上的交易來(lái)說(shuō),MultiVAC 單個(gè)分片內(nèi)的共識(shí)強(qiáng)度將足以達(dá)到極高可靠性要求,這一可靠性需要至少數(shù)百量級(jí)的單片節(jié)點(diǎn)數(shù)。但對(duì)于表達(dá)通用業(yè)務(wù)邏輯的 DApp 和智能合約而言,如果每一行代碼都需要在數(shù)百上千節(jié)點(diǎn)上重復(fù)運(yùn)行,顯然過(guò)于浪費(fèi)。那么,是否有辦法在不可信任的去中心化網(wǎng)絡(luò)中,通過(guò)更少或者可選有限的節(jié)點(diǎn)數(shù),完成合約層面的可靠計(jì)算,并保證過(guò)程與結(jié)果的可信度呢?MultiVAC將在 VRF 選取分片的基礎(chǔ)上,通過(guò) BISC 指令集、MVM 虛擬機(jī)、PoIE 共識(shí)為 DApp 構(gòu)建在智能合約層面上的彈性可信計(jì)算分片模型。
5 指令集與虛擬機(jī)
虛擬機(jī)為分布式節(jié)點(diǎn)執(zhí)行智能合約提供了良好的沙盒環(huán)境。但對(duì)要具有通用計(jì)算能力和無(wú)限擴(kuò)展能力的公鏈來(lái)說(shuō),指令集的設(shè)計(jì)也至關(guān)重要。目前主流的指令集和虛擬機(jī)設(shè)計(jì)方案比較簡(jiǎn)易,無(wú)法支撐起復(fù)雜業(yè)務(wù)邏輯與應(yīng)用。
MultiVAC 將建立適用于區(qū)塊鏈系統(tǒng)的專屬指令集 BISC(Blockchain Instruction Set Computer),并基于這一指令集系統(tǒng)設(shè)計(jì)具備通用計(jì)算能力的虛擬機(jī) MVM(MultiVAC Virtual Machine)。
5.1 指令集和虛擬機(jī)的設(shè)計(jì)要求
長(zhǎng)遠(yuǎn)來(lái)看,區(qū)塊鏈虛擬機(jī)可以直接是一臺(tái)專業(yè)的硬件計(jì)算機(jī),具有更高的計(jì)算效能,未來(lái)還具有落地成為硬件 CPU的能力。區(qū)塊鏈指令集應(yīng)該是一種高效、成熟的指令集,通過(guò)支持復(fù)雜通用計(jì)算來(lái)支撐復(fù)雜上層應(yīng)用。
MultiVAC 基于長(zhǎng)遠(yuǎn)愿景設(shè)計(jì)指令集和虛擬機(jī):
1, 支持通用計(jì)算能力。簡(jiǎn)單的虛擬機(jī)和字節(jié)碼,如Ethereum 的虛擬機(jī) EVM[12],難以支撐復(fù)雜應(yīng)用邏輯。面向未來(lái)的智能合約和 DApp 要求虛擬機(jī)除了圖靈完備之外,還要求指令集能支持更復(fù)雜的計(jì)算邏輯。
2, 支持高級(jí)語(yǔ)言,具有良好的編譯生態(tài)。MultiVAC是開源技術(shù)生態(tài),支持大量高級(jí)語(yǔ)言并提供完善的編譯生態(tài),可支持既有程序的平滑遷移,對(duì)開發(fā)者全面友好。
3, 具有高效可行的硬件架構(gòu)?,F(xiàn)有區(qū)塊鏈系統(tǒng)在將虛擬機(jī)的字節(jié)碼進(jìn)行解釋或編譯執(zhí)行時(shí),會(huì)嚴(yán)重?fù)p失底層硬件性能。MVM 將基于成熟的開源 CPU 指令集進(jìn)行二次設(shè)計(jì)和升級(jí),具有進(jìn)一步發(fā)展成為硬件計(jì)算機(jī)的能力,使得計(jì)算機(jī)能夠天然成為 MultiVAC 礦機(jī)節(jié)點(diǎn),同時(shí)還具備桌面計(jì)算機(jī)或移動(dòng)設(shè)備所需要的通用計(jì)算能力,實(shí)現(xiàn)礦機(jī)和計(jì)算機(jī)的無(wú)縫切換。
5.2 BISC 指令集
MultiVAC將在現(xiàn)代最出色的開源精簡(jiǎn)指令集RISC-V指令集基礎(chǔ)上,升級(jí)開發(fā)區(qū)塊鏈專用指令集 BISC(Blockchain Instruction Set Computer)。BISC 是一套靈活、定制化的指令集架構(gòu)。它基于成熟的開源 RISC-V 社區(qū),有大量成熟的指令架構(gòu)體系,也有良好的開源編譯生態(tài)。同時(shí),MultiVAC 對(duì)它進(jìn)行區(qū)塊鏈定制化,包括加入 256 位指令的處理,以及為公鏈運(yùn)行加入哈希與簽名指令。BISC 的開發(fā)也將遵循開源共享原則。
BISC 指令集支持一套精簡(jiǎn)而完善的指令序列。如表 1所示。最后一列列舉了 BISC 指令集包含的指令內(nèi)容。BISC包含了多個(gè)指令包,其中 RV 表示這是由 RISC-V 定義的標(biāo)準(zhǔn)指令擴(kuò)展包,BRV 開頭的是 BISC 新定義的擴(kuò)展包。RV或 BRV 后跟的數(shù)字表示數(shù)據(jù)位寬,最后的字母表示擴(kuò)展包的功能。其中 I 指令包是 RISC-V 的基礎(chǔ)包,MAFD 4 種指令包是 RISC-V 定義的標(biāo)準(zhǔn)擴(kuò)展包,IMAFD 5 種指令構(gòu)成的集合統(tǒng)稱為標(biāo)準(zhǔn)通用指令集(G 指令)。G 指令,尤其 RV32G和RV64G是RISC-V社區(qū)目前重點(diǎn)支持和實(shí)現(xiàn)的基礎(chǔ)指令集。而 L 和 B 兩種指令是 RISC-V 定義的額外擴(kuò)展包,H 指令包和 X 指令是 BISC 指令集中全新定義的。
BISC 指令集架構(gòu)支持基于 LLVM 的 C 語(yǔ)言編譯架構(gòu),GDB 調(diào)試工具,glibc 標(biāo)準(zhǔn)庫(kù)等。LLVM(Low Level Virtual Machine,底層語(yǔ)言虛擬機(jī))本質(zhì)是編譯器框架,目的是對(duì)任意編程語(yǔ)言,利用該基礎(chǔ)框架,構(gòu)建一個(gè)包括編譯時(shí)、鏈接時(shí)、執(zhí)行時(shí)等的語(yǔ)言執(zhí)行器。以 RISC-V 為后端的 LLVM編譯框架將會(huì)支持 Java、Go 等高級(jí)語(yǔ)言。其架構(gòu)如圖 3 所示。
5.3 MVM 虛擬機(jī)
MVM(MultiVAC Virtual Machine)是為支持彈性計(jì)算模型而設(shè)計(jì)的區(qū)塊鏈專用虛擬機(jī),能夠?yàn)閳D靈完備的高級(jí)語(yǔ)言所編寫的智能合約提供高效率、可驗(yàn)證的執(zhí)行環(huán)境,具備靜態(tài)編譯指令優(yōu)化、運(yùn)行時(shí)態(tài)指令檢查、指令執(zhí)行過(guò)程校驗(yàn)、存儲(chǔ)空間分配調(diào)度等能力。
在分布式系統(tǒng)中,為了避免惡意代碼對(duì)網(wǎng)絡(luò)平臺(tái)的循環(huán)攻擊,以及缺陷代碼對(duì)計(jì)算資源的持續(xù)占用,執(zhí)行智能合約的沙盒環(huán)境應(yīng)該具備解決圖靈停機(jī)問(wèn)題的能力。MVM 采用類似 Ethereum 中 gas 計(jì)費(fèi)的機(jī)制來(lái)解決此問(wèn)題,對(duì)合約需要執(zhí)行的 BISC 指令進(jìn)行統(tǒng)計(jì)并計(jì)算費(fèi)用,當(dāng)成功完成計(jì)算任務(wù)或者費(fèi)用已消耗完畢時(shí),合約程序停止。
基于針對(duì) BISC 指令集的 gas 計(jì)費(fèi)機(jī)制,計(jì)算任務(wù)中的每一步都會(huì)被精確量化,這將會(huì)引導(dǎo)智能合約向高性價(jià)比方向演化,即在實(shí)現(xiàn)計(jì)算目標(biāo)不變的前提下,盡可能的減少計(jì)算步驟、精簡(jiǎn)指令序列,為此 MVM 設(shè)計(jì)了針對(duì)性的優(yōu)化與建議引擎,能夠通過(guò)測(cè)試環(huán)境預(yù)執(zhí)行來(lái)提示開發(fā)者計(jì)算任務(wù)的指令集規(guī)模和單條指令單價(jià)成本,以及通過(guò)編譯環(huán)境為開發(fā)者提供代碼優(yōu)化建議。
除了可以在有限的時(shí)間內(nèi)可以結(jié)束運(yùn)行,在彈性計(jì)算模型中執(zhí)行的智能合約還需要經(jīng)過(guò)誠(chéng)實(shí)性工作驗(yàn)證,MVM 通過(guò)嵌入 PoIE 共識(shí)來(lái)完成此任務(wù),因此,計(jì)算、計(jì)費(fèi)、驗(yàn)證將融入到每段指令的執(zhí)行過(guò)程中同時(shí)進(jìn)行,其中需要說(shuō)明的是,計(jì)費(fèi)和驗(yàn)證過(guò)程雖然消耗計(jì)算資源,但是服務(wù)能力中必要的保障機(jī)制,與執(zhí)行任務(wù)所設(shè)定的 gas 額度無(wú)關(guān)。當(dāng)指令序列在足夠充裕的 gas 費(fèi)用保證下順利完成,并且驗(yàn)證通過(guò)之后,節(jié)點(diǎn)將通過(guò)共識(shí)將計(jì)算結(jié)果打包發(fā)布并獲得 gas 獎(jiǎng)勵(lì)。
為了更便捷的進(jìn)行指令操作,MVM 提供了面向 BISC更友好的內(nèi)存模型,該模型能夠?qū)⒂?jì)算機(jī)物理資源進(jìn)行隔離,并且為合約執(zhí)行提供靈活的運(yùn)行時(shí)支持,內(nèi)置了??臻g和堆空間。其中??臻g提供足夠的調(diào)用深度,支持多種數(shù)據(jù)結(jié)構(gòu)類型,并可提供批量出入棧操作,而堆空間提供自由分配的能力,支持隨機(jī)尋址,同時(shí)提供監(jiān)測(cè)機(jī)制對(duì)已釋放資源進(jìn)行回收,整體為通用計(jì)算提供基本存儲(chǔ)保障。
MVM 可以運(yùn)行在所有網(wǎng)絡(luò)節(jié)點(diǎn)中,提供計(jì)算服務(wù)的節(jié)點(diǎn)會(huì)將其通過(guò)網(wǎng)絡(luò)接收到的計(jì)算任務(wù)納入以指令集單價(jià)為索引的優(yōu)先隊(duì)列中,集中調(diào)度和執(zhí)行計(jì)算任務(wù),并交付計(jì)算結(jié)果。
6 PoIE 共識(shí)
現(xiàn)有分片技術(shù)如 Ethereum 分片方案、Zilliqa、Elastico等,對(duì)每個(gè)分片內(nèi)部的節(jié)點(diǎn)數(shù)量有較大的要求,至少也應(yīng)該是數(shù)百至數(shù)千的水平??紤]一個(gè)區(qū)塊鏈上的分布式應(yīng)用 DApp,它的代碼就是公鏈上的一個(gè)或多個(gè)合約,如果 DApp 的每一行代碼都需要在數(shù)百上千個(gè)節(jié)點(diǎn)上重復(fù)運(yùn)行,這個(gè)成本顯然是過(guò)于高昂了。
那么,在區(qū)塊鏈這種不可信任的節(jié)點(diǎn)網(wǎng)絡(luò)之中,有沒(méi)有辦法可以只讓少數(shù)幾個(gè)節(jié)點(diǎn)執(zhí)行代碼,就可以進(jìn)行計(jì)算任務(wù)的驗(yàn)證,還能保證計(jì)算過(guò)程及結(jié)果的可靠性?
7 存儲(chǔ),傳輸與計(jì)算
一個(gè)健壯而具有擴(kuò)展性的公鏈網(wǎng)絡(luò),應(yīng)該在計(jì)算、存儲(chǔ)、傳輸三個(gè)維度上都具有良好的擴(kuò)展性、安全性和去中心化。此外,還應(yīng)有完善的經(jīng)濟(jì)體系激勵(lì)更多節(jié)點(diǎn)加入網(wǎng)絡(luò),以提供計(jì)算、存儲(chǔ)、傳輸服務(wù),建立完整而具有成長(zhǎng)性的公鏈基礎(chǔ)設(shè)施。但要實(shí)現(xiàn)上述理想的網(wǎng)絡(luò)平臺(tái)還面臨著很多學(xué)術(shù)和工程上的困難。
MultiVAC 首次提出了以彈性分片的方案去解決區(qū)塊鏈網(wǎng)絡(luò)中的計(jì)算問(wèn)題,同時(shí)通過(guò) PoIE 去驗(yàn)證計(jì)算的真實(shí)執(zhí)行情況。PoIE 提供了節(jié)點(diǎn)確實(shí)執(zhí)行的指令集序列Γ,以及經(jīng)過(guò)同態(tài)隱藏后的節(jié)點(diǎn)專屬序列Λ?;谛蛄械膱?zhí)行情況,可以很容易地設(shè)計(jì)經(jīng)濟(jì)激勵(lì)體系,如類似于 Ethereum 的 gas 激勵(lì)機(jī)制,設(shè)計(jì)計(jì)算任務(wù)獎(jiǎng)勵(lì)函數(shù):
MultiVAC 實(shí)現(xiàn)了高性能的交易處理能力,并且隨著加入節(jié)點(diǎn)數(shù)的增加,其交易處理能力也相應(yīng)得到提升。當(dāng)公鏈的平均交易處理量》 1,000 tps(平均值,不代表公鏈性能),平均單個(gè)交易的數(shù)據(jù)大小0.4 KB的時(shí)候,公鏈每年就會(huì)產(chǎn)生超過(guò)10TB賬本數(shù)據(jù)。顯然,普通的個(gè)人電腦已經(jīng)不可能存儲(chǔ)完整的歷史賬本,所以解決的途徑只有兩條:使用超級(jí)節(jié)點(diǎn),或者分片存儲(chǔ)。
在存儲(chǔ)層面,IPFS設(shè)計(jì)了完整的去中心化分布式存儲(chǔ)系統(tǒng),提供了可尋址、版本化、點(diǎn)對(duì)點(diǎn)的文件系統(tǒng)。一些知名的公鏈系統(tǒng)已經(jīng)使用了 IPFS 作為底層存儲(chǔ),如 EOS。IPFS 使用了 filecoin作為存儲(chǔ)激勵(lì)機(jī)制,其他的區(qū)塊鏈存儲(chǔ)方案還有 Storj,MaidSafe,Siacoin等。
與 IPFS 基于 Hash 的存儲(chǔ)與檢索方案略有不同,MultiVAC 首次提出了基于 Merkle Root 的存儲(chǔ)結(jié)構(gòu)。這樣的結(jié)構(gòu)的好處是不僅僅可以基于 Merkle Root 值進(jìn)行檢索或數(shù)據(jù)獲取,還支持較小的數(shù)據(jù)片段的檢索和獲取,以及針對(duì)片段的網(wǎng)絡(luò)校驗(yàn),包括存在性校驗(yàn)和真實(shí)性校驗(yàn)。MultiVAC中同時(shí)支持基于 Hash與基于Merkle Root 的數(shù)據(jù)存取與檢索。
此外,MultiVAC 還加入了 VRF 分片存儲(chǔ)機(jī)制,建立分布式去中心化存儲(chǔ)系統(tǒng)。類似于 Bitcoin 輕節(jié)點(diǎn),MultiVAC 的節(jié)點(diǎn)只存儲(chǔ)區(qū)塊的摘要信息,真正的交易信息及合約相關(guān)輸入輸出都存儲(chǔ)在分布式存儲(chǔ)之中。值得注意的是,在 MultiVAC中,數(shù)據(jù)的存儲(chǔ)僅作為系統(tǒng)的底層服務(wù)被使用,存儲(chǔ)者不能對(duì)數(shù)據(jù)進(jìn)行任何修改操作。關(guān)于數(shù)據(jù)的所有產(chǎn)生、修改、刪除、確認(rèn)、共識(shí)等行為均由上層邏輯達(dá)成,底層存儲(chǔ)服務(wù)僅保管確定性的數(shù)據(jù)并向上層提供存取功能。在 MultiVAC 中,節(jié)點(diǎn)提供計(jì)算與存儲(chǔ)服務(wù)都會(huì)獲得相應(yīng)的激勵(lì)。
最后,區(qū)塊鏈網(wǎng)絡(luò)還需要考慮數(shù)據(jù)傳輸?shù)膯?wèn)題。如果使用分片存儲(chǔ)賬本,那么必然面臨的問(wèn)題是賬本的存儲(chǔ)壓力被轉(zhuǎn)化成了數(shù)據(jù)通訊的壓力。不過(guò) IPFS 已經(jīng)證明了分布式的存儲(chǔ)也帶來(lái)了分布式網(wǎng)絡(luò)傳輸,可以緩解中心化節(jié)點(diǎn)的帶寬壓力。
若一個(gè)節(jié)點(diǎn)在出塊時(shí)需要處理t個(gè)交易:如果全網(wǎng)存儲(chǔ)賬本的話,則面臨O(t)的磁盤 IO 成本,O(t)的網(wǎng)絡(luò)賬本同步成本;如果是分片存儲(chǔ)賬本,那么就沒(méi)有磁盤 IO 成本,同樣是O(t)的網(wǎng)絡(luò)賬本同步成本,另外還需要O(t)的交易驗(yàn)證帶來(lái)的網(wǎng)絡(luò)通訊成本。由于交易驗(yàn)證可能是一個(gè)碎片化的網(wǎng)絡(luò)通訊,所以工程實(shí)現(xiàn)上成本會(huì)高于本地磁盤 IO。但本質(zhì)上,賬本分片不會(huì)增加網(wǎng)絡(luò)傳輸?shù)睦碚搹?fù)雜度。
在傳輸?shù)募?lì)機(jī)制層面,學(xué)術(shù)界和工業(yè)界都沒(méi)有一個(gè)有效的解決方案,目前仍然是一個(gè)開放的問(wèn)題。即使在 IPFS和 filecoin 的方案之中,一個(gè)存儲(chǔ)節(jié)點(diǎn)可以通過(guò) PoRep 和PoST 兩個(gè)共識(shí)來(lái)獲得存儲(chǔ)的獎(jiǎng)勵(lì)。但在網(wǎng)絡(luò)上其他節(jié)點(diǎn)需要使用這個(gè)數(shù)據(jù)的時(shí)候,由于帶寬成本等原因,存儲(chǔ)節(jié)點(diǎn)完全可以拒絕向請(qǐng)求方傳輸數(shù)據(jù)。此外,數(shù)據(jù)傳輸是高頻次的,每一次訪問(wèn)都產(chǎn)生對(duì)應(yīng)的獎(jiǎng)勵(lì)交易也是不可能實(shí)現(xiàn)的,因?yàn)榻灰子謺?huì)帶來(lái)數(shù)據(jù)傳輸?shù)某杀?,進(jìn)而產(chǎn)生了無(wú)限遞歸。一個(gè)良好的傳輸激勵(lì)機(jī)制需要綜合考慮帶寬、延遲、數(shù)據(jù)總傳輸量、請(qǐng)求頻次等問(wèn)題,這些困難也使得它目前仍然是一個(gè)等待解決的問(wèn)題。不過(guò)由于傳輸不會(huì)脫離計(jì)算或存儲(chǔ)而獨(dú)立存在,所以傳輸?shù)募?lì)體制并不是必須的。
MultiVAC 綜合考慮區(qū)塊鏈中的計(jì)算、存儲(chǔ)、傳輸問(wèn)題,并設(shè)計(jì)了計(jì)算與存儲(chǔ)的激勵(lì)機(jī)制,是首個(gè)實(shí)現(xiàn)了在計(jì)算、存儲(chǔ)、傳輸三個(gè)維度可擴(kuò)展的公鏈。
8 總結(jié)
MultiVAC 設(shè)計(jì)了一種通過(guò) VRF 選擇節(jié)點(diǎn)進(jìn)行分片,以概率模型保證可信度的高性能公鏈,該架構(gòu)為其上運(yùn)行的智能合約提供了可以自由定義和取舍安全性、去中心化和可擴(kuò)展性的彈性可信計(jì)算分片模型。MultiVAC 網(wǎng)絡(luò)的處理能力能夠伴隨節(jié)點(diǎn)數(shù)量和計(jì)算能力的擴(kuò)張而持續(xù)增加;在業(yè)務(wù)支持方面,基于 BISC 指令集、MVM 虛擬機(jī)、PoIE 共識(shí)的分布式計(jì)算平臺(tái)能夠?yàn)楣溕系娜ブ行幕瘧?yīng)用提供無(wú)限擴(kuò)張的資源供給。
(MultiVAC 名稱來(lái)源于科幻作家阿西莫夫《最后的問(wèn)題》中的超級(jí)計(jì)算機(jī)的名稱。這臺(tái)超級(jí)計(jì)算機(jī),從現(xiàn)在我們熟知的晶體管結(jié)構(gòu),自我進(jìn)化到與所有人類靈魂融為一體的超時(shí)空結(jié)構(gòu),最終在整個(gè)宇宙熱寂湮滅之時(shí),完成了終極問(wèn)題“如何逆轉(zhuǎn)宇宙的熵增”的計(jì)算和再現(xiàn)。)