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