張永,李曉輝
(華北計算技術研究所北京100083)
區塊鏈作為比特幣的底層技術,是一種通過去中心化、去信任的方式集體維護一個可靠數據庫的技術方案[1-2]。共識機制是區塊鏈的核心,解決了如何在一個缺乏信任、完全自由開放的網絡中達成共識的問題[3]。
自文獻[1]提出比特幣以來,業界對區塊鏈的研究如火如荼,涉及到金融、物聯網、版權保護和農業等多個領域[4-8]。為了促進區塊鏈的發展,專家學者相繼提出了Bitcoin-NG[9]、權益證明(Proof Of Stake,POS)、DPOS等在內的多種共識機制[2]。這些共識機制在資源消耗、安全性或共識時間等方面各有側重[10-11]。如在DPOS機制中,節點通過投票選取代理節點的方式產生區塊,達成數據的共識可以達到秒級,但網絡節點會出現投票不積極的情況,而且如果代理節點中出現了惡意節點,系統不能及時的剔除,導致系統的安全性降低等問題[3]。
文中重點針對DPOS中存在的問題進行改進[3],提出了一種改進的DPOS共識機制。在節點投票和代理節點的選擇條件方面做了優化。通過信用獎懲和反對票機制,能夠實現在同等條件下,提高網絡節點投票的積極性,并且可以通過快速剔除惡意代理節點以提高系統的安全性。
共識是指相互獨立的多個參與方對某一問題達成一致的結果。區塊鏈中的共識是指在開放的分布式網絡中各節點對某一區塊達成的一致性,是區塊鏈的核心。共識機制主要研究的是區塊產生的記賬權分配問題和區塊產生后的校驗問題。目前,圍繞共識機制的研究內容,區塊鏈系統存在的共識算法主要有POW、POS、POL和DPOS等。
2008年,文獻《Bitcoin:A Peer-to-Peer Electronic Cash System》中提出了POW(Proof-Of-Work)即工作量證明共識機制,并成功應用在比特幣中。該機制是通過各節點進行哈希運算爭取區塊記賬權。區塊產生后,向全網進行廣播,供其他節點進行驗證[12-13]。其優點是可以解決在完全開放、自由的網絡中的數據一致性問題。但是區塊的產生需要消耗大量的算力和其他資源,并且數據達成一致性時間較長,通常在10分鐘以上,難以滿足普遍的業務需求[14]。
針對POW的資源浪費、共識時間較長等問題,文獻[15]提出POS共識機制。POS的主要思想是節點獲得區塊記賬權的難度與節點所持有的代幣成反比,代幣即節點在系統中持有的權益,持有代幣多且時間長的節點,在爭取區塊記賬權時越容易獲勝[16]。相比較POW,POS在一定程度上減少了數學運算帶來的資源消耗,代幣的引入也縮短了達成共識的時間。但是POS依然沒有擺脫挖礦的本質,在一些共識時間要求比較高的業務環境中并不適用,沒有從根本上解決商業應用的痛點。
POL(Proof-of-Luck)是文獻[16]提出的共識機制,是一種在可信執行環境之上建立的共識機制[17]。該機制在每輪區塊的產生過程中,會隨機產生一個數字以決定一段時間內的獲勝區塊。可以提高區塊產生的效率,降低資源的消耗。但是可信執行環境是一種芯片級的,對處理器提出了一定的要求,所以對于區塊鏈來說,網絡的擴展需要節點有相應的硬件支持。
DPOS是在文獻[18]中提出的一種可以實現區塊秒級驗證的共識機制,能夠滿足廣泛的業務需求。DPOS與POS[19]共識機制的主要區別是區塊記賬節點的選擇方式不同,在DPOS共識機制中,每一個持有代幣的節點都是候選節點,各節點通過投票的方式選擇若干代理節點,由代理節點按照既定的時間表輪流進行區塊的產生和驗證。
在該機制下,沒有消耗算力的挖礦過程,大幅度縮小了參與區塊產生和驗證的節點數量,可以達到秒級的共識驗證。但是在DPOS中對惡意節點沒有及時的響應措施,只是對狀態進行標識,并且存在節點投票不積極的現象,導致系統的安全性降低等問題。
DPOS共識機制通過節點投票選出代理節點進行區塊的產生和確認,可以實現秒級的區塊驗證,能夠適應廣泛的業務領域。針對DPOS共識機制投票不積極和惡意代理節點未及時剔除導致的安全性較低等問題,本文定義了節點狀態、信用系數等基本概念,并提出了基于信用獎懲的改進DPOS機制。在信用獎懲下,全網節點通過投反對票的方式可以降低異常節點成為代理節點的概率,并且結合結果選擇條件的優化,可以加快異常節點被踢出代理節點的速度。下面對這種機制進行詳細介紹。
文中首先定義了節點狀態、狀態變更和信用系數等基本概念;其次提出了基于信用的獎懲方案以激勵網絡節點積極參與到投票中來;最后對代理節點的得票結果進行了優化,可以結合基于信用的獎懲方案達到對異常節點快速剔除的目的。
DPOS機制是通過代理節點進行區塊的產生和確認的,為了有效監視代理節點的行為,防止惡意節點持續性地產生無效區塊或其他惡意行為,給每個節點添加一個狀態標識。本文將節點的狀態定義為4種,分別是:
1)GOOD:代表良好狀態,表示該代理節點連續產生有效區塊次數超過累計值(累計值是一個節點狀態變更的常量),并通過其他節點驗證;
2)NORMAL:代表正常狀態,表示該代理節點產生的區塊無無效區塊,新生代理節點初始狀態為NORMAL;
3)EXCEPTION:代表異常狀態,表示該代理節點產生過無效區塊,但次數小于累計值;
4)ERROR:代表惡意狀態,表示該代理節點多次產生無效區塊。
節點狀態是評判節點是否為惡意節點的標準。為讓狀態為GOOD的節點盡可能的被選為代理節點,也防止狀態為EXCEPTION節點被選為代理節點,在節點進行投票時,系統將予以節點狀態提示。
狀態變更是指代理節點的狀態變化,主要與代理節點產生區塊的數量以及有效性相關。當一個新的節點成為代理節點時,系統默認為其分配NORMAL狀態,可正常參與之后的代理節點競選。當代理節點一直保持良好的區塊產生記錄,即產生有效區塊次數大于累計值時其狀態可升級為GOOD,GOOD狀態的代理節點在之后的代理節點競選過程中將會有一定的優勢。而當代理節點有產生無效區塊的記錄時,其狀態將成為EXCEPTION,在其后的代理節點競選時,將處于一定的劣勢。若代理節點產生的無效區塊超過累計值時,其狀態將轉變為ERROR狀態,為了避免惡意節點持續對系統惡意影響,在一段時間內禁止參與之后的代理節點競選。代理節點的狀態轉換可用圖1描述。

圖1 狀態轉換圖
信用系數(Credit)是節點加入分布式網絡中時系統賦予的一種信用參數,是節點信用程度的一種表現形式。在共識機制中,信用系數將以百分制計數,對于每一個初次接入系統的網絡節點,信用系數將被初始化為50。
在不同業務領域的區塊鏈系統中,信用系數可以有不同的含義。當與實際的業務結合起來時,信用系數將被賦予實際的價值,如使用區塊鏈在域名申請解析領域中,通過信用系數可以設定域名的有效期;或者在數字貨幣領域中,信用系數可以折合成一定的數字貨幣等。
基于信用的獎懲方案主要包括兩個核心要點,分別為投反對票和獎懲方法,其中投反對票是信用獎勵的一個手段。該機制的運行原理可用圖2所示流程圖表示。

圖2 基于信用的獎懲機制流程圖安全性
圍繞該流程圖,下面對該機制進行分模塊描述。
投反對票是在投票過程中節點可以投反對票的一種方法,目的是為了快速的將異常節點從代理節點中剔除,從而提高系統的安全性投反對票和正常投票的過程相同,節點在投票時,可同時投出反對票和正常票。在共識機制中,采用公鑰標識對節點進行唯一表示,公鑰的存在使得節點具有匿名性,可以有效避免節點帶有目的的投票。
對于狀態為EXCEPTION的節點,在投票時系統將予以提示,以期節點能夠對其投出反對票,在統計投票結果時可以降低狀態為EXCEPTION節點成為代理節點的可能性,從而使系統更加安全。
信用系數是節點信用的表現形式,基于信用的獎懲方法主要是針對節點而進行的。節點的獎懲機制主要模塊構成如圖3所示。

圖3 獎懲機制模塊圖
1)信用消耗
信用消耗是指信用系數會隨著時間而降低,在與實際業務結合時,表示的是某種價值的消耗。信用消耗并非一味的降低信用系數,需要遵循一定的規則,滿足的公式為:

其中,Credit表示的是節點的信用系數,t表示節點從上次投票開始到下次投票的間隔時間,T表示時間常量。當兩次投票間隔時間小于T,即t<T時,信用系數不發生變化。M表示信用消耗的速度,是一個常量,可結合具體業務對M進行調整。
2)信用穩定和時間重置
當節點兩次投票的時間間隔超過T時,信用系數將會降低。相反,信用系數將不發生變化。節點投票成功后會重置時間t,即令t=0,以此鼓勵節點參與到投票中來。
3)信用獎勵
狀態為EXCEPTION的節點是系統不建議成為代理節點的節點。在投票的過程中,每T時間段內,節點只有一個反對票的資格。對投了狀態為EXCEPTION節點反對票的節點,若被投反對票的節點未能成為代理節點,系統將給予信用系數獎勵,獎勵公式為:

投票結果統計是競選代理節點的最后一個過程,合理的計票方式將有助于提升系統的安全性。系統為節點的屬性維持著一張動態更新的屬性表,如表1所示。

表1 節點屬性表
該表存儲著每一個節點的狀態信息、信用系數、得票數以及反對票數。通過該表對結果進行統計,統計公式如下所示:

其中A是網絡中所有節點數量和代理節點數量相關的值,可根據系統的業務以及系統安全性的特征設定A的值。B、C是常量,且滿足B+C=1,通常B和C取值為0.5。
通過該公式的計算,對于信用系數較低的節點,一般需要獲取更多的投票才能成為代理節點。對于狀態EXCEPTION節點來說,在信用機制的激勵下,成為代理節點的概率將顯著降低,并且可以縮短異常節點被踢出代理的時間。
文中通過搭建原型系統,對比機制改進前后的運行結果,驗證改進后的共識機制是否能夠有效降低狀態為EXCEPTION的節點(下面使用E節點代替)獲取代理節點身份的概率。
本次原型系統搭建建立在一個擁有15個節點的分布式網絡上,選舉代理節點的數量為3個。投票結果統計公式中常量的取值為:A=1,B=0.5,C=0.5;信用獎懲機制信用消耗的常量取值為:M=1。
經過一輪投票后,投票結果如圖4所示。
在圖4中,前3個節點根據投票結果統計公式計算成為代理節點。假設公鑰標識為“1f5ccb86225915e276bacce2173dbfb93ce5ffc30731ec d3f71155d2”節點的狀態改變為EXCEPTION。
在接下來的實驗中,以此次結果為基礎進行第二輪投票,實驗重點對比分析了DPOS共識機制改進前后第二輪的投票結果,并進行了50次重復實驗。根據實驗結果對比,繪制出異常節點在第二輪投票結束后的票數排名對比折線圖,如圖5所示。

圖4 投票結果

圖5 DPOS改進前后結果對比
圖5顯示,改進后相比于改進前,E節點票數排名明顯靠后。并且改進前,E節點在第二輪獲得代理節點身份的次數為42次,占總數的84%,而改進后只有3次,占總次數不到5%。該實驗表明,E節點成為代理節點的概率顯著降低。
在上述實驗的基礎上,本次實驗主要驗證的是DPOS機制改進前后E節點失去代理身份所需要的平均投票輪數是否發生變化。
實驗內容是各節點進行多輪投票,直到E節點被踢出代理,然后統計投票輪數。為保證結果的準確性,分別對機制改進前和改進后進行50次重復實驗,E節點被踢出代理時投票輪數統計結果如圖6所示。

圖6 E節點被踢出代理投票輪數對比
對機制改進前后對比實驗結果求平均數,求得機制改進前E節點被踢出代理平均需要2.5輪,機制改進后平均需要1.1輪。
由以上實驗可以看出,改進的DPOS共識機制,能夠使異常節點獲取代理節點身份的概率顯著降低,并且縮短了異常代理節點被踢出代理的時間,由改進前的需要2.5輪投票降低到了需要1.1輪投票。從而弱化了異常節點對系統的影響,增強了系統的安全性。
區塊鏈是近年來研究的熱點,多個行業在使用區塊鏈技術進行業務創新[2]。然而一種共識機制不能夠滿足所有的業務,不同的業務場景下使用區塊鏈技術所采用的共識機制也不相同,文中對共識機制的研究與改進,解決了DPOS共識機制中存在的對異常節點不能及時剔除等問題,提供了一種共識機制的改進思路,并且通過實驗驗證了改進后的共識機制的可行性和可用性。改進的DPOS共識機制擴展了能夠與區塊鏈技術相結合的業務范圍,為下一步區塊鏈的研究提供了方向與基礎。
[1]Nakamoto S.Bitcoin:A peer-to-peer electronic cash system[J].Consulted,2009.
[2]Zheng Z,Xie S,Dai H N,et al.Blockchain Challenges and Opportunities:A Survey[J].International Journal of Web and Grid Services,2017.
[3]沈鑫,裴慶祺,劉雪峰.區塊鏈技術綜述[J].網絡與信息安全學報,2016(11):11-20.
[4]洪濤.區塊鏈在我國農產品電商領域的應用研究[J].中國市場,2016(39):65-68.
[5]吳健,高力,朱靜寧.基于區塊鏈技術的數字版權保護[J].廣播電視信息,2016(7):60-62.
[6]黃嶠濛.區塊鏈攜手物聯網——打造鏈上世界[J].金卡工程,2016(10):71-73.
[7]唐文劍,呂雯.區塊鏈將如何重新定義世界[M].北京:機械工業出版社,2016.
[8]中國區塊鏈技術和產業發展論壇.中國區塊鏈技術和應用發展白皮書[R].(2016-10-18)[2017-03-10].http://8btc.com/doc-view-985.html.
[9]Eyal I,Gencer A E,Sirer E G,et al.Bitcoin-NG:a scalable blockchain protocol[J].Cryptography and Security,2015:45-59.
[10]譚磊,陳剛.區塊鏈2.0[M].北京:電子工業出版社,2016.
[11]朱巖,甘國華,鄧迪,等.區塊鏈關鍵技術中的安全性研究[J].信息安全研究,2016,2(12):1090-1097.
[12]袁勇,王飛躍.區塊鏈技術發展現狀與展望[J].Acta Automatica Sinica,2016,42(4):481-494.
[13]梁斌.從“比特幣挖礦”看區塊鏈技術的共識機制[J].中國金融電腦,2016(9):45-46.
[14]Decker C,Wattenhofer R.Information propagation in the Bitcoin network[C]//IEEE Thirteenth International Conference on Peer-To-Peer Computing.IEEE,2013:1-10.
[15]Larimer D.Transactions as proof-of-stake[EB/OL].http://7fvhfe.com1.z0.glb.clouddn.com/@/wpcon tent/uploads/2014/01/Transactions As ProofOf Stake10.pdf.2013.
[16]King S,Nadal S.Ppcoin:Peer-to-peer cryptocurrency with proof-of-stake[J].self-published paper,August,2012:19.
[17]Milutinovic M,He W,Wu H,et al.Proof of Luck:an Efficient Blockchain Consensus Protocol[C]//Proceedingsofthe1stWorkshop onSystem Software for Trusted Execution.ACM,2016:2.
[18]LarimerD.Delegatedproof-of-stakewhitepaper[EB/OL].http://www.bts.hk/dpos-baipishu.html.2014.
[19]劉秋連.O2M全渠道視角下零售企業會員營銷模式的構建[J].西安工程大學學報,2016(5):669-674.