蔣翊彬,汪學明
(貴州大學 計算機科學與技術學院,貴州 貴陽 550025)
委托權益證明(DPOS)共識機制具有高效率、低能耗等優點。同時,DPOS因其中心化程度高、惡意節點剔除不及時、節點參與不積極與容易滋生腐敗等問題備受爭議[1]。目前多數研究主要集中在如何保證恒定數量誠實的見證人節點以及如何提高普通節點投票積極性兩個方面,研究方法是通過引入信譽度機制、激勵機制、備用見證人機制與替換投票選舉的方式,解決DPOS中存在的問題。文獻[2,3]分別通過交易費與信譽分獎勵來激勵普通節點積極參與投票,并基于節點信譽值選出更可靠的見證人節點。文獻[4]提出一種基于配對制度的方案,該機制擯棄了投票選舉的方式,利用節點屬性值選出記賬節點。文獻[5]提出通過信譽熔斷機制快速剔除作惡節點,備用見證人機制用來彌補空缺的見證人節點。對于節點腐敗問題,文獻[6]提出舉報獎勵以激勵節點積極舉報賄賂節點。
基于以上分析,本文提出一種基于安全多方計算的改進方案。首先提出一種MPC-DPOS網絡模型,在該網絡模型下能夠降低執行安全多方計算協議帶來的通信流量問題。然后重新設計了記賬權分配機制,利用安全多方計算協議生成系統隨機數,在全網在線節點集合中隨機的決定出記賬節點,提高普通節點參與積極性,并且非透明、隨機的出塊順序能有效降低針對記賬節點的DDOS攻擊和腐化攻擊風險,其次將記賬節點選取范圍從見證人集合擴大到全網在線節點集合,見證人身份和記賬權之間不存在必然關系,從機制層面杜絕腐敗的產生。改進方案并且提出新的激勵機制,以保證見證人節點誠實的執行協議,其中通過對叔父區塊獎勵,有利于區塊鏈在分叉后歸并統一。最后通過實驗驗證改進方案的可用性和有效性。
安全多方計算(MPC)[7]的思想由姚期智提出,后經40年的發展,已經從理論架構逐漸成為可以應用到實際的秘密學工具。MPC能夠讓一組互不信任的參與方聯合計算出各自應得的輸出,并在計算的過程中,始終保持輸入信息的隱私性[8]。安全多方計算可以抽象為一個功能函數f,n個參與方P={P1,…,Pn} 分別持有自己的秘密信息x1,x2,…,xn, 聯合計算某個功能函數f(x1,x2,…,xn)=(y1,y2,…,yn),Pi∈P除了得到對應的輸出yi以外,得不到任何關于xj(j≠i)有用的信息。在實際應用中,根據不同協議的設計,存在y1=y2=…=yn。
DPOS共識機制由Bitshares[9]的首席開發者Dan Larimer提出,旨在解決POW機制算力集中、資源消耗嚴重以及出塊速度慢等問題。DPOS機制中的普通節點需要向自己信任的參選節點投票,利用投票方式選舉出N個信任度較好的見證人節點。見證人之間地位平等,不需要比較權益或算力競爭成為記賬人節點,在共識階段見證人節點按照某種隨機序列輪流行使發布區塊的權利,并且承擔著區塊檢驗的工作。DPOS機制中規定一個有效的新區塊需要經過至少2/3的見證人節點確認,才是一個不可逆區塊[9]。如果一個見證人節點沒有履行自己的責任產生一個合格的區塊,那么選民將收回給他的選票,并從新選取新的見證人節點。
經典的DPOS機制中被選舉出的見證人按特定的序列行使記賬權利,這種特定的順序在攻擊者的視角下是透明的,記賬節點的安全性完全依靠網絡層的安全性,透明的出塊順序會增加針對記賬節點的DDOS攻擊和腐化攻擊風險。選舉階段中的投票對象是靠某種信任關系決定的,只有少數信任度較好的節點會被選舉為見證人節點,并獲得出塊獎勵,導致大多數信任度較低普通節點參與網絡維護的積極性不高,主要體現在投票不積極和在線共識不積極。此外,選舉出的記賬節點履行打包交易任務,會得到出塊獎勵和交易費,選舉的結果直接和利益相關,在每個見證人的背后容易形成利益群體,滋生腐敗。改進方案從新設計了記賬權分配機制,引入安全多方計算,通過構造系統隨機數、擴大記賬節點選取集合的方式解決上述問題。為了應對執行MPC協議給系統網絡帶來高通信流量問題,提出MPC-DPOS網絡模型,同時為MPC協議創造高效安全的執行環境。另外,從新設計了激勵機制,增加對見證人節點和叔父節點的獎勵,對見證人的獎勵能夠激勵見證人節點誠實的執行MPC協議,對叔父節點的獎勵有利于區塊鏈分叉時歸并統一。
根據節點在網絡中的作用不同,將節點分為兩種不同的類型,分別為見證人節點和普通節點。普通節點參與區塊驗證和投票工作,可隨時加入和離開網絡。見證人節點是由普通節點投票選舉產生,承擔區塊驗證和系統隨機數生成任務。見證人節點都有一定任期,在任期內應時刻保持在線,任期結束和從新洗牌選舉。未誠實執行協議的見證人,普通節點將收回選票,取消其見證人身份,并選取新的見證人節點。
系統會將選舉產生的見證人加入到一個結構數組中,以此記錄當下時期見證人節點身份,并以該數組在主系統網絡上構建一個由見證人節點組成的獨立網絡。見證人在獨立網絡中執行MPC協議生成每輪出塊需要的系統隨機數。獨立網絡在邏輯上與主系統網絡隔離,執行MPC協議所產生的通信流量被隔離在獨立網絡以內,并不會廣播到主網絡中的普通節點。在該網絡模型下能夠解決執行MPC協議給系統網絡帶來高通信流量問題,同時為MPC協議創造高效安全的執行環境。MPC-DPOS網絡模型如圖1所示。

圖1 MPC-DPOS網絡模型
記賬權分配機制用于選出每一輪中的出塊節點與完成打包交易共識,主要包括隨機數的構造、區塊的發布與共識兩個階段。
2.2.1 隨機數的構造

(1)輸入階段
?Pi∈P隨機構造兩個t次多項式函數:ai(x)=ai0+ai1x+ai2x2+…+aitxt,βi(x)=βi0+βi1x+βi2x2+…+βitxt, 其中ai0為Pi輸入的秘密隨機數。然后將秘密份額 (αi(j),βi(j)) 發送給Pj(Pj∈P-i=P
1)驗證Pi公布的承諾值是否有效,驗證方法如下:
由α(x)=α0+α1x+α2x2+…+αtxt得
記
存在v-1使


如果不存在Aij≠A′ij, 則Pi公布的承諾值都有效,否則Pi是不誠實的節點,執行 {}null+={Pi},P-={Pi}。
2)Pj(Pj∈P-i) 驗證秘密份額是否與承諾值相匹配,Aij=gαi(j)hβi(j)modp成立,則秘密份額正確,否則Pj申請公布秘密份額,Pi需要在時限內公布對Pj正確的份額,否則判定Pi為惡意節點,執行 {}null+={Pi},P-={Pi}。
在此階段,見證人節點分別作為領導者分享秘密隨機數的份額,并及時的甄別出惡意節點,以確保誠實的見證人節點都能獲得正確的秘密份額。
(2)計算階段




(3)恢復階段

為了防止惡意的見證人節點中斷協議的執行,在每個階段設置一個限制時間,如果Pi沒有在限制時間內公布消息,那么其他見證人節點將判定Pi為惡意見證人節點,并將Pi加入惡意節點集 {}null。 協議執行結束后,見證人節點公布惡意節點集,如果超過一半以上的見證人節點判定Pi為惡意節點,那么普通節點將收回對Pi的選票,并從新選出新的見證人節點。因此,該協議滿足n=2f+1模型,f為能容忍的最大節點數量。另外,t+1次多項式的選取必須滿足t=f, 在輸入階段才能保證誠實節點的輸入隱私性,并且在恢復階段有t+1個正確的份額能重構出計算結果。
2.2.2 區塊的發布與共識
本階段將選出記賬節點發布區塊,其它節點驗證發布區塊的有效性,從而達成對交易數據的一致共識。共識過程是客戶端將交易廣播到網絡中,經其它節點驗證通過后成為待確認交易,參與記賬權競爭的網絡節點將所有待確認交易打包進一個預發布區塊中,交易在區塊體中以Merkle樹的形式構造出區塊頭中MerkleRoot字段。此外,還要收集和記錄其它區塊頭字段,通過改變區塊頭中noce字段從而調整個區塊頭的哈希值,使區塊頭哈希值小于一個目標難度值,最先找到滿足此條件的區塊發布到網絡中,經其它節點驗證合格后加入到主鏈上,從而區塊中的交易得到確認。
(1)區塊頭的構造
每個區塊是由區塊頭和區塊體組成,區塊頭記錄區塊的重要信息,區塊體包含被確認的交易。區塊頭中引用上一區塊頭的哈希值表明區塊在鏈上的位置,交易以Merkle樹的形式構造根哈希值能夠實現鏈上交易的快速查找,代幣數量、系統隨機數的簽名、noce值以及難度系數能夠驗證區塊的合法性。對區塊頭中部分字段描述見表1。

表1 區塊頭部分字段描述
(2)出塊策略
上一輪區塊得到確認后,見證人節點會發布此輪出塊需要的系統隨機數。每個參與記賬權競爭的節點利用系統隨機數、持幣數量和難度系數計算本輪出快的目標難度值。在運行過程中,最先找到滿足出塊條件節點才能發布區塊,出塊條件如下所示
其中,BlockHead是節點構建的預發布區塊頭部,H(·) 為單向哈希函數,區塊頭的哈希值能通過noce字段調整。coin表示節點持有的代幣的數量,sign(r) 表示節點對此輪隨機數的簽名。w為難度系數,跟出塊間隙時間有關,例如系統算力提升或則持幣數量增大,會導致出塊的間隙時間縮短,此時難度系數增大,相反,則減小。
根據出塊條件,不同節點的出塊難度是不一致的,目標難度值的隨機性促使參與競爭的節點都可能成為記賬節點,從而保證節點之間的公平性。對于節點個體而言,擁有更多的代幣和計算資源能提高節點的競爭力。另一方面,在代幣數量和計算資源的限制下,用戶不能通過創建更多的節點來增加成為記賬人節點的概率。
定義在區塊鏈分叉時上一輪的直系區塊稱為父區塊,非直系合法區塊稱為叔父區塊,發布叔父區塊的節點稱為叔父節點。叔父區塊與最新發布區塊相差一代,稱為第一代叔父區塊,相差K代稱為第K代叔父區塊。產生叔父區塊節點稱為叔父節點。第二代叔父區塊示意圖如圖2所示。

圖2 第二代叔父區塊
此激勵機制包括對記賬節點、見證人節點和叔父節點的獎勵。擁有記賬權的出塊節點不僅能得到打包交易費和出塊獎勵,并且在區塊鏈出現分叉時每打包一筆對叔父節點的獎勵交易還能得到一定比例的獎勵。見證人節點誠實地執行MPC協議以產生系統隨機數,對每輪區塊產生做出積極貢獻,在記賬權的競爭中并不一定獲得出塊獎勵,因此,每輪區塊需要包含對見證人節點的小額獎勵交易,對見證人的獎勵能夠激勵見證人節點繼續誠實的執行協議。對叔父節點的獎勵限制在8代以內,每個叔父節點只獎勵一次,父區塊沒有包含對叔父節點的獎勵交易,將由子區塊完成。如果超出5代都沒有對叔父節點獎勵,就不再對叔父區塊獎勵。在5代以內,每增加一代對叔父區塊的獎勵比例減少1/8,從第一代到第五代叔父節點的獎勵比例分別為 (7/8,6/8,…,3/8)。 由于網絡傳輸時延造成區塊鏈暫時性分叉,對叔父節點進行獎勵有利于主鏈及時歸并統一。
設計實驗對改進算法的有效性進行檢驗,本節分別從節點參與度、對記賬節點攻擊情況以及記賬權分配等幾個維度比較了原始算法和改進算法,其次在區塊產出率方面比較了POS共識機制。模擬實驗環境見表2。

表2 模擬實驗環境
原始算法中節點參與共識過程的積極性不高,為了檢驗改進后算法是否能加普通節點參與網絡維護的比例,本實驗在兩共識機制的見證人節點數量和普通節點數量一致的條件下進行了50次共識,并統計出每一輪節點參與共識過程數量的比例,實驗結果如圖3所示。

圖3 參與共識節點比例
從圖3可得,在50輪共識中,原共識機制節點參與度在65%~75%之間,改進后共識機制的節點參與度在85%~95%之間。從記賬權分配與激勵機制方面分析,原共識機制中每輪記賬權幾乎被權益較好的見證人結點壟斷,改進后的共識機制中記賬權分配都具有隨機性,任何節點都有機會成為出塊節點,所以理性的普通節點都最大程度的保持在線,并參與到記賬的權分配的競爭之中,以此獲得出塊獎勵。顯然,改進后的共識機制在節點活躍度方面優于原共識機制。
記賬節點承擔著系統確認交易的任務,在執行打包任務時受到攻擊會影響整個系統的安全穩定。為了檢驗改進算法是否能降低記賬節點受到DDoS攻擊和腐化攻擊的概率,實驗設計如下:網絡節點由見證人節點、普通節點和攻擊者節點組成,見證人數量為21個,在攻擊者數量不變的條件下探究兩共識機制隨著網絡節點數量的增加記賬節點受到DDoS攻擊和腐化攻擊的概率。實驗統計結果如圖4所示。

圖4 針對記賬節點的攻擊概率
從圖4觀察可得,在發布區塊之前,原共識機制中記賬節點受到攻擊的概率維持不變,改進方案中記賬節點受到攻擊的概率隨節點數增加而逐漸降低,并且原共識機制中節點受到攻擊的概率遠大于改進后的共識機制。探究其原因,改進方案中記賬節點的選取是在全網以內,并且在發布區塊之前記賬節點身份未透明,攻擊者并不能確定出記賬節點身份。因此,改進后的共識機制在抵御針對記賬節點的DDOS攻擊和腐化攻擊方面效果顯著。
共識機制中記賬節點分配的方式關乎到系統的公平性與節點的活躍度,為了比較兩種共識機制在記賬權分配方面的情況,設計如下實驗。實驗網絡中共有60個權益不同的節點,其中包括21見證人節點,在600次出塊后,統計不同權益節點獲得記賬權的次數,統計結果如圖5所示。

圖5 記賬賬權分配對比
從圖5可得,原共識機制中權益越大的節點獲得記賬權的次數越多,權益排名前30的節點幾乎壟斷出塊任務,改進方案中不同權益的節點獲得記賬權次數均在10次左右。分析可知,原共識機制中由21個見證人輪流承擔出塊任務,權益越大的節點被選舉成見證人的機會越大,因此權益越大的節點獲得記賬權的次數越多,而在改進機制中,記賬權在全網中隨機分配,節點獲得記賬權的概率大致相同。隨機分配的方式降低了權益較小的節點成為記賬節點的門檻,促進了普通節點參與度,體現了記賬權分配的公平性。
為了比較改進后的DPOS共識機制與POS共識機制在出塊速度方面的表現。本實驗設置相同的實驗環境,仿真100個節點參與共識,統計兩共識機制在10分鐘內的出塊數,統計結果如圖6所示。

圖6 出塊速度對比
從圖6可以看出,隨著時間的變化,兩共識機制的出快數都呈增長趨勢??傮w而言改進算法的出塊速度要高于POS算法,隨著時間的增長這種優勢體現越明顯。
本文提出了一種基于安全多方計算的DPOS的改進方案。在改進機制中,見證人節點執行安全多方計算協議產生一個抗偏置的隨機數,從而隨機決定不同節點的出塊難度值,足夠的隨機性既能夠保證系統對記賬權分配的公平性,又能降低了低計算能力節點成為記賬節點的門檻,激勵更多普通節點參與到網絡維護中來。MPC協議運行在由見證人組成的獨立網絡中,獨立網絡與主網絡的隔離可以有效減少主網絡中通信流量。在此基礎上,采用尋找符合出塊條件區塊的方式選出記賬節點,可以避免記賬人身份透明直接暴露在攻擊者的視野之下,降低了針對記賬節點DDoS攻擊與腐化攻擊的風險。除此以外,本文從新設計了DPOS的激勵機制,增加對見證人節點和叔父節點的獎勵,其中對見證人的獎勵能夠激勵見證人節點誠實的執行MPC協議,對叔父區塊的獎勵能促進區塊鏈在分叉時的歸并同一。改進方案與原DPOS在效率方面有所差距,本著未來的工作,將進一步對協議的性能優化,提高系統的吞吐率。