區(qū)塊鏈OmniLedger算法解析
OmniLedger目標是實現(xiàn)區(qū)塊鏈設計中的不可能三角的平衡,是基于分片設計的區(qū)塊鏈:
1)OmniLedger整體架構(gòu)
OmniLedger由一條身份鏈(identity blockchain)以及多條子鏈(shard)構(gòu)成。OmniLedger使用RandHound協(xié)議,將所有的Validator分成不同組,并隨機的將這些組分配到不同的分片子鏈,驗證以及共識區(qū)塊(如上圖中的(1)Sharding)。OmniLedger的總體架構(gòu)以及設計的重點如下圖:
ByzCoinX是OmniLedger在ByzCoin基礎上的增強。每個分片子鏈使用PBFT共識算法形成共識,OmniLedger將這個共識算法取名ByzCoinX(如上圖的(2)Consensus)。OmniLedger使用UXTO的賬戶模型,對于跨子鏈的交易,OmniLedger設計了Atomix的跨鏈原子操作,如上圖中的(3)TX Commit。
2)Validator的隨機分組和分配
RandHound協(xié)議實現(xiàn)Validator的隨機分組。假設,總共m個Valiator,n個分片,RandHound協(xié)議將m個Validator隨機分配到n個分片。每個區(qū)塊生成前,所有的Validator都需要重新分組。注意,RandHound協(xié)議需要一個“Leader”。OmniLedger算法使用VRF算法確定“Leader“。在每個區(qū)塊生成前,所有Validator都需要在idenTIty blockchain上注冊。每個Validator使用VRF計算自己的TIcket,計算方法如下圖:
其中config是注冊在idenTIty blockchain上的所有Validator的信息,v是當前的輪數(shù)。對于同一高度的區(qū)塊,可能需要多輪共識才能確定。
在一定時間內(nèi),所有Validator交換TIcket。Ticket值最小的Validator作為當前的“Leader“。在確定了“Leader”的基礎上,RandHound協(xié)議實現(xiàn)所有Validator的分組,并將這些Validator劃分到不同的分片上。
3) Atomix跨 鏈原子操作
為了支持分片間的交易,Omniledger設計了Atomix的跨鏈協(xié)議- Byzazantine ShardAtomic Commit。Omnil edger使用UTXO的賬戶模型。Atomix 協(xié)議的大體流程如下圖:
1) Initialize 初始化階段-假設用戶從shard1以及shard2 (輸入)轉(zhuǎn)賬到shard3 (輸出),用戶向shard1以及shard2發(fā)送跨鏈請求。
2) Lock 鎖定階段- shard1以及shard2鎖定請求,確認交易合法,并在shard1以及shard2記錄下鎖定狀態(tài)以及合法交易在區(qū)塊中的Merkle路徑證明。
3a) Unlock to Commit階段-提交跨鏈確認請求,用戶向shared3提交commit交易(包括所有輸入的證明),完成跨鏈交易。
3b) Unlock to Abort階段-如果在步驟2中,交易不合法(比如shard2中的交 易不合法),則跨鏈交易需要回滾,用戶向shard1發(fā)送跨鏈交易取消。
這樣的跨鏈設計,需要各個分片“監(jiān)控”其他分片的區(qū)塊生成情況。
4) Trust-but-Verify分 層驗證體系
為了更快速的處理大量的小額交易,OmiLedger提出了“先信任后驗證‘的分層處理機制,如下圖:
“先信任后驗證”的體系,包括了兩部分共識: 1)分片共識2)分片區(qū)塊合并。分片共識可以采用較少的Validator,加快分片的共識速度以及區(qū)塊的確認速度。分片形成的區(qū)塊,會被較多的Validator進行再次驗證。這樣的設計在出塊速度以及安全性之間形成平衡。
5)其他細節(jié)設計
論文中還提及了其他細節(jié)設計,比如區(qū)塊鏡像(Snapshot) 以及區(qū)塊并行處理。在區(qū)塊鏡像前的一些信息可以刪除從而較少存儲的消耗。區(qū)塊并行處理指的是,可以并行執(zhí)行的交易打包在不同的區(qū)塊中,這些區(qū)塊可以同時共識生成。
6)實驗數(shù)據(jù)
Omniledger論文中提到,為了驗證實驗數(shù)據(jù),部署了60臺機器,每臺機器配置是:Intel E5-2420 v2 CPU,24GB內(nèi)存以及萬兆網(wǎng)絡。實驗數(shù)據(jù)表明:
TPS性能隨著分片數(shù)量的增加線性增加,如果是16個分片的情況下,TPS達到5850。論文中甚至指出,25個分片的情況下,TPS達到13000。
總結(jié): Omniledger是基于分片的區(qū)塊鏈設計。OmniLedger使用 RoundHound和VRF協(xié)議將Validator隨機的分配到不同的分片上。每個分片的共識采用PBFT算法。Omniledger能容忍不超過1/3的作惡節(jié)點。在實驗室的環(huán)境下,TPS性能隨著分片的數(shù)量線性增加,16個分片的情況,TPS達到5850,25個分片的情況,TPS達到13000。