王 娟, 劉文斌, 冀璐璐
(黑龍江科技大學 電子與信息工程學院, 哈爾濱 150022)
區(qū)塊鏈是以比特幣為代表的數(shù)字加密貨幣體系的核心支撐技術,融合了分布式系統(tǒng)、密碼學、博弈論等多種學科建立的一種新型信任模型[1]。通過結合分布式賬本、p2p網(wǎng)絡、共識機制、智能合約、非對稱加密等多種底層技術,在互不相干的分布式節(jié)點中實現(xiàn)去信用的點對點交易。區(qū)塊鏈的本質是一種分布式數(shù)據(jù)庫,使用鏈式數(shù)據(jù)結構來驗證和存儲數(shù)據(jù),通過分布式節(jié)點判決機制來生成和更新數(shù)據(jù),它維護了一個持續(xù)增長并且不可被篡改和修改的數(shù)據(jù)記錄列表,直接或間接依賴可信任第三方的活動均可從該技術受益[2]。
區(qū)塊鏈技術的核心優(yōu)勢之一,就是能夠在決策權高度分散的去中心化系統(tǒng)中,使各節(jié)點高效地針對區(qū)塊數(shù)據(jù)的有效性和一致性達成共識[3],避免了系統(tǒng)中的分歧現(xiàn)象。同時,共識機制是保證區(qū)塊鏈系統(tǒng)短時間內完成交易響應、驗證并廣播的關鍵因素,如何保證數(shù)據(jù)的可靠性和真實性,取決于共識機制使節(jié)點間達成共識的方法。共識機制的存在,維護了系統(tǒng)的運作順序,保障了系統(tǒng)的公平性。因此,性能優(yōu)異的共識機制是保證區(qū)塊鏈準確高效運轉的必要條件。為使節(jié)點快速、安全地達到數(shù)據(jù)一致,專家學者相繼提出多種共識機制。文獻[4]正式提出了工作量證明共識機制(Proof of work,PoW),為后來中本聰設計比特幣的共識機制奠定基礎,但卻存在資源消耗較大且共識時間較長的缺陷。文獻[5]提出了實用拜占庭容錯算法(Practical byzantine fault tolerance)有效提高了算法的共識效率,但無法抵御Sybil攻擊,系統(tǒng)的安全穩(wěn)定性受到威脅。文獻[6]給出了股份授權證明機制(Delegated proof of stake,DPoS),該機制大幅減少了決策節(jié)點的個數(shù),具有快速、高效的優(yōu)勢,但仍存在無法應對惡意節(jié)點入侵、節(jié)點職能分配不均的缺點。
共識機制是互不相干的若干節(jié)點在短時間內達成一致的算法。近年來,由于區(qū)塊鏈技術的迅猛發(fā)展,各種類型的共識機制相繼涌現(xiàn)。圍繞共識機制的研究內容,目前主流的共識機制有工作量證明、權益證明和股份授權證明三種。工作量證明機制(Proof of work,PoW),全網(wǎng)節(jié)點基于自身算力相互競爭來共同計算一道求解復雜但驗證容易的SHA256數(shù)學難題,算力最優(yōu)的節(jié)點獲得記賬權并獲得比特幣獎勵[7]。PoW共識機制中節(jié)點間無需交換額外信息即可達成共識,有效的解決了女巫攻擊問題,且能有效避免區(qū)塊鏈分叉現(xiàn)象,但在共識過程中消耗大量算力,造成資源浪費;而且為了獲得記賬權,低算力節(jié)點會聯(lián)合起來形成礦池,出現(xiàn)中心化現(xiàn)象,對區(qū)塊鏈的安全性造成嚴重影響。權益證明機制(Proof of stake,PoS),其本質是記賬權由最高權益而非最高算力的節(jié)點獲得[8]。PoS機制有效解決了PoW算力浪費的問題,大大縮短了達成共識的時間,攻擊者必須積累很多時間和資金,并以自身資金受損為代價對主鏈發(fā)起攻擊,有效杜絕了攻擊者的行為動機。缺點是隨著財富的積累,容易出現(xiàn)集權現(xiàn)象,而且擁有權益的節(jié)點未必想?yún)⑴c記賬,易出現(xiàn)積極性缺失等問題,而且仍需要挖礦,容易出現(xiàn)“富者更富”的情況。股份授權證明機制(Delegated proof of stake,DPoS),類似于“董事會決議”。在這種機制中,普通節(jié)點具有投票權,該節(jié)點將選票投給認為可信的其他節(jié)點,選取出一定數(shù)量的授權節(jié)點,依次對交易進行驗證和記賬。授權節(jié)點本身需要繳納一定的保證金,并對其他節(jié)點負責。若授權節(jié)點記賬期間出現(xiàn)區(qū)塊信息缺失或篡改,該節(jié)點將失去記賬權并失去保證金。同時,授權節(jié)點本身需保證在線率,以達成盈利目標。DPoS共識機制在PoS共識機制的基礎上大幅減少了參與驗證和記賬節(jié)點的數(shù)量,可以在較低的能耗下實現(xiàn)快速共識驗證,提高了共識效率。缺點是普通節(jié)點話語權較弱,投票積極性有待提高[9]。當區(qū)塊鏈系統(tǒng)中發(fā)現(xiàn)惡意節(jié)點時,不能迅速做出應對,而且會出現(xiàn)中止進程的情況。目前區(qū)塊鏈系統(tǒng)主流的共識機制存在資源消耗較大、易出現(xiàn)集權現(xiàn)象、安全性較弱等不足。
針對這些問題,筆者提出一種區(qū)塊鏈動態(tài)授權共識機制,采用混沌隨機和煙花尋優(yōu)兩種篩選手段構建授權節(jié)點集合,通過建立新型的決議監(jiān)管的判決機制和統(tǒng)計模型,排除惡意節(jié)點的不利影響,實現(xiàn)授權節(jié)點的動態(tài)更新,文中的研究既可保證達成共識的一致性和高效性,又能實現(xiàn)共識數(shù)據(jù)的可用性和安全性,為共識機制設計分析奠定技術基礎,對區(qū)塊鏈工程應用具有重要的理論意義和應用價值。
動態(tài)授權的區(qū)塊鏈共識機制,如圖1所示。文中在傳統(tǒng)DPoS共識機制的基礎上提出了一種區(qū)塊鏈動態(tài)授權共識機制,是由智能優(yōu)化授權節(jié)點集合的構建和動態(tài)更新決議監(jiān)管機制的建立兩部分組成。
圖1 動態(tài)授權的區(qū)塊鏈共識機制Fig. 1 Blockchain consensus mechanism for dynamic authorization
在由全部節(jié)點組成的區(qū)塊節(jié)點集合中,首先利用混沌序列的隨機性篩選得到隨機候選節(jié)點集合,保證授權節(jié)點集合的隨機性和公正性;其次經(jīng)混沌隨機篩選得到的節(jié)點再通過煙花算法尋優(yōu)得到最優(yōu)節(jié)點,構成最優(yōu)候選節(jié)點集合,保證節(jié)點集合的高質量水平,共同構建兼具“民主”和“集中”的授權節(jié)點集合。當收到記賬節(jié)點的上鏈請求時,授權節(jié)點集合對其進行決議判決,若超過三分之二的節(jié)點同意該請求則判定達成共識;反之,則為拒絕共識。為保證授權節(jié)點集合可以始終對節(jié)點上鏈請求進行有效校驗,在原有基礎上增加授權節(jié)點集合的決議監(jiān)管機制。對授權節(jié)點集合的決議量進行決議統(tǒng)計,若決議量大于等于預設閾值,則表示該授權節(jié)點集合已完成較多的決議判決,而為保證決議監(jiān)管機制的公正性及動態(tài)更新性,重新通過混沌隨機和煙花算法篩選授權節(jié)點,構成新一輪的授權節(jié)點集合,實施決策權力。反之,若決議量小于預設閾值,則可以繼續(xù)進行決議判決。新型動態(tài)決議監(jiān)管機制有效的減少了惡意節(jié)點的作惡現(xiàn)象,保證了鏈上數(shù)據(jù)的準確性。
混沌隨機篩選是利用了混沌序列的無規(guī)則運動在所有節(jié)點中隨機篩選出若干節(jié)點,構建出隨機候選節(jié)點集合,保證了系統(tǒng)的隨機性和公正性。文中采用文獻[10]中提出的一種logistic和tent的級聯(lián)混沌映射,級聯(lián)混沌映射的公式為
xn+1=1-|1-4μ·xn·(1-xn)|,
(1)
式(1)中, logistic的初值為0.76,系統(tǒng)參數(shù)為4,設置tent的系統(tǒng)參數(shù)μ為1.999。執(zhí)行級聯(lián)混沌映射的迭代,生成混沌序列xn。將級聯(lián)混沌映射迭代生成的混沌序列xn代入整數(shù)公式進行數(shù)字量化:
(2)
式(2)中,取a=28,Tn∈[0,N],n=100,正好對應于8 bits表示的無符號整數(shù)范圍。
采用文獻[11]中提出的篩選方法,將級聯(lián)混沌序列的取值區(qū)間分為均等的N個區(qū)間Di(i=0,1,…,N),區(qū)間Di可以理解為[i/N+1, (i+1) /(N+1))。判斷整數(shù)化迭代后輸出Tn是否遍歷過Di區(qū)間:如果Tn的值未遍歷Di區(qū)間內,則保存相應的Tn值為Yn并繼續(xù)迭代;如果Tn的值不存在于Di區(qū)間內或遍歷且保存過混沌值的Di區(qū)間內,則直接迭代,直到遍歷完N+1個區(qū)間。
煙花算法是一種群體智能算法,收斂速度快,具有優(yōu)良的尋優(yōu)能力[12]。煙花算法可以依據(jù)所求問題的復雜程度而變換煙花和火花的數(shù)目,在一定范圍內更精細、高效的搜索最優(yōu)解。從而提高節(jié)點針對某一特定應用的高質量性能,提高了共識的效率。
煙花算法流程,如圖2所示。在解空間內初始煙花種群,對目標問題求最優(yōu)解,根據(jù)適應度值的不同,通過爆炸算子得到煙花的爆炸半徑和爆炸火花數(shù)目。為保證種群多樣性,通過變異算子對煙花的若干維度進行變異操作,得到變異火花。同時對超出邊界的火花應用映射規(guī)則映射到解空間內。為保證煙花種群中的優(yōu)良信息迭代,應用選擇策略選擇下一代煙花群體。同時判斷種群中的最優(yōu)解是否滿足終止條件,若滿足則停止搜索,不滿足則重新迭代。
圖2 煙花算法流程Fig. 2 Flow of firework algorithm
通過對適應度函數(shù)在可行域內尋求最優(yōu)解,不失一般性,設置最優(yōu)化問題的數(shù)學模型為
fmin(xi)=ωaxi1+ωbxi2,xi∈Ω,
(3)
式中:f(xi)——適應度值;
ωa、ωb——權重值,文中ωa=ωb=0.5;
xi1——代表權益;
xi2——算力;
Ω——可行域。
在解空間的范圍內,初始化N個煙花個體位置xi(i=1,2,…,N),通過目標函數(shù)計算煙花個體的適應度值f(xi),得到煙花的爆炸半徑和火花數(shù)目:
(4)
(5)
f(xi)——煙花個體的適應度值,i=1,2,…,N;
ε——機器最小值,避免除零操作。
由于適應度值的好壞直接決定該位置的火花數(shù)目,為避免不同適應度值的火花數(shù)目過多或過少,進行了如下限制:
(6)
式中:a、b——常數(shù);
round——取整函數(shù)。
(7)
U(-1,1)——在區(qū)間[-1,1]中服從均勻分布的隨機數(shù)的值。
若煙花爆炸產生的火花超出可行域,則在k個維度上執(zhí)行越界處理操作,重新歸入火花種群中
(8)
式中:xUB,k、xLB,k——解空間的在維度k上的上下邊界;
mod——取余函數(shù)。
為提高火花的多樣性,避免局部最優(yōu),對煙花執(zhí)行高斯變異操作:
(9)
N(1,1)——高斯分布。
為保證煙花種群中優(yōu)良個體迭代,選取N個個體作為下一代煙花,適應度值最小的煙花個體作為迭代煙花,其余N-1個煙花按照輪盤賭的規(guī)則選出:
(10)
(11)
式中:xi、xj——任意的煙花個體;
P(xi)——煙花xi被選擇的概率;
R(xi)——當前個體到其他個體之間的距離之和,R(xi)越大,被選擇的概率則越大。判斷最終結果是否滿足終止條件,若滿足則終止迭代直接輸出結果,不滿足則重新執(zhí)行。
Hyperledger caliper作為一個通用的全功能區(qū)塊鏈測評工具,可以對不同區(qū)塊鏈系統(tǒng)的吞吐量、時延、容錯性等性能指標進行測試,由于具有準確、擴展性強等優(yōu)點,因此,文中采用Hyperledger caliper搭建區(qū)塊鏈來模擬交易模塊。在Hyperledger caliper測試平臺中,建立100個模擬賬戶,每個賬戶的初始額度設為1 000 000,為了保證交易的持續(xù)進行且以最快的速度完成交易,將每次的交易量均設為1。針對區(qū)塊鏈吞吐量和時延兩大性能指標,通過計算單位時間內的交易量,對文中提出的動態(tài)授權共識機制進行測試與分析,驗證該機制的有效性和可用性。
在區(qū)塊鏈中,交易吞吐量每秒交易數(shù)(Transaction per second,TPS)指的是交易從發(fā)出請求到確認,并且寫入?yún)^(qū)塊鏈中的總交易數(shù)與消耗時間的比值,是衡量系統(tǒng)并發(fā)能力的重要指標。吞吐量越高,則共識機制的效率就越高,處理交易的能力就越強。
ITPS=TSum/Δt,
(12)
式中:Δt——交易請求發(fā)出到寫入?yún)^(qū)塊鏈上之間的時間間隔;
TSum——該段時間的所有交易數(shù)量。
不同時間間隔的交易量,如圖3所示。
圖3 不同時間間隔的交易量Fig. 3 Transaction volume at different time intervals
在吞吐量性能測試中,分別設置Δt為10、30、60、120 s四個出塊時間間隔,通過測試得到每個時間間隔內的交易總量。為了保證所得數(shù)據(jù)的準確一般性,每個時間間隔進行20次重復測試。
根據(jù)不同出塊時間間隔計算出平均吞吐量,如圖4所示。
圖4 吞吐量與出塊時間間隔關系Fig. 4 Relationship between throughput and block time interval
區(qū)塊時間間隔越長,區(qū)塊收集到的交易量越多。在出塊時間間隔[10 30] s區(qū)間內,動態(tài)授權共識機制的吞吐量呈上升趨勢,在30 s之后,由于交易量增多而傳輸速率不變,傳輸時間延長,導致吞吐量逐漸下降。動態(tài)授權共識機制的平均吞吐量約為8 942 比/s。作為比較,文中提出的動態(tài)授權共識機制與目前較為成熟的區(qū)塊鏈系統(tǒng),以及文獻[11]提出的DNBFT機制進行TPS比較如圖5所示。
圖5 算法平臺TPS比較Fig. 5 Comparison of algorithm platform TPS
由圖5可知,動態(tài)授權共識機制有較優(yōu)的吞吐量性能,單位時間內可以完成的交易數(shù)較多,可以應對較多的應用場景。
區(qū)塊鏈的交易時延是指從交易提交到交易確認所用時間,是衡量區(qū)塊鏈網(wǎng)絡中通信性能和共識算法運行時間的標準。時延越低,交易確認越迅速,區(qū)塊鏈出現(xiàn)分叉現(xiàn)象的概率越低,同時用戶無需等待過長時間,體驗更佳。不同時間間隔交易時延如圖6所示。
圖6 不同時間間隔交易時延Fig. 6 Trading delays at different time intervals
(13)
式中:tD——時延,
tc——交易確認時間;
tp——交易提交時間;
tB——交易在共識節(jié)點間的傳輸時間;
tC——共識消耗的事件;
tBB——區(qū)塊在共識節(jié)點間廣播確認時間。
由圖6可見,在時延測試性能中,通過設置與上節(jié)相同的出塊時間間隔,測試得到每個時間間隔的交易時延。為了保證所得數(shù)據(jù)的準確一般性,每個區(qū)塊時間間隔統(tǒng)計五個區(qū)塊。
根據(jù)不同出塊時間間隔計算出平均時延,同時與文獻[13-14]提出的DNBFT機制和DDBFT機制進行比較。交易時延和出塊時間間隔關系如圖7所示。
圖7 交易時延和出塊時間間隔關系Fig. 7 Relationship between transaction delay and block time interval
由圖7可見,出塊時間間隔越長,則說明該段時間交易信息越多,區(qū)塊越來越大,而網(wǎng)絡帶寬有限,造成網(wǎng)絡廣播傳輸和節(jié)點驗證消耗的時間也就越長,時延也就越大。相對于這兩種共識機制,動態(tài)授權共識機制的交易時延較低。通過查閱官方文檔可知,DPoS共識機制的時延為秒級,動態(tài)授權共識機制的時延為毫秒級,具有更優(yōu)的時延特性,節(jié)點響應更加迅速。
區(qū)塊鏈技術的發(fā)展需要不停地探索與創(chuàng)新,一種共識機制無法滿足所有應用場景的需求。文中提出了一種動態(tài)授權的區(qū)塊鏈共識機制,利用Hyperledger caliper測試平臺對動態(tài)授權共識機制的吞吐量和時延兩大特性進行測試及分析,結果表明,動態(tài)授權共識機制可以較大提高區(qū)塊系統(tǒng)達成共識的效率,從而保障區(qū)塊節(jié)點達成共識的安全、準確及高效。該研究可為區(qū)塊鏈共識機制的提出與改進提供了一定的理論依據(jù)。