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