當前位置:
首頁 > 最新 > MultiVAC 基於可信分片計算的高性能彈性公鏈

MultiVAC 基於可信分片計算的高性能彈性公鏈

MultiVAC 是為大規模去中心化應用設計的下一代高性能公鏈,通過可信分片技術為區塊鏈系統賦予了可持續無限擴展的能力。MultiVAC 首次提出了基於可驗證隨機函數選擇分片節點的可信度概率模型,並將該模型運用到區塊鏈交易、計算、存儲等關鍵環節中,使得任務目標可以在部分節點參與的情況下達到極高的可靠性。MultiVAC 將網路中的交易根據經典 UTXO 賬戶模型分片,通過可信度概率模型選擇礦工記賬,將公鏈性能提升到企業級商用水平。作為區塊鏈領域中首個提供彈性計算模型的公鏈,MultiVAC 創造性地提出了可驗證計算任務的 PoIE 共識、專為區塊鏈設計的 BISC 指令集、具備通用計算能力的 MVM 虛擬機等技術,使得開發者能夠自主權衡分散式應用中的一致性,可用性和分區容忍性要求,為應用層複雜業務邏輯提供完備支持,從而更便捷地構築多元化的公鏈生態體系。

1.要解決的問題

區塊鏈是分散式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式,是一種全球化、去中心化的技術網路。安全性、可擴展性、去中心化構成一個不可能三角。以 Bitcoin、Ethereum為代表的公鏈完全不具備擴展性,全網計算能力等同於單個礦工計算能力,全網總處理能力與節點規模不相關甚至負相關(更大的通訊成本)。以 EOS為代表的公鏈嘗試用超級節點解決性能瓶頸,卻放棄了去中心化。以 Zilliqa、Dfinity為代表的分片方案放棄了一定的安全性,以 Plasma為代表狀態通道(State Channel)技術則使用了技術結合現實的手段來處理安全性問題。

目前大量研發投入到提高每秒交易數量的技術方案上。最新公鏈將每秒交易量提升到數千水平(e.g. EOS,Seele在實驗環境下達到 1000-3000 tps, tps = transactions per second)。但是這一交易處理速度依然受到共識制約,主要瓶頸在於單一礦工的硬體處理能力。本質上,很多公鏈沒有實質性地突破「區塊鏈是一個賬本」的認知。

同時,網路擴張的速度和規模也不盡如人意:截止 2018年 5 月 13 日 12:00 Noon (UTC 時間),問世近 10 年的 Bitcoin的全節點僅有 10424 個,Ethereum 的全節點僅有 14383個。賬本龐大及挖礦困難,建立一個全節點本身並不具備足夠收益,導致普通用戶不願意建立全節點。

MultiVAC 認為區塊鏈能否真正商用化的關鍵在於區塊鏈能否提供通用計算能力,以及全網交易和合約處理性能是否能夠可擴展、可增長與可適應。

據此,MultiVAC 提出可信分片計算模型,旨在去中心化網路的不可信節點之間,建立一種計算上的分工與可信關係,使得全球節點可以匯總交易能力,構建成算力可以無限擴張的基礎公鏈網路。

同時,MultiVAC 將交易處理與智能合約進行獨立分片設計,構建了一個具有極強支持性和彈性的區塊鏈底層平台。

DApp 可實現通用計算層面上的業務邏輯,並可根據自我需要靈活選擇由多大規模的節點來進行計算和達成共識。

為此,MultiVAC 要解決的核心問題是:

1, 如何在全網中選取若干個節點組成可信分片

2, 如何通過可信分片處理網路交易並記錄賬本

3, 如何驗證節點是否誠實可信地完成了計算任務

其中問題 1 決定了 MultiVAC 如何在交易和合約層面進行分片,問題 2 決定了 MultiVAC 如何在交易分片內達成出塊共識,問題 3 決定了 MultiVAC 如何將彈性計算分片應用到智能合約。

MultiVAC 利用 VRF 構建可靠概率模型,解決了在交易和合約中如何安全、高效、隨機選取分片節點的問題;採用UTXO 賬本分片和共識族達成片內共識,實現交易可信分片構建;設計 BISC 區塊鏈專用指令集和 MVM 通用計算虛擬機運行智能合約,通過PoIE共識機制驗證計算任務,為DApp業務邏輯處理提供了基於可信分片的彈性執行環境。

2.可驗證隨機函數 VRF

共識演算法的本質是在分散式網路中如何選取一個或多個節點成為記賬人。MultiVAC 中關於交易處理和合約計算的分片方案都以 VRF(Verifiable Random Function,可驗證隨機函數為基礎。VRF 是一種共識框架,也是數學工具。

理想狀態下,區塊鏈系統中每一個誠實節點都應該有權力參與整個網路的記賬工作。共識機制創新本質需要兼顧節點選擇的公平性和系統運行的效率。Bitcoin 及 Ethereum 的PoW 演算法機制,保證記賬節點的選取充分隨機,且只有掌控超過全網 51%算力才能破壞規則。PoW 具備數學優雅性,充分體現去中心化的公平性,不過存在巨大的資源浪費。而以石墨烯技術為代表的 DPoS 演算法傾向於提高系統吞吐量而犧牲節點選取隨機性,並捨棄了普通節點的參與機會,犧牲數學的優雅性和去中心化的公平性換取效率優勢。其他共識演算法如 PBFT 演算法(O(n2)的複雜度)及其各類改良版本、RAFT 演算法等,受限於較高的交互成本等原因,難以大規模應用於公鏈系統。

MultiVAC 認為,Bitcoin、Ethereum 的節點選擇機制具有良好的隨機性,並賦予所有節點平等記賬權力,這是區塊鏈系統存在和發展的基石。Ethereum 還專門針對 ASIC 專業礦機設計 ETHash,將記賬權力從中心化礦場歸還給普通節點。但必須承認,PoW 節點選擇帶來巨大資源消耗,哈希計算本身不能創造實際價值。

理想的共識演算法應該兼顧隨機性和效率。隨機性(去中心化)是區塊鏈存在的核心意義,而現實是現有公鏈性能拓展決定了區塊鏈的未來。VRF 是解決這一矛盾的最佳突破方向。一個良好的 VRF,應該具有以下特點:

1, VRF 可驗證隨機數發生器,為分散式系統提供數學上嚴謹的隨機性。

2, VRF 具有不可預測、不可控制性,從數學上保證安全性。

3, VRF 可以是非互動式的,傳播成本低、效率高。

目前,採用 VRF 進行選擇的區塊鏈共識方案有Algorand,Dfinity 中使用的 BLS 演算法,以及 Cardano中的 Ouroboros Praos 演算法。

VRF 是一個三元組:

以上可證,VRF 在數學上定義了完善的隨機數發生器,可以應用於區塊鏈系統中節點的選擇、檢查點的生成等諸多問題,是隨機選取記賬礦工的優異方案。

但是,在具備上述概率正確性、唯一證明性、偽隨機性三大性質之外,區塊鏈系統中的隨機數還應該具備不可預測性。一旦記賬礦工在還沒有完成記賬時就暴露,則有可能遭遇來自作惡者的攻擊而導致記賬失敗。

因此,還需要一種可驗證的不可預測函數(Verifiable Unpredictable Functions, VUF),同樣是一個三元組:

VUF = VUF 的定義和 VRF 完全一樣,並且滿足 VRF 中的概率正確性、唯一證明性兩個性質,除此之外,它還需要滿足不可預測性,即:

3 分片選取概率模型

VRF 提供了一種快捷、有效的方式,實現從一個分散式網路中選取一部分節點。

假設全網共有V個節點,要建立一個具有m個節點的分片。MultiVAC 在主鏈上產生隨機數R,節點i根據自身私鑰對R進行加密,得到Ri,這裡,Ri是一個 256bit 的隨機數。其被選中為片內節點的條件是:

這是一個與N無關的表示,即在一個節點充分多的網路環境中,分片的構造只和預設的片內節點個數m有關,與全局網路節點個數無關。

從這一數學基礎出發,完全可以將 Bitcoin 或 Ethereum看作是龐大的現代互聯網中的一個分片,而這個分片的可信度僅和 Bitcoin 或者 Ethereum 的參與節點個數相關,而和整個互聯網有多大並無太大關係。故,我們有以下兩個論斷:

4 交易與共識

基於 VRF 和可信度概率模型,我們可以將全網構建成為多個分片,每一筆交易可以委派給某一個特定分片來執行。但如何設計合適的交易處理機制,以實現多個分片之間的協同交互,是一件非常有挑戰性的事情。交易分片方案需要綜合考慮賬本如何管理、在分片內部達成的共識是否足夠安全、以及跨多個分片之間的交易如何執行等問題。

現有技術方案,如 Elastico,Zilliqa使用了統一的賬本數據,雖然實現了分片處理交易,但數據之間的同步成本依然存在,本質上沒有解決數據分 片問題。

OmniLedge設計了名為 Atomix 的拜占庭分片原子提交協議(Byzantine Shard Atomic Commit (Atomix) protocol),實現對每一個交易的原子處理,但這一協議邏輯比較複雜,工程實現難度較大。

MultiVAC 設計分片 UTXO 機制來解決這一問題。網路將交易根據賬戶分配到不同分片,同一個賬戶的所有支出交易在同一個分片中執行。在 UTXO 交易模型之下,每一個UTXO 交易的輸入都是一筆或多筆已確認交易,而輸出不需要與交易接收方進行數據交互,如圖 2 所示。所以當一個賬戶始終在同一個片內被處理時,保證了 UTXO 交易只對分片內數據進行寫操作,對分片外賬本數據均為只讀操作,避免了跨片的複雜數據邏輯。此方法邏輯簡單、清晰,執行效率高,易於工程實現。

圖 2:MultiVAC 中的 UTXO 模型。交易依據支付者的地址被分到不同的分片執行。UTXO 的輸入是其它分片上已經被確認的交易,所以跨片的數據交互都是只讀的操作。

賬本分片的潛在問題是作惡者如果需要篡改某筆交易或想要實現雙重支付,則不需要攻擊全網,只需要對特定的分片實施攻擊,或聯合該分片的礦工實現作惡。解決的方案有兩種途徑,一種是動態調整用戶所歸屬的分片,另一種是動態調整所屬分片的礦工。兩種方法都可以使作惡者的難度提升至攻擊全網的難度,MultiVAC 選擇第二種方案。同時,MultiVAC 在分片內共識選用 PBFT、非同步 BFT 或 BA?等不會(或極低概率)產生分叉的演算法,且一旦作惡產生錯誤的區塊必定會留下密碼學痕迹。而 Bitcoin 中的 PoW 演算法並不適用於片內共識,因為分片的算力弱於全網算力,攻擊者在分片內更容易佔據多數算力,在分片內產生分叉。令分片的可信度要求為q,則分片大小m應滿足:

對於公鏈上的交易來說,MultiVAC 單個分片內的共識強度將足以達到極高可靠性要求,這一可靠性需要至少數百量級的單片節點數。但對於表達通用業務邏輯的 DApp 和智能合約而言,如果每一行代碼都需要在數百上千節點上重複運行,顯然過於浪費。那麼,是否有辦法在不可信任的去中心化網路中,通過更少或者可選有限的節點數,完成合約層面的可靠計算,並保證過程與結果的可信度呢?MultiVAC將在 VRF 選取分片的基礎上,通過 BISC 指令集、MVM 虛擬機、PoIE 共識為 DApp 構建在智能合約層面上的彈性可信計算分片模型。

5 指令集與虛擬機

虛擬機為分散式節點執行智能合約提供了良好的沙盒環境。但對要具有通用計算能力和無限擴展能力的公鏈來說,指令集的設計也至關重要。目前主流的指令集和虛擬機設計方案比較簡易,無法支撐起複雜業務邏輯與應用。

MultiVAC 將建立適用於區塊鏈系統的專屬指令集 BISC(Blockchain Instruction Set Computer),並基於這一指令集系統設計具備通用計算能力的虛擬機 MVM(MultiVAC Virtual Machine)。

5.1 指令集和虛擬機的設計要求

長遠來看,區塊鏈虛擬機可以直接是一台專業的硬體計算機,具有更高的計算效能,未來還具有落地成為硬體 CPU的能力。區塊鏈指令集應該是一種高效、成熟的指令集,通過支持複雜通用計算來支撐複雜上層應用。

MultiVAC 基於長遠願景設計指令集和虛擬機:

1, 支持通用計算能力。簡單的虛擬機和位元組碼,如Ethereum 的虛擬機 EVM[12],難以支撐複雜應用邏輯。面向未來的智能合約和 DApp 要求虛擬機除了圖靈完備之外,還要求指令集能支持更複雜的計算邏輯。

2, 支持高級語言,具有良好的編譯生態。MultiVAC是開源技術生態,支持大量高級語言並提供完善的編譯生態,可支持既有程序的平滑遷移,對開發者全面友好。

3, 具有高效可行的硬體架構。現有區塊鏈系統在將虛擬機的位元組碼進行解釋或編譯執行時,會嚴重損失底層硬體性能。MVM 將基於成熟的開源 CPU 指令集進行二次設計和升級,具有進一步發展成為硬體計算機的能力,使得計算機能夠天然成為 MultiVAC 礦機節點,同時還具備桌面計算機或移動設備所需要的通用計算能力,實現礦機和計算機的無縫切換。

5.2 BISC 指令集

MultiVAC將在現代最出色的開源精簡指令集RISC-V指令集基礎上,升級開發區塊鏈專用指令集 BISC(Blockchain Instruction Set Computer)。BISC 是一套靈活、定製化的指令集架構。它基於成熟的開源 RISC-V 社區,有大量成熟的指令架構體系,也有良好的開源編譯生態。同時,MultiVAC 對它進行區塊鏈定製化,包括加入 256 位指令的處理,以及為公鏈運行加入哈希與簽名指令。BISC 的開發也將遵循開源共享原則。

BISC 指令集支持一套精簡而完善的指令序列。如表 1所示。最後一列列舉了 BISC 指令集包含的指令內容。BISC包含了多個指令包,其中 RV 表示這是由 RISC-V 定義的標準指令擴展包,BRV 開頭的是 BISC 新定義的擴展包。RV或 BRV 後跟的數字表示數據位寬,最後的字母表示擴展包的功能。其中 I 指令包是 RISC-V 的基礎包,MAFD 4 種指令包是 RISC-V 定義的標準擴展包,IMAFD 5 種指令構成的集合統稱為標準通用指令集(G 指令)。G 指令,尤其 RV32G和RV64G是RISC-V社區目前重點支持和實現的基礎指令集。而 L 和 B 兩種指令是 RISC-V 定義的額外擴展包,H 指令包和 X 指令是 BISC 指令集中全新定義的。

BISC 指令集架構支持基於 LLVM 的 C 語言編譯架構,GDB 調試工具,glibc 標準庫等。LLVM(Low Level Virtual Machine,底層語言虛擬機)本質是編譯器框架,目的是對任意編程語言,利用該基礎框架,構建一個包括編譯時、鏈接時、執行時等的語言執行器。以 RISC-V 為後端的 LLVM編譯框架將會支持 Java、Go 等高級語言。其架構如圖 3 所示。

5.3 MVM 虛擬機

MVM(MultiVAC Virtual Machine)是為支持彈性計算模型而設計的區塊鏈專用虛擬機,能夠為圖靈完備的高級語言所編寫的智能合約提供高效率、可驗證的執行環境,具備靜態編譯指令優化、運行時態指令檢查、指令執行過程校驗、存儲空間分配調度等能力。

在分散式系統中,為了避免惡意代碼對網路平台的循環攻擊,以及缺陷代碼對計算資源的持續佔用,執行智能合約的沙盒環境應該具備解決圖靈停機問題的能力。MVM 採用類似 Ethereum 中 gas 計費的機制來解決此問題,對合約需要執行的 BISC 指令進行統計並計算費用,當成功完成計算任務或者費用已消耗完畢時,合約程序停止。

基於針對 BISC 指令集的 gas 計費機制,計算任務中的每一步都會被精確量化,這將會引導智能合約向高性價比方向演化,即在實現計算目標不變的前提下,儘可能的減少計算步驟、精簡指令序列,為此 MVM 設計了針對性的優化與建議引擎,能夠通過測試環境預執行來提示開發者計算任務的指令集規模和單條指令單價成本,以及通過編譯環境為開發者提供代碼優化建議。

除了可以在有限的時間內可以結束運行,在彈性計算模型中執行的智能合約還需要經過誠實性工作驗證,MVM 通過嵌入 PoIE 共識來完成此任務,因此,計算、計費、驗證將融入到每段指令的執行過程中同時進行,其中需要說明的是,計費和驗證過程雖然消耗計算資源,但是服務能力中必要的保障機制,與執行任務所設定的 gas 額度無關。當指令序列在足夠充裕的 gas 費用保證下順利完成,並且驗證通過之後,節點將通過共識將計算結果打包發布並獲得 gas 獎勵。

為了更便捷的進行指令操作,MVM 提供了面向 BISC更友好的內存模型,該模型能夠將計算機物理資源進行隔離,並且為合約執行提供靈活的運行時支持,內置了棧空間和堆空間。其中棧空間提供足夠的調用深度,支持多種數據結構類型,並可提供批量出入棧操作,而堆空間提供自由分配的能力,支持隨機定址,同時提供監測機制對已釋放資源進行回收,整體為通用計算提供基本存儲保障。

MVM 可以運行在所有網路節點中,提供計算服務的節點會將其通過網路接收到的計算任務納入以指令集單價為索引的優先隊列中,集中調度和執行計算任務,並交付計算結果。

6 PoIE 共識

現有分片技術如 Ethereum 分片方案、Zilliqa、Elastico等,對每個分片內部的節點數量有較大的要求,至少也應該是數百至數千的水平。考慮一個區塊鏈上的分散式應用 DApp,它的代碼就是公鏈上的一個或多個合約,如果 DApp 的每一行代碼都需要在數百上千個節點上重複運行,這個成本顯然是過於高昂了。

那麼,在區塊鏈這種不可信任的節點網路之中,有沒有辦法可以只讓少數幾個節點執行代碼,就可以進行計算任務的驗證,還能保證計算過程及結果的可靠性?

7 存儲,傳輸與計算

一個健壯而具有擴展性的公鏈網路,應該在計算、存儲、傳輸三個維度上都具有良好的擴展性、安全性和去中心化。此外,還應有完善的經濟體系激勵更多節點加入網路,以提供計算、存儲、傳輸服務,建立完整而具有成長性的公鏈基礎設施。但要實現上述理想的網路平台還面臨著很多學術和工程上的困難。

MultiVAC 首次提出了以彈性分片的方案去解決區塊鏈網路中的計算問題,同時通過 PoIE 去驗證計算的真實執行情況。PoIE 提供了節點確實執行的指令集序列Γ,以及經過同態隱藏後的節點專屬序列Λ。基於序列的執行情況,可以很容易地設計經濟激勵體系,如類似於 Ethereum 的 gas 激勵機制,設計計算任務獎勵函數:

MultiVAC 實現了高性能的交易處理能力,並且隨著加入節點數的增加,其交易處理能力也相應得到提升。當公鏈的平均交易處理量> 1,000 tps(平均值,不代表公鏈性能),平均單個交易的數據大小0.4 KB的時候,公鏈每年就會產生超過10TB賬本數據。顯然,普通的個人電腦已經不可能存儲完整的歷史賬本,所以解決的途徑只有兩條:使用超級節點,或者分片存儲。

在存儲層面,IPFS設計了完整的去中心化分散式存儲系統,提供了可定址、版本化、點對點的文件系統。一些知名的公鏈系統已經使用了 IPFS 作為底層存儲,如 EOS。IPFS 使用了 filecoin作為存儲激勵機制,其他的區塊鏈存儲方案還有 Storj,MaidSafe,Siacoin等。

與 IPFS 基於 Hash 的存儲與檢索方案略有不同,MultiVAC 首次提出了基於 Merkle Root 的存儲結構。這樣的結構的好處是不僅僅可以基於 Merkle Root 值進行檢索或數據獲取,還支持較小的數據片段的檢索和獲取,以及針對片段的網路校驗,包括存在性校驗和真實性校驗。MultiVAC中同時支持基於 Hash與基於Merkle Root 的數據存取與檢索。

此外,MultiVAC 還加入了 VRF 分片存儲機制,建立分散式去中心化存儲系統。類似於 Bitcoin 輕節點,MultiVAC 的節點只存儲區塊的摘要信息,真正的交易信息及合約相關輸入輸出都存儲在分散式存儲之中。值得注意的是,在 MultiVAC中,數據的存儲僅作為系統的底層服務被使用,存儲者不能對數據進行任何修改操作。關於數據的所有產生、修改、刪除、確認、共識等行為均由上層邏輯達成,底層存儲服務僅保管確定性的數據並向上層提供存取功能。在 MultiVAC 中,節點提供計算與存儲服務都會獲得相應的激勵。

最後,區塊鏈網路還需要考慮數據傳輸的問題。如果使用分片存儲賬本,那麼必然面臨的問題是賬本的存儲壓力被轉化成了數據通訊的壓力。不過 IPFS 已經證明了分散式的存儲也帶來了分散式網路傳輸,可以緩解中心化節點的帶寬壓力。

若一個節點在出塊時需要處理t個交易:如果全網存儲賬本的話,則面臨O(t)的磁碟 IO 成本,O(t)的網路賬本同步成本;如果是分片存儲賬本,那麼就沒有磁碟 IO 成本,同樣是O(t)的網路賬本同步成本,另外還需要O(t)的交易驗證帶來的網路通訊成本。由於交易驗證可能是一個碎片化的網路通訊,所以工程實現上成本會高於本地磁碟 IO。但本質上,賬本分片不會增加網路傳輸的理論複雜度。

在傳輸的激勵機制層面,學術界和工業界都沒有一個有效的解決方案,目前仍然是一個開放的問題。即使在 IPFS和 filecoin 的方案之中,一個存儲節點可以通過 PoRep 和PoST 兩個共識來獲得存儲的獎勵。但在網路上其他節點需要使用這個數據的時候,由於帶寬成本等原因,存儲節點完全可以拒絕向請求方傳輸數據。此外,數據傳輸是高頻次的,每一次訪問都產生對應的獎勵交易也是不可能實現的,因為交易又會帶來數據傳輸的成本,進而產生了無限遞歸。一個良好的傳輸激勵機制需要綜合考慮帶寬、延遲、數據總傳輸量、請求頻次等問題,這些困難也使得它目前仍然是一個等待解決的問題。不過由於傳輸不會脫離計算或存儲而獨立存在,所以傳輸的激勵體制並不是必須的。

MultiVAC 綜合考慮區塊鏈中的計算、存儲、傳輸問題,並設計了計算與存儲的激勵機制,是首個實現了在計算、存儲、傳輸三個維度可擴展的公鏈。

8 總結

MultiVAC 設計了一種通過 VRF 選擇節點進行分片,以概率模型保證可信度的高性能公鏈,該架構為其上運行的智能合約提供了可以自由定義和取捨安全性、去中心化和可擴展性的彈性可信計算分片模型。MultiVAC 網路的處理能力能夠伴隨節點數量和計算能力的擴張而持續增加;在業務支持方面,基於 BISC 指令集、MVM 虛擬機、PoIE 共識的分散式計算平台能夠為公鏈上的去中心化應用提供無限擴張的資源供給。

(MultiVAC 名稱來源於科幻作家阿西莫夫《最後的問題》中的超級計算機的名稱。這台超級計算機,從現在我們熟知的晶體管結構,自我進化到與所有人類靈魂融為一體的超時空結構,最終在整個宇宙熱寂湮滅之時,完成了終極問題「如何逆轉宇宙的熵增」的計算和再現。)


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 區塊網 的精彩文章:

區塊鏈會顛覆哪些行業?
Iagon IAG 基於區塊鏈技術的分散式雲服務

TAG:區塊網 |