李莎莎,姬永清,羅 盤,劉昊哲
(1.南京理工大學 計算機科學與工程學院,江蘇 南京 210094;2.中國電子科技集團公司第28研究所,江蘇 南京 210007;3.海軍指揮學院,江蘇 南京 211800)
區塊鏈由中本聰(Satoshi Nakamoto)在有關比特幣的技術論壇[1]上首次提出,作為比特幣的底層技術,其安全性經歷了歷史的考驗。區塊鏈技術通過建立信任關系、重構價值體系,從根本上促進了互聯網的改變,實現了互聯網從信息傳遞向價值傳遞的進化。區塊鏈利用去中心化技術,增強人們對匿名交易的信任,降低監管成本,提高數據處理的速度[2-3]。由于具有信息透明、不可篡改、可追溯等特性,區塊鏈技術被廣泛應用于金融、物聯網、供應鏈、醫療等眾多領域,真正成為具有顛覆性作用的解決方案[4-6]。
隨著區塊鏈技術在不同應用領域的逐漸深入,區塊鏈技術應用從單一的數字貨幣轉向人類社會的方方面面,區塊鏈所承載的數字資產也呈現多元化、復雜化,信息數量的急速增長對區塊鏈的性能提出更高的要求。全球區塊鏈數量日益增多,鏈與鏈之間不可避免地需要進行數字資產轉移、跨鏈通信[7-9]。為解決共識機制的性能瓶頸,打破不同區塊鏈之間的隔閡,各種多鏈、跨鏈、側鏈技術應運而生,對區塊鏈性能的擴展起到了推動作用[10]。區塊鏈的跨鏈技術是區塊鏈實現互聯互通、提升擴展性的重要技術手段。隨著區塊鏈應用場景不斷趨于豐富化和復雜化,越來越多的區塊鏈項目給出跨鏈的解決方案,使得跨鏈技術逐步得到發展。
2013年5月,NoLan在BitcoinTalk論壇提出了原子轉移(atomic transfers)[11]思路,是實現原子式跨鏈數字資產交易的最初基礎技術方案。Nolan的技術方案經過改進升級后被稱為哈希鎖定,成為跨鏈的一種主要技術手段。比特幣核心開發者加入的Blockstream公司于2014年10月發布的白皮書中提出了楔入式側鏈(pegged side chains)[12]的概念,目的是實現不同區塊鏈資產的跨鏈轉移及在不影響主鏈的情況下實施更多的技術創新。2016年5月,美國區塊鏈軟件技術公司ConsenSys設計了BTCRelay[13],實現了以太坊對比特幣區塊鏈數據的跨鏈訪問。2016年11月,Wood在Polkadot白皮書[14]中介紹了一種異構的多鏈架構,支持不同共識系統去中心化、去信任地進行交互操作、訪問。2016年12月,Blockstream公司進一步提出強聯邦側鏈(sidechains with strong federations)的概念[15],在資產交換中引入由多方控制的多重簽名地址,以減少延遲并提升互操作性。
Zcash團隊開發出交叉鏈原子交易(cross chain atomic trades,XCAT)工具,實現了ZEC和BTC之間的跨鏈原子交易;Bancor基于智能合約構建了一套跨鏈的去中心化流動性網絡,實現沒有對手方的區塊鏈資產的自動估值和兌換;OneLedger提供一套企業系統與區塊鏈系統聯通的解決方案,通過側鏈接入各類私有鏈、聯盟鏈和公有鏈,并通過中間協議層與企業級系統通信。
現有的多鏈跨鏈技術從形態上來看,有些是在已有區塊鏈項目基礎上的改進,實現了有限數據互聯;有些提出了一套通信協議,以實現區塊鏈間的通信;有些通過新的系統架構和運行模式,支持不同區塊鏈的接入。總的來看,跨鏈技術仍處于初期發展過程中,跨鏈的推廣應用需要達成更廣泛的共識,尤其是設計多區塊鏈架構下的共識機制。
對于共識機制性能的擴展,許多學者對其展開了研究。Joseph等人[16]提出閃電網絡的概念,通過建立直接或間接的支付通道,實現鏈上交易資金與鏈下交易過程管理,提高了比特幣區塊鏈交易的吞吐量,但無法保證線下交易的真實性,破壞了區塊鏈可追溯的優勢。Yoad等人[17]實現一種利用有向無環圖(directed acyclic graph,DAG)建立區塊的方式,以提高區塊鏈交易的吞吐量,但該方案只適用于單鏈架構,對于多數字資產的混合型交易處理模式并不適用。Elastico等人[18]利用分片技術實現網絡分割,每個部分并行地進行交易處理,但在進行復雜交易時,由于難以驗證容易達到性能瓶頸。
文中重在研究一種主從多鏈架構下的集成共識機制,集成共識機制運行在主鏈網絡中,包含個體共識機制與元共識機制。個體共識機制負責對從鏈區塊進行共識,元共識機制則是對多個個體共識的結果進行共識。集成共識機制實現了多條從鏈區塊中數據的并行驗證,提高了數據的處理速度,保證主鏈區塊的生成效率。
文中提出的針對主從多鏈的集成共識機制從以下兩方面看具有創新性與優勢:
(1)統計方面:由于從鏈上傳的區塊信息十分龐大,使用單一共識機制會導致性能不佳。多個共識機制并行處理可以加快信息處理速度,保證交易信息的及時處理;
(2)安全性:經集成共識機制驗證后的數據較單一共識而言具備更高的可信度,修改區塊歷史的難度更大,大幅度提高了區塊鏈的安全性。
文中研究的主從多鏈結構,現給出如下定義:
主鏈:系統生成的第一條鏈,負責從鏈的確認工作,保證從鏈能夠良好運行。
從鏈:利用側鏈技術對主鏈進行延伸創建的區塊鏈。若鏈為主鏈的延伸,則被稱為一級從鏈;若為一級從鏈的延伸,則被稱為二級從鏈,以此類推。被延伸的鏈稱為父鏈,延伸的側鏈稱為子鏈。一條父鏈可以擁有多個子鏈,而一條子鏈只會擁有一個父鏈。
命名空間:用于唯一區分每條鏈的字符串。
主從多鏈模型采用一條主鏈、多條從鏈的方式完成主從多鏈的搭建,每條從鏈按照命名空間進行分類。在同一命名空間中,從鏈節點處理相同類型的交易;不同命名空間的從鏈將區塊上傳至主鏈,由主鏈節點進行驗證。主從多鏈結構如圖1所示。

圖1 主從多鏈樹形結構
集成共識機制運行在主鏈網絡中,采用先經多種共識機制的共識后,對共識的結果再次進行一輪共識的方式。首先進行的共識稱為“個體共識機制”,對共識結果進行共識稱為“元共識機制”。集成共識通過構建并結合多種共識機制共同完成共識任務,可獲得比單一共識機制更優越的處理性能和安全性。利用并行的多種共識機制作為個體共識機制,保證了主鏈在處理從鏈交易時的高效性。主鏈中的元共識機制對個體共識的結果進行驗證,提高了主鏈區塊的安全性。集成共識機制能夠組合各種不同的共識結果,且不限于特定的鏈結構。
1.2.1 集成共識DAG結構
主從多鏈中的從鏈采用PoS共識機制產生區塊,從鏈產生區塊之后,選擇代表節點將其上傳至主鏈中。主鏈首先利用“個體共識機制”對從鏈區塊進行認證,產生微區塊。微區塊指向多個從鏈的區塊。經過“元共識機制”認證后,主鏈區塊中產生一個區塊對指向多個微區塊。如圖2所示,從鏈區塊、微區塊、主鏈區塊組成金字塔形的有向無環圖(DAG)結構。

圖2 主從多鏈區塊DAG結構
1.2.2 多簽名上傳區塊算法
從鏈在上傳區塊信息時,需要讓多個代表節點多重簽名后再進行上傳。主鏈中的節點在接受到從鏈信息后,對從鏈中的多重簽名進行驗證。
從鏈區塊生成后,區塊生成者利用所有代表節點的公鑰生成待簽名區塊,并將其發送給所有代表節點,具體的節點使用多重簽名上傳區塊的步驟如算法1所示。若超過半數的代表節點進行簽名后,區塊生成者將已簽名的區塊發送至從鏈網絡中,代表節點在接收到這個區塊后,將該區塊發送至主鏈中。
算法1:多重簽名上傳算法。
輸入:周期內的最新區塊B,未打包的交易集合TX,區塊生產者U,代表節點的集合S={U1,U2,…,Un}
輸出:需要上傳給父鏈的區塊B'
1:U產生未簽名信息B0←{B,TX};
2:U統計代表節點公鑰,產生待簽名信息B1←Block{B0,S};
3:U將待簽名信息B1發送給所有代表節點{U1,U2,…,Un};
4:各個代表節點Ui收到B1后用私鑰SKi簽名,Bi←Sign{B1,SKi};
5:代表節點Ui將簽名結果Bi發送給節點U;
6:U等待接收的簽名數量大于n/2后,生成區塊B'←Pack{B1,B2,…,Bn}。
1.2.3 個體共識機制
主鏈上的節點首先對一級從鏈上傳的區塊信息進行個體共識,每個節點會創建一個區塊,這種經過個體共識機制產生的區塊命名為微區塊,區塊中包含多個一級從鏈上傳的區塊信息。微區塊中還包含多種PoW(proof of work)計算的結果,不同的PoW計算采用不同的哈希算法,如SHA256,ETHASH、X11等。節點基于自己擁有的算力等資源自主選擇幾種哈希算法進行PoW計算,并將計算成功的結果加入到微區塊當中,具體如算法2所示。
算法2:微區塊生成算法。
輸入:多個從鏈區塊的集合BlockSet=[B1,B2,…,Bn]點公鑰Pub,節點選擇的算法組HashSet=[H1,H2,…,HX]
輸出:主鏈微區塊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
節點要求微區塊需要完成多個PoW共識之后才會接受。節點接收到微區塊后,會驗證微區塊是否完成了節點要求的全部PoW算法,若完成,則作為元共識機制的輸入進行下一步操作。若未完成,則拒絕該微區塊。個體共識算法要求生成區塊的節點和驗證區塊的節點均選擇多種算法。若區塊中完成共識的數量較多,則更多的節點愿意接受該區塊,但哈希的計算時間會比較長,晚于其他節點發布區塊。若完成數量少,則區塊生成時間較短,但生成的區塊滿足驗證節點算法要求的幾率較低。
1.2.4 元共識機制
節點在接收到所有的微區塊,驗證微區塊滿足算法要求后,會對微區塊進行拆包,提取出包含的從鏈區塊的信息。超過半數個體區塊打包過的從鏈區塊信息會被打包進該節點生成的主鏈區塊中。假定主鏈網絡中包含了T個節點進行個體共識機制{h1,h2,…,hT}于N個一級從鏈上傳的從鏈區塊信息的集合{c1,c2,…,cN}個體cj來說,有:

所有節點生成主區塊后,將區塊在網絡中進行廣播。利用PoS共識機制作為主鏈的共識機制,決定主鏈區塊的生成。假定主鏈網絡中包含了N個節點進行元共識機制{m1,m2,…,mN}中mi從鏈交易的集合x的判斷結果為mi(x),最終結果M(x)為:
其中,S表示主鏈網絡中隨機挑選的10%的節點集合,wi表示hi在主鏈網絡中的權益。

wi取決于節點對于主鏈網絡的貢獻度。節點在主鏈網絡中最終被接受的區塊越多,wi越大。
在主從多鏈集成共識中,結合了PoW共識機制和PoS共識機制,現分析針對PoW共識機制與PoS共識機制的多種攻擊方式對文中提出的主從多鏈集成共識機制的影響。
(1)自私挖礦攻擊。
自私挖礦攻擊的主要手段是攻擊者成功挖到區塊后不進行廣播,而是繼續進行挖礦,之后通過有選擇性地公布區塊,構造一條由攻擊者自己控制的分叉。在主從多鏈集成共識機制中,區塊生成操作每周期進行一次。每次生成一個區塊,節點即使隱藏新塊,在真正確立主鏈區塊之前,無法進行下一步操作。攻擊者隱藏區塊會使其他節點產生的區塊被區塊鏈網絡所接受,從而失去挖礦獎勵。因此,攻擊者無法通過自私挖礦攻擊獲利,反而會減少其收益。
(2)無利害關系攻擊。
無利害關系攻擊會導致多條分叉并駕齊驅,鏈中節點無法對主鏈達成共識,極大地影響區塊鏈的可用性。在主從多鏈集成共識的元共識機制中,節點使用PoS共識機制選擇一個節點進行主鏈區塊的生成。主鏈區塊可以指向多個微區塊,元共識機制中的節點可以選擇讓從鏈區塊包含所有的微區塊并獲取所有微區塊的獎勵,不需要進行分叉以保持優勢。
(3)雙重支付攻擊。
攻擊者進行雙重支付攻擊的目的是為取消其先前發布的交易信息。在主從多鏈中,主鏈只進行從鏈區塊的驗證,沒有權益或通證的存在,因此攻擊者不會對主鏈采取雙重支付攻擊。
(4)長程攻擊。
長程攻擊能夠實施的主要原因是在PoS共識機制中,節點在生成區塊時可以幾乎不耗費資源。而主從多鏈集成共識中,節點需要進行哈希算法生成微區塊。因此,節點無法立刻創建出超過正常鏈長度的分叉鏈,長程攻擊無法實施。
文中使用以太坊代碼并對其進行修改以搭建主從多鏈模型。采用go-ethereum1.11版本,執行環境為Ubuntu 16.04LTS。實驗運行在4臺電腦組成的局域網中,具體配置為內存>4 GB、硬盤>30 GB、Intel i5、主頻>2.9 GHz。每臺電腦中運行了5個節點,總計20個節點組成主從多鏈網絡。實驗為測試主從多鏈架構中事務的處理速度,盡可能多地向節點發送交易,驗證節點能否快速進行交易打包。
由于區塊鏈網絡采用分布式架構,每個節點會單獨進行區塊生成,節點的數量不會對網絡整體的TPS產生較大影響,因此網絡的出塊速度不會由于節點數量的改變產生較大變化。一共進行了100輪共識,實驗結果如圖3所示。對于使用PoW共識機制的以太坊而言,TPS平均值在35左右。在主從多鏈的共識機制中,單條從鏈的TPS在52附近上下波動,而主鏈集成共識機制在飽和的情況下,TPS能夠達到40。由于主鏈中只保存了從鏈區塊的信息摘要,信息處理需求小于從鏈,因而主鏈的共識機制不會對從鏈的事務處理速度造成大幅度影響。

圖3 從鏈與以太坊TPS對比
文中提出了一種區塊鏈集成共識機制,為主從多鏈模型提供區塊安全性驗證。利用并行計算的多種共識機制作為個體共識機制,保證了主鏈在處理從鏈事務時的效率和完整性。主鏈中的元共識機制對個體共識機制進行認證,提高了主鏈區塊的安全性。通過多種安全性分析,證明了提出的針對主從多鏈的集成共識機制較單一共識機制具有更高的安全性。實驗結果證明,提出的主從多鏈集成共識機制相較于單一PoW共識的以太坊具有良好的交易處理性能。未來工作將著重于設計合理的從鏈代表節點選舉算法,實現安全可靠的主從鏈通信過程。