亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Hyperledger Fabric 共識機制優(yōu)化方案

        2021-09-28 07:20:30孟吳同張大偉
        自動化學報 2021年8期

        孟吳同 張大偉

        來源于比特幣[1]的區(qū)塊鏈融合了數(shù)學、密碼學、計算機科學等多種技術(shù),其去中心化、不可篡改、多方維護等特性使得區(qū)塊鏈得到了各個領(lǐng)域的廣泛關(guān)注.隨著人們對區(qū)塊鏈技術(shù)的深入研究和普及推廣,區(qū)塊鏈很可能對當今互聯(lián)網(wǎng)產(chǎn)生顛覆式的影響.

        區(qū)塊鏈技術(shù)的一個核心問題是在無中心、弱信任的分布式系統(tǒng)中讓各個節(jié)點達成共識.所謂共識,簡單來說是讓分布式系統(tǒng)中各個節(jié)點對某個值或某種狀態(tài)產(chǎn)生相同的看法[2].達成共識的方法就是區(qū)塊鏈的核心技術(shù)-共識機制.共識機制需要注重安全性、效率和能耗等問題[3],從而保證區(qū)塊鏈系統(tǒng)能夠正常運行.目前主流的共識機制有工作量證明(Proof of work,PoW)、權(quán)益證明(Proof of stake,PoS)和授權(quán)權(quán)益證明(Delegated proof of stake,DPoS) 等證明類共識機制,以及實用拜占庭容錯(Practical Byzantine fault tolerance,PBFT)等傳統(tǒng)分布式系統(tǒng)一致性算法[4].不同于前面提到的幾種共識機制,Hyperledger fabric 采用 “背書-排序-驗證” 的方式來達成共識[5].

        Hyperledger fabric 將應用層的信任模型同底層的共識協(xié)議解耦,拆分共識過程為交易內(nèi)容合法性驗證和交易順序一致性保證兩個步驟.背書和驗證保證交易內(nèi)容的合法性,排序保證交易順序的一致性.通過將這兩部分進行解耦[6],智能合約的開發(fā)者可以設(shè)計更為靈活的信任模型,Hyperledger fabric 網(wǎng)絡(luò)也獲得了更快的交易處理速度.但是在Hyperledger fabric 中,背書節(jié)點屬于關(guān)鍵節(jié)點,數(shù)量較少卻承擔著對所有交易內(nèi)容的合法性進行背書的重要任務;并且為了便于交易客戶端識別和驗證,背書節(jié)點的身份必須公開.在區(qū)塊鏈網(wǎng)絡(luò)中身份公開且承載著大量的敏感交易數(shù)據(jù),這必然使得背書節(jié)點成為敵手的首要攻擊目標.此外,由于每個背書節(jié)點都要處理所有的交易,這使其成為系統(tǒng)中交易處理的性能瓶頸,從而導致單個背書節(jié)點的處理能力限制了整個區(qū)塊鏈網(wǎng)絡(luò)的交易速度.

        Hyperledger fabric 將應用層信任同底層共識協(xié)議相解耦的共識模型非常利于構(gòu)建基于業(yè)務邏輯的共識機制,因此在實際系統(tǒng)中得到了廣泛應用.目前Hyperledger fabric 共識機制的相關(guān)研究工作在對背書節(jié)點高度信任的假設(shè)前提下多側(cè)重于排序過程的改進,即對交易順序一致性進行優(yōu)化[7],而忽視了對于背書節(jié)點和共識機制的安全性考量.事實上由于交易安全性高度依賴于固定身份的背書節(jié)點,背書節(jié)點一旦被惡意攻擊,最終賬本數(shù)據(jù)的正確性將無從保證.公有鏈系統(tǒng)所面臨的開放式網(wǎng)絡(luò)環(huán)境使得其共識機制的設(shè)計充分考慮了安全性問題,多使用隨機抽取共識節(jié)點的方法使敵手難以選擇攻擊目標,從而提高攻擊難度.因此,本文針對聯(lián)盟鏈中共識機制的安全性問題,在 “背書-排序-驗證” 共識模型的基礎(chǔ)上引入非交互式可驗證隨機節(jié)點抽取方法,提出了一種Hyperledger fabric 共識機制的優(yōu)化方案:

        1) 引入背書節(jié)點候選集,使用可驗證隨機函數(shù)(Verifiable random functions,VRF)的隨機輸出特性在非交互模式下抽取背書節(jié)點,降低背書節(jié)點中心化程度,增加系統(tǒng)的抗攻擊能力;

        2) 交易客戶端利用可驗證隨機函數(shù)的驗證特性來完成背書節(jié)點的身份認證,從而在節(jié)點隨機抽取過程中確保背書節(jié)點身份的真實性和可驗證性;

        3) 將原有的一組背書節(jié)點為所有交易背書,改進為多組背書節(jié)點為交易進行背書,使用并行處理的方式來提高交易處理速度.

        本文結(jié)構(gòu)如下:第1 節(jié)概述了區(qū)塊鏈共識機制需考慮的關(guān)鍵問題、可驗證隨機函數(shù)的定義及其在區(qū)塊鏈共識機制中的應用;第2 節(jié)詳細介紹了Hyperledger fabric 的共識機制及其存在的問題;第3節(jié)針對Hyperledger fabric 存在的問題提出了具體的優(yōu)化方案;第4 節(jié)對優(yōu)化方案的安全性和性能進行了分析;第5 節(jié)構(gòu)建了優(yōu)化方案的原型系統(tǒng),對方案的性能進行了對比測試;第6 節(jié)對本文工作進行了總結(jié).

        1 共識機制與可驗證隨機函數(shù)

        1.1 共識機制

        區(qū)塊鏈技術(shù)本身是基于分布式系統(tǒng)的,因此區(qū)塊鏈技術(shù)仍然需要解決一些分布式系統(tǒng)中存在的問題.其中最核心的問題是如何高效地就不同節(jié)點的數(shù)據(jù)一致性達成共識,因此需要從安全性和共識速度兩個角度設(shè)計共識算法[8].

        共識問題受多種系統(tǒng)因素的影響,比如節(jié)點數(shù)量的多少,是否具有拜占庭節(jié)點等.節(jié)點數(shù)量是區(qū)塊鏈系統(tǒng)去中心化程度的直觀表現(xiàn).節(jié)點數(shù)量與賬本的安全性成正比,與共識難度成反比.即節(jié)點數(shù)量越多,賬本的備份也就越多,攻擊者修改賬本的難度越高,數(shù)據(jù)越安全,但是讓這些節(jié)點的賬本保持一致性的難度也越高[9].拜占庭節(jié)點的定義來源于拜占庭將軍問題[10],是指系統(tǒng)中因運行故障(如,被惡意攻擊) 而發(fā)送錯誤信息的節(jié)點.在不具有拜占庭節(jié)點的網(wǎng)絡(luò)中,僅存在數(shù)據(jù)丟包和延遲等非惡意行為;而在具有拜占庭節(jié)點的網(wǎng)絡(luò)中,惡意節(jié)點可能會主動發(fā)送錯誤信息,以謀取利益.在不考慮非拜占庭節(jié)點的情況下,Paxos[11]、Raft[12]等算法可以實現(xiàn)較為高效的共識,但是現(xiàn)實中很難構(gòu)建一個不存在非拜占庭節(jié)點的系統(tǒng),因此大多數(shù)共識算法基于的安全模型中都是存在拜占庭節(jié)點的.

        傳統(tǒng)分布式一致性算法一般采用協(xié)商的方式解決共識問題[13].如1999 年,Castro 等提出的PBFT[14]算法(Practical Byzantine fault tolerance,PBFT)可以在保證活性(Liveness) 和安全性(Safety) 的前提下為節(jié)點總數(shù)為n的網(wǎng)絡(luò)提供(n-1)/3 的容錯性.PBFT 算法共識速度快且易于實現(xiàn),但是PBFT 算法的消息復雜度(O(N2))會隨節(jié)點的增加而增加,因此不適用于大規(guī)模節(jié)點的場景.

        從另一個角度講,拜占庭節(jié)點可以理解為被敵手攻擊的節(jié)點,減少拜占庭節(jié)點的產(chǎn)生,需要增加敵手的攻擊難度.為此,一方面可以增加節(jié)點數(shù)量,另一方面是增加出塊節(jié)點的隨機性[15].傳統(tǒng)分布式一致性算法往往會因為節(jié)點數(shù)量的增加而帶來巨大的通信量,因此更多共識算法選擇后者來保證安全性.

        以工作量證明為例,工作量證明[1](Proof of work,PoW)使用 “挖礦” 的方式隨機選取出塊者.“挖礦”是指每個節(jié)點不斷嘗試解決一個求解困難但是驗證容易的數(shù)學難題.最快解決該難題的節(jié)點會獲得發(fā)布下一區(qū)塊的權(quán)利(記賬權(quán)) 以及系統(tǒng)的獎勵.PoW 的隨機性依賴于哈希函數(shù)值的均勻分布,但是大量的哈希計算伴隨著巨大的能源消耗,而且這種消耗所用來解決的問題是無意義的[16].同時隨著“礦機”的產(chǎn)生及發(fā)展,計算能力逐漸被一些大的礦池壟斷,也對系統(tǒng)安全性產(chǎn)生了威脅.此外PoW共識的效率較低,過長的出塊時間和交易確認時間難以滿足現(xiàn)實需求.

        權(quán)益證明[17](Proof of stake,PoS)同樣是使用“挖礦”的方式選取出塊者,但是 “挖礦”成功的概率與節(jié)點的權(quán)益有關(guān),節(jié)點持有的權(quán)益越大,“挖礦”成功的概率越高,這從整體上加快了區(qū)塊的產(chǎn)出速度,提高了共識的效率.同時,在權(quán)益證明中計算量不再是 “挖礦”的主要影響因素,從而減少了大量計算帶來的資源浪費.但是PoS 中存在的 “無利害攻擊”,“長程攻擊”等問題使PoS 的安全性備受質(zhì)疑[18].

        在PoS 的基礎(chǔ)上,授權(quán)權(quán)益證明[19](Delegated poof of stake,DPoS)通過犧牲一定的 “去中心化”特性以實現(xiàn)更高的共識效率.每個節(jié)點可以將其持有的權(quán)益作為選票投給一名代表,最終投票最多的前N個用戶會構(gòu)成參與共識的 “委員會”,每一個委員輪流負責對交易進行打包,生成區(qū)塊.由于參與共識節(jié)點數(shù)量的減少,DPoS 具有很高的交易速度.但DPoS 在去中心化過程中所產(chǎn)生的代理節(jié)點令敵手的攻擊目標更加明確,從而降低了敵手的攻擊成本.

        從上述共識算法可以看出,隨機選取節(jié)點可以增加共識機制的安全性,因此隨機選取方式的設(shè)計變得尤為關(guān)鍵,隨機選取算法既要保證結(jié)果的隨機性還要具有較高的運行效率.

        1.2 可驗證隨機函數(shù)

        可驗證隨機函數(shù)(Verifiable random function,VRF)[20]是由Silvio 等于1999 年提出的.VRF 本質(zhì)上是一類具有驗證功能的偽隨機函數(shù).對于一個特定的輸入x以及輸入者的私鑰SK,VRF 會輸出一個隨機數(shù)v以及一個證明proof,驗證者可以通過輸出的隨機數(shù)、證明和輸入這三部分驗證出隨機數(shù)是否是由該輸入產(chǎn)生.這個過程不必暴露輸入者的私鑰,因此是安全的.

        VRF 需要滿足三個性質(zhì):可驗證性、確定性和隨機性:

        1) 可驗證性是指通過proof可以驗證出v是SK和v對應的輸出.

        2) 確定性是指在SK和x不變的情況下,輸出的v也是不變的.

        3) 隨機性是指在不給定證明proof的情況下,VRF 的輸出v與一個隨機數(shù)對于敵手來說兩者之間是概率不可區(qū)分的.

        參考文獻[20-21],可驗證隨機函數(shù)VRF 可具體定義如下:

        設(shè)G,F,V是多項式時間算法,其中:

        1)G是一個概率性算法,其輸入是安全參數(shù)k,輸出公鑰PK和私鑰SK;

        2)F=(F1,F2)是一個確定性算法,輸入包括x和私鑰SK,輸出為v=F1(x,SK)和proof=F2(x,SK),其中v是VRF 輸出的隨機值,proof是對隨機值的證明;

        3)V是一個概率性算法,輸入為:(PK,x,v,proof),輸出為YES 或NO.

        設(shè)a:N→N∈{*};b,s:N→N 是任意三個poly(k)時間內(nèi)可計算的函數(shù),并且都以一個k的多項式為上界(除非a∈{0,1}*),其中k為安全參數(shù).我們稱(G,F,V)是輸入長度為a(k)、輸出長度為b(k)、安全性為s(k)的可驗證的偽隨機函數(shù)(VRF),如果滿足以下幾條性質(zhì):

        1) 下面兩條以1-2 -Ω(k) 的概率成立,其中的概率成立,其中

        a)定義域-值域正確性:

        對于任意x∈{0,1}a(k),F1(SK,x)∈{0,1}b(k)

        b)完全可證性:

        對于任意x∈{0,1}a(k),如果v=F1(SK,x)且proof=F2(SK,x)那么

        2)唯一可證性:

        對每一個PK,x,v1,v2,proof1,proof2,其中v1v2,下面的不等式對于i=1 或i=2 都成立:

        3)剩余偽隨機性:

        T=(TE,TJ)是任意一對算法,滿足第一次輸入為 1k時,TE(·,·) 和TJ(·,·) 總共運行了最多s(k)步,則T在下面的實驗中成功的概率至多為1/2+1/s(k) :

        1.3 可驗證隨機函數(shù)在共識機制中的應用

        可驗證隨機函數(shù)在提出之后,一般主要用在密鑰封裝[21]、數(shù)字簽名等領(lǐng)域.隨著近年來人們對區(qū)塊鏈技術(shù)的深入研究,可驗證隨機函數(shù)的特性使其開始被應用在共識機制的設(shè)計中.

        2017 年,Gilad 等提出的Algorand[22],將可驗證隨機函數(shù)與PBFT 算法相結(jié)合.使用可驗證隨機函數(shù)選取出塊者,之后采用類似于PBFT 的協(xié)議進行若干輪投票,而每一輪的投票者也是通過可驗證隨機函數(shù)選出的.該共識算法具有較高的安全性和交易速度.

        2018 年Hanke 等提出的Dfinity[23],將全網(wǎng)中節(jié)點分為多組委員會,當前負責出塊的委員會中的每個成員使用基于BLS 門限簽名算法[24]的可驗證隨機函數(shù)選擇出塊節(jié)點,然后通過閾值中繼技術(shù)(Threshold relay technology)選出其下一輪負責出塊的委員會,從而達到安全且快速生成區(qū)塊的目的.

        2017 年Kiayias 等提出的Ouroboros[25]共識算法在PoS 的基礎(chǔ)上,使用秘密共享和追隨中本聰算法選取出塊節(jié)點.算法本身雖然經(jīng)過安全性證明,但是其出塊節(jié)點身份可以被提前獲知,可能導致敵手的攻擊,因此2018 年Ouroboros 的第二個版本Praos[26]使用可驗證隨機函數(shù)代替原有的選取算法來抽取出塊節(jié)點,增強了原有共識機制的安全性.

        由此可見,可驗證隨機函數(shù)已在區(qū)塊鏈領(lǐng)域成為非交互模式下節(jié)點身份隨機選取的重要工具.

        需要注意的是,Algorand、Dfinity 和Ouroboros Praos 均是公有鏈系統(tǒng),網(wǎng)絡(luò)中的節(jié)點身份是對等的,因此他們面臨的問題一般是如何從全網(wǎng)的節(jié)點中安全的選出一個出塊節(jié)點.而Hyperledger fabric、Corda[27]等聯(lián)盟鏈系統(tǒng)則采用分層信任模型,并且達成共識的過程也解耦為應用層信任和底層共識兩部分,需要具有不同職能的節(jié)點共同參與.其中一些節(jié)點會對交易內(nèi)容的合法性進行背書,因此在共識過程中承擔著重要任務,我們稱之為關(guān)鍵節(jié)點,如Hyperledger fabric 中的背書節(jié)點和Corda中的Notary 節(jié)點.這些節(jié)點的身份一般會在區(qū)塊鏈網(wǎng)絡(luò)構(gòu)建之初就確定下來,因此攻擊者可以直接確定攻擊目標,一旦攻擊成功,會對整個系統(tǒng)造成嚴重危害.所以這些聯(lián)盟鏈系統(tǒng)面臨的問題是如何降低關(guān)鍵節(jié)點被攻擊的風險.通過借鑒公有鏈中利用可驗證隨機函數(shù)抽取節(jié)點的方式,將關(guān)鍵節(jié)點的身份由固定變?yōu)殡S機抽取的,可以使敵手的攻擊目標不再明確,從而降低關(guān)鍵節(jié)點被攻擊的風險.

        2 Hyperledger Fabric

        Hyperledger 是Linux 基金會于2015 年主導發(fā)起的開源項目,其子項目Hyperledger fabric 是一個允許多方參與、開發(fā)、部署和運行區(qū)塊鏈應用的聯(lián)盟鏈平臺[7].Hyperledger fabric 旨在創(chuàng)造一個模塊化和可擴展的區(qū)塊鏈開發(fā)框架,為企業(yè)級區(qū)塊鏈應用的開發(fā)提供解決方案.Hyperledger fabric 區(qū)塊鏈系統(tǒng)主要包含以下幾部分組件:

        鏈碼(Chaincode):鏈碼是Hyperledger fabric 中的智能合約,它以代碼的形式將復雜的業(yè)務邏輯固定在Fabric 系統(tǒng)中.當滿足特定條件時,鏈碼會被執(zhí)行[28].

        客戶端(Client):客戶端是用戶與Hyperledger fabric 網(wǎng)絡(luò)的接入點,其上會部署專有的SDK.用戶可使用客戶端發(fā)起交易請求,即提案(Proposal).

        背書節(jié)點(Endorser):在Hyperledger fabric 中,當客戶端想要發(fā)起交易時,首先需要為交易得到一定數(shù)量的背書(Endorsement),這些背書來自背書節(jié)點.背書節(jié)點會通過運行鏈碼模擬執(zhí)行交易,生成讀寫集,之后會為該交易進行背書(對讀寫集進行簽名,并附加自己的身份),以證明該交易已經(jīng)過背書節(jié)點處理[29].

        排序節(jié)點(Orderer):在Hyperledger fabric 中通過多個排序節(jié)點來提供排序服務[30].排序服務接收來自全網(wǎng)的所有交易并將交易按照時間排序打包成塊.排序服務并不參與交易的執(zhí)行與驗證,因此并不關(guān)心交易的具體內(nèi)容,排序服務的目標是就交易產(chǎn)生的順序達成一致的結(jié)果,并將這個結(jié)果廣播出去.

        提交節(jié)點(Committer):提交節(jié)點是Hyperledger fabric 網(wǎng)絡(luò)中賬本維護的主體.提交節(jié)點接收排序服務打包的區(qū)塊,驗證區(qū)塊中交易的有效性,并據(jù)此將有效交易提交到賬本.另外,背書節(jié)點也屬于提交節(jié)點,背書是其在維護賬本基礎(chǔ)上的額外功能.

        2.1 Hyperledger Fabric 共識機制

        如圖1 所示,Hyperledger fabric 共識機制如下:

        圖1 Hyperledger fabric 共識機制Fig.1 Hyperledger fabric consensus mechanism

        1)客戶端創(chuàng)建一個提案,依據(jù)背書策略將其發(fā)送給相應的背書節(jié)點.提案包含了需要調(diào)用的鏈碼函數(shù)及其參數(shù)、時間戳和客戶端簽名等信息;

        2)背書節(jié)點會驗證客戶端簽名,確保提案是由已認證的客戶端發(fā)出.否則終止交易.背書節(jié)點執(zhí)行背書過程,即根據(jù)提案使用鏈碼模擬執(zhí)行交易請求,生成執(zhí)行結(jié)果并附加背書節(jié)點的簽名.模擬執(zhí)行的結(jié)果是一組基于當前賬本狀態(tài)的讀寫集,也就是說背書過程并不會更改當前賬本的狀態(tài);

        3)客戶端驗證背書結(jié)果的簽名,確保其來自合法的背書節(jié)點.否則終止交易.由于一筆交易可能會需要多個背書節(jié)點進行背書,客戶端會收集來自不同節(jié)點的背書結(jié)果并比較這些結(jié)果中的讀寫集是否一致.如果一致則根據(jù)背書結(jié)果生成交易(Transaction,tx)然后發(fā)送給排序服務,否則終止交易.

        4)當存在多個排序節(jié)點時,Hyperledger fabric 使用Kafka[31]對交易進行排序.排序節(jié)點在收到來自客戶端的交易后,會將接收到的交易發(fā)送到Kafka 集群中,同時會按照一定的規(guī)則從Kafka 集群中讀取一定數(shù)量的排序好的交易,然后打包成塊.排序服務對區(qū)塊簽名后,將區(qū)塊分發(fā)給提交節(jié)點;

        5)當提交節(jié)點收到區(qū)塊后,會對區(qū)塊進行驗證.提交節(jié)點使用讀寫集合的讀集部分來檢查交易的有效性,如果一筆交易通過了有效性驗證,提交節(jié)點會使用寫集更新狀態(tài)數(shù)據(jù)庫.

        當各個提交節(jié)點完成以上操作后,可以視為對該客戶端發(fā)起的交易達成了共識.在這一過程中,背書策略和背書過程確保了交易(鏈碼)按照業(yè)務邏輯信任模型正確執(zhí)行;排序服務確保了節(jié)點對交易順序的一致性達成共識;提交節(jié)點根據(jù)相同的規(guī)則對每筆交易的數(shù)據(jù)進行驗證,從而在交易內(nèi)容的合法性上達成共識.由此可見,Hyperledger fabric 通過 “背書-排序-驗證” 的共識機制有效地將應用層的信任模型同底層的共識協(xié)議相解耦,從而實現(xiàn)了更為靈活的信任模型和更高的交易吞吐量.

        2.2 存在的問題

        Hyperledger fabric 將節(jié)點的身份進行劃分,在一定程度上簡化了交易流程提高了交易速度,但是也使系統(tǒng)產(chǎn)生了一些較為 “中心化”的節(jié)點–背書節(jié)點.Hyperledger fabric 背書的目的是為了在保證交易合法性的同時,提高交易處理的速度[32].因為如果去除背書環(huán)節(jié),則各個節(jié)點為了達成共識,都需要執(zhí)行提案(即調(diào)用鏈碼),這樣會限制交易的處理速度.而通過一部分背書節(jié)點提前去執(zhí)行提案,再讓所有的節(jié)點只對結(jié)果進行檢驗,則可以在犧牲一定安全性的條件下達到較高的交易處理速度[33].

        但這一共識機制存在如下2 方面的問題:

        1) 首先,背書節(jié)點在區(qū)塊鏈網(wǎng)絡(luò)搭建之初就已經(jīng)確定且客戶端必須能夠識別并信任,因此其身份必須公開且可驗證.其次,背書節(jié)點在提案執(zhí)行過程中會直接處理敏感的交易數(shù)據(jù).上述兩點必然導致背書節(jié)點會成為攻擊者的首要目標;

        2) 背書節(jié)點的數(shù)量相較于全部節(jié)點數(shù)量而言占比極少,部分系統(tǒng)中的背書節(jié)點數(shù)僅為個位數(shù),而這些節(jié)點卻要處理系統(tǒng)中的全部交易,這就導致了明顯的交易速度瓶頸.同時,客戶端與背書節(jié)點是多對一的關(guān)系,當客戶端產(chǎn)生大量交易時,背書節(jié)點可能難以及時并發(fā)處理,造成交易處理時間增加,甚至導致背書節(jié)點的崩潰.

        上述問題產(chǎn)生的根本原因在于Hyperledger fabric 在共識過程中缺少對背書節(jié)點的動態(tài)隨機選取過程.

        3 改進方案

        為了解決Hyperledger fabric 共識機制在安全和性能兩方面的問題,我們在背書節(jié)點的確認中引入動態(tài)隨機選取過程,以實現(xiàn)節(jié)點身份的隱藏和節(jié)點數(shù)量的動態(tài)擴展.但在這一過程中,同時需解決如下2 個問題:

        1) 背書節(jié)點隨機選擇的過程應是非交互式的,以降低系統(tǒng)的通信和計算開銷,減少選擇過程對交易性能的影響;

        2) 選擇后的背書節(jié)點身份必須能夠被客戶端識別和信任,即選擇算法應同時具有身份認證功能,以避免節(jié)點身份偽裝攻擊的問題.

        在基于Fabric 基本共識機制框架的基礎(chǔ)上,我們設(shè)計了一種非交互、可驗證的隨機化背書節(jié)點優(yōu)化方案.優(yōu)化方案引入了背書節(jié)點候選集,通過可驗證隨機函數(shù)在候選集中隨機選取交易背書節(jié)點完成交易背書.方案的改進一方面實現(xiàn)了交易背書前背書節(jié)點的身份隱私保護;另一方面也動態(tài)隨機擴展了交易背書節(jié)點的數(shù)量,提高了交易處理能力.

        3.1 優(yōu)化后的共識機制

        優(yōu)化后的共識機制如圖2 所示:

        圖2 優(yōu)化后的Hyperledger fabric 共識機制Fig.2 Optimized hyperledger fabric consensus mechanism

        1)客戶端生成提案proposal 〈req,s〉sig,其中req為交易數(shù)據(jù),包括希望調(diào)用的chaincode 及其參數(shù).s為客戶端選擇的隨機值,作為節(jié)點身份抽取算法的種子.客戶端對proposal 簽名后將其發(fā)送給背書節(jié)點候選集.交易發(fā)送成功后,客戶端會啟動一個計時器;

        2) 各個候選背書節(jié)點收到客戶端的proposal 后,首先根據(jù)簽名驗證proposal 的完整性,驗證失敗則終止交易.候選背書節(jié)點執(zhí)行背書節(jié)點身份抽取算法 (v,proof,result)=V RFResult(s,SK),并根據(jù)result判斷自己是否為背書節(jié)點.

        3)如果確定自己是背書節(jié)點,執(zhí)行提案并生成讀寫集rw_set 以及背書簽名edm.隨后生成提案響應信息:proposal_response 〈 rw_set,edm,(v,proof) 〉sig.

        背書節(jié)點身份抽取算法VRFResult流程如下:

        a)根據(jù)輸入生成隨機數(shù)及其證明

        (v,proof)=F(s,SK)

        b)返回抽簽結(jié)果

        依據(jù)r計算抽取結(jié)果并與閾值λ進行比較,其中hash()為密碼雜湊算法,hashlen是hash 算法的輸出長度,如果,返回 (r,proof,yes);否則返回 (r,proof,no).

        4)在計時器結(jié)束前的這段時間內(nèi),客戶端持續(xù)收集來自不同背書節(jié)點的proposal_response 并根據(jù)簽名驗證proposal_response 的完整性,驗證失敗則終止交易.使用背書節(jié)點身份驗證算法V RFVerify(PK,r,proof.result)驗證該節(jié)點是否為合法的背書節(jié)點.如果不是則丟棄其該背書結(jié)果.在合法的proposal_response 中,如果大部分(超過一半)讀寫集一致,則根據(jù)這些背書結(jié)果生成交易tx 〈 r_w_set,{edm}k〉sig.其中{edm}k表示來自k個合法背書節(jié)點的簽名.客戶端將交易tx 簽名后發(fā)送給排序節(jié)點.

        背書節(jié)點身份驗證算法流程如下:

        a) 驗證隨機數(shù)合法性

        bool=V(s,r,PK)

        b)返回驗證結(jié)果

        如果隨機數(shù)合法且滿足閾值條件,認定其為背書節(jié)點.如果bool&,返回yes;否則返回no.

        需要注意的是由于背書節(jié)點身份抽取是一個概率算法,可能存在一筆交易沒有對應的背書節(jié)點的情況,因此需要設(shè)置適當?shù)拈撝郸藖斫档瓦@種情況產(chǎn)生的概率,以第5.2 節(jié)中的實驗為例,背書點候選集中節(jié)點數(shù)量為10,λ=0.4 時,不產(chǎn)生背書節(jié)點的概率為:Pr=(0.4)10≈0.01 %,即10 000 筆交易中可能會有1 筆交易沒有背書節(jié)點為其背書.同時,如果設(shè)置的計時器超時后仍然沒有收到背書節(jié)點的proposal_response,可以選擇對proposal 進行重發(fā),這樣就使得不產(chǎn)生背書節(jié)點的概率進一步降低.

        5)排序節(jié)點監(jiān)聽并接收全網(wǎng)所有交易,并將交易打包成區(qū)塊block 〈{tx}m〉sig,{tx}m表示區(qū)塊中包含的m個有序交易.排序節(jié)點對block 簽名后將其進行廣播;

        6)提交節(jié)點收到blcok 后首先驗證簽名檢查區(qū)塊完整性,之后對讀寫集進行驗證,并依此更新賬本.當各個提交節(jié)點完成以上操作后,可以視為對該客戶端發(fā)起的交易達成了共識.

        3.2 可驗證隨機函數(shù)的設(shè)計

        3.2.1 VRF 方案設(shè)計

        本文依據(jù)IETF 提出的VRF 標準草案[34]設(shè)計了基于橢圓曲線的可驗證隨機函數(shù),方案設(shè)計主要分為三部分:

        1)公私鑰對生成函數(shù)G

        設(shè)橢圓曲線的基點為O,階數(shù)為n,公私鑰對生成算法如下:

        A1:選擇隨機數(shù)k∈ [1,n-1];

        A2:生成一對橢圓曲線密鑰,其中私鑰為k,公鑰為Y=kO;

        2)隨機數(shù)和證明生成函數(shù)F

        輸入:消息m,私鑰k

        輸出:隨機數(shù)v,證明proof

        B1:選擇隨機數(shù)r∈ [1,n-1];B2:使用散列函數(shù)h1計算H=h1(m),將消息m映射到橢圓曲線上一點H;B3:計算rH,rO;B4:使用散列函數(shù)h2將輸入編碼成一個整數(shù)s,并且

        B5:計算

        B6:計算

        B7:使用函數(shù)h3將橢圓曲線上的點編碼成一個整數(shù),獲得隨機數(shù)v=h3(V),證明proof為(V;t;s).

        3)驗證函數(shù)V

        輸入:消息m′,證明proof′

        輸出:合法性(validorinvalid)

        C1:使用散列函數(shù)h1將消息m′映射到橢圓曲線上一點H′;

        C2:計算

        C3:計算

        C4:如果s=s′,則表明隨機數(shù)有效,驗證通過,輸出valid;否則表明隨機數(shù)無效,驗證不通過,輸出invalid.

        3.2.2 VRF 方案分析

        由第2.2 節(jié)可知,VRF 需要滿足三個性質(zhì):可驗證性、確定性和隨機性.下面將從這三個方面對設(shè)計的的可驗證隨機函數(shù)進行分析:

        1)可驗證性

        如果proof未被篡改,且m′=m,則

        2)唯一性和隨機性

        VRF 得到隨機數(shù)的過程分為三步,首先是使用一個從有限域到橢圓曲線上的散列函數(shù)h1將消息m映射到橢圓曲線上一點H,然后使用私鑰k計算得到kH,最后將kH編碼成一個整數(shù)value作為最終輸出的隨機數(shù).可以看出,計算value是一個確定的過程.在這個過程中k是不變的整數(shù),h3一個編碼函數(shù)對于相同的輸入總能保證相同的輸出.因此value的確定性和隨機性取決于h1函數(shù)的性質(zhì).Boneh[35]等提出了一種從有限域映射到橢圓曲線上點的散列函數(shù)構(gòu)造方法,并且證明了構(gòu)造方法的正確性.使用這種方法構(gòu)造的的h1具有散列函數(shù)的性質(zhì)[36].散列函數(shù)的輸出唯一性保證了對于相同m,H=h1(m)也是相同的,因此value也是確定的,即滿足了唯一性.散列函數(shù)均勻分布的性質(zhì)保證了H=h1(m)與橢圓曲線上隨機一點對于敵手來說是概率不可區(qū)分的,即保證了H的隨機性,從而保證了value的隨機性.

        4 改進方案分析

        4.1 安全性分析

        改進方案的關(guān)鍵點在于將Hyperledger fabric 中的背書節(jié)點由固定配置改為隨機選取.選取方式為使用可驗證隨機函數(shù),根據(jù)輸出隨機數(shù)的所在區(qū)間確定候選節(jié)點是否為背書節(jié)點.這一方案在增加身份抽取隨機性、保護節(jié)點身份隱私、提供節(jié)點身份認證和降低背書被攻擊風險方面都提供了更好的安全性.

        首先,由第3.2.2 節(jié)中隨機性的分析可知,可驗證隨機函數(shù)的輸出具有良好的隨機性,因此確保了在非交互模式下抽取背書節(jié)點的隨機性,降低了背書節(jié)點的中心化程度;同時,在私鑰未泄露的情況下,觀察者無法計算背書節(jié)點身份抽取的結(jié)果,確保了共識過程啟動時背書節(jié)點的身份隱私;此外,客戶端可以使用可驗證隨機函數(shù)的公鑰對節(jié)點的身份進行驗證,由第3.2.2 節(jié)中可驗證性的分析可知,這一特性確保了背書節(jié)點身份的真實性和可驗證性,防止敵手冒充背書節(jié)點.

        在原始方案中,客戶端會將接收到的所有背書結(jié)果進行對比,只有全部相同的情況下才會繼續(xù)交易.因此,即使敵手只成功攻擊了一個背書節(jié)點,客戶端也會因為得到的背書結(jié)果不一致而終止交易,即使將判定策略改為超過一半的背書結(jié)果一致則背書結(jié)果有效,這種情況下,背書節(jié)點中惡意節(jié)點數(shù)超過一半時,敵手可以完全控制交易的背書結(jié)果,從而影響交易內(nèi)容正確性.而在優(yōu)化方案中,客戶端不再需要得到全部背書節(jié)點的背書結(jié)果,使得攻擊者影響交易的概率降低.同樣是攻擊成功一個候選背書節(jié)點,如果敵手試圖影響交易,則需要背書節(jié)點候選集中只產(chǎn)生一個背書節(jié)點,且該節(jié)點就是被敵手攻擊成功的節(jié)點,其成功概率為:

        其中λ為抽取背書節(jié)點時的閾值,n為背書節(jié)點集的數(shù)量.以實驗為例,當n=10,λ=0.4 時攻擊成功一個背書節(jié)點,攻擊者可以影響交易的概率為:

        所以控制了k個候選背書節(jié)點的敵手,成功影響交易的概率為:

        在n=10,λ=0.4;k,i∈ (0,n]的情況下,敵手攻擊成功的概率變化如圖3 所示:

        圖3 敵手攻擊成功的概率Fig.3 Probability of successful enemy attack

        由圖3 可知,敵手攻擊成功的概率會隨控制節(jié)點數(shù)量的增加而提高,并且變化趨勢呈指數(shù)增長.雖然當敵手控制了全部候選背書節(jié)點時,攻擊成功的概率會接近100 % (可能會有不產(chǎn)生背書節(jié)點的情況,因此概率不是100 %,而是1-λn),但是當敵手未完全控制背書候選節(jié)點時,仍然可以保證敵手以一個較低的概率攻擊成功,因此可以通過設(shè)置λ與n,來滿足不同強度的安全需求.

        4.2 性能分析

        4.2.1 交易處理速度

        由第2.2 節(jié)可知,在輸入x相同的情況下,如果可驗證隨機函數(shù)的私鑰不同,則輸出的隨機數(shù)也不相同.因此,對于接受同一筆交易,不同的節(jié)點生成的隨機數(shù)是不同的,最終背書節(jié)點候選集中部分節(jié)點會成為該節(jié)點的背書節(jié)點,而剩余節(jié)點可能成為其他交易的背書節(jié)點.從整體上看,可驗證隨機函數(shù)的輸出隨機性確保了交易被均勻的分發(fā)給了所有的候選節(jié)點,這樣就減少了每個節(jié)點的工作量,從而提高了交易的并發(fā)處理能力.

        4.2.2 交易延遲

        交易延遲是指一筆交易從發(fā)起到確認經(jīng)歷的時間.在Hyperledger Fabric 中,交易延遲的時間是指從客戶端發(fā)起提案,經(jīng)過背書、排序,最終被提交到賬本所花費的時間[37].本文中影響交易延遲的第一個因素是優(yōu)化方案增加了抽取背書節(jié)點以及驗證節(jié)點身份的過程,很明顯可驗證隨機函數(shù)的算法效率會對交易的處理產(chǎn)生影響,進而影響交易延遲,因此需要通過實驗對方案設(shè)計的可驗證隨機函數(shù)的算法效率進行測試.影響交易延遲的另一個因素是優(yōu)化方案對背書過程進行了調(diào)整.在假設(shè)可驗證隨機函數(shù)對交易延遲的影響忽略不計的前提下,從交易流程上看,優(yōu)化方案與原始方案僅在背書過程中有所不同,所以從兩種方案交易處理速度可以推斷出二者的交易延遲差異不大.

        4.2.3 通信成本

        PBFT 共識算法中所有N個節(jié)點均以廣播的形式發(fā)送數(shù)據(jù),因此導致了 O (N2) 量級的通信成本,Hyperledger fabric 中客戶端與背書節(jié)點之間、客戶端與排序節(jié)點之間是點對點形式的雙向通信,排序節(jié)點與提交節(jié)點之間是廣播形式的單向通信,因此通信成本為 O (N) 量級.從整體流程上看,優(yōu)化方案與原始方案在各個階段的通信方式保持一致,因此通信成本同樣為 O (N) 量級,并不會帶來額外的通信開銷.

        4.2.4 與其他共識機制的比較

        除了優(yōu)化方案與原始方案的比較外,本文也將優(yōu)化后的Hyperledger fabric 共識機制與Algorand、Definity 和Ouroboros Praos 這三種基于可驗證隨機函數(shù)的共識機制進行了對比分析.

        由于Hyperledger fabric 是一個聯(lián)盟鏈系統(tǒng),而Algorand、Definity 和Ouroboros Praos 則是公有鏈系統(tǒng),二者的應用場景、構(gòu)建方法和共識原理都是不同的.Hyperledger fabric 的共識機制采取了將應用層信任模型同底層共識協(xié)議相解耦的方式,因此不便于直接從性能效率方面同公有鏈共識算法進行比較.所以本文從算法特性的角度對這幾種共識機制進行比較分析.如表1 所示,本文對比分析了這幾種共識機制中可驗證隨機函數(shù)的作用、共識原理、資源消耗以及容錯能力.

        表1 優(yōu)化方案與其他共識機制的對比Table 1 Comparison of optimization scheme with other consensus mechanisms

        在Hyperledger fabric 共識機制的應用層信任模型中背書節(jié)點是固定的且身份公開,這是導致Fabric 背書節(jié)點易受攻擊的原因.因此Fabric 需要解決的重點問題是如何可驗證地隨機選取背書節(jié)點.優(yōu)化方案正是基于此問題,使用可驗證隨機函數(shù)選取背書節(jié)點,增加敵手的攻擊難度.Algorand、Definity、Ouroboros Praos,他們需要解決的問題都是如何在全網(wǎng)節(jié)點中安全的選取一個出塊節(jié)點.具體而言,Algorand 是在全網(wǎng)中選取一個出塊節(jié)點,再選取委員會對區(qū)塊進行多輪投票,最終達成共識;Dfinity 將全網(wǎng)中節(jié)點分為多組委員會,在當前負責出塊的委員會中選取出塊節(jié)點.Ouroboros同樣是在全網(wǎng)中選取出塊節(jié)點.

        從共識原理上看,作為公鏈共識算法的Algorand、Definity、Ouroboros Praos 并無應用層信任模型的概念,仍是在系統(tǒng)層共識機制的基礎(chǔ)上進行的改進.Algorand 使用的是一個變種的PBFT 算法(文獻[22]中稱為BBA 算法),Definity 底層直接使用PoS 算法,Ouroboros Praos 則是一個經(jīng)過了安全證明的PoS 共識模型.PBFT 和PoS 共識機制將交易內(nèi)容和交易順序同時交給出塊節(jié)點完成,這導致Algorand、Definity 和Ouroboros Praos 共識模型是緊耦合的,并且限制了共識機制的優(yōu)化.Hyperledger fabric 優(yōu)化方案將應用層的信任模型同底層共識算法相解耦,應用層背書策略和交易合法性驗證可根據(jù)具體應用進行定制.而對于交易順序一致性則交給排序節(jié)點完成,而排序節(jié)點本身并不關(guān)心交易內(nèi)容是否合法,因此可以選擇不同算法去完成交易順序的共識,比如可以把當前的kafka 替換為raft 算法.這樣Hyperledger fabric 優(yōu)化方案可以根據(jù)場景的不同選擇不同的排序算法,從而具有較高的靈活性.

        在資源消耗方面,基于PBFT 的Algorand 不存在 “挖礦” 的過程,所以不會有大量計算消耗,但是投票過程中的多輪交互會導致較高的通信成本.基于PoS 的Dfinity 和Ouroboros Praos 仍然會有“挖礦” 的過程,所以還是會導致資源浪費.Hyperledger fabric 優(yōu)化方案同樣不存在 “挖礦” 的過程,并且只有排序節(jié)點發(fā)送區(qū)塊的過程是全網(wǎng)廣播的,其他過程都是部分節(jié)點間的交互,因此資源消耗很少.

        Algorand、Definity 和Ouroboros Praos 都是支持拜占庭容錯的,他們的容錯能力分別為n=3f+1、n=2f+1、n=2f+1.其中,n表示全網(wǎng)節(jié)點數(shù),f代表惡意節(jié)點的數(shù)量.Hyperledger fabric 對共識模型進行了解耦,并且具有不同的節(jié)點類型,所以要從不同的角度去分析其容錯能力.在交易內(nèi)容一致性的層面并沒有提供拜占庭容錯的能力,他只支持對排序節(jié)點的一般故障容錯,如數(shù)據(jù)丟失或延遲.對于惡意排序節(jié)點發(fā)送的錯誤數(shù)據(jù),并不具備容錯能力.而在交易內(nèi)容合法性的層面,如果客戶端是惡意節(jié)點,其偽造的交易由于不具有正確的背書最終不會驗證通過,從這一點上看,Hyperledger fabric 對于客戶端是支持拜占庭容錯的.但是如果背書節(jié)點是惡意節(jié)點,客戶端會因為收到不同的數(shù)據(jù)而終止交易,所以這一點上看,Hyperledger fabric 對于背書節(jié)點是不支持拜占庭容錯的.優(yōu)化方案使用可驗證隨機函數(shù)抽取背書節(jié)點,客戶端不再接受非背書節(jié)點發(fā)送的數(shù)據(jù),這樣就減少了交易被終止的情況.所以從整體上而言,優(yōu)化方案提升了原始方案的容錯能力.優(yōu)化方案中背書節(jié)點的容錯能力取決于背書節(jié)點的數(shù)量m和抽取閾值λ的設(shè)定.

        總的來說,相較于其他基于可驗證隨機函數(shù)的共識機制來說,優(yōu)化方案具有更靈活的架構(gòu)和更低的資源消耗,并且具有高于Fabric 原始方案的容錯能力.

        5 實驗測試

        5.1 實驗設(shè)計

        本文依照Hyperledger fabric 的架構(gòu)構(gòu)建了一個區(qū)塊鏈系統(tǒng).系統(tǒng)對Hyperledger fabric 的交易流程進行了模擬,特別的是,系統(tǒng)中可以使用固定和隨機兩種方式選取背書節(jié)點,即系統(tǒng)可以分別按照原始方案和優(yōu)化方案進行交易.本文的實驗環(huán)境是一臺12 核CPU、16 GB 內(nèi)存和2 TB 機械硬盤的服務器.實驗使用Docker 技術(shù)將節(jié)點以容器的形式部署在服務器上.系統(tǒng)的網(wǎng)絡(luò)拓撲如圖4 所示,系統(tǒng)中有四類節(jié)點:客戶端、候選背書節(jié)點、排序節(jié)點和提交節(jié)點.節(jié)點通過網(wǎng)絡(luò)互連,既可以進行廣播通信,又可以進行點對點通信.本實驗中的節(jié)點設(shè)置如下:100 個客戶端,10 個候選背書節(jié)點,1 個排序節(jié)點,100 個提交節(jié)點.客戶端之間相互獨立,可以同時發(fā)起交易.當系統(tǒng)使用原始方案時,所有的候選背書節(jié)點都需要對提案進行背書,使用優(yōu)化方案時,會增加背書節(jié)點的抽取過程(抽取的閾值λ=0.4),客戶端也會相應增加驗證背書節(jié)點身份的過程.除此之外,原始方案與優(yōu)化方案的排序和提交策略保持一致.實驗使用Golang1.9 實現(xiàn)了原始方案與優(yōu)化方案的業(yè)務邏輯.其中可驗證隨機函數(shù)的實現(xiàn)基于Golang 中的crypto 包,使用的橢圓曲線為curve-p256,使用的hash 函數(shù)為sha-256.通過對兩種方案的性能測試比較,本節(jié)將從安全性、可靠性、交易處理速度、交易延遲和通信成本五個方面對優(yōu)化方案進行分析.

        圖4 實驗網(wǎng)絡(luò)拓撲圖Fig.4 Network topology of experiment

        5.2 實驗結(jié)果與分析

        5.2.1 安全性

        在安全性方面,實驗主要對惡意節(jié)點對背書過程的攻擊風險方面進行了測試對比分析.原有共識機制存在的主要問題是背書節(jié)點中只要存在一個惡意節(jié)點就會導致交易背書過程中斷,交易失敗.如第4.1 節(jié)中的分析所述,即使將判定策略改為 “超過一半的背書結(jié)果一致則背書結(jié)果有效”,當背書節(jié)點中惡意節(jié)點數(shù)超過一半時,敵手仍然能夠成功控制交易流程.改進方案則通過使用VRF 隨機抽取背書節(jié)點,增加敵手影響交易流程的難度,降低了背書過程被攻擊的風險.

        為此,測試方案選擇在候選節(jié)點數(shù)n=10 和惡意節(jié)點數(shù)k=5 的條件下進行測試,結(jié)果如表2 所示.實驗結(jié)果表明,對于原始方案,背書節(jié)點中惡意節(jié)點數(shù)超過一半時,敵手會以100 %的概率成功控制了交易流程.而使用優(yōu)化方案后,只有惡意節(jié)點被選為背書節(jié)點并且惡意節(jié)點數(shù)超過選中背書節(jié)點數(shù)一半以上時,惡意攻擊才能成功控制交易流程,導致交易失敗.實驗中10 000 次交易情況下敵手攻擊成功的概率為6.86 %,與第4.1 節(jié)中的計算值7.1 %基本接近,由此可見優(yōu)化方案中敵手攻擊成功的概率明顯低于原始方案,這也證明了優(yōu)化方案相較于原始方案的安全性提升.

        表2 敵手攻擊成功次數(shù)Table 2 Number of successful attacks by adversary

        5.2.2 可靠性

        由第4.1 節(jié)中的分析可知,由于引入了VRF 進行節(jié)點身份隨機抽取時可能出現(xiàn)抽取結(jié)果為0 個背書節(jié)點的情況,影響系統(tǒng)的可靠性.為此優(yōu)化方案在客戶端使用計時重傳機制來解決這一問題,當客戶端在固定時間內(nèi)未接收到有效的背書響應時會重新發(fā)起交易.實驗對這種情況進行了驗證,并且對使用計時重傳機制后進行了再次驗證,結(jié)果如表3所示.從實驗結(jié)果可以看出,當交易次數(shù)較多時,會出現(xiàn)無背書節(jié)點的情況,但是這種情況發(fā)生的概率還是很低的.使用計時重傳機制后,無背書節(jié)點情況發(fā)生的次數(shù)明顯降低,事實上重傳后仍無背書節(jié)點情況發(fā)生的概率為λ2n,基本可以將無背書節(jié)點的情況忽略不計.

        表3 無背書節(jié)點情況發(fā)生次數(shù)Table 3 Frequency of nonoccurence of endorsing peer

        5.2.3 交易處理速度

        與Hyperledger fabric 原始的共識機制相比,本方案通過將交易的背書分攤給多個節(jié)點,降低背書節(jié)點需要背書的交易數(shù)量.考慮一種特殊情況:假設(shè)兩筆交易對應的的背書節(jié)點之間并不存在交集,則這兩筆交易可以同時進行背書,可以視為對交易的并行處理.不出現(xiàn)這種情況,從整體而言,每個背書節(jié)點不需要依次處理所有的交易,而是只是其中一部分,一批交易所需的背書時間僅取決于分配交易數(shù)最多的背書節(jié)點,這樣改進方案的背書時間相較于原有方案有所縮短,從而提高交易的處理速度.

        實驗分別對原有的Hyperledger fabric 共識機制和優(yōu)化后的共識機制進行了仿真,通過模擬構(gòu)建兩種方案中的交易系統(tǒng),將兩種方案的交易處理速度進行了對比.其中系統(tǒng)參數(shù)設(shè)置為:背書節(jié)點候選集數(shù)量為10,閾值λ為0.4.實驗結(jié)果如圖5 所示.

        從圖5 中的實驗結(jié)果可以看出,優(yōu)化后的方案在交易處理速度方面相較于原始方案有了明顯提高.特別是當交易數(shù)較大時,雖然隨著交易數(shù)量的增加二者的交易時間都呈現(xiàn)上升趨勢,但是優(yōu)化方案仍能比原始方案的時間少約50 %,優(yōu)化方案的交易處理速度提升明顯.

        圖5 原有方案與優(yōu)化方案交易時間對比Fig.5 The comparison of transaction time between original scheme and optimized scheme

        5.2.4 交易延遲

        本文針對第5.2.2 節(jié)中提到的影響交易延遲的兩個因素,分別進行了測試.

        第一個是對本文設(shè)計的可驗證隨機函數(shù)的性能測試.本文實現(xiàn)的可驗證隨機函數(shù)主要分為三部分,生成密鑰、生成隨機數(shù)和證明、驗證隨機數(shù)和證明.實驗對方案設(shè)計的可驗證隨機函數(shù)進行了多次測試,各部分算法的運行時間如表4 所示:

        表4 可驗證隨機函數(shù)各部分算法運行時間Table 4 Running time of each part of the VRF algorithm

        由實驗結(jié)果可知,可驗證隨機函數(shù)各部分算法的運行時間均在毫秒級,并且相較于第5.2.3 節(jié)中處理交易所需的總時間,基本可以忽略其對交易處理速度的影響.在此基礎(chǔ)上,本文對兩種方案的交易延遲進行了測試,實驗結(jié)果如圖6 所示.原始方案和優(yōu)化方案的交易延遲時間都會隨著交易數(shù)量的增加而增長,這是由于交易數(shù)量超過處理上限后,需要排隊等待節(jié)點處理.可以看出,在相同交易數(shù)量的情況下,優(yōu)化方案的交易延遲明顯低于原始方案.

        圖6 原有方案與優(yōu)化方案交易延遲對比Fig.6 The comparison of transaction delay between original scheme and optimized scheme

        5.2.5 通信成本

        本文將一筆交易從發(fā)出到確認這段時間內(nèi),區(qū)塊鏈網(wǎng)絡(luò)產(chǎn)生的所有報文的報文數(shù)量和報文大小作為這筆交易的通信成本.實驗分別測試了原有方案與優(yōu)化方案下,一筆交易和多筆交易時的通信成本,實驗結(jié)果如圖7 所示.原始方案中,每個背書節(jié)點都會將背書信息發(fā)送給客戶端,而在優(yōu)化方案中,未被選中的候選背書節(jié)點將不再執(zhí)行此操作,因此在本實驗中,優(yōu)化方案的報文數(shù)量和總報文大小均小于原始方案,這表明使用優(yōu)化方案可以在一定程度上降低通信成本.

        圖7 原有方案與優(yōu)化方案通信成本對比Fig.7 The comparison of communication cost between original scheme and optimization scheme

        6 總結(jié)

        本文針對Hyperledger fabric 原有共識機制存在的問題,提出了一種基于可驗證隨機函數(shù)的背書節(jié)點隨機選取的優(yōu)化方案,并對優(yōu)化后的共識機制從安全性、通信成本和交易性能等方面進行了分析比對和實驗測試.實驗結(jié)果表明,優(yōu)化后的共識機制在保證通信成本基本不變的前提下,具有更高的安全性、更低的交易延遲和更快的交易處理速度.

        h视频在线观看视频在线| 日韩一线无码av毛片免费| 永久国产盗摄一区二区色欲| 91蜜桃国产成人精品区在线| a黄片在线视频免费播放| 欧美丰满熟妇性xxxx| 又爆又大又粗又硬又黄的a片| 国产精品98视频全部国产| 亚洲长腿丝袜中文字幕 | 亚洲国产一二三精品无码| 国产无遮挡又黄又爽在线视频| 一区五码在线| 日本一道本加勒比东京热| 亚洲av无码国产精品色软件| 18禁黄网站禁片免费观看| 久久久久久99精品| 中文字幕成人精品久久不卡91 | 国产免费一级高清淫日本片| 亚洲美女av二区在线观看| 日本视频二区在线观看| 国产精品对白刺激久久久| 精品九九视频| 91精品亚洲熟妇少妇| 无码色av一二区在线播放| 日产精品久久久久久久蜜臀| 中文字幕亚洲综合久久| 国产亚洲精品精品综合伦理| 亚洲精品久久久久中文字幕| 一区一级三级在线观看| 人妻少妇偷人精品久久人妻| 在线麻豆精东9制片厂av影现网 | 国产99re在线观看只有精品| 亚洲最大的av在线观看| 欧美激情乱人伦| a亚洲va欧美va国产综合| 少妇高潮惨叫久久久久电影| 亚洲av一区二区三区蜜桃| 人人妻人人澡人人爽人人精品97| 国产亚洲精品A在线无码| 国产av一区二区三区天美| 人成午夜免费视频无码|