System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于區塊鏈網絡,尤其涉及一種異步區塊鏈系統故障節點的恢復方法及系統。
技術介紹
1、區塊鏈技術是指通過共識機制保證所有參與者共同維護一個分布式賬本的技術方案。根據不同的網絡模型假設,又可以細分為同步、半同步和異步三種,其中異步是最弱的假設。在異步網絡模型假設中,參與方和設計者均無法獲得網絡延遲的上界,導致異步區塊鏈共識在設計上更加復雜。在一個區塊鏈系統中,因為設備故障、網絡波動、敵手惡意攻擊等等原因,會出現部分誠實節點的內部狀態落后于其他節點的情況。這將導致落后的節點無法直接參與最新區塊的產生,甚至威脅系統的安全性。對于基于同步和半同步網絡假設的區塊鏈系統,落后節點可以利用系統同步時間段高效地進行狀態同步。而對于基于異步網絡假設的區塊鏈系統,尚需一種通用的恢復機制來幫助落后節點進行狀態同步。
技術實現思路
1、本專利技術的目的在于解決現有異步區塊鏈系統中故障節點恢復的問題,提供了一種異步區塊鏈系統故障節點的恢復方法及系統。
2、本專利技術為實現其目的采用如下技術方案:
3、一種異步區塊鏈系統故障節點的恢復方法,包括以下步驟:
4、1)接收來自異步區塊鏈系統中除當前故障節點以外的其他節點的消息;
5、2)若消息的目標不是狀態更新,則根據該消息所包含的節點身份和高度值更新本地存儲的高度值;并判斷該消息是否索要某個高度值的狀態值,若是則檢查本地是否有對應高度值的狀態值并返回;
6、3)獲取更新后的高度值hnew和當前故
7、4)若消息的目標是狀態更新,則根據該消息所包含的高度值及對應的狀態值與本地存儲的高度值及對應的狀態值的關系更新本地狀態,根據本地更新的狀態值數量更新與區塊鏈相關的狀態值,并執行區塊鏈協議。
8、進一步地,步驟2)中本地存儲的高度值包含高度集合h和參考高度值ht,其中h包含n-1個元素,對應于每個其他節點發來的消息中包含的最大高度值;n為系統中節點數目;ht為集合h中第n-f大的高度值,f為異步區塊鏈系統所容忍的故障節點數量。
9、進一步地,步驟2)中根據消息所包含的節點身份和高度值更新本地存儲的高度值的步驟包括:對于該消息所包含的節點身份,比較該消息所包含的高度值與本地存儲的該節點的高度值的大小,如果消息所包含的高度值大于本地存儲的該節點的的高度值,則將本地存儲的該節點的高度值更新為該消息所包含的高度值。
10、進一步地,步驟2)中更新本地存儲的高度值時,檢查ht值是否需要更新;若ht值大于本地的最大高度值hnew,則將hnew更新為ht值并作為步驟3)中更新后的高度值hnew。
11、進一步地,步驟4)中根據消息所包含的高度值及對應的狀態值與本地存儲的高度值及對應的狀態值的關系更新本地狀態的步驟包括:對于該消息所包含的節點身份,判斷該消息所包含的高度值是否在hold和hnew之間,如果在,且本地未存儲過該消息所包含的高度值所對應的狀態值,則在本地更新為該消息所包含的高度值所對應的狀態值。
12、進一步地,步驟4)中根據本地更新的狀態值數量更新與區塊鏈相關的狀態值的方法為:如果本地接收到f+1個來自不同節點的關于同一個高度值的相同狀態值時,則更新與區塊鏈相關的狀態值,f為異步區塊鏈系統所容忍的故障節點數量。
13、一種異步區塊鏈系統故障節點的恢復系統,包括:
14、狀態記錄模塊,用于接收來自異步區塊鏈系統中除當前故障節點以外的其他節點的消息,并判斷消息是否發往狀態更新模塊,若是則直接轉送,否則將該消息轉送給協議執行模塊,并根據該消息所包含的節點身份和高度值更新本地高度值,本地高度值包含高度集合h和參考高度值ht;檢查ht值是否需要更新,若需要更新,則將更新后的ht值發送給狀態更新模塊和協議執行模塊;
15、狀態更新模塊,用于從狀態記錄模塊獲取ht值并更新高度值hnew,通過協議執行模塊獲取故障節點在故障前的高度值hold,并從所有其他節點獲取介于hold和hnew之間的高度值對應的狀態值存儲于本地;從狀態記錄模塊獲取目標是狀態更新的消息,根據該消息所包含的高度值及對應的狀態值與本地的高度值及對應的狀態值的關系更新本地狀態,并將更新結果發送給協議執行模塊;
16、協議執行模塊,用于根據狀態記錄模塊發送的ht值更新本地的最大高度值;判斷狀態記錄模塊發送的消息是否索要某個高度值的狀態值,若是則檢查本地是有對應高度值的狀態值并返回;根據狀態更新模塊發來的更新結果更新與區塊鏈相關的狀態值,并執行區塊鏈協議。
17、進一步地,狀態記錄模塊維護一個內部狀態集合{h,ht},其中h包含n-1個元素,對應于每個其他節點發來的消息中包含的最大高度值;ht為集合h中第n-f高的值,f為異步區塊鏈系統所容忍的故障節點數量。
18、進一步地,狀態更新模塊維護一個內部狀態集合{hold,hnew,t,s},其中hold為當前故障節點在故障前的高度值,hnew為狀態記錄模塊發來的最大的ht值,t為hold和hnew之間高度值的集合,s為從其他節點獲取的集合t中高度值對應的狀態值的集合。
19、進一步地,協議執行模塊維護一個內部狀態集合{hold,ht,st},其中hold為當前故障節點在故障前的高度值,ht為集合h中第n-f高的值,f為異步區塊鏈系統所容忍的故障節點數量,st為所有與區塊鏈相關的狀態集合。
20、進一步地,協議執行模塊若接收到的消息不是狀態值請求,則將該消息暫時緩存。
21、本專利技術取得了如下有益效果:
22、1.容錯高度值確保系統安全性與容錯能力:本專利技術通過引入容錯高度值ht,使得即使存在最多f個惡意節點的情況下,系統依然能夠提供一個有效的高度閾值來幫助故障節點同步到接近最新的狀態。這種設計確保了系統在惡意行為或設備故障發生時的安全性和可靠性,減少了系統因故障節點存在而產生的潛在風險。
23、2.模塊化并行處理加速恢復效率:本專利技術采用狀態記錄、狀態更新和協議執行模塊的并行處理架構,使得故障節點能夠快速獲取最新的狀態信息并同步到最新狀態,同時在恢復過程中及時重新連接到其他節點。這種并行機制顯著提高了系統的恢復效率,確保節點在最短時間內重新參與系統的正常運作。
24、3.狀態信息的一致性保障:本專利技術通過從多個節點獲取高度狀態信息,并在狀態更新時要求至少f+1個相同的狀態值,從而避免單一節點錯誤信息帶來的數據一致性問題。這種設計保證了恢復過程中的數據可靠性,防止了由于個別節點傳輸錯誤數據而導致的狀態失效風險。
25、4.模塊獨立性和并行設計提升系統適應性:本專利技術中的各模塊均具備獨立性,且支持并行執行,能夠靈活應對不同的網絡狀況和各種故障情況。該架構設計不僅提升了系統在復雜網絡條件下的適應性,還增強了系統的擴展性,使得系統能夠在規模擴本文檔來自技高網...
【技術保護點】
1.一種異步區塊鏈系統故障節點的恢復方法,其特征在于,包括以下步驟:
2.如權利要求1所述的方法,其特征在于,步驟2)中本地存儲的高度值包含高度集合H和參考高度值ht,其中H包含n-1個元素,對應于每個其他節點發來的消息中包含的最大高度值;n為系統中節點數目;ht為集合H中第n-f大的高度值,f為異步區塊鏈系統所容忍的故障節點數量。
3.如權利要求1所述的方法,其特征在于,步驟2)中根據消息所包含的節點身份和高度值更新本地存儲的高度值的步驟包括:對于該消息所包含的節點身份,比較該消息所包含的高度值與本地存儲的該節點的高度值的大小,如果消息所包含的高度值大于本地存儲的該節點的的高度值,則將本地存儲的該節點的高度值更新為該消息所包含的高度值。
4.如權利要求1所述的方法,其特征在于,步驟2)中更新本地存儲的高度值時,檢查ht值是否需要更新;若ht值大于本地的最大高度值hnew,則將hnew更新為ht值并作為步驟3)中更新后的高度值hnew。
5.如權利要求1所述的方法,其特征在于,步驟4)中根據消息所包含的高度值及對應的狀態值與本地存儲
6.如權利要求1所述的方法,其特征在于,步驟4)中根據本地更新的狀態值數量更新與區塊鏈相關的狀態值的方法為:如果本地接收到f+1個來自不同節點的關于同一個高度值的相同狀態值時,則更新與區塊鏈相關的狀態值,f為異步區塊鏈系統所容忍的故障節點數量。
7.一種異步區塊鏈系統故障節點的恢復系統,其特征在于,包括:
8.如權利要求7所述的系統,其特征在于,狀態記錄模塊維護一個內部狀態集合{H,ht},其中H包含n-1個元素,對應于每個其他節點發來的消息中包含的最大高度值;ht為集合H中第n-f高的值,f為異步區塊鏈系統所容忍的故障節點數量。
9.如權利要求7所述的系統,其特征在于,狀態更新模塊維護一個內部狀態集合{hold,hnew,T,S},其中hold為當前故障節點在故障前的高度值,hnew為狀態記錄模塊發來的最大的ht值,T為hold和hnew之間高度值的集合,S為從其他節點獲取的集合T中高度值對應的狀態值的集合。
10.如權利要求7所述的系統,其特征在于,協議執行模塊維護一個內部狀態集合{hold,ht,ST},其中hold為當前故障節點在故障前的高度值,ht為集合H中第n-f高的值,f為異步區塊鏈系統所容忍的故障節點數量,ST為所有與區塊鏈相關的狀態集合。
...【技術特征摘要】
1.一種異步區塊鏈系統故障節點的恢復方法,其特征在于,包括以下步驟:
2.如權利要求1所述的方法,其特征在于,步驟2)中本地存儲的高度值包含高度集合h和參考高度值ht,其中h包含n-1個元素,對應于每個其他節點發來的消息中包含的最大高度值;n為系統中節點數目;ht為集合h中第n-f大的高度值,f為異步區塊鏈系統所容忍的故障節點數量。
3.如權利要求1所述的方法,其特征在于,步驟2)中根據消息所包含的節點身份和高度值更新本地存儲的高度值的步驟包括:對于該消息所包含的節點身份,比較該消息所包含的高度值與本地存儲的該節點的高度值的大小,如果消息所包含的高度值大于本地存儲的該節點的的高度值,則將本地存儲的該節點的高度值更新為該消息所包含的高度值。
4.如權利要求1所述的方法,其特征在于,步驟2)中更新本地存儲的高度值時,檢查ht值是否需要更新;若ht值大于本地的最大高度值hnew,則將hnew更新為ht值并作為步驟3)中更新后的高度值hnew。
5.如權利要求1所述的方法,其特征在于,步驟4)中根據消息所包含的高度值及對應的狀態值與本地存儲的高度值及對應的狀態值的關系更新本地狀態的步驟包括:對于該消息所包含的節點身份,判斷該消息所包含的高度值是否在hold和hnew之間,如果在,且本地未存儲過該消息所包含的高度值所對應的狀態值,...
【專利技術屬性】
技術研發人員:張振峰,程昊,路遠,
申請(專利權)人:中國科學院軟件研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。