張文芳,孫海鋒,張晏端,唐榮駿,王小敏,馬 征,李 暄,黃路非
(1. 西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川成都 610031;2. 成都市第三人民醫(yī)院,四川成都 610014)
區(qū)塊鏈技術(shù)作為去信任化的分布式賬本系統(tǒng),在不依賴于第三方可信機(jī)構(gòu)的前提下,實現(xiàn)點對點的可信價值傳遞[1]. 當(dāng)前,區(qū)塊鏈技術(shù)已經(jīng)從作為比特幣等數(shù)字貨幣底層技術(shù)的1.0 時代過渡到智能合約和去中心化應(yīng)用相結(jié)合的2.0 時代,并將開啟價值互聯(lián)的3.0時代[2]. 區(qū)塊鏈3.0 將解決1.0 時代應(yīng)用范圍受限,以及2.0 時代性能受限而無法規(guī)模化應(yīng)用等問題,促使越來越多的產(chǎn)業(yè)和區(qū)塊鏈無縫銜接,其鏈上承載的資產(chǎn)交易也將從單一的加密貨幣交易上升到更加復(fù)雜和多樣化的數(shù)字資產(chǎn)交易,多樣化的數(shù)字資產(chǎn)交易對共識性能提出新的挑戰(zhàn).
以比特幣[3]為代表的區(qū)塊鏈開創(chuàng)了去中心賬本先河,但以比特幣為代表的區(qū)塊鏈采用單層鏈?zhǔn)浇Y(jié)構(gòu),將所有數(shù)字資產(chǎn)交易混合在一條鏈上處理,雖易于維持賬本的一致性,但難以平行擴(kuò)展復(fù)雜化和多樣化的數(shù)字資產(chǎn)交易,也不便于分類管理;采用PoW 類單一鏈上的共識機(jī)制,不涉及多鏈間資產(chǎn)一致性共識,無法滿足社會生產(chǎn)多場景協(xié)作的應(yīng)用需求,并且存在效率低下、耗能嚴(yán)重等問題. 因此,單層鏈?zhǔn)浇Y(jié)構(gòu)下的區(qū)塊鏈存在性能、隱私、擴(kuò)展性方面的技術(shù)瓶頸[4]. 為了擴(kuò)展區(qū)塊鏈性能,2015年,Poon 等[5]提出閃電網(wǎng)絡(luò)(Lightning Network),交易雙方通過建立線下支付的微支付渠道,將主網(wǎng)承載的交易進(jìn)行分流處理,大大降低了主網(wǎng)負(fù)荷,但鏈下交易內(nèi)容未存儲到區(qū)塊鏈中,使得交易的追溯性受到損害.2016年,Eyal等[6]通過引入關(guān)鍵區(qū)塊和微區(qū)塊提出一種可擴(kuò)展的區(qū)塊鏈協(xié)議Bitcoin-NG. 其中,關(guān)鍵區(qū)塊選舉記賬人,微區(qū)塊打包交易,通過選舉的記賬人在時間片段內(nèi)創(chuàng)建多個微區(qū)塊,擴(kuò)展了區(qū)塊鏈的交易處理容量,但Bitcoin-NG 在比特幣基礎(chǔ)上改進(jìn),受限于單鏈結(jié)構(gòu),難以得到更多的商業(yè)應(yīng)用. 另外,一些學(xué)者利用實用拜占庭容錯共識算法(Practical Byazntine Fault Tolerant,PBFT)運行效率高、非概率性共識的優(yōu)點,將PBFT算法與公有鏈共識算法相結(jié)合,構(gòu)造出高效的混合共識算法(Hybrid Consensus)[7~10],如Tendermint[7]、ByzCoin[9]等,核心思想是先通過PoW、PoS[11]等公有鏈共識算法選舉一定數(shù)量的節(jié)點作為委員會,委員會內(nèi)部再依托高效的PBFT算法生產(chǎn)區(qū)塊,從而擴(kuò)大公有鏈交易規(guī)模,但不同程度繼承了PBFT算法擴(kuò)展性差以及公鏈共識算法效率低下、耗能嚴(yán)重等缺點. 2018 年,F(xiàn)eng 等[12]針對聯(lián)盟鏈提出SDMA-PBFT 共識算法,引入等級劃分和代理人將全網(wǎng)節(jié)點分成數(shù)個子域,提案區(qū)塊通過各子域代理人進(jìn)行共識,減輕了主節(jié)點負(fù)擔(dān),提高了并行處理效率,然而當(dāng)拜占庭節(jié)點成為代理人時,系統(tǒng)安全性將大幅降低. 2019 年,Gao 等[13]基于信用模型提出T-PBFT 共識算法,由信用值高的節(jié)點構(gòu)成共識群組,提升了拜占庭算法的容錯率,但通信復(fù)雜度高達(dá)O(n2).2020年,Du等[14]針對聯(lián)盟鏈提出MBFT共識算法,利用分層技術(shù)將節(jié)點劃分為兩層共識群組,底層群組驗證交易,上層群組打包區(qū)塊,同時將共識群組分片,減少單個群組的負(fù)載,提高系統(tǒng)的吞吐量,但分片使得群組規(guī)模變小,共識更加趨于中心化. 同年,包振山等[15]針對PBFT 算法的擴(kuò)展性,采用樹形拓?fù)浣Y(jié)構(gòu)對網(wǎng)絡(luò)進(jìn)行劃分并引入信譽(yù)模型以提高安全性,底層子網(wǎng)運行PBFT 算法,上層子網(wǎng)運行簡化PBFT 算法,通信復(fù)雜度降至O(nk)(k為底層子網(wǎng)節(jié)點數(shù)),然而當(dāng)子網(wǎng)中節(jié)點數(shù)較大時,通信復(fù)雜度仍然較高.
多層鏈?zhǔn)浇Y(jié)構(gòu)下的區(qū)塊鏈不僅能對多樣化的數(shù)字資產(chǎn)進(jìn)行分類處理,還能提升系統(tǒng)并發(fā)處理能力,提高交易吞吐量.2016年,Tsai等[16]將傳統(tǒng)單層鏈?zhǔn)浇Y(jié)構(gòu)一分為二,提出賬戶區(qū)塊鏈(ABC)和交易區(qū)塊鏈(TBC)相結(jié)合的區(qū)塊鏈架構(gòu). ABC 負(fù)責(zé)查詢、存儲賬戶,TBC 負(fù)責(zé)建塊、執(zhí)行交易,利用上述方法可實現(xiàn)負(fù)載均衡,但并未實現(xiàn)多樣化數(shù)字資產(chǎn)的分類處理. 文獻(xiàn)[17,18]通過楔入式側(cè)鏈技術(shù)實現(xiàn)了鏈與鏈之間的資產(chǎn)交互,但側(cè)鏈技術(shù)只是一種雙向錨定協(xié)議,并非獨立的區(qū)塊鏈架構(gòu),并且該技術(shù)通常用于基于PoW 共識的區(qū)塊鏈,需要在交易速度與安全性之間做權(quán)衡.2017 年,IBM 提出許可的商業(yè)區(qū)塊鏈超級賬本(Hyperledger Fabric)[19],采用多通道技術(shù)實現(xiàn)多鏈架構(gòu),每個通道各自維護(hù)一條鏈,不同通道間相互獨立與隔離,然而通道間難以實現(xiàn)資產(chǎn)的轉(zhuǎn)移和一致性.2018年,閔新平等[20]提出許可鏈多中心架構(gòu),該架構(gòu)中各中心主體維護(hù)交易區(qū)塊鏈,所有中心主體維護(hù)全局區(qū)塊鏈,全局區(qū)塊鏈與交易區(qū)塊鏈通過哈希值錨定保證數(shù)字資產(chǎn)交易的全局一致性,但該架構(gòu)不能防止雙花問題,并且其采用的PBFT 共識算法會隨著鏈的增多,性能急劇下降.
針對現(xiàn)有區(qū)塊鏈性能低下,難以支持多種場景下數(shù)字資產(chǎn)的分類并發(fā)處理,難以實現(xiàn)多鏈共識等問題,本文首先面向聯(lián)盟鏈設(shè)計一種樹形主從多鏈架構(gòu),該架構(gòu)基于樹形結(jié)構(gòu)對群組進(jìn)行切分,使得樹中的每一個父節(jié)點和其子節(jié)點組成一個通道,達(dá)到數(shù)據(jù)隔離的隱私需求;通過每個通道維護(hù)一條從鏈,所有通道共同維護(hù)一條主鏈,實現(xiàn)不同數(shù)字資產(chǎn)的分類處理;通過從鏈存儲多樣化交易內(nèi)容,主鏈存儲交易摘要,主從鏈通過哈希鎖定的方式達(dá)到不可篡改和便于審計的目的;利用多個通道并行處理交易,解決現(xiàn)有區(qū)塊鏈吞吐量低下和交易延遲過高等問題. 然后,針對樹形結(jié)構(gòu)的主從多鏈架構(gòu),設(shè)計基于門限簽名的拜占庭容錯共識算法來解決多樣化數(shù)字資產(chǎn)分類并發(fā)處理帶來的一致性問題,以及設(shè)計視圖轉(zhuǎn)換協(xié)議將失效或作惡的父節(jié)點向底層葉子節(jié)點位置調(diào)動,并將底層葉子節(jié)點替換到父節(jié)點位置,以獲得強(qiáng)有力的系統(tǒng)活性保障. 分析表明,本文提出的主從多鏈結(jié)構(gòu)突破了單鏈的功能和性能束縛,具有良好的高并發(fā)交易性能,同時兼顧隱私數(shù)據(jù)的隔離保護(hù),滿足企業(yè)多樣化業(yè)務(wù)需求.
聯(lián)盟鏈?zhǔn)侵赣啥鄠€利益相關(guān)的機(jī)構(gòu)共同參與和維護(hù)的區(qū)塊鏈,其網(wǎng)絡(luò)中的節(jié)點來自不同組織,互相缺乏信任且可能是拜占庭節(jié)點. 為了使系統(tǒng)能夠容忍拜占庭錯誤,本方案采取樹形結(jié)構(gòu)來構(gòu)造主從多鏈架構(gòu),樹中每一個父節(jié)點i對應(yīng)的子節(jié)點數(shù)量Ti≥3fi,fi為父節(jié)點i及其子節(jié)點構(gòu)成的通道中所能容忍的拜占庭節(jié)點數(shù)量. 主從多鏈架構(gòu)按照Ti叉樹對聯(lián)盟鏈共識群組進(jìn)行劃分,得到樹中每個父節(jié)點(除根節(jié)點)和其副本節(jié)點組成的下層通道,以及根節(jié)點和其副本節(jié)點組成的上層通道,并且其數(shù)量之和滿足構(gòu)成拜占庭容錯系統(tǒng)要求,即每個通道內(nèi)副本總數(shù)量n≥3fi+1;父節(jié)點(除根節(jié)點)為各自下層通道的主節(jié)點,維護(hù)各自通道內(nèi)的從鏈和主鏈,根節(jié)點為上層通道的主節(jié)點,負(fù)責(zé)構(gòu)建主鏈;通道之間相互隔離,實現(xiàn)對不同數(shù)字資產(chǎn)的隱私保護(hù),并以多通道并發(fā)處理數(shù)字資產(chǎn)交易的方式解決現(xiàn)有區(qū)塊鏈技術(shù)吞吐量低和交易延遲高等問題.
考慮到實際的業(yè)務(wù)需求以及樹過深會導(dǎo)致系統(tǒng)性能的下降,本方案采用深度為2的Ti叉樹. 如圖1所示,基于深度為2的Ti叉樹對共識群組進(jìn)行劃分,形成相互獨立、相互隔離的主從多鏈;樹中每個父節(jié)點和其子節(jié)點都構(gòu)成拜占庭容錯系統(tǒng),即ABCD、BEFG、CHIJKLM和DNOPQ 組成的4 個拜占庭容錯系統(tǒng). 其中ABCD 構(gòu)成上層拜占庭容錯系統(tǒng),負(fù)責(zé)構(gòu)建主鏈;BEFG、CHIJKLM 和DNOPQ 構(gòu)成下層拜占庭容錯系統(tǒng),負(fù)責(zé)維護(hù)主鏈以及各自通道內(nèi)的從鏈.
圖1 主從多鏈系統(tǒng)架構(gòu)
為實現(xiàn)主從多鏈之間的價值互聯(lián),在本文所構(gòu)造的聯(lián)盟鏈主從多鏈架構(gòu)中,數(shù)字資產(chǎn)不僅可以在通道內(nèi)部交易,還可以跨通道進(jìn)行交易,實現(xiàn)鏈與鏈之間的互操作性,例如用戶可以用某項資產(chǎn)交換不同機(jī)構(gòu)的理財產(chǎn)品,不同的資產(chǎn)就需要在多條鏈上做轉(zhuǎn)移、交換操作. 當(dāng)進(jìn)行鏈與鏈之間的互操作時,若將同一數(shù)字資產(chǎn)分別與不同的通道主體進(jìn)行交易,同一資產(chǎn)將完成兩次或者多次支付,則此類交易不滿足全局一致性,故在聯(lián)盟鏈主從多鏈架構(gòu)中,不僅要保證通道內(nèi)部交易的一致性,還要保證數(shù)字資產(chǎn)在跨通道交易時的一致性. 為了保證主從鏈的一致性,本文采用基于門限簽名改進(jìn)的拜占庭容錯共識算法進(jìn)行全網(wǎng)共識,由樹中父節(jié)點收集其副本節(jié)點的投票信息(投票基于門限簽名),當(dāng)收集到的合法簽名數(shù)量達(dá)到門限值ti(ti=2fi+1)時,父節(jié)點對投票信息進(jìn)行聚合,然后向上層節(jié)點遞歸提交每個通道的門限簽名狀態(tài),上層節(jié)點通過驗證門限簽名的合法性確認(rèn)各通道交易的有效性以及狀態(tài)是否達(dá)成一致,繼而構(gòu)建主鏈并廣播給各下層通道,下層通道收到合法的主鏈區(qū)塊后,將主鏈區(qū)塊持久化寫入到主鏈,同時更新本地的從鏈;主從鏈通過哈希相互鎖定,保證交易的一致性和不可篡改性. 由此,針對聯(lián)盟鏈主從多鏈架構(gòu)下難以維護(hù)全局資產(chǎn)一致性問題,構(gòu)建了高可信度的數(shù)字資產(chǎn)交易共識算法,保證數(shù)字資產(chǎn)的全局一致性,提高了區(qū)塊鏈性能.
聯(lián)盟鏈多鏈模型相關(guān)定義如下.
定義1數(shù)字資產(chǎn)(Digital Assets,DA). 數(shù)字資產(chǎn)是指企業(yè)擁有或控制的,以電子數(shù)據(jù)的形式存在,或可被數(shù)字化的資產(chǎn),比如:付費音樂、虛擬積分、房產(chǎn)等.不同數(shù)字資產(chǎn)可被不同通道分類處理,數(shù)字資產(chǎn)通過全網(wǎng)唯一標(biāo)識的數(shù)字身份進(jìn)行轉(zhuǎn)讓、質(zhì)押、租賃等各種交易操作.
定義2通道(Channel). 類似發(fā)布-訂閱模式消息傳遞通道,樹中每一個父節(jié)點和其子節(jié)點都構(gòu)成一個通道,通道之間數(shù)據(jù)隔離. 如圖1所示,ABCD 構(gòu)成上層通道,負(fù)責(zé)構(gòu)建主鏈,其中A 是根節(jié)點,可為政府部門部署的監(jiān)管節(jié)點,通過維護(hù)主鏈達(dá)到監(jiān)管審計的目的.BEFG、CHIJKLM 和DNOPQ 構(gòu)成下層通道,負(fù)責(zé)維護(hù)主鏈以及各通道內(nèi)的從鏈.
定義3節(jié)點(Node). 按照節(jié)點的職責(zé),可以分為普通副本和主節(jié)點. 普通副本負(fù)責(zé)對提案進(jìn)行投票;主節(jié)點可以進(jìn)一步分為上層通道主節(jié)點和下層通道主節(jié)點,下層通道主節(jié)點一方面負(fù)責(zé)將所屬通道的投票結(jié)果反饋給上層通道,另一方面負(fù)責(zé)從上層通道主節(jié)點獲取最新的主鏈區(qū)塊并在通道內(nèi)部廣播與同步. 上層通道主節(jié)點負(fù)責(zé)收集下層通道投票結(jié)果并構(gòu)建主鏈區(qū)塊.
定義4背書群組(Endorsement Group,EG). 當(dāng)涉及鏈之間的互操作時,為保證數(shù)字資產(chǎn)交易在各個通道中的狀態(tài)保持一致,需要為相應(yīng)的數(shù)字資產(chǎn)交易生成動態(tài)背書群組,由背書群組負(fù)責(zé)對其數(shù)字資產(chǎn)交易進(jìn)行背書.
定義5交易(Transaction,TX). 交易是指雙方對數(shù)字資產(chǎn)進(jìn)行價值的交換,一般包括兩種交易方式:通道內(nèi)數(shù)字資產(chǎn)交易和通道間數(shù)字資產(chǎn)交易. 通道內(nèi)數(shù)字資產(chǎn)交易屬于通道內(nèi)部資產(chǎn)交易,由通道內(nèi)交易發(fā)起人對其進(jìn)行簽名(如橢圓曲線簽名算法)后在通道內(nèi)部進(jìn)行廣播,然后由通道內(nèi)成員對其進(jìn)行基于門限簽名的投票,父節(jié)點收集投票結(jié)果,將其提交到上層通道以寫入到主區(qū)塊鏈. 通道間數(shù)字資產(chǎn)交易涉及鏈之間的互操作,需由相應(yīng)的背書群組對其背書,并將背書結(jié)果提交到上層通道以寫入到主區(qū)塊鏈.
定義6主從多鏈(Master-slave Multiple Chain,MSMC). 如圖2 所示,相對“一鏈治所有”的單層鏈?zhǔn)浇Y(jié)構(gòu),主從多鏈包括一條主鏈和多條從鏈,主從鏈均是按照時間戳順序?qū)?shù)據(jù)區(qū)塊以首尾相連的方式構(gòu)成的獨立區(qū)塊鏈. 從鏈存儲通道內(nèi)相關(guān)的數(shù)字資產(chǎn)交易內(nèi)容,保證通道內(nèi)局部一致性,由各自通道成員維護(hù);主鏈存儲所有通道內(nèi)不存在雙花交易的哈希值,保證數(shù)字資產(chǎn)全局一致且不可篡改,由全體成員共同維護(hù). 只有當(dāng)從鏈交易的哈希值被寫進(jìn)主鏈,該從鏈交易才生效. 主鏈的數(shù)據(jù)區(qū)塊稱為主鏈區(qū)塊(Master Block,MB),也叫作全局區(qū)塊,主鏈區(qū)塊格式為
圖2 主從多鏈模型
其中,MB_PBHash 為前一區(qū)塊哈希值,MB_Hight 為區(qū)塊高度,MB_MerkleTree 為交易的哈希值按照Merkle 樹方式組織的一種數(shù)據(jù)結(jié)構(gòu),SB_Hight 為數(shù)字資產(chǎn)交易對應(yīng)的從鏈標(biāo)識,用于快速定位到相應(yīng)的從鏈所在的區(qū)塊高度. 從鏈的數(shù)據(jù)區(qū)塊稱為從鏈區(qū)塊(Slave Block,SB),從鏈區(qū)塊格式為
其中,SB_PBhash 為前一區(qū)塊哈希,SB_Hight 為區(qū)塊高度,SB_MerkleTree 為交易的哈希值按照Merkle 樹方式組織的一種數(shù)據(jù)結(jié)構(gòu),MB_Hight 為數(shù)字資產(chǎn)交易對應(yīng)的主鏈標(biāo)識,用于快速定位到相應(yīng)的主鏈所在的區(qū)塊高度.
(t,n)門限簽名[21]是指群體的簽名密鑰被n個成員以門限方式共享,任意大于等于t個成員的子集可以代表這個群體產(chǎn)生簽名,而任意少于t個成員的子集則不能. 在基于門限簽名的拜占庭容錯的共識算法中,將群體的簽名權(quán)利以門限方式分散給各副本,各個副本采用門限的方式進(jìn)行投票,投票達(dá)到門限值t時,才能生成決議的有效簽名. 這樣的方法既保證了共識結(jié)果得到大多數(shù)副本的許可,又可在最小連通性的網(wǎng)絡(luò)環(huán)境中實現(xiàn)低延遲、高魯棒性的拜占庭容錯共識算法. 根據(jù)子密鑰分發(fā)方式的不同,門限簽名可分為兩種類型:由可信任中心分發(fā)子密鑰的門限簽名方案和分布式分發(fā)子密鑰的門限簽名方案. 本文采用分布式分發(fā)子密鑰的門限簽名方案,適合聯(lián)盟成員互不信任的網(wǎng)絡(luò)環(huán)境.門限簽名的一般模型如下:
密鑰生成Gen:輸入安全參數(shù)k,輸出系統(tǒng)公鑰PK以及每個成員的私鑰SKi.
簽名Sign:輸入安全參數(shù)k、消息m以及成員私鑰SKi,產(chǎn)生部分簽名σi,然后再由指定成員將達(dá)到門限值t的部分簽名σi合成門限簽名σ.
驗證Verify:輸入安全參數(shù)k、消息m、系統(tǒng)公鑰PK和門限簽名σ后,輸出判斷值“接受”或者“拒絕”.
本文基于Ti叉樹提出一種聯(lián)盟鏈主從多鏈架構(gòu),該架構(gòu)中每一個父節(jié)點和其子節(jié)點都構(gòu)成一個通道,利用多通道并發(fā)處理數(shù)字資產(chǎn)交易,解決單鏈架構(gòu)下數(shù)字資產(chǎn)交易混合處理導(dǎo)致的性能低下問題. 但多通道并發(fā)處理可能導(dǎo)致數(shù)字資產(chǎn)不一致,并且現(xiàn)有以PoW、PBFT為主的共識算法均是以單鏈架構(gòu)為背景,在多鏈架構(gòu)下難以處理多樣化數(shù)字資產(chǎn)并發(fā)交易. 因此,本節(jié)針對樹形結(jié)構(gòu)的聯(lián)盟鏈主從多鏈提出一種基于門限簽名的改進(jìn)拜占庭容錯共識算法,通過上層通道與下層通道協(xié)作共識完成數(shù)字資產(chǎn)的驗證與記鏈操作,主要包括通道內(nèi)數(shù)字資產(chǎn)交易一致性共識算法和通道間數(shù)字資產(chǎn)交易一致性共識算法.
假設(shè)每個通道及背書群組已經(jīng)預(yù)分發(fā)門限簽名的秘密份額,每個成員擁有各自通道的群簽名私鑰,群公鑰全網(wǎng)公開,設(shè)門限簽名的門限值ti=2fi+1,設(shè)一般簽名表示為Sig、門限簽名表示為ThresholdSig 以及門限簽名中的部分簽名表示為PartSig.
假設(shè)每個通道至多存在f個拜占庭節(jié)點,即滿足f≤,并且假設(shè)拜占庭節(jié)點的行為可以是任意的,可以通過合謀方式欺騙誠實節(jié)點,破壞系統(tǒng)一致性,但是拜占庭節(jié)點計算能力有限,無法在多項式時間內(nèi)突破密碼機(jī)制,如簽名算法. 以圖1 主從多鏈架構(gòu)為例,圖中存在ABCD、BEFG、CHIJKLM 和DNOPQ 這4 個最小拜占庭容錯系統(tǒng). 其中ABCD 屬于上層拜占庭容錯系統(tǒng),BEFG、CHIJKLM 和DNOPQ 屬于下層拜占庭容錯系統(tǒng),A、B、C和D 為相應(yīng)拜占庭容錯系統(tǒng)的主節(jié)點. 則在主從多鏈架構(gòu)下的通道內(nèi)數(shù)字資產(chǎn)交易一致性共識算法中,整體流程如圖3所示,具體過程描述如下.
圖3 基于門限簽名的主從多鏈共識算法
(1)下層通道的主節(jié)點(如B、C、D)收集本通道一段時間內(nèi)發(fā)生的數(shù)字資產(chǎn)交易,統(tǒng)一檢查并打包進(jìn)區(qū)塊,簽名后向各自通道內(nèi)的副本廣播提案消息,其消息格式為
(2)各通道內(nèi)的副本收到各自主節(jié)點發(fā)來的提案消息后,檢查消息簽名是否正確、視圖編號是否一致.如果通過驗證,則向各自主節(jié)點發(fā)送基于門限簽名的投票消息,具體消息格式為
(3)當(dāng)下層通道的主節(jié)點收到大于等于ti-1(門限值ti=2fi+1)個來自所在通道不同副本發(fā)來的對同一個區(qū)塊Blocki的部分簽名投票消息后,首先驗證部分簽名是否正確、視圖編號是否一致. 如果驗證通過,則連同自己的一條投票消息,對區(qū)塊Blocki的投票數(shù)達(dá)到預(yù)期門限值ti. 此時,下層通道主節(jié)點合成門限簽名ThresholdSigi=ThresholdSig(PartSigi1,PartSigi2,…,PartSigit),向上層通道主節(jié)點(如A)發(fā)送投票結(jié)果并在本通道內(nèi)廣播,具體消息格式為
(4)上層通道的主節(jié)點收集到各通道的投票結(jié)果后,首先驗證門限簽名是否正確、視圖編號是否一致,如果驗證通過,對下層通道主節(jié)點發(fā)來的交易(區(qū)塊哈希值Hash(Blocki))按照一定規(guī)則進(jìn)行排序,構(gòu)造主鏈區(qū)塊MB,之后將主鏈區(qū)塊MB 廣播給與其通信的下層通道主節(jié)點,消息格式為
(5)下層通道主節(jié)點收到上層通道的主節(jié)點發(fā)來的主鏈區(qū)塊消息后,在通道內(nèi)部進(jìn)行廣播與同步. 當(dāng)各通道副本收到主鏈區(qū)塊消息后,首先驗證上層通道的主節(jié)點的簽名是否正確,以及主鏈區(qū)塊中所包含的每一個通道區(qū)塊哈希值對應(yīng)的門限簽名是否正確. 如果驗證通過,將主鏈區(qū)塊持久化寫入到全局區(qū)塊鏈,同時更新本地的從鏈區(qū)塊鏈.
在基于樹形構(gòu)造的聯(lián)盟鏈多鏈架構(gòu)中,數(shù)字資產(chǎn)不僅可以在通道內(nèi)部進(jìn)行交易,還可以在通道間進(jìn)行交易. 由于通道間交易的數(shù)字資產(chǎn)涉及多個通道,當(dāng)同一數(shù)字資產(chǎn)在不同通道同時進(jìn)行交易時,易造成雙花問題. 為保證跨通道間資產(chǎn)交易在各個通道中的狀態(tài)保持一致,首先從交易相關(guān)通道中選取背書群組,由背書群組負(fù)責(zé)對跨通道交易進(jìn)行背書,并將背書結(jié)果反饋到上層通道進(jìn)行全局共識.
假設(shè)通道間交易的數(shù)字資產(chǎn)涉及k個通道,為保證背書群組中至少存在三分之二的誠實背書節(jié)點,需要從k個通道中選取3fi+1 個背書節(jié)點,且每個通道至少選擇3fi名節(jié)點作為背書節(jié)點. 背書群組內(nèi)部選擇一名背書節(jié)點作為背書群組主節(jié)點.
(1)各通道主節(jié)點收集本通道一段時間內(nèi)發(fā)生的跨通道交易,統(tǒng)一檢查并打包進(jìn)區(qū)塊,簽名后發(fā)送至背書群組,其消息格式為
(2)背書群組接收到通道間交易后,驗證區(qū)塊中的每一筆交易是否滿足全局一致性,即同一時刻對同一數(shù)字資產(chǎn)的交易只允許出現(xiàn)一次. 如果通過驗證,則背書群組成員進(jìn)行基于門限簽名的背書簽名,并向背書群組主節(jié)點發(fā)送背書簽名消息,其消息格式為
(3)當(dāng)背書群組主節(jié)點收到大于等于ti-1(門限值2fi+1)個背書群組成員發(fā)來的對同一個區(qū)塊Blocki的背書簽名消息后,首先驗證部分簽名是否正確、視圖編號是否一致. 如果驗證通過,則連同自己的一條背書簽名消息,對區(qū)塊Blocki的投票數(shù)達(dá)到預(yù)期門限值ti,此時背書群組主節(jié)點合成門限簽名ThresholdSigi=ThresholdSig(PartSigi1,PartSigi2,…,PartSigit)作為背書結(jié)果,將背書結(jié)果附在提案消息后轉(zhuǎn)發(fā)至上層通道主節(jié)點并在背書群組內(nèi)廣播,具體消息格式為
(4)上層通道主節(jié)點收到附有背書簽名的提案消息后,首先驗證背書簽名是否正確、視圖編號是否一致. 如果驗證通過,構(gòu)造主鏈區(qū)塊MB,并將主鏈區(qū)塊MB 廣播給與其通信的下層通道主節(jié)點,具體消息格式為
(5)下層通道主節(jié)點收到上層通道的主節(jié)點發(fā)來的主鏈區(qū)塊消息后,在通道內(nèi)部進(jìn)行廣播與同步. 當(dāng)各通道副本收到全局區(qū)塊消息后,首先驗證上層通道的主節(jié)點的簽名是否正確,以及全局區(qū)塊中所包含的門限簽名是否正確. 如果驗證通過,將全局區(qū)塊持久化寫入到主區(qū)塊鏈,同時更新本地的從區(qū)塊鏈.
設(shè)delay(t)表示副本發(fā)送基于門限簽名的投票消息到副本最終接受到主鏈區(qū)塊的時間間隔. 因為只有交易的哈希值被寫進(jìn)主鏈,該交易才會生效,所以當(dāng)某通道副本等待時間超過預(yù)設(shè)值delay(t)時仍然沒有收到主鏈區(qū)塊,啟動視圖轉(zhuǎn)換協(xié)議,更換通道主節(jié)點,以避免陷入無限等待. 視圖轉(zhuǎn)換流程如下.
(1)當(dāng)通道i的副本Pj進(jìn)入視圖轉(zhuǎn)換協(xié)議后,令視圖編號vnew=v+1,其中v是通道i的當(dāng)前視圖編號,向其他副本廣播View-Change 消息,其消息格式為
(2)其他副本Pu在收到View-Change消息后,同樣令視圖編號vnew=v+1,廣播View-Change 消息,其消息格式為
(3)新視圖vnew的主節(jié)點Pnew利用收到的View-Change 消息中的PartSig 和ThresholdSig 字段,構(gòu)造New-View消息:
1)如果Pnew收到的View-Change消息中至少有一條包含合法ThresholdSig(ll=1,2,…,d),則向其他副本廣播New-View消息,其消息格式為
2)如果Pnew收到的View-Change 消息中有ti條對Hash(Blocki)的部分簽名PartSig,則合成門限簽名ThresholdSigi,并向上層通道主節(jié)點發(fā)送New-View 消息,其消息格式為
3)如果Pnew沒有收到一條消息包含合法的ThresholdSig(ll=1,2,…,d),也沒有收到對Hash(Block)i的ti條部分簽名PartSig,則選擇新的提案Blocknew,并向其他副本廣播新的提案消息,其消息格式為
如果是上述第一種情況,將New-View 消息在通道內(nèi)部進(jìn)行廣播同步即可. 如果是上述第二種情況,上層通道主節(jié)點收到New-View 消息后,首先驗證門限簽名是否正確、視圖編號是否一致;如果驗證通過,重新構(gòu)造主鏈區(qū)塊MB,并將主鏈區(qū)塊MB 廣播給與其通信的下層通道主節(jié)點,具體消息格式為
引理1每個通道對通道內(nèi)資產(chǎn)交易的投票結(jié)果是可信的.
證明由拜占庭系統(tǒng)定理可知,當(dāng)拜占庭容錯系統(tǒng)中有f個拜占庭節(jié)點時,若系統(tǒng)總節(jié)點數(shù)n≥3f+1,系統(tǒng)總能達(dá)成一致[22]. 本方案基于Ti叉樹構(gòu)建主從多鏈,使得每個通道內(nèi)的副本數(shù)量總和滿足n≥3fi+1,即每個通道都構(gòu)成拜占庭容錯系統(tǒng).
假設(shè)下層通道i的主節(jié)點p為拜占庭節(jié)點,在收集本通道內(nèi)產(chǎn)生的數(shù)字資產(chǎn)交易后,p將錯誤交易信息打包進(jìn)區(qū)塊Blocki,并將其在通道i內(nèi)廣播. 根據(jù)系統(tǒng)條件,通道i內(nèi)至多存在個拜占庭節(jié)點,最后p收到的同意投票數(shù)最多為fi-1個(小于ti-1=2fi個),因此無法合成合法的門限簽名ThresholdSigi.
由以上分析可知,每個通道對通道內(nèi)資產(chǎn)交易的投票結(jié)果是可信的. 證畢
引理2背書群組對跨通道資產(chǎn)交易的背書結(jié)果是可信的.
證明由4.2節(jié)可知背書群組節(jié)點數(shù)N滿足
在最壞的情況下,與跨通道資產(chǎn)交易相關(guān)通道中的拜占庭節(jié)點全被選為背書節(jié)點,這些拜占庭節(jié)點試圖通過合謀來破壞系統(tǒng)一致性. 但由系統(tǒng)條件知,每個下層通道i中存在的拜占庭節(jié)點數(shù)fi滿足
由式(3)和式(4)可以推出,背書群組中存在的拜占庭節(jié)點數(shù)Nf滿足
定理1本文構(gòu)建的主從多鏈架構(gòu)是安全的.
證明本文構(gòu)建的主從多鏈架構(gòu)主要涉及通道內(nèi)資產(chǎn)交易和通道間資產(chǎn)交易,由引理1 和引理2 可知,當(dāng)通道i內(nèi)至多存在fi≤個拜占庭節(jié)點時,通道內(nèi)資產(chǎn)交易和通道間資產(chǎn)交易均是可信的,故本文構(gòu)建的主從多鏈架構(gòu)是安全可信的. 證畢
定理2本文采用基于門限簽名改進(jìn)的拜占庭容錯共識算法是安全可靠的.
證明在基于門限簽名改進(jìn)的拜占庭容錯共識算法中,群體的簽名權(quán)利以門限方式(門限值ti=2fi+1)分散給通道內(nèi)各副本,通道內(nèi)各副本采用門限簽名的方式進(jìn)行投票達(dá)成共識,當(dāng)通道內(nèi)對某一區(qū)塊提案的投票數(shù)達(dá)到門限值ti時,才能生成通道內(nèi)決議有效的投票結(jié)果,并由通道主節(jié)點將此投票結(jié)果發(fā)送至上層通道構(gòu)建全局區(qū)塊,即全局區(qū)塊包含了各通道代表法定人數(shù)投票意愿的門限簽名,所有通道節(jié)點收到全局區(qū)塊后只需驗證該門限簽名的合法性,即可對該通道的投票結(jié)果以及全局區(qū)塊的有效性進(jìn)行安全驗證,故本文采用基于門限簽名改進(jìn)的拜占庭容錯共識算法是安全可靠的. 證畢
定理3本文構(gòu)建的主從多鏈架構(gòu)具有較強(qiáng)的不可篡改特性.
證明在基于POW 共識算法構(gòu)造的公有鏈中,每一個區(qū)塊都獲得一定的算力保障,攻擊者想要篡改某一區(qū)塊,需要掌握全網(wǎng)51%的算力,篡改難度大. 在基于PBFT 共識算法構(gòu)造的聯(lián)盟鏈中,失去算力保障的區(qū)塊僅依靠分布式存儲來保證不可篡改,難以防止節(jié)點之間相互合謀篡改數(shù)據(jù),篡改成本低. 在本文構(gòu)造的主從多鏈架構(gòu)中,主鏈保存交易哈希值,從鏈保存交易內(nèi)容,主從鏈通過哈希值的方式相互鎖定. 假設(shè)某通道成員以合謀的方式篡改通道內(nèi)部的從鏈交易,若要使篡改的區(qū)塊生效,則同時需要篡改全網(wǎng)成員保存的主鏈交易,篡改的代價相對較大,故本文構(gòu)建的主從多鏈模型具有較強(qiáng)的不可篡改特性. 證畢
定理4系統(tǒng)共識進(jìn)程不會因為拜占庭節(jié)點的作惡行為而中斷,即本文方案具有活性.
證明根據(jù)區(qū)塊鏈架構(gòu)設(shè)定,每個通道內(nèi)至多存在f≤個拜占庭節(jié)點. 由引理1、引理2和定理1可知,下層通道內(nèi)的數(shù)字資產(chǎn)交易以及跨通道資產(chǎn)交易的背書結(jié)果均是可信. 如果主節(jié)點p作惡,未發(fā)送門限簽名投票結(jié)果至上層通道,或由于網(wǎng)絡(luò)問題宕機(jī),使共識進(jìn)程處于停滯狀態(tài),由4.3 節(jié)可知,系統(tǒng)將根據(jù)視圖切換協(xié)議,開啟新的共識進(jìn)程,避免陷入無限等待,進(jìn)而使主從多鏈架構(gòu)保持了活性. 證畢
引理3若下層通道i上傳提案區(qū)塊Blocki,則主鏈中一定會包含Blocki.
證明當(dāng)下層通道i的主節(jié)點p收到大于等于ti-1(門限值ti=2fi+1)個所在通道不同副本對Blocki的投票消息,驗證通過后合成門限簽名ThresholdSigi,并向上層通道主節(jié)點m發(fā)送投票結(jié)果.
上層通道主節(jié)點m按一定順序收集各下層通道上傳的提案區(qū)塊且對提案的投票結(jié)果驗證通過后,m將各通道發(fā)送的提案區(qū)塊的哈希值按一定順序構(gòu)造主鏈區(qū)塊MB 并簽名,廣播給下層通道主節(jié)點,下層通道主節(jié)點收到主鏈區(qū)塊消息后在各自通道內(nèi)廣播. 由4.1 節(jié)可知,通道i內(nèi)各副本通過驗證Blocki的哈希值、ThresholdSigl(l=1,2,…,d)以及Sigm的正確性,即可就主鏈區(qū)塊達(dá)成共識,進(jìn)而使提案區(qū)塊Blocki上鏈. 證畢
引理4若背書群組上傳提案區(qū)塊Blocki,則主鏈中一定會包含Blocki.
證明假設(shè)通道間交易的數(shù)字資產(chǎn)涉及k個通道,則需要從k個通道中選取r>+1個背書節(jié)點,且每個通道至少選擇3fi名節(jié)點作為背書節(jié)點. 由4.2 節(jié)易知,若背書群組上傳提案區(qū)塊Blocki,則主鏈中一定會包含Blocki,證明過程與引理3類似,此處不再贅述. 證畢
定理5本文方案具有一致性.
證明由引理3 和引理4 易知,本文方案具有一致性. 證畢
本節(jié)將從區(qū)塊鏈架構(gòu)和共識算法兩方面與現(xiàn)有主流方案進(jìn)行比較,進(jìn)而得出本方案的綜合評價結(jié)果,詳見表1.
由表1 可知,Bitcoin[3],Bitcoin-NG[6],Ethereum 和MBFT[14]采用單層鏈?zhǔn)浇Y(jié)構(gòu),將所有交易混合在一條鏈上處理,難以實現(xiàn)數(shù)據(jù)之間的隔離.Bitcoin,Bitcoin-NG和Ethereum 采用PoW 共識算法,其去中心化程度較高、容錯率較高,并且每一區(qū)塊獲得算力保障,數(shù)據(jù)篡改難度大,但采用的PoW 共識算法存在吞吐量低、延遲高等問題,影響系統(tǒng)的可擴(kuò)展性,盡管Bitcoin-NG 通過引入關(guān)鍵區(qū)塊和微區(qū)塊解決了可擴(kuò)展性問題,但仍然需要“挖礦”,效率沒有得到質(zhì)的提升.
表1 方案性能對比
基于PBFT 的共識方案,具有強(qiáng)一致性、不容易出現(xiàn)分叉、效率較高等特點,但往往通信復(fù)雜度較高. 如,T-PBFT[13]根據(jù)信用評價模型選出高信用共識群組以提升系統(tǒng)容錯率,但其通信復(fù)雜度仍高達(dá)O(n2),隨著節(jié)點的增多,系統(tǒng)性能會大幅降低,并且不適用于多鏈架構(gòu).MBFT[14]通過分片和分層技術(shù),提高了交易速度,但由于分片使得共識群組越來越小,中心化程度加深,并且也不適用于多鏈架構(gòu). 文獻(xiàn)[15]引入樹形拓?fù)浣Y(jié)構(gòu)提高系統(tǒng)可擴(kuò)展性,但由于其各層子網(wǎng)使用PBFT 共識算法,在子網(wǎng)規(guī)模較大的情況下仍然無法有效地降低通信復(fù)雜度,且信譽(yù)模型的引入會使整個系統(tǒng)趨于中心化,同時也不適用于多鏈架構(gòu).Fabric[19]和文獻(xiàn)[20]采用多層鏈?zhǔn)浇Y(jié)構(gòu),實現(xiàn)交易的并發(fā)與隔離處理,但由于采用了PBFT 共識算法,面臨著可擴(kuò)展性不足等問題,系統(tǒng)性能隨著節(jié)點數(shù)的增多而急劇下降. 此外,F(xiàn)abric 不支持跨鏈操作,難以滿足現(xiàn)實生活多協(xié)作場景應(yīng)用需求,通道成員數(shù)量有限且相對固定,數(shù)據(jù)易被合謀篡改. 文獻(xiàn)[20]采用基于交易哈希值的動態(tài)驗證算法以防止雙花問題,但基于交易哈希值的動態(tài)驗證算法只能識別具有相同交易哈希值的雙花交易,若同一時刻同一數(shù)字資產(chǎn)與不同主體發(fā)生交易,不同主體間的交易哈希值不同,使得基于交易哈希值的動態(tài)驗證算法難以識別交易的輸入是否來自同一數(shù)字資產(chǎn).
本方案基于Ti叉樹構(gòu)造主從多鏈架構(gòu),主從鏈通過哈希值相互鎖定,難以篡改交易內(nèi)容;通過從鏈并發(fā)處理交易,在提升交易速度的同時實現(xiàn)交易的隔離處理;同時采用基于門限簽名改進(jìn)的拜占庭容錯算法避免了兩兩交互,從而將通信復(fù)雜度降為O(n). 另外,門限簽名包含法定人數(shù)投票意愿,其他副本只需驗證一條門限簽名即可對投票結(jié)果的一致性進(jìn)行安全驗證,有效降低了簽名驗證復(fù)雜度.
本文參考聯(lián)盟鏈框架Hyperledger Fabric,利用其多通道及可插拔共識模塊實現(xiàn)樹形主從多鏈的架構(gòu)及其共識算法,同時選用單鏈架構(gòu)下的PBFT 算法作為參照,在同等硬件條件下采用區(qū)塊鏈性能測試工具Caliper 進(jìn)行測試,分別得到本文多鏈共識算法和PBFT 算法的網(wǎng)絡(luò)時延和吞吐量,以此來對比分析算法的性能優(yōu)劣. 所做實驗采用4 GB 內(nèi)存、50 GB 硬盤及Intel(R)i5-6300HQ 處理器的硬件平臺. 由于硬件條件限制,設(shè)置網(wǎng)絡(luò)結(jié)構(gòu)為最小拜占庭系統(tǒng),即每個通道為最小拜占庭系統(tǒng),PBFT 算法和本文算法設(shè)置為同樣大小的網(wǎng)絡(luò)架構(gòu),均包含13 個orderer 共識節(jié)點和一個peer 節(jié)點. 本次實驗用到的3個測試鏈碼如表2所示.
表2 鏈碼接口
實驗采用區(qū)塊鏈性能測試工具Caliper 對3 個測試鏈碼進(jìn)行測試,系統(tǒng)交易數(shù)量設(shè)為500(考慮測試效率,transfer.js 的交易數(shù)設(shè)為250),通過調(diào)整交易發(fā)送速率,來觀察時延和吞吐量的變化. 將交易發(fā)送速率從50 TPS(交易/秒)遞增到100 TPS的網(wǎng)絡(luò)吞吐量和時延結(jié)果制圖(每間隔5 TPS 繪制一個點),橫坐標(biāo)為網(wǎng)絡(luò)吞吐量,縱坐標(biāo)為時延,得到測試鏈碼open.js,transfer.js,delete.js 的吞吐量(Throughput)-時延(Latency)圖,如圖4所示.
圖4 吞吐量-時延圖
從圖4可看出,本文算法有著較高的峰值吞吐量以及較低的時延,而PBFT 算法峰值吞吐量較低、時延較高,具體而言:
(1)本文多鏈系統(tǒng)的峰值吞吐量比PBFT 系統(tǒng)的峰值吞吐量大約高了57%,并且當(dāng)交易發(fā)送速率接近70 TPS 的時候,PBFT 系統(tǒng)基本達(dá)到了峰值吞吐量,而本系統(tǒng)的吞吐量在交易發(fā)送速率接近110 TPS 時才會逐漸達(dá)到峰值;
(2)Caliper測試工具的輸出結(jié)果Avgrage Latency 表示一個交易從進(jìn)入系統(tǒng)到最終寫入?yún)^(qū)塊的時間. 從圖中可以看出,兩個系統(tǒng)的時延都會隨著吞吐量的增加而增加,但本文多鏈系統(tǒng)的時延增長較慢,而PBFT 系統(tǒng)的時延會隨著吞吐量的增加急劇增加.
從上述仿真結(jié)果可以看出,本系統(tǒng)在多節(jié)點高發(fā)送率高交易量的情況下,吞吐量和時延優(yōu)于傳統(tǒng)的PBFT方案.
本文針對現(xiàn)有區(qū)塊鏈性能低下,難以支持多種場景下數(shù)字資產(chǎn)的分類并發(fā)處理、難以實現(xiàn)多鏈共識等問題,首先面向聯(lián)盟鏈提出了一種樹形主從多鏈架構(gòu),該架構(gòu)通過樹形結(jié)構(gòu)將群組切分成多條子鏈,利用子鏈分類并行處理多樣化數(shù)字資產(chǎn)交易,有效解決了現(xiàn)有區(qū)塊鏈吞吐量低下和交易延遲過高等問題. 其次針對樹形結(jié)構(gòu)的主從多鏈架構(gòu),設(shè)計基于門限簽名的拜占庭容錯共識算法解決多樣化數(shù)字資產(chǎn)分類并發(fā)處理帶來的一致性問題,同時設(shè)計視圖轉(zhuǎn)換協(xié)議實現(xiàn)強(qiáng)有力的系統(tǒng)活性保障.