李莎莎,姬永清,羅 盤,劉昊哲
(1.南京理工大學 計算機科學與工程學院,江蘇 南京 210094;2.中國電子科技集團公司第28研究所,江蘇 南京 210007;3.海軍指揮學院,江蘇 南京 211800)
區(qū)塊鏈由中本聰(Satoshi Nakamoto)在有關比特幣的技術論壇[1]上首次提出,作為比特幣的底層技術,其安全性經(jīng)歷了歷史的考驗。區(qū)塊鏈技術通過建立信任關系、重構價值體系,從根本上促進了互聯(lián)網(wǎng)的改變,實現(xiàn)了互聯(lián)網(wǎng)從信息傳遞向價值傳遞的進化。區(qū)塊鏈利用去中心化技術,增強人們對匿名交易的信任,降低監(jiān)管成本,提高數(shù)據(jù)處理的速度[2-3]。由于具有信息透明、不可篡改、可追溯等特性,區(qū)塊鏈技術被廣泛應用于金融、物聯(lián)網(wǎng)、供應鏈、醫(yī)療等眾多領域,真正成為具有顛覆性作用的解決方案[4-6]。
隨著區(qū)塊鏈技術在不同應用領域的逐漸深入,區(qū)塊鏈技術應用從單一的數(shù)字貨幣轉向人類社會的方方面面,區(qū)塊鏈所承載的數(shù)字資產(chǎn)也呈現(xiàn)多元化、復雜化,信息數(shù)量的急速增長對區(qū)塊鏈的性能提出更高的要求。全球區(qū)塊鏈數(shù)量日益增多,鏈與鏈之間不可避免地需要進行數(shù)字資產(chǎn)轉移、跨鏈通信[7-9]。為解決共識機制的性能瓶頸,打破不同區(qū)塊鏈之間的隔閡,各種多鏈、跨鏈、側鏈技術應運而生,對區(qū)塊鏈性能的擴展起到了推動作用[10]。區(qū)塊鏈的跨鏈技術是區(qū)塊鏈實現(xiàn)互聯(lián)互通、提升擴展性的重要技術手段。隨著區(qū)塊鏈應用場景不斷趨于豐富化和復雜化,越來越多的區(qū)塊鏈項目給出跨鏈的解決方案,使得跨鏈技術逐步得到發(fā)展。
2013年5月,NoLan在BitcoinTalk論壇提出了原子轉移(atomic transfers)[11]思路,是實現(xiàn)原子式跨鏈數(shù)字資產(chǎn)交易的最初基礎技術方案。Nolan的技術方案經(jīng)過改進升級后被稱為哈希鎖定,成為跨鏈的一種主要技術手段。比特幣核心開發(fā)者加入的Blockstream公司于2014年10月發(fā)布的白皮書中提出了楔入式側鏈(pegged side chains)[12]的概念,目的是實現(xiàn)不同區(qū)塊鏈資產(chǎn)的跨鏈轉移及在不影響主鏈的情況下實施更多的技術創(chuàng)新。2016年5月,美國區(qū)塊鏈軟件技術公司ConsenSys設計了BTCRelay[13],實現(xiàn)了以太坊對比特幣區(qū)塊鏈數(shù)據(jù)的跨鏈訪問。2016年11月,Wood在Polkadot白皮書[14]中介紹了一種異構的多鏈架構,支持不同共識系統(tǒng)去中心化、去信任地進行交互操作、訪問。2016年12月,Blockstream公司進一步提出強聯(lián)邦側鏈(sidechains with strong federations)的概念[15],在資產(chǎn)交換中引入由多方控制的多重簽名地址,以減少延遲并提升互操作性。
Zcash團隊開發(fā)出交叉鏈原子交易(cross chain atomic trades,XCAT)工具,實現(xiàn)了ZEC和BTC之間的跨鏈原子交易;Bancor基于智能合約構建了一套跨鏈的去中心化流動性網(wǎng)絡,實現(xiàn)沒有對手方的區(qū)塊鏈資產(chǎn)的自動估值和兌換;OneLedger提供一套企業(yè)系統(tǒng)與區(qū)塊鏈系統(tǒng)聯(lián)通的解決方案,通過側鏈接入各類私有鏈、聯(lián)盟鏈和公有鏈,并通過中間協(xié)議層與企業(yè)級系統(tǒng)通信。
現(xiàn)有的多鏈跨鏈技術從形態(tài)上來看,有些是在已有區(qū)塊鏈項目基礎上的改進,實現(xiàn)了有限數(shù)據(jù)互聯(lián);有些提出了一套通信協(xié)議,以實現(xiàn)區(qū)塊鏈間的通信;有些通過新的系統(tǒng)架構和運行模式,支持不同區(qū)塊鏈的接入??偟膩砜矗珂溂夹g仍處于初期發(fā)展過程中,跨鏈的推廣應用需要達成更廣泛的共識,尤其是設計多區(qū)塊鏈架構下的共識機制。
對于共識機制性能的擴展,許多學者對其展開了研究。Joseph等人[16]提出閃電網(wǎng)絡的概念,通過建立直接或間接的支付通道,實現(xiàn)鏈上交易資金與鏈下交易過程管理,提高了比特幣區(qū)塊鏈交易的吞吐量,但無法保證線下交易的真實性,破壞了區(qū)塊鏈可追溯的優(yōu)勢。Yoad等人[17]實現(xiàn)一種利用有向無環(huán)圖(directed acyclic graph,DAG)建立區(qū)塊的方式,以提高區(qū)塊鏈交易的吞吐量,但該方案只適用于單鏈架構,對于多數(shù)字資產(chǎn)的混合型交易處理模式并不適用。Elastico等人[18]利用分片技術實現(xiàn)網(wǎng)絡分割,每個部分并行地進行交易處理,但在進行復雜交易時,由于難以驗證容易達到性能瓶頸。
文中重在研究一種主從多鏈架構下的集成共識機制,集成共識機制運行在主鏈網(wǎng)絡中,包含個體共識機制與元共識機制。個體共識機制負責對從鏈區(qū)塊進行共識,元共識機制則是對多個個體共識的結果進行共識。集成共識機制實現(xiàn)了多條從鏈區(qū)塊中數(shù)據(jù)的并行驗證,提高了數(shù)據(jù)的處理速度,保證主鏈區(qū)塊的生成效率。
文中提出的針對主從多鏈的集成共識機制從以下兩方面看具有創(chuàng)新性與優(yōu)勢:
(1)統(tǒng)計方面:由于從鏈上傳的區(qū)塊信息十分龐大,使用單一共識機制會導致性能不佳。多個共識機制并行處理可以加快信息處理速度,保證交易信息的及時處理;
(2)安全性:經(jīng)集成共識機制驗證后的數(shù)據(jù)較單一共識而言具備更高的可信度,修改區(qū)塊歷史的難度更大,大幅度提高了區(qū)塊鏈的安全性。
文中研究的主從多鏈結構,現(xiàn)給出如下定義:
主鏈:系統(tǒng)生成的第一條鏈,負責從鏈的確認工作,保證從鏈能夠良好運行。
從鏈:利用側鏈技術對主鏈進行延伸創(chuàng)建的區(qū)塊鏈。若鏈為主鏈的延伸,則被稱為一級從鏈;若為一級從鏈的延伸,則被稱為二級從鏈,以此類推。被延伸的鏈稱為父鏈,延伸的側鏈稱為子鏈。一條父鏈可以擁有多個子鏈,而一條子鏈只會擁有一個父鏈。
命名空間:用于唯一區(qū)分每條鏈的字符串。
主從多鏈模型采用一條主鏈、多條從鏈的方式完成主從多鏈的搭建,每條從鏈按照命名空間進行分類。在同一命名空間中,從鏈節(jié)點處理相同類型的交易;不同命名空間的從鏈將區(qū)塊上傳至主鏈,由主鏈節(jié)點進行驗證。主從多鏈結構如圖1所示。
圖1 主從多鏈樹形結構
集成共識機制運行在主鏈網(wǎng)絡中,采用先經(jīng)多種共識機制的共識后,對共識的結果再次進行一輪共識的方式。首先進行的共識稱為“個體共識機制”,對共識結果進行共識稱為“元共識機制”。集成共識通過構建并結合多種共識機制共同完成共識任務,可獲得比單一共識機制更優(yōu)越的處理性能和安全性。利用并行的多種共識機制作為個體共識機制,保證了主鏈在處理從鏈交易時的高效性。主鏈中的元共識機制對個體共識的結果進行驗證,提高了主鏈區(qū)塊的安全性。集成共識機制能夠組合各種不同的共識結果,且不限于特定的鏈結構。
1.2.1 集成共識DAG結構
主從多鏈中的從鏈采用PoS共識機制產(chǎn)生區(qū)塊,從鏈產(chǎn)生區(qū)塊之后,選擇代表節(jié)點將其上傳至主鏈中。主鏈首先利用“個體共識機制”對從鏈區(qū)塊進行認證,產(chǎn)生微區(qū)塊。微區(qū)塊指向多個從鏈的區(qū)塊。經(jīng)過“元共識機制”認證后,主鏈區(qū)塊中產(chǎn)生一個區(qū)塊對指向多個微區(qū)塊。如圖2所示,從鏈區(qū)塊、微區(qū)塊、主鏈區(qū)塊組成金字塔形的有向無環(huán)圖(DAG)結構。
圖2 主從多鏈區(qū)塊DAG結構
1.2.2 多簽名上傳區(qū)塊算法
從鏈在上傳區(qū)塊信息時,需要讓多個代表節(jié)點多重簽名后再進行上傳。主鏈中的節(jié)點在接受到從鏈信息后,對從鏈中的多重簽名進行驗證。
從鏈區(qū)塊生成后,區(qū)塊生成者利用所有代表節(jié)點的公鑰生成待簽名區(qū)塊,并將其發(fā)送給所有代表節(jié)點,具體的節(jié)點使用多重簽名上傳區(qū)塊的步驟如算法1所示。若超過半數(shù)的代表節(jié)點進行簽名后,區(qū)塊生成者將已簽名的區(qū)塊發(fā)送至從鏈網(wǎng)絡中,代表節(jié)點在接收到這個區(qū)塊后,將該區(qū)塊發(fā)送至主鏈中。
算法1:多重簽名上傳算法。
輸入:周期內的最新區(qū)塊B,未打包的交易集合TX,區(qū)塊生產(chǎn)者U,代表節(jié)點的集合S={U1,U2,…,Un}
輸出:需要上傳給父鏈的區(qū)塊B'
1:U產(chǎn)生未簽名信息B0←{B,TX};
2:U統(tǒng)計代表節(jié)點公鑰,產(chǎn)生待簽名信息B1←Block{B0,S};
3:U將待簽名信息B1發(fā)送給所有代表節(jié)點{U1,U2,…,Un};
4:各個代表節(jié)點Ui收到B1后用私鑰SKi簽名,Bi←Sign{B1,SKi};
5:代表節(jié)點Ui將簽名結果Bi發(fā)送給節(jié)點U;
6:U等待接收的簽名數(shù)量大于n/2后,生成區(qū)塊B'←Pack{B1,B2,…,Bn}。
1.2.3 個體共識機制
主鏈上的節(jié)點首先對一級從鏈上傳的區(qū)塊信息進行個體共識,每個節(jié)點會創(chuàng)建一個區(qū)塊,這種經(jīng)過個體共識機制產(chǎn)生的區(qū)塊命名為微區(qū)塊,區(qū)塊中包含多個一級從鏈上傳的區(qū)塊信息。微區(qū)塊中還包含多種PoW(proof of work)計算的結果,不同的PoW計算采用不同的哈希算法,如SHA256,ETHASH、X11等。節(jié)點基于自己擁有的算力等資源自主選擇幾種哈希算法進行PoW計算,并將計算成功的結果加入到微區(qū)塊當中,具體如算法2所示。
算法2:微區(qū)塊生成算法。
輸入:多個從鏈區(qū)塊的集合BlockSet=[B1,B2,…,Bn]點公鑰Pub,節(jié)點選擇的算法組HashSet=[H1,H2,…,HX]
輸出:主鏈微區(qū)塊W
1.W0=Genrate(BlockSet,Pub)
2.foreachHiin HashSet
3.r←random number
4.whileHi(W0,r)>target
5.dor←r+1
6.end
7.proofi←r
8.end
9.W←Pack(W0,proof1,proof2,…,proofX}
10.returnW
節(jié)點要求微區(qū)塊需要完成多個PoW共識之后才會接受。節(jié)點接收到微區(qū)塊后,會驗證微區(qū)塊是否完成了節(jié)點要求的全部PoW算法,若完成,則作為元共識機制的輸入進行下一步操作。若未完成,則拒絕該微區(qū)塊。個體共識算法要求生成區(qū)塊的節(jié)點和驗證區(qū)塊的節(jié)點均選擇多種算法。若區(qū)塊中完成共識的數(shù)量較多,則更多的節(jié)點愿意接受該區(qū)塊,但哈希的計算時間會比較長,晚于其他節(jié)點發(fā)布區(qū)塊。若完成數(shù)量少,則區(qū)塊生成時間較短,但生成的區(qū)塊滿足驗證節(jié)點算法要求的幾率較低。
1.2.4 元共識機制
節(jié)點在接收到所有的微區(qū)塊,驗證微區(qū)塊滿足算法要求后,會對微區(qū)塊進行拆包,提取出包含的從鏈區(qū)塊的信息。超過半數(shù)個體區(qū)塊打包過的從鏈區(qū)塊信息會被打包進該節(jié)點生成的主鏈區(qū)塊中。假定主鏈網(wǎng)絡中包含了T個節(jié)點進行個體共識機制{h1,h2,…,hT}于N個一級從鏈上傳的從鏈區(qū)塊信息的集合{c1,c2,…,cN}個體cj來說,有:
所有節(jié)點生成主區(qū)塊后,將區(qū)塊在網(wǎng)絡中進行廣播。利用PoS共識機制作為主鏈的共識機制,決定主鏈區(qū)塊的生成。假定主鏈網(wǎng)絡中包含了N個節(jié)點進行元共識機制{m1,m2,…,mN}中mi從鏈交易的集合x的判斷結果為mi(x),最終結果M(x)為:
其中,S表示主鏈網(wǎng)絡中隨機挑選的10%的節(jié)點集合,wi表示hi在主鏈網(wǎng)絡中的權益。
wi取決于節(jié)點對于主鏈網(wǎng)絡的貢獻度。節(jié)點在主鏈網(wǎng)絡中最終被接受的區(qū)塊越多,wi越大。
在主從多鏈集成共識中,結合了PoW共識機制和PoS共識機制,現(xiàn)分析針對PoW共識機制與PoS共識機制的多種攻擊方式對文中提出的主從多鏈集成共識機制的影響。
(1)自私挖礦攻擊。
自私挖礦攻擊的主要手段是攻擊者成功挖到區(qū)塊后不進行廣播,而是繼續(xù)進行挖礦,之后通過有選擇性地公布區(qū)塊,構造一條由攻擊者自己控制的分叉。在主從多鏈集成共識機制中,區(qū)塊生成操作每周期進行一次。每次生成一個區(qū)塊,節(jié)點即使隱藏新塊,在真正確立主鏈區(qū)塊之前,無法進行下一步操作。攻擊者隱藏區(qū)塊會使其他節(jié)點產(chǎn)生的區(qū)塊被區(qū)塊鏈網(wǎng)絡所接受,從而失去挖礦獎勵。因此,攻擊者無法通過自私挖礦攻擊獲利,反而會減少其收益。
(2)無利害關系攻擊。
無利害關系攻擊會導致多條分叉并駕齊驅,鏈中節(jié)點無法對主鏈達成共識,極大地影響區(qū)塊鏈的可用性。在主從多鏈集成共識的元共識機制中,節(jié)點使用PoS共識機制選擇一個節(jié)點進行主鏈區(qū)塊的生成。主鏈區(qū)塊可以指向多個微區(qū)塊,元共識機制中的節(jié)點可以選擇讓從鏈區(qū)塊包含所有的微區(qū)塊并獲取所有微區(qū)塊的獎勵,不需要進行分叉以保持優(yōu)勢。
(3)雙重支付攻擊。
攻擊者進行雙重支付攻擊的目的是為取消其先前發(fā)布的交易信息。在主從多鏈中,主鏈只進行從鏈區(qū)塊的驗證,沒有權益或通證的存在,因此攻擊者不會對主鏈采取雙重支付攻擊。
(4)長程攻擊。
長程攻擊能夠實施的主要原因是在PoS共識機制中,節(jié)點在生成區(qū)塊時可以幾乎不耗費資源。而主從多鏈集成共識中,節(jié)點需要進行哈希算法生成微區(qū)塊。因此,節(jié)點無法立刻創(chuàng)建出超過正常鏈長度的分叉鏈,長程攻擊無法實施。
文中使用以太坊代碼并對其進行修改以搭建主從多鏈模型。采用go-ethereum1.11版本,執(zhí)行環(huán)境為Ubuntu 16.04LTS。實驗運行在4臺電腦組成的局域網(wǎng)中,具體配置為內存>4 GB、硬盤>30 GB、Intel i5、主頻>2.9 GHz。每臺電腦中運行了5個節(jié)點,總計20個節(jié)點組成主從多鏈網(wǎng)絡。實驗為測試主從多鏈架構中事務的處理速度,盡可能多地向節(jié)點發(fā)送交易,驗證節(jié)點能否快速進行交易打包。
由于區(qū)塊鏈網(wǎng)絡采用分布式架構,每個節(jié)點會單獨進行區(qū)塊生成,節(jié)點的數(shù)量不會對網(wǎng)絡整體的TPS產(chǎn)生較大影響,因此網(wǎng)絡的出塊速度不會由于節(jié)點數(shù)量的改變產(chǎn)生較大變化。一共進行了100輪共識,實驗結果如圖3所示。對于使用PoW共識機制的以太坊而言,TPS平均值在35左右。在主從多鏈的共識機制中,單條從鏈的TPS在52附近上下波動,而主鏈集成共識機制在飽和的情況下,TPS能夠達到40。由于主鏈中只保存了從鏈區(qū)塊的信息摘要,信息處理需求小于從鏈,因而主鏈的共識機制不會對從鏈的事務處理速度造成大幅度影響。
圖3 從鏈與以太坊TPS對比
文中提出了一種區(qū)塊鏈集成共識機制,為主從多鏈模型提供區(qū)塊安全性驗證。利用并行計算的多種共識機制作為個體共識機制,保證了主鏈在處理從鏈事務時的效率和完整性。主鏈中的元共識機制對個體共識機制進行認證,提高了主鏈區(qū)塊的安全性。通過多種安全性分析,證明了提出的針對主從多鏈的集成共識機制較單一共識機制具有更高的安全性。實驗結果證明,提出的主從多鏈集成共識機制相較于單一PoW共識的以太坊具有良好的交易處理性能。未來工作將著重于設計合理的從鏈代表節(jié)點選舉算法,實現(xiàn)安全可靠的主從鏈通信過程。