許 倩,翟健宏
(1 哈爾濱工業(yè)大學(xué) 計算學(xué)部 哈爾濱 150001;2 哈爾濱工業(yè)大學(xué) 計算學(xué)部網(wǎng)絡(luò)空間安全系,哈爾濱 150001)
2009 年,比特幣作為第一種虛擬貨幣誕生,標(biāo)志著區(qū)塊鏈技術(shù)在金融領(lǐng)域首次得到正式應(yīng)用。比特幣交易是建立在P2P 網(wǎng)絡(luò)的基礎(chǔ)上,在比特幣系統(tǒng)中,通過挖礦創(chuàng)建區(qū)塊鏈,礦工將交易打包進(jìn)區(qū)塊,使得已付款的交易變成“確認(rèn)”狀態(tài)以獲取信賴。依據(jù)其不同架構(gòu),區(qū)塊鏈的發(fā)展可分為3 個階段:第一階段是比特幣區(qū)塊鏈,該階段以數(shù)字加密貨幣區(qū)為主要特征,旨在使任何兩個區(qū)塊鏈帳戶能夠順利地進(jìn)行節(jié)點對點的業(yè)務(wù)而無需第三方中介機構(gòu);第二階段是以太坊區(qū)塊鏈,該階段以智能合約為主要特征,其特點是使用以太坊虛擬機(EVM)對區(qū)塊鏈進(jìn)行復(fù)雜算法的編程,通過編寫智能合約使得區(qū)塊鏈可以在電子貨幣之外的更豐富場景中得到應(yīng)用;第三階段是超越貨幣、金融范圍的區(qū)塊鏈應(yīng)用,這一階段區(qū)塊鏈充分融入人們的生產(chǎn)和生活,可被稱為區(qū)塊鏈時代。
2021 年10 月28 日,在Facebook Connect 大會上Facebook 首席執(zhí)行官馬克·扎克伯格宣布將Facebook 更名為“Meta”,來源于“元宇宙”,稱要在5年內(nèi)轉(zhuǎn)型成為一家元宇宙公司。2021 年9 月16日,清華大學(xué)新聞與傳播學(xué)院新媒體研究中心發(fā)布了《2020 年—2021 年元宇宙發(fā)展研究報告》,將“區(qū)塊鏈”作為元宇宙的底層架構(gòu)之一,在區(qū)塊鏈框架下搭建社交平臺、經(jīng)濟平臺,并結(jié)合UGC 搭建內(nèi)容平臺。這表明,在元宇宙元年的2021 年,區(qū)塊鏈將迎來一個發(fā)展的熱潮。
由于區(qū)塊鏈技術(shù)構(gòu)建的是若干個彼此隔離、無法通訊的完全單獨的網(wǎng)絡(luò),所以每個節(jié)點也無法全部處在同一個網(wǎng)絡(luò)中。除了公共鏈?zhǔn)强梢詮V泛共存的,私人鏈和聯(lián)盟鏈可以支持各個組織都擁有各自的區(qū)塊鏈,甚至在一個組織內(nèi)部也能夠同時運行多條區(qū)塊鏈,所以這些區(qū)塊鏈可以彼此獨立,在單獨屬于自身的網(wǎng)絡(luò)中工作。但是由于區(qū)塊鏈技術(shù)應(yīng)用場景不斷豐富和復(fù)雜,各個區(qū)塊鏈網(wǎng)絡(luò)間往往彼此隔離,從而導(dǎo)致塊鏈間無法有效跨鏈操作,這使得通過區(qū)塊鏈技術(shù)實現(xiàn)全球價值互聯(lián)甚至是全球范圍內(nèi)的“元宇宙”的愿望難以實現(xiàn)。目前學(xué)術(shù)界有許多跨鏈技術(shù)的設(shè)計方案,但大多都有中心化或易受到攻擊等各種風(fēng)險,很難將其在實際中應(yīng)用。在區(qū)塊鏈跨鏈技術(shù)尚未成熟的今天,距離達(dá)到區(qū)塊鏈技術(shù)的大規(guī)模落地應(yīng)用的目標(biāo)還有一段距離。
本項目在研究已有的跨鏈技術(shù)的基礎(chǔ)上,旨在提出一種新的跨鏈共識算法,結(jié)合信任度評價的思想,設(shè)計一個可行的跨鏈數(shù)據(jù)整合方案并對方案的實施進(jìn)行實驗分析,為跨鏈技術(shù)的研究提供新的解決思路和實踐基礎(chǔ)。
Ripple 實驗室于2012 年提出了Interledger 協(xié)議,并在2015 年11 月發(fā)布Interledger 白皮書[1]。Interledger 協(xié)議(ILP)作為跨鏈解決方案公證人機制的代表,解決了區(qū)塊鏈不同賬本之間的協(xié)同問題。ILP 協(xié)議支持賬本之間的安全轉(zhuǎn)移,并允許在兩個賬本上的任何賬戶成員之間創(chuàng)建連接。2013 年Herlihy[2]提出了原子交換的基本理念,原子交換是一種支持不同區(qū)塊鏈網(wǎng)絡(luò)之間資產(chǎn)快速交換的技術(shù)?!霸印贝砹私灰椎囊恢滦?,因此原子交換將交易劃分為兩種類型:完全成功或完全失敗。2014年BlockSream 提出了側(cè)鏈機制,通過雙向楔入技術(shù),一筆資產(chǎn)進(jìn)行交易時首先在主鏈上鎖定,確認(rèn)無誤后在側(cè)鏈上釋放,以此實現(xiàn)價值的跨鏈轉(zhuǎn)移。2016 年Cosmos[3]被提出,基于建立區(qū)塊鏈互聯(lián)網(wǎng)的構(gòu)想,使用Tendermint 共識引擎和IBC 協(xié)議構(gòu)建出一個支持異構(gòu)區(qū)塊鏈接入并進(jìn)行互操作的網(wǎng)絡(luò)。2017 年Block Collider 項目構(gòu)建了在多個區(qū)塊鏈塊集上的高速分布式賬本,將這些鏈集成在一起并支持許多跨鏈功能。在區(qū)塊生成上,BlockCollider 的每個塊都引用每個橋接鏈的頭塊——這個元組被稱為“基元組”,以此來統(tǒng)一每個橋接鏈上的最新區(qū)塊,并在PoW 的基礎(chǔ)上設(shè)計了一種基于字符串編輯距離的Proof of Distance 共識算法來提高挖礦效率。
雖然國內(nèi)對區(qū)塊鏈跨鏈技術(shù)的研究起步較晚,但是近幾年也產(chǎn)生很多優(yōu)秀的研究方案,給予了國內(nèi)研究者很大的信心和鼓勵。2018 年,張詩童、秦波和鄭海彬[4]基于哈希鎖定技術(shù)提出了一個多方跨鏈協(xié)議,協(xié)議依據(jù)圖的搜索策略設(shè)計了“邊著色”自動撮合交易算法,同時提出一種價格磋商機制,解決了多方跨鏈資產(chǎn)的清結(jié)算問題;2019 年,趙濤等[5]借鑒路由器特點,提出了一個基于聚類簇中心的共識跨鏈交換模型;李莎莎等[6]針對主從多鏈,利用邏輯回歸設(shè)計了基于信譽度的智能合約;2021年戴炳榮等[7],通過改進(jìn)Google 用于網(wǎng)頁重要性評價的PageRank 算法,提出跨鏈公證人機制評價模型;同年,謝家貴等[8]提出了一種基于星火區(qū)塊鏈的跨鏈機制,設(shè)計了一種主鏈可以接入兩種類型的子鏈:同構(gòu)子鏈和異構(gòu)子鏈的新型主子鏈架構(gòu),并通過骨干節(jié)點執(zhí)行中繼合約完成跨鏈通信;2020 年10月,杭州趣鏈科技有限公司聯(lián)合浙江大學(xué)計算機科學(xué)與技術(shù)學(xué)院共同提出了兼容異構(gòu)區(qū)塊鏈的通用跨鏈協(xié)議IBTP,并研發(fā)了一個基于側(cè)鏈中繼的異構(gòu)區(qū)塊鏈互操作平臺BitXHub[9]。
對區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行拓?fù)浜徒?,如圖1 所示。假設(shè)i為區(qū)塊鏈編號,則集合Li代表區(qū)塊鏈賬本中屬于鏈i的一個節(jié)點集,Li ={pi1,pi2…,pin},其中pin表示鏈i中的節(jié)點。圖1 中有3 條區(qū)塊鏈,其節(jié)點集為 {L1,L2,L3};區(qū)塊鏈之間的跨鏈操作即節(jié)點集之間的互操作和數(shù)據(jù)訪問,即Li跨鏈向Lj發(fā)送或接受數(shù)據(jù)是可行的;集合C表示形成中繼鏈的一組委員會節(jié)點,C中的節(jié)點來自已有區(qū)塊鏈;委員會C中藍(lán)色節(jié)點來自區(qū)塊鏈1,綠色節(jié)點來自區(qū)塊鏈2,橙色節(jié)點來自區(qū)塊鏈3。
圖1 區(qū)塊鏈跨鏈網(wǎng)絡(luò)模型Fig.1 Blockchain cross-chain network model
跨鏈方案的核心分為兩部分:節(jié)點信任度的動態(tài)評估和定期委員會輪換機制。
對于每條鏈,在時間t時,計算每個節(jié)點之間的信任關(guān)系,構(gòu)建節(jié)點之間的信任關(guān)系矩陣Dt,并將信任度進(jìn)行正則化處理,得到最終的信任關(guān)系矩陣C t;為了充分考慮鏈中所有節(jié)點之間的信任和交互,根據(jù)間接節(jié)點的信任關(guān)系,計算節(jié)點之間的信任關(guān)系,得到信任的迭代公式通過迭代得到全鏈節(jié)點的信任值矩陣T*i。
對于得到信任值矩陣的鏈,根據(jù)其節(jié)點數(shù)目占所有鏈節(jié)點的比例進(jìn)行委員會節(jié)點分配。在每條鏈上的可靠節(jié)點中,選擇信任值排在前ci的節(jié)點作為委員會節(jié)點。每條鏈選擇出該鏈的委員會成員,共同管理委員會中繼鏈。對于跨鏈的交互,當(dāng)nu∈Lx,ns∈Ly,nu對ns發(fā)送消息時,Lx的委員會節(jié)點啟動跨鏈消息傳遞進(jìn)程,將消息打包成標(biāo)準(zhǔn)格式,在委員會成員中進(jìn)行廣播和驗證。通過Ly的委員會節(jié)點進(jìn)行背書請求和簽名接受,最后完成跨鏈消息的驗證,對消息進(jìn)行保存。當(dāng)委員會處理了B個消息后,所有鏈進(jìn)行信任度的重新計算,委員會進(jìn)行更新。
2.2.1 單個節(jié)點的信任關(guān)系計算
在網(wǎng)絡(luò)中,信任度計算所需的信息可以從以下3 方面進(jìn)行收集[10]:
(1)態(tài)度:表示主體(發(fā)送方)對客體(接收方)持有的積極或消極看法,即是否愿意向客體發(fā)送消息;
(2)行為:表示客體對主體動作的反應(yīng)行為,主體可以據(jù)此來確定對客體的信任程度;
(3)經(jīng)驗:是在一次交互中客體對主體行為的感知,會對信任度的確定產(chǎn)生影響。
對于上述3 個因素,經(jīng)驗往往會影響態(tài)度和行為。因為過去的好的經(jīng)驗會促使客體對主體做出積極響應(yīng),同理過去不好的經(jīng)驗會促使主體對客體產(chǎn)生消極看法,進(jìn)而影響兩者的信任關(guān)系。因此本文選擇并收集經(jīng)驗來進(jìn)行之后的信任計算。
為了獲得經(jīng)驗,固定主體(發(fā)送方),設(shè)為A,觀測其他節(jié)點對主體節(jié)點動作的積極行為反應(yīng)和消極行為反應(yīng),來收集在主體節(jié)點視角下客體節(jié)點的行為信息,此行為信息作為之后信任度評估的信任信息。對于觀察者A 來說,B 的積極行為數(shù)目用a來表示,a初始化為0;B的消極行為數(shù)目用b表示,b初始化為0。當(dāng)A 觀察到B 是正常行為時,a =a +1;當(dāng)A 觀察到B 是異常行為時,b =b +1。對于時間t =n*Δt(n =1,2,3,…),得到第n個Δt的行為信息列表{an,bn,tn}(n =1,2,3,…)。
基于觀察者A 收集到的B 的積極行為和消極行為的信息,可以使用貝葉斯分布來對信任度進(jìn)行計算。因為beta 分布靈活且較為簡單,且僅有兩個參數(shù),本文使用beta概率分布方程來刻畫信任度,公式(1):
其中,α表示正因子;β表示負(fù)因子;α =a +1,β =b +1,0 ≤p≤1,α,β >0。
beta分布概率的期望,公式(2):
使用期望來表示對于A 來說B 的信任度,公式(3):
為了描述事件對信任度評估的動態(tài)影響,引入遺忘機制。因為過去觀察結(jié)果對當(dāng)前時間段的信任評估的影響會隨著時間的增加而減弱,即過去的觀察所占的權(quán)重低于近期觀察的權(quán)重。由此,引入遺忘機制來模型化這個影響減弱的現(xiàn)象:在時間t1時表現(xiàn)出K個積極行為和在時間t2(t2>t1)表現(xiàn)出個積極行為是等價的,其中β(0<β≤1)表示遺忘因子。
假設(shè)從t1到t2,分別有Δa和Δb個新增的積極行為和消極行為,則在時間t2,a更新為b更新為因為持續(xù)的積極行為會產(chǎn)生較好的聲譽,因此當(dāng)信任度大的時候,只有很少一部分壞的行為會破壞聲譽,即信任度越大,遺忘因子越小,因此可以使β =1-td。
在單個時間段內(nèi)如何進(jìn)行信任度評估的詳細(xì)表述見表1。
表1 單個節(jié)點的每個時間段的信任計算算法Tab.1 Trust calculation algorithm for each time period of a single node
2.2.2 信任關(guān)系矩陣構(gòu)建
為了防止惡意節(jié)點給其他惡意節(jié)點較高的信任值,給正常節(jié)點較低的信任值,從而影響到最終信任代表節(jié)點的選取,故將節(jié)點之間的信任值進(jìn)行正則化處理,得到最終的信任關(guān)系矩陣C t,公式(4):
2.2.3 全鏈節(jié)點的信任值
節(jié)點可以通過檢測其他節(jié)點的行為得到節(jié)點和其它節(jié)點之間的信任關(guān)系,但事實上節(jié)點還可以利用其他節(jié)點的信任信息,對該節(jié)點做進(jìn)一步的信任評估。比如節(jié)點A 對節(jié)點D 的信任度,除了依據(jù)節(jié)點A 與D 的交互行為直接判斷之外,還可以通過其相鄰節(jié)點B 和C 進(jìn)行間接計算。即對于任意節(jié)點i,在時間節(jié)點j的信任度可以通過i的相鄰節(jié)點作為間接節(jié)點進(jìn)行計算,公式(5):
其中,節(jié)點k是節(jié)點i的相鄰節(jié)點;dik表示節(jié)點i對節(jié)點k的信任度;dkj表示節(jié)點k對節(jié)點j的信任度。
為了充分考慮鏈中所有節(jié)點之間的信任和交互,本文根據(jù)間接節(jié)點的信任關(guān)系計算節(jié)點之間的信任關(guān)系。以此類推,最終利用全網(wǎng)節(jié)點的信任關(guān)系計算節(jié)點的信任值。其中迭代公式(6)為:
信任矩陣C中的每個元素表示節(jié)點之間的直接信任關(guān)系,信任度高的關(guān)系數(shù)值接近1,信任度低的關(guān)系數(shù)值接近0,節(jié)點之間交互很少的情況下為0.5。初始化每個節(jié)點的信任值都是相同的,為因此T初始值為一個值全為的列向量。假設(shè)收斂誤差為ε,根據(jù)迭代公式不斷迭代,直至收斂得到最終全鏈節(jié)點的信任值。節(jié)點信任值的計算算法見表2。
表2 全鏈節(jié)點的信任值計算算法Tab.2 Trust value calculation algorithm of full-chain nodes
2.3.1 委員會的建立和迭代
委員會是從每條鏈中選擇若干特殊節(jié)點經(jīng)選舉組成,委員會成員之間通過協(xié)議進(jìn)行消息的傳遞和確認(rèn),并在規(guī)定時間進(jìn)行委員會成員的重新選舉。委員會的建立分為兩方面:委員節(jié)點的分配和委員會成員的選舉與更迭。
2.3.1.1 節(jié)點分配算法
2.3.1.2 委員會成員選舉與更迭
對于每個節(jié)點ni∈Li,選擇(IP,PK)[IP 地址和公鑰]作為其識別。從鏈集合{L1,L2,…Ln}中分別選擇{C1,C2,…,Cn} 節(jié)點作為委員會節(jié)點構(gòu)成中繼鏈,其中
在算法2 中,得到了在全鏈節(jié)點的信任值向量T*。為了使鏈中被選舉稱為委員會的節(jié)點能夠被其他節(jié)點充分信任,同時也為了提高整體信任度,在鏈的所有節(jié)點中,選擇信任值最大的前ci個節(jié)點作為委員會成員。
在本文的跨鏈數(shù)據(jù)傳輸中,委員會成員是中間樞紐和核心,起到至關(guān)重要的作用。為了防止委員會成員中心化,從每條鏈中選舉出大于1 個委員會成員;同時,委員會成員也很難維持其信任度一直處于較高水平,因此在一定時間后,需要重新競爭委員會節(jié)點,選出新的委員會成員。對于算法2 得到的信任矩陣T*,每次委員會一輪工作結(jié)束后,重新進(jìn)行計算得到新的信任矩陣,進(jìn)行委員節(jié)點的更迭。
2.3.2 協(xié)議設(shè)計
對于不同鏈來說,發(fā)送消息沒有統(tǒng)一的格式,為了方便委員會節(jié)點進(jìn)行消息的收發(fā)和確認(rèn),本文定義一種統(tǒng)一的消息格式,并通過消息中間件對即將在委員會節(jié)點中進(jìn)行跨鏈傳遞和確認(rèn)的消息進(jìn)行加工。定義消息的符號為表示鏈L*的節(jié)點u向其他鏈的節(jié)點s發(fā)消息,數(shù)據(jù)結(jié)構(gòu)見表3。
表3 消息數(shù)據(jù)結(jié)構(gòu)Tab.3 Message data structure
在委員會成員之間進(jìn)行消息交互時,委員會集合C中的節(jié)點將使用第一個字段來驗證消息發(fā)送者的身份,如果不是C中的成員,則視為非法交易。
對于委員會C,將對信息進(jìn)行驗證以達(dá)成共識。對于傳統(tǒng)的PBFT 共識方法,當(dāng)信息被2×f +1 個節(jié)點確認(rèn)后,就可以被視為可信的。但是,傳統(tǒng)PBFT 算法在委員會機制中將會引起委員會的串通欺騙行為。假設(shè)一個委員會集合C ={a:1,b:2,c:3,d:3,e:1},即分別有1,2,3,3,1 個節(jié)點來自鏈a,b,c,d,e。則對于鏈c 和d,其被選為委員會的成員數(shù)目最多且都為3,有可能串通起來進(jìn)行欺騙。為了解決上述問題,本文提出一個基于距離的消息驗證機制。
首先定義區(qū)塊鏈之間的距離。設(shè)Di,j為區(qū)塊鏈Li和Lj之間的距離,定義Di,j =||Li |-|Lj ||,如果|Li |=|Lj |且i≠j,則Di,j =1。
由此得到委員會之間的距離矩陣,設(shè)委員會有n個成員,則D =[D1,D2,…Dn]T,其中,Di是對委員會節(jié)點i來說的距離向量,Di =[Di,1,Di,2,…Di,n]。
對委員會節(jié)點i與節(jié)點j,之間的權(quán)重為Wij,公式(7):
其中,ξ(*)是標(biāo)準(zhǔn)化函數(shù)。
若i,j是被選自于同一條鏈的,則Wij =1。通過上述方式計算委員會節(jié)點之間的權(quán)重,因為若兩個集合之間的區(qū)別越小,則權(quán)重的影響越大,交流和信任越強。
委員會維護(hù)一個交易數(shù)據(jù)池τ,來對消息進(jìn)行統(tǒng)計,并根據(jù)消息個數(shù)來發(fā)送更改視圖的要求,進(jìn)行委員會的更新。每次委員會更新也意味著數(shù)據(jù)池的清空。設(shè)B為交易數(shù)據(jù)池的界限,即0 ≤|τ |≤B;C中異常節(jié)點的數(shù)目是建立一個對鏈的映射R(Li)={p |p∈C∩p∈Li},即R(Li)為委員會中屬于鏈Li的成員。驗證機制流程如下:
(1)請求階段:nu∈Lx,ns∈Ly,nu對ns發(fā)送消息,則找到節(jié)點nr∈R(Lx),通過消息中間件打包消息為并和節(jié)點對其他委員會節(jié)點的權(quán)重向量Wx*T一起發(fā)送;
(2)請求背書階段:nz∈R(Ly)獲得數(shù)據(jù),將背書請求根據(jù)權(quán)重Wx*T 從大到小發(fā)送給其他節(jié)點,權(quán)重越大,優(yōu)先權(quán)越高;
(3)驗證簽名階段:在委員會中除了R(Ly)的所有節(jié)點收到背書的請求后,驗證數(shù)據(jù)。如果節(jié)點證實了信息,用自己的私鑰對消息進(jìn)行簽名sig(v,m),發(fā)送驗證的消息和自己的簽名sign;
(4)廣播和提交:收到2×θ +1 個背書簽名后,nz記錄消息=(m,sig(u,k),k),并將交易數(shù)據(jù)提交給nr,并廣播給所有節(jié)點,同時同步到委員會的內(nèi)存池,以便在循環(huán)結(jié)束將消息進(jìn)行封裝打包成塊;
(5)委員會節(jié)點nz和ns位于統(tǒng)一條鏈,nz將對ns進(jìn)行鏈內(nèi)的消息傳遞和驗證。
本文測試環(huán)境:操作環(huán)境為Windows 11,項目環(huán)境為Maven 3.5.3、Java 1.8,編碼工具為IntelliJ IDEA 2020.1.3 x64。
首先,對3 個關(guān)鍵模塊——信任度計算模塊、委員會選舉模塊和共識機制模塊進(jìn)行功能測試。
(1)信任度計算模塊測試。在信任度計算模塊測試中,設(shè)置3 個節(jié)點,鏈內(nèi)消息傳遞。根據(jù)算法,每次交易后,節(jié)點更新自己用于計算的信任因素Δa,Δb,在時間從nΔt到達(dá)下一個時刻(n +1)Δt時,節(jié)點的信任信息進(jìn)行更新,見表4。
表4 節(jié)點信任關(guān)系向量的更新Tab.4 Update result of node trust relationship vector
(2)委員會選舉模塊測試。當(dāng)進(jìn)行委員會選舉時,首先對每個網(wǎng)絡(luò)更新該網(wǎng)絡(luò)的信任關(guān)系矩陣和信任向量,根據(jù)信任向量中每個節(jié)點的信任值從大到小進(jìn)行委員會的選舉。在本實驗中,在網(wǎng)中設(shè)置4 個節(jié)點,選擇3 個節(jié)點作為委員會節(jié)點。
在消息傳遞下,該模塊的執(zhí)行結(jié)果見表5。每次選舉網(wǎng)絡(luò)信任向量進(jìn)行更新,并選擇信任值最大的前3 個節(jié)點作為委員會節(jié)點。
表5 委員會選舉結(jié)果Tab.5 Committee Election Results
(3)共識算法模塊測試。在本模塊測試中,構(gòu)建3 個網(wǎng)絡(luò),每個網(wǎng)絡(luò)6 個節(jié)點,委員會成員數(shù)目為6,消息數(shù)據(jù)池限制為5,θ =1,至少需要2θ +1=3個節(jié)點簽名。
測試消息共20 條,其中8 條為跨鏈消息,12 條為鏈內(nèi)消息。根據(jù)算法,當(dāng)5 條跨鏈消息得到驗證后,消息數(shù)據(jù)池滿,進(jìn)行一次委員會更迭。此時,交易數(shù)據(jù)池中已經(jīng)完成驗證等待進(jìn)一步打包成區(qū)塊的消息見表6,迭代后的新委員會成員見表7。
表6 數(shù)據(jù)池滿載消息Tab.6 Datapool full message
表7 委員會成員Tab.7 Committee members
對本文提出的基于委員會輪換機制的跨鏈數(shù)據(jù)整合方案執(zhí)行時間進(jìn)行測試,主要觀察委員會成員個數(shù)和數(shù)據(jù)量兩者對消息跨鏈傳遞時間的影響。
3.2.1 委員會成員個數(shù)對跨鏈消息傳遞時間影響
在上文對共識算法的分析中,每條跨鏈消息需要2× θ +1 個節(jié)點的驗證簽名,而θ又與委員會成員個數(shù)相關(guān),因此可以推測跨鏈的事件與委員會成員個數(shù)有關(guān)。
為方便測試,構(gòu)造3 個網(wǎng)絡(luò),對每個網(wǎng)絡(luò)添加6個節(jié)點和8 個節(jié)點的情況進(jìn)行分別實驗。
實驗一通過控制臺輸入來進(jìn)行單一消息的發(fā)送。改變委員會成員數(shù)目,得到在不同委員會成員數(shù)目時跨鏈傳輸消息的時間,如圖2 所示??梢钥吹?,當(dāng)委員會成員數(shù)目增加時,跨鏈消息傳輸時間顯著降低。
圖2 單一數(shù)據(jù)時在不同委員會節(jié)點下的執(zhí)行時間Fig.2 Execution time under different committee nodes for a single data
實驗二通過文件導(dǎo)入,發(fā)送批量數(shù)據(jù)。數(shù)據(jù)個數(shù)為20 條,其中10 條鏈內(nèi)傳輸數(shù)據(jù),10 條為跨鏈數(shù)據(jù),實驗結(jié)果如圖3 所示。
圖3 批量數(shù)據(jù)時在不同委員會節(jié)點下的執(zhí)行時間Fig.3 Execution time under different committee nodes with large amounts of data
如圖3 所示,網(wǎng)絡(luò)中共有18 個節(jié)點的,當(dāng)委員會成員數(shù)目為5 時,執(zhí)行時間最少;網(wǎng)絡(luò)中共有24個節(jié)點的,當(dāng)委員會成員數(shù)目為11 時,執(zhí)行時間最少。在兩種網(wǎng)絡(luò)中傳輸批量數(shù)據(jù)時,隨著委員會成員數(shù)目的增多,數(shù)據(jù)傳輸?shù)目倳r間均減少。當(dāng)委員會成員數(shù)目為3 個時,也就是占節(jié)點總數(shù)的比例很小時,數(shù)據(jù)傳輸?shù)目倳r間最大,且遠(yuǎn)遠(yuǎn)大于其他情況。
因此,需要根據(jù)委員會總數(shù)來選擇委員會成員數(shù)目,當(dāng)網(wǎng)絡(luò)中節(jié)點總數(shù)很大時,委員會成員的數(shù)目也應(yīng)相應(yīng)較大,以避免增加執(zhí)行時間。
3.2.2 在不同數(shù)據(jù)量下的跨鏈消息傳遞時間
維持在同一區(qū)塊鏈內(nèi)的交易數(shù)據(jù)為10 條不變,改變跨鏈交易時數(shù)據(jù)個數(shù),能夠看到當(dāng)數(shù)據(jù)量增加時,執(zhí)行時間也相應(yīng)增加,基本成線性變化,變化趨勢如圖4 所示??梢酝茰y在委員會成員數(shù)目固定時,數(shù)據(jù)量是影響算法執(zhí)行效率的最主要因素,且在本算法中,執(zhí)行時間與數(shù)據(jù)量大致成線性變化趨勢。
圖4 不同數(shù)據(jù)量下的執(zhí)行時間Fig.4 Execution time with different amounts of data
本文針對不同區(qū)塊鏈之間無法跨鏈傳輸數(shù)據(jù)的問題,設(shè)計并實現(xiàn)了一個基于委員會定期輪換機制的跨鏈數(shù)據(jù)整合方案,為區(qū)塊鏈跨鏈技術(shù)的研究提供了新的解決思路和實踐基礎(chǔ)。本文的研究成果包含以下幾個方面:
(1)設(shè)計了一個動態(tài)信任評估模型。充分考慮到區(qū)塊鏈網(wǎng)絡(luò)是P2P 網(wǎng)絡(luò),具有高可變性,因此將節(jié)點的信任值視為動態(tài)變化的,引入遺忘機制刻畫節(jié)點信任值的演化過程。
(2)設(shè)計了委員會選舉和迭代算法。本文將節(jié)點的信任值作為委員會選舉的標(biāo)準(zhǔn),為了避免單一委員會節(jié)點造成中心化問題,選取信任值最大的一些節(jié)點而不是某個節(jié)點作為該鏈的委員會成員。同時,為了防止委員會成員之間串通欺騙,委員會不是固定的,在一個工作周期后,將對節(jié)點信任度進(jìn)行重新評估,對委員會進(jìn)行更新。
(3)設(shè)計了一個基于距離的消息驗證機制。借鑒了PBFT 共識算法思想,提出適用于屬于不同鏈的委員會成員之間的消息驗證機制。在該機制中,委員會成員通過鏈之間的距離得到權(quán)重向量,并根據(jù)權(quán)重向量的大小進(jìn)行背書請求,當(dāng)節(jié)點收到一定數(shù)目的來自其他節(jié)點的背書簽名后,委員會節(jié)點之間達(dá)成共識,完成跨鏈消息的傳輸。