戴炳榮,姜勝明,李頓偉,李 超
(1.上海海事大學(xué)信息工程學(xué)院,上海 201306;2.上海計算機軟件技術(shù)開發(fā)中心,上海 201112)
區(qū)塊鏈技術(shù)因具有去中心化、可追溯、不可篡改等優(yōu)點而被應(yīng)用到越來越多的領(lǐng)域,但區(qū)塊鏈本身存在低吞吐量、網(wǎng)絡(luò)孤立和缺乏有效監(jiān)管等問題,其中區(qū)塊鏈網(wǎng)絡(luò)孤立問題尤為嚴重,在通常情況下每一條區(qū)塊鏈都是獨立的,它們之間無法直接通信。因此,當區(qū)塊鏈之間需要信息交互時,即產(chǎn)生跨鏈需求[1]。
根據(jù)區(qū)塊鏈底層平臺的差異,可以將跨鏈信息交互分為同構(gòu)鏈和異構(gòu)鏈,同構(gòu)鏈之間底層技術(shù)一致,區(qū)別在于應(yīng)用和數(shù)據(jù)不同;而異構(gòu)鏈之間的底層技術(shù)如共識算法、安全機制等都可能存在差異。同構(gòu)鏈之間跨鏈交互較為簡單,而異構(gòu)鏈之間跨鏈交互需要有特定的技術(shù)輔助支撐[2]。
到目前為止,區(qū)塊鏈跨鏈方法可以分為哈希鎖定、側(cè)鏈/中繼鏈和公證人機制等類型[3-4]。
哈希鎖定主要是通過嚴格執(zhí)行含有哈希密碼鎖定的智能合約來實現(xiàn)資產(chǎn)交換[5-6],它的交換思路是一方基于哈希值鎖定資產(chǎn),設(shè)定規(guī)定時間內(nèi)如果能提供原哈希數(shù),則可獲取資產(chǎn),另一方使用同樣的哈希值鎖定資產(chǎn),也設(shè)置同樣的解鎖條件,即一方使用哈希數(shù)解鎖獲取資產(chǎn),另一方利用同樣的哈希數(shù)獲取資產(chǎn),哈希鎖定只能做到交換而不能做到資產(chǎn)或者信息的轉(zhuǎn)移,因此其使用場景有限。典型實現(xiàn)是哈希時間鎖定合約(Hashed Time Lock Contract,HTLC)。
側(cè)鏈是指完全擁有某鏈功能的另一條區(qū)塊鏈,側(cè)鏈可以讀取和驗證主鏈上的信息[7-8]。主鏈不知道側(cè)鏈的存在,由側(cè)鏈主動感知主鏈信息并進行相應(yīng)的動作,而中繼鏈則是側(cè)鏈和公證人機制的結(jié)合體,中繼鏈具有訪問需要和驗證進行互操作的鏈的關(guān)鍵信息,而且還能對兩條鏈的跨鏈消息進行轉(zhuǎn)移。因此,中繼鏈也是一種去中心的公證人機制。
公證人機制又叫見證人機制,其實質(zhì)上類似于現(xiàn)在銀行所進行的交易[9]。它的核心思想是假設(shè)存在鏈A、B,它們使異構(gòu)鏈無法直接進行信息交互,假設(shè)存在一個可信的第三方C能同時被鏈A、B所接受,則由可信的第三方C負責鏈A、B之間的消息傳遞。公證人機制的優(yōu)點是能夠支持多種不同的異構(gòu)鏈,但它的缺點是過于中心化。
公證人機制模式目前僅能夠支持資產(chǎn)的交換,且資產(chǎn)交換的原子性、安全性完全由中心化的交易所保障,所以也存在較大的中心化風(fēng)險。目前迭代發(fā)展出的多重簽名和分布式簽名的方案弱化了中心化組件的特性,其能夠從多種角度提高系統(tǒng)的安全性[10-11]。
分布式簽名方案是利用密碼學(xué)的原理將密鑰分別拆分成多個密鑰加密后的密文(單個公證人無法擁有全部的密鑰),并隨機分發(fā)給公證人(所用的密文合并起來也無法推斷出完整的密鑰),設(shè)定允許一定數(shù)量的公證人在他們共同簽名之后可以合成完整的密鑰,完成了去中心化“數(shù)據(jù)采集驗證”的過程[12-13]。
多重簽名是指跨鏈交易需要多個公證人簽名,交易才能被確認。通常它是由公證人在各自的賬本上簽名,當簽名的數(shù)量達到預(yù)先設(shè)定好的數(shù)量時才能達成交易,這里的每個公證人都擁有獨立的密鑰[14-15]。
在應(yīng)用公證人機制的跨鏈項目中,Interledger項目在早期發(fā)展中以公證人機制實現(xiàn)不同異構(gòu)鏈的跨鏈,后續(xù)發(fā)展可結(jié)合哈希鎖定技術(shù)來實現(xiàn)跨鏈交互;corda[16-17]項目可以實現(xiàn)交易雙方自由選擇公證人。無論是哪一種方案,都需要參與方公證人可信[18-19]。為解決公證人可信問題,本文構(gòu)建一種基于改進PageRank算法的跨鏈公證人評價模型。該模型通過基于其他公證人節(jié)點評價和該節(jié)點歷史交易評價來對公證人節(jié)點進行信用度排序,剔除信用度排名靠后的節(jié)點來保證系統(tǒng)整體的信用度。
傳統(tǒng)的公證人機制是基于中心化交易中介方所得跨鏈資產(chǎn)交換[20],這種跨鏈的方式比較單一,只支持資產(chǎn)的交換,圖1演示了分別位于鏈A、B的用戶a、b通過交易中介方進行跨鏈資產(chǎn)交換的過程。
圖1 公證人機制交換過程Fig.1 Process of notary mechanism exchange
公證人機制交換過程如下:
1)用戶a通過交易中介方錢包將自己的資產(chǎn)充入交易中介方的地址。
2)用戶a在交易中介方掛出賣單交易信息A。
3)用戶b需要將自己的資產(chǎn)充入交易中介方的地址。
4)用戶b在交易中介方掛出賣單交易信息B。
5)交易中介方將用戶a的賣單和用戶b的賣單進行撮合。
6)交易中介方將用戶a在交易中介方存儲資產(chǎn)轉(zhuǎn)移給用戶b在鏈A的地址。
7)交易中介方將用戶b在交易中介方存儲的資產(chǎn)轉(zhuǎn)移給用戶a在鏈B的地址。
至此完成了用戶a、b資產(chǎn)的交換(案例中省去了交易中介方的服務(wù)費)。
2.1.1 評價模型流程
本文通過構(gòu)造一個動態(tài)的公證人節(jié)點評價模型來保證公證人機制的安全性。該模型由其他公證人節(jié)點評價和該節(jié)點歷史交易評價進行協(xié)作,最終通過本文模型給出一個動態(tài)的節(jié)點信用值排序,剔除排名在后的節(jié)點。本文模型在排序時考慮下列因素:
1)節(jié)點的信用值應(yīng)由與其有過交易的用戶和替他節(jié)點共同評價。
2)替他節(jié)點在評價時只需給出自己信任的節(jié)點;替他節(jié)點在評價時只需給出自己信任的節(jié)點記錄;歷史交易評價需考慮交易處理效率、用戶反饋、負面交易信息等因素。
3)節(jié)點內(nèi)部優(yōu)秀交易的次數(shù)越多,該節(jié)點的信用值越高。
4)節(jié)點信用值是一個逐漸積累的過程,持續(xù)誠信交易的積累才能獲得高信用值。
本文模型在規(guī)定的某時間內(nèi)對現(xiàn)有的節(jié)點進行信任度評價,系統(tǒng)向存在的節(jié)點發(fā)出評價信號并廣播系統(tǒng)公鑰及地址;各個節(jié)點收到信號后,使用系統(tǒng)的公鑰進行加密并使用自己的私鑰加密簽名;系統(tǒng)會收集各個節(jié)點的加密數(shù)據(jù)并使用系統(tǒng)私鑰解密,最終形成信任關(guān)系圖并廣播出去;系統(tǒng)在規(guī)定時間內(nèi)如果未收到異議信息則進行下一步計劃,如果有則重新投票;系統(tǒng)會自動收集各個節(jié)點歷史交易信息并使用改進PageRank算法進行信用度排序,并將結(jié)果及計算過程公布;在規(guī)定時間內(nèi),系統(tǒng)若未收到任何異議信息,則根據(jù)流程自動剔除排名在后的節(jié)點。節(jié)點評價模型如圖2所示。
圖2 節(jié)點評價模型Fig.2 Node evaluation model
節(jié)點歷史交易信息中用戶反饋評價是指最終完成交易后用戶對其進行評價,分數(shù)值從1~5由低到高;節(jié)點交易處理效率是指用戶從發(fā)起交易到最終確認交易中介方需要的時間;負面交易信息包括交易未完成情況、存在欺詐等行為的交易。
2.1.2 評價系統(tǒng)
各個品種的雞均有易感性,10~56日齡的雞發(fā)病率和致死率都較高,10日齡以內(nèi)的雛雞由于有母源免疫力的保護,很少發(fā)生球蟲病,成年雞對球蟲有一定的抵抗力。病雞是主要傳染源,凡被帶蟲雞污染過的飼料、飲水、土壤和用具等,都有卵囊存在,雞感染球蟲的途徑主要是吃了感染性卵囊。
本文評價系統(tǒng)由廣播板、節(jié)點模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)存儲模塊和信用排序模塊組成,評價系統(tǒng)工作過程如圖3所示。
圖3 評價系統(tǒng)工作過程Fig.3 Working process of evaluation system
評價系統(tǒng)主要包括以下5個模塊:
1)廣播板:用于顯示投票內(nèi)容、評價內(nèi)容及公告信息的模塊。投票內(nèi)容包含節(jié)點投票的信息、投票人的簽名和廣播板的簽名;評價過程包含評價內(nèi)容及評價結(jié)果;公告信息包含參與投票的節(jié)點的地址及投票開始及結(jié)束時間。
2)節(jié)點模塊:用于節(jié)點填寫投票信息及驗證的模塊,包含節(jié)點登錄驗證模塊和信息填寫模塊。
3)數(shù)據(jù)采集模塊:用于采集節(jié)點評價信息及歷史交易評價信息。
4)數(shù)據(jù)存儲模塊:用于存儲節(jié)點信息及信用排序信息。
5)信用排序模塊:基于改進PageRank算法對節(jié)點信用度進行評價的模塊,該模塊中所有運算步驟都將在廣播板顯示出來。
評價系統(tǒng)在某一時間點時,將在廣播板廣播參與投票的節(jié)點及投票截止時間;節(jié)點收到投票信息將登錄并驗證自己的信息,填寫信任的節(jié)點并簽名,再把信息傳到廣播板,廣播板顯示節(jié)點傳遞的信息;當投票時間結(jié)束后,系統(tǒng)將調(diào)用改進PageRank算法對投票信息進行信用度排序,并把結(jié)果及計算過程在廣播板進行展示。節(jié)點可以查看所有的投票信息及運算過程。
數(shù)據(jù)存儲中包含節(jié)點的基本信息(如節(jié)點的公鑰、IP地址)、節(jié)點交易的歷史信息及節(jié)點投票的信息,節(jié)點可以隨時查看。
2.2.1 PageRank算法
PageRank算法是谷歌公司用于網(wǎng)頁重要性評價的一種方法。其核心思想是利用網(wǎng)頁鏈接到替他頁面和替他頁面鏈接到本頁面的情況來計算頁面的分值,并對其進行分值排序[12-14]。
在使用PageRank算法對網(wǎng)頁重要性進行排序時,一般會假設(shè)2個前提:
1)數(shù)量假設(shè):假設(shè)存在一個網(wǎng)頁,如果有大批的鏈接與它相連,則表示這個頁面非常重要,本文中的節(jié)點假設(shè)有大量的替他節(jié)點與它相連,則表示該節(jié)點非常受到信任。
2)質(zhì)量假設(shè):在互聯(lián)網(wǎng)中,各網(wǎng)頁的內(nèi)容質(zhì)量參差不齊,如果一個高質(zhì)量的頁面與該頁面相連,則傳遞給該頁面的權(quán)重應(yīng)該很高;同樣,如果有一個信任度很高的節(jié)點信任本節(jié)點,則傳遞給本節(jié)點的權(quán)重就會很高。
基于這2個假設(shè),算法基于式(1)對頁面等級進行評估時,對于每一個頁面的權(quán)重賦予相同的值,然后通過不斷地遞歸迭代計算,更新每一個頁面的得分,直到頁面得分穩(wěn)定。
其中,L(ν)表示網(wǎng)頁ν的出鏈數(shù)量,PR(ν)表示網(wǎng)頁ν的PageRank值,Bu表示網(wǎng)頁u的入鏈集合。從式(1)可以看出,每個頁面的PageRank值是由其所有入鏈網(wǎng)頁的PageRank值累加得到。
PageRank算法規(guī)定一個頁面只能對其他頁面進行一次投票,如圖4所示。圖4中節(jié)點B只能給節(jié)點A投半票,即節(jié)點B只能將它鏈接權(quán)重值的一半賦予節(jié)點A。同理,節(jié)點D只能將其鏈接權(quán)重值的1/3賦予節(jié)點A。
圖4 節(jié)點拓撲結(jié)構(gòu)Fig.4 Node topology
圖4中節(jié)點D的PR值計算公式如下:
在現(xiàn)實的互聯(lián)網(wǎng)中還存在許多頁面沒有鏈接到其他任何頁面的情況,即這一頁面的出鏈數(shù)為0(如圖4中節(jié)點C),這種頁面被稱為孤立網(wǎng)頁?;谶@種問題,谷歌公司修訂了原先的PageRank計算公式,在原先的公式上引入阻尼系數(shù)d(damping factor),根據(jù)實驗,該阻尼系數(shù)一般取0.85。該系數(shù)為用戶在某一時刻使用該節(jié)點后從該節(jié)點跳轉(zhuǎn)到替他節(jié)點的概率。當阻尼系數(shù)為0.15時,表明用戶不在通過節(jié)點跳轉(zhuǎn)到另一節(jié)點,改進后的PageRank算法的計算公式如式(3)所示:
從圖4可以看出:節(jié)點A有節(jié)點B指向的鏈接;節(jié)點B有節(jié)點A、節(jié)點D指向的鏈接;節(jié)點C有節(jié)點A、節(jié)點D指向的鏈接;節(jié)點D有節(jié)點A、節(jié)點B指向的鏈接。假設(shè)初始鏈接概率相等,則存在轉(zhuǎn)移矩陣N:
其中,Ni,j表示用戶從節(jié)點j跳轉(zhuǎn)到節(jié)點i的概率。
假設(shè)節(jié)點的初始概率為1/n,n為節(jié)點數(shù)量,則初始概率矩陣為:
根據(jù)式(5)進行迭代,當最終結(jié)果變化在某個區(qū)間內(nèi)時,結(jié)束迭代,則最終節(jié)點重要度排序為:
2.2.2 改進PageRank算法的公證人節(jié)點評價模型
每個節(jié)點的歷史交易信息會對其信用評估產(chǎn)生內(nèi)在的影響。假設(shè)存在節(jié)點A及它的一個正向鏈接節(jié)點B,若節(jié)點A交易處理效率高于節(jié)點B,則用戶對節(jié)點A的反饋評價要高于對節(jié)點B的反饋評價;若節(jié)點A交易處理效率高于節(jié)點B,則用戶對節(jié)點A的反饋評價要高于對節(jié)點B的反饋評價;負面交易信息越少,那么節(jié)點A分配給節(jié)點B的權(quán)重越高。
下文給出計算節(jié)點A、B信用度的步驟:
1)建立節(jié)點歷史交易信息的交易處理效率、用戶反饋、負面交易信息的集合:
2)確定用戶整體評價的位置權(quán)重,引入分段函數(shù)來表征本文收集到的用戶整體評價信息,分交易處理效率、用戶反饋、負面交易信息3個部分計算[20]:
3)用戶反饋評價值計算,計算公式如下:
其中,Qpeople代表節(jié)點總體用戶反饋評價值,weightpeople代表節(jié)點用戶反饋權(quán)重,gradej代表用戶歷史評價值。
4)交易處理效率值計算,計算公式如下:
其中,Qtime代表節(jié)點交易處理效率值,weighttime代表節(jié)點交易處理權(quán)重,timej代表節(jié)點交易處理時間。
5)節(jié)點負面消息評價值計算,計算公式如下:
其中,Qreverse代表節(jié)點負面消息評價值,weightreverse代表節(jié)點負面消息評價權(quán)重,number代表節(jié)點負面消息評價數(shù)量。
6)最終得出節(jié)點交易處理效率、用戶反饋、負面交易信息評價值,計算公式如下:
7)本文通過使用向量空間模型(Vector Space Model,VSM)[14-15]來計算節(jié)點M、N相似度,即:
8)最終得到改進后的PageRank算法如式(14)所示:
如果某一節(jié)點并無歷史交易信息,則:
本文對某交易中介方使用的跨鏈交易系統(tǒng)的100個節(jié)點進行評價,首先節(jié)點各自填寫評價表,包括所有節(jié)點之間的信任關(guān)系(誰信任誰)。然后使用0~99之間的連續(xù)整數(shù)對100位節(jié)點分別進行編號,并利用所有人之間的信任關(guān)系組織成一張節(jié)點關(guān)系,如圖5所示。其中信任關(guān)系依靠有向箭頭表明,例如“2→3”表示2號節(jié)點信任3號節(jié)點。
圖5 部分公證人節(jié)點信任關(guān)系Fig.5 Node trust relationship of some notaries
表1為某節(jié)點歷史交易信息,主要包含交易是否成功狀態(tài)、交易效率和用戶評價3個指標。其中如果交易失敗,則缺少交易效率和用戶評價。用戶反饋評價值從1~5依次遞增;交易狀態(tài)分為成功和失敗兩種。本文收集了某證券交易所200個節(jié)點交易的前100條交易信息。
表1 某節(jié)點歷史交易信息Table 1 Some historical transaction information of certain node
本文基于收集到的節(jié)點信任關(guān)系及各節(jié)點交易信息進行仿真測試,基于傳統(tǒng)PageRank算法和改進PageRank算法進行仿真比較,結(jié)果如圖6所示。
圖6 傳統(tǒng)PageRank算法和改進PageRank算法仿真結(jié)果對比Fig.6 Comparison of simulation results of traditional PageRank algorithm and improved PageRank algorithm
根據(jù)PageRank算法,最終的信用度值會在0~1范圍內(nèi),從圖6可以看出,同一個節(jié)點基于傳統(tǒng)PageRank算法計算出的信用度值和改進后的信用度值有所差距,這是因為改進的PageRank算法考慮了節(jié)點與節(jié)點之間的歷史交易信息,最終導(dǎo)致結(jié)果有所差異。
根據(jù)本文設(shè)定程序,最終會剔除排名靠后的節(jié)點,本次實驗選定剔除排名在后10位的節(jié)點,基于傳統(tǒng)PageRank算法剔除的節(jié)點信用度值和基于改進后的PageRank算法剔除的節(jié)點信用度值如圖7所示。
圖7 傳統(tǒng)PageRank算法和改進PageRank算法最終剔除節(jié)點的信用度結(jié)果Fig.7 Credit degree results of nodes being removed by traditional PageRank algorithm and improved PageRank algorithm
本文預(yù)先針對收集到的用戶歷史評價信息進行平均值計算,計算出每個節(jié)點用戶評價信用度值并對其進行排序,選出排名最低的節(jié)點如表2所示。表2給出了基于改進PageRank算法和傳統(tǒng)PageRank算法所剔除的節(jié)點,結(jié)合圖7和表2可以看出,改進后的PageRank算法剔除了用戶評價較低的節(jié)點(如節(jié)點78、節(jié)點70),說明改進后的算法有效地結(jié)合了用戶歷史評價信息。
表2 需剔除的節(jié)點Table 2 Nodes to be removed
本文針對跨鏈技術(shù)中常用的公證人機制節(jié)點信用監(jiān)督不足的問題,提出一種基于改進PageRank算法的評價模型。該模型對公證人節(jié)點信用評價進行優(yōu)化,計算得到高可信的節(jié)點,在一定程度上保障了跨區(qū)塊鏈系統(tǒng)交換資產(chǎn)的安全。實驗結(jié)果表明,該模型能夠較好地解決傳統(tǒng)節(jié)點評價過于主觀性的問題,通過節(jié)點評價和交易評價兩者之間相互制衡,保證評價的公正性,在動態(tài)的交易過程中去除信任度低的節(jié)點,最終使整個系統(tǒng)的信任度得到提高。下一步計劃將公證人機制與側(cè)鏈技術(shù)、哈希鎖定技術(shù)相結(jié)合,以弱化公證人機制過于中心化的問題。