[發明專利]一種基于信用的動態分層拜占庭容錯共識方法有效
| 申請號: | 201910938171.1 | 申請日: | 2019-09-30 |
| 公開(公告)號: | CN110677485B | 公開(公告)日: | 2020-11-13 |
| 發明(設計)人: | 李鳳岐;劉克猛;張璐鵬 | 申請(專利權)人: | 大連理工大學 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L29/06;H04L9/32;G06Q20/38 |
| 代理公司: | 大連理工大學專利中心 21200 | 代理人: | 隋秀文;溫福雪 |
| 地址: | 116024 遼*** | 國省代碼: | 遼寧;21 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 信用 動態 分層 拜占庭 容錯 共識 方法 | ||
1.一種基于信用的動態分層拜占庭容錯共識方法,其特征在于,具體如下:
(1)請求階段:客戶端直接發送交易請求REQUEST,tx,s,[ver],cjσcj給候選節點或者通過普通節點,其中,tx是交易信息,s是交易操作類型,[ver]是此項交易依賴的版本號,cj是客戶端序列號,σcj是客戶端簽名;
(2)交易發送階段:當候選節點接收到交易請求時,驗證交易是否有效,并判斷交易的類型;候選節點廣播有效的“讀”操作類型交易到其他候選節點,執行并返回應答消息REPLY,tx,s,[ver],r,cjσi給客戶端,其中r是讀操作執行結果,σi是候選節點簽名;如果客戶端收集f+1個具有相同結果的有效應答消息,客戶端將確認此結果,其中f是系統能夠容忍的錯誤節點的最大數量;如果交易是“寫”操作類型,由候選節點廣播有效的帶有當前時間戳t的交易信息TRANSACTION,tx,t,cjσi給共識節點;
(3)當共識節點接收到交易消息時,驗證交易消息中候選節點簽名的有效性;如果簽名有效,則將交易信息存儲在本地交易池中,否則將丟棄交易信息;當交易數量達到系統中設定的閾值或時間間隔達時間閾值時,主節點將交易按時間順序排序并打包到一個新區塊中;
(4)預準備階段:主節點生成并廣播一個包含區塊的預準備消息到其他共識節點;預準備消息PRE-PREPARE,h,d,pσp,B中,B為新區塊,h為新區塊高度,d為B的摘要,p為主節點序號,PRE-PREPARE標識該消息是預準備消息,σp是主節點簽名;
(5)如果共識節點i收到預準備消息,則驗證主節點身份和區塊的有效性;如果有效,共識節點i記錄預準備消息中的摘要d在SLi[p]中,SLi[]為共識節點i保存預準備消息與準備消息中區塊摘要的數組;然后,預執行塊中的所有交易以驗證交易邏輯的合法性,驗證版本依賴是否滿足,驗證是否存在重復交易,如果交易版本依賴滿足且不存在重復交易,則將準備消息PREPARE,h,d,iσi廣播到其他共識節點,進入準備階段,其中i是共識節點的編號,σi是共識節點的簽名;
(6)準備階段:共識節點i接收準備消息并將準備消息存儲到本地;然后,共識節點i記錄從共識節點j接收的準備消息中的區塊摘要到SLi[j]中;當共識節點i接收到2f+1個準備消息時,共識節點i進入提交階段并廣播帶有狀態列表的提交消息給其他共識節點;提交消息如下COMMIT,h,d,iσi,SLiσi,其中,SLi存儲了共識節點i收到的預準備消息和準備消息中的區塊摘要信息;
(7)提交階段:當共識節點i接收到提交消息時,驗證提交信息中的h、d是否相同,以及消息簽名的有效性;如果共識節點i接收到2f+1個有效的提交消息,共識節點i共識狀態變成commit-local狀態;然后,共識節點i向候選節點和普通節點廣播新區塊,進入持久化存儲階段;
(8)持久化存儲階段:在驗證區塊的有效性后,所有共識節點將新區塊附加到其本地鏈中,并在新區塊中進行交易處理;
(9)在一輪共識結束時,所有共識節點均基于信用-懲罰機制根據從其他共識節點收到的狀態列表更新信用值,并根據自適應的主節點選舉方案選舉新的主節點;若檢測出共識節點為拜占庭節點,將觸發動態升降機制,用候選集合中的候選節點代替共識集合中的節點;在新一輪共識開始之前,共識節點和候選節點清除本地交易池中已經共識的交易請求和日志中的交易消息。
2.根據權利要求1所述的一種基于信用的動態分層拜占庭容錯共識方法,其特征在于,所述的步驟(9),具體實現過程如下:
(1)信任-懲罰機制獎勵可靠節點并懲罰錯誤節點,以確保信用值較高的節點成為主節點的可能性更大:
(1a)所有的共識節點在達到準備狀態或這一輪共識超時的時候,必須對其他共識節點廣播SL,SL存儲了本節點收到的預準備消息和準備消息的摘要;共識節點相互進行比較以檢測所有異常節點;定義三種狀態的共識節點:良性、缺席和作惡;良性狀態指主節點生成有效的塊,并最終達成共識或副本多播一致的消息或與多數一致;缺席狀態指主節點并未生成新的塊,或副本因為崩潰或其他原因而未多播消息;作惡狀態是指主節點多播不一致的消息給副本或副本多播不一致的消息或不同意多數;
(1b)根據共識節點狀態更新共識節點的信用值:信用值是共識節點可信度的度量,C(i)是共識節點i的信用值,0≤C(i)≤1,最高信用值為1,新共識節點的信用值被初始化為Cinit=0.5;定義C(i,r-1)為節點i在r-1輪共識期間的信用值,則C(i,r)表示為:
當i是主節點時,
當i是副本時,
εp和εb是主節點和副本的信任值增長值,ReDp和ReDb是主節點和副本的信任值減少值;其中,0εbεp0.1,0ReDbReDp0.27,可根據實際情況動態調整;如果共識節點的當前狀態是良性的,則信用價值將增加;當節點狀態為缺席時,將降低節點的信用值,并懲罰其在共識回合中不允許成為主節點;如果節點狀態是作惡,或者在懲罰期為缺席狀態,則該節點信用值將被清除為零;
(1c)提出懲罰期的概念來懲罰缺席節點:定義一輪共識的時間閾值是τ,那么共識節點i必須經歷懲罰期時長至少為在此期間不能成為主節點;通過調整θi,以區分對不同節點的懲罰;θi的值與共識節點i在r-1輪共識中的表現有關,計算θi的公式是:其中,εn為主節點或副本節點的信任增長值,α1是懲罰度因子,α越小,θi越大;根據節點的狀態,得到不同的懲罰時間:
如果節點狀態是良性的,則θi=0,此節點不需要進入懲罰期,并有資格在隨后的共識過程中成為主節點;
如果節點狀態為缺席,則θi0,此節點的懲罰期為此節點在懲罰期不能成為主節點;
如果節點狀態是作惡,則θi→∞,此節點的懲罰周期是無限的;此節點將被排除在共識集合之外,并且在候選集中投票結果最高的節點通過更換協議加入共識集合;
(1d)自適應的主節點選取機制:通過計算良性節點當選主節點的概率,其中Cmax為r輪中最大的信任值,為r輪中平均信任值;然后,按照概率值從低到高的順序計算每個節點的累積概率應用區塊頭進行SHA256哈希算法獲得隨機數RN=StrToInt(SHA256(blockhead))mol N,其中N為區塊個數;根據累計概率,最終確定當前共識輪中主節點的序號;共識節點i的累積概率滿足其中ε為0-1區間內的常數;
(2)動態升降機制:
(2a)在動態升降機制中提出Change協議:
當共識節點檢測到某節點j是作惡狀態,認為節點的懲罰周期是無限的;然后,非故障共識節點將多播消息切換到投票結果最高的其他共識節點和候選節點;change報文形式為CHANGE,h,t,j,k,iσi,i為發送消息節點的身份標識,其中h為當前塊的高度,t為報文的有效時間,有效時間為一輪協商一致的時間,j為作惡節點的序列號,k為投票結果最高的候選節點的序列號;
當候選節點k接收到change消息時,驗證簽名和消息的有效性;如果候選節點k收集到2f+1個change消息,則生成并多播change-ack消息給共識節點;change-ack消息為CHANGE-ACK,h,t,j,kσk;當共識節點接收到2f+1個change-ack消息時,驗證簽名是否正確,消息時間是否超時,并將變更確認消息與從其他共識節點接收到的有效變更消息進行比較;
如果都有效,序列號相同,則一致性節點向候選節點和普通節點廣播change-reply消息,change-reply為CHANGE-REPLY,h,j,k,iσi;然后,系統中的所有節點更新其共識節點列表C0NL以及候選節點列表C1NL,候選節點k成功加入共識集;
change-reply消息廣播后,共識節點將election消息ELECTION,h,t,n廣播給普通節點和候選節點,選擇獲得投票數高的普通節點加入候選集,其中t是選舉結束時間,n是需要選擇的節點數;
(2b)在動態升降機制中提出Join協議:
普通節點接收到共識節點的有效的election消息后,向其他普通節點發送投票邀請;有三種投票選擇,包括“支持”、“反對”和“棄權”;在每次選舉中,普通節點只能支持或反對一個節點,或棄權;選舉結束后,普通節點計算自己的投票結果,統計公式如下:其中,Crediti為節點i本身的信用值,Creditj為節點j投票的信用值,Votej為節點j投票的結果;對應于“支持”、“反對”和“棄權”的值分別為1、-1和0;選舉結束時,獲得投票的普通節點j將多播pre-join消息PRE-JOIN,h,t,r,V,jσj給候選節點,其中h,t與選舉消息相同,V是節點的投票結果,是一組包含有效投票消息的集合,以證明投票結果r是有效的;當候選節點接收到pre-join消息時,將通過投票結果對普通節點進行排序;然后,各節點互相多播join消息JOIN,h,t,L,Jσi,其中L是投票結果最高的前n個節點的信息列表;J是一個集合,包括一組PRE-JOIN消息,以證明這n個加入節點的信息列表是正確的;
當投票結果最高的候選節點收到2f+1個具有有效簽名的join消息時,會驗證join消息中的L和J以更新加入節點列表和pre-join消息集;然后,投票結果最高的候選節點多播join-ack消息JOIN-ACK,h,t,L′,J′σi給其他候選節點,其中L′和J′是更新后的加入節點信息列表及pre-join消息集;當候選節點接收到join-ack消息時,驗證簽名是否有效,其中的join節點是投票結果最高的n個節點;如果其有效并且正確,候選節點向加入的節點發送join-reply消息JOIN-REPLY,h,t,L,Wσi,其中W包含交易池中的“寫”交易,并將join-success消息JOIN-SUCCESS,h,t,Lσi廣播給共識節點和普通節點,以更新其候選節點列表C1NL和普通節點列表ONL。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于大連理工大學,未經大連理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910938171.1/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:旁路分發預熱方法、裝置及電子設備
- 下一篇:一種身份證讀取設備跟蹤系統





