国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

區(qū)塊鏈分片系統的異步共識設計要點探究

2024-12-27 00:00:00蘇曉春
中國新技術新產品 2024年18期

摘 要:本文詳細分析了異步共識架構的設計,特別是底層和上層異步共識組的結構和功能。在底層異步共識組設計中,本文提出了一種基于超級節(jié)點的選舉模型、有效的超級節(jié)點出塊機制和選舉機制,以優(yōu)化系統性能。在上層異步共識組設計中,本文聚焦于區(qū)塊驗證機制的實施和如何有效應對惡意節(jié)點的挑戰(zhàn)。最后驗證了異步共識設計在提高系統吞吐量和安全性方面的有效性。采用本文設計方案能夠顯著提升區(qū)塊鏈分片系統的效率,并有效應對不同場景下的共識挑戰(zhàn),從而推動區(qū)塊鏈技術在實際中廣泛應用。

關鍵詞:區(qū)塊鏈分片;異步共識;超級節(jié)點

中圖分類號:TP 309" " " " 文獻標志碼:A

隨著區(qū)塊鏈應用范圍拓展,其性能限制和可擴展性問題日益突出。為應對這些挑戰(zhàn),區(qū)塊鏈分片技術應運而生,將其網絡劃分為多個較小、易于管理的片段,各片段可獨立處理交易、運行智能合約。在區(qū)塊鏈分片架構中,共識機制的高效實現至關重要。工作量證明、權益證明機制等傳統區(qū)塊鏈共識算法存在性能不足、可擴展性低等問題。異步共識機制是一種新興設計理念,能夠允許不同節(jié)點在時間上以異步方式達成一致,提升了系統處理能力和響應速度,同時降低了對同步通信的需求,降低了網絡延遲。

1 異步共識架構設計

作為一種去中心化、安全性高的分布式賬本技術,區(qū)塊鏈技術被大量用于解決傳統中心化系統中的信任問題[1]。本文引入異步共識機制,可允許不同節(jié)點在時間上以異步方式達成一致,提高整體系統處理能力和響應速度,同時降低同步通信需求,降低網絡延遲。在具體實踐中,本文將異步共識架構設計為上、下2層結構,即上層異步共識組(UACG)和底部異步共識組(BACG)。其中,UACG用于驗證并確認來自BACG的分片區(qū)塊,其設計需要具備高效區(qū)塊驗證機制和惡意節(jié)點處理機制,以保障系統安全。BACG涉及超級節(jié)點選舉模型、超級節(jié)點出塊機制以及選舉機制設計(如圖1所示)。

2 底層異步共識組設計

2.1 超級節(jié)點選舉模型

本文引入基于波達計數法的DPoS算法,投票選舉出少數超級節(jié)點并產生區(qū)塊。這些超級節(jié)點代表整個網絡的利益,用于驗證交易并打包區(qū)塊。DPoS的設計目標是減少參與區(qū)塊生產的節(jié)點數量,提高系統的效率和數據吞吐量,同時保持分散的去中心化特性。在該模型框架下,選民按照首選、次選和第三選等順序對候選節(jié)點進行排名。每個排名位置給予不同的加權得分,例如首選給予較高的分數,次選給予較低的分數,以此類推[2]。在此基礎上,將所有選民的排名進行加權計算,得到每個候選節(jié)點的總得票數,得票數最高的候選人將成為超級節(jié)點。完成得票計算后,根據網絡中持幣者的投票行為,得票數會動態(tài)變化,需要周期性地重新計算、調整超級節(jié)點的選舉結果,以反映當前持幣者的最新偏好和權益分布,其代碼如下所示。

class Delegate:

def __init__(self, name):

self.name = name

self.votes = 0

def receive_vote(self, amount):

self.votes += amount

def __repr__(self):

return f\"Delegate({self.name}, Votes: {self.votes})\"

def dpos_election(delegates, voting_weights):

# Sort delegates by their voting weights in descending order

sorted_delegates = sorted(delegates, key=lambda delegate: delegate.votes, reverse=True)

# Select top delegates as super nodes based on a fixed number or threshold

super_nodes = sorted_delegates[:21]" # Example: Selecting top 21 delegates

return super_nodes

# Example usage:

delegates = [

Delegate(\"Delegate1\"),

Delegate(\"Delegate2\"),

Delegate(\"Delegate3\"),

# Add more delegates as needed

]

# Simulate voting

delegates[0].receive_vote(100)" # Delegate1 receives 100 votes

delegates[1].receive_vote(150)" # Delegate2 receives 150 votes

delegates[2].receive_vote(75)" "# Delegate3 receives 75 votes

# Perform DPoS election

super_nodes = dpos_election(delegates, [])

print(\"Super Nodes:\")

for node in super_nodes:

print(node)

其中,“init”方法會初始化每個候選節(jié)點的名稱和初始得票數為0。“receive_vote”方法模擬接收投票,增加候選節(jié)點的得票數?!癲pos_election”函數實現了基于波達計數法的選舉算法?!皊orted_delegates”可根據得票數對候選節(jié)點進行排序,以便選擇得票數最高的節(jié)點?!皊uper_nodes”根據排序后的結果,將前面的節(jié)點作為超級節(jié)點。上述示例將前21個節(jié)點作為超級節(jié)點。

該代碼創(chuàng)建了若干候選節(jié)點delegates,并模擬它們接收不同數量的投票。調用“dpos_election”函數模擬DPoS選舉過程,將得票最高的節(jié)點作為超級節(jié)點。

2.2 超級節(jié)點出塊機制

超級節(jié)點在其所屬分片內生成新區(qū)塊,包括分片內交易信息和相關狀態(tài)更新。超級節(jié)點出塊機制涉及多個關鍵實施要點[3]。一方面,超級節(jié)點需要維護交易池,接收與管理分片節(jié)點提交的交易請求,根據特定策略(例如交易費用或優(yōu)先級)選擇適宜的交易進行打包。另一方面,超級節(jié)點須驗證各交易的合法性與相關狀態(tài),執(zhí)行預設的共識規(guī)則,以保證區(qū)塊的有效性,并保障其安全。生成的區(qū)塊應盡快廣播至整個網絡,同時,超級節(jié)點需要設計有效的同步策略,保證所有分片節(jié)點和上層異步共識組能及時獲取最新區(qū)塊信息。此外,超級節(jié)點還需要采用嚴格的錯誤處理與回滾機制,監(jiān)測潛在錯誤情況并迅速響應,以維護區(qū)塊鏈狀態(tài)的一致性,并保障其安全。

2.3 超級節(jié)點選舉機制

超級節(jié)點是網絡中具有特殊權限和責任的節(jié)點,用于處理關鍵任務,例如生成區(qū)塊、執(zhí)行共識算法等。選舉超級節(jié)點的過程需要考慮節(jié)點的信任度、性能和參與度等因素,以保障網絡的安全性。本文進行了節(jié)點資格驗證,通常利用數字簽名或加密證書進行身份驗證,保證參與選舉的節(jié)點具有合法身份。并在此基礎上評估節(jié)點的計算能力、網絡帶寬等性能指標,保證節(jié)點能夠承擔超級節(jié)點的責任。在實際的選舉過程中,網絡中的節(jié)點可以提名自己或其他節(jié)點,將其作為超級節(jié)點候選人,其他節(jié)點對候選節(jié)點進行投票,通常需要達到一定的投票門檻才能成為超級節(jié)點。需要注意的是,在選舉過程中,網絡需要保證投票結果的公平性,以防止惡意操縱或攻擊。本文引入波達計數法,根據節(jié)點的偏好和投票行為來選擇適合擔任超級節(jié)點的節(jié)點。假設有n個候選節(jié)點,每個節(jié)點的排名或偏好列表為Ri=(ri1,ri2,...,rin),rij表示候選節(jié)點j在節(jié)點i的排名位置(1表示第一位,2表示第二位,以此類推)。候選節(jié)點j的總得分Sj可由公式(1)計算得出。

(1)

式中:wij為節(jié)點i對排名j的權重。

根據排名位置設定不同的權重系數。一旦選舉成功,超級節(jié)點將被授予生成區(qū)塊、參與共識決策等特殊權限。本文考慮權力分散安全性問題,設計了輪換機制,定期或者基于特定事件對超級節(jié)點進行輪換,即根據網絡性能和節(jié)點活動情況,動態(tài)調整超級節(jié)點的成員,以提高系統的彈性和響應能力。例如對于5個候選節(jié)點A、B、C、D和E,每個節(jié)點收到的排名情況如下:節(jié)點A為(3,4,1,5,2),節(jié)點B為(2,5,3,1,4),節(jié)點C為(5,3,2,4,1),節(jié)點D為(1,2,5,3,4),節(jié)點E為(4,1,4,2,5)。

采用等權重wij=n-rij+1,則計算出的每個節(jié)點的總得分如下所示。1) 對節(jié)點A,SA=(5-3+1)+(5-4+1)+(5-1+1)+(5-5+1)+(5-2+1)=14。2) 對節(jié)點B,SB=(5-2+1)+(5-5+1)+(5-3+1)+(5-1+1)+(5-4+1)=18。3) 對節(jié)點C,SC=(5-5+1)+(5-3+1)+(5-2+1)+(5-4+1)+(5-1+1)=16。4) 對節(jié)點D,SD=(5-1+1)+(5-2+1)+(5-5+1)+(5-3+1)+(5-4+1)=17。5) 對節(jié)點E,SE=(5-4+1)+(5-1+1)+(5-4+1)+(5-2+1)+(5-5+1)=11。

上述5個階段中,節(jié)點B的總得分最高,因此節(jié)點B將成為使用波達計數法選出的超級節(jié)點之一。

3 上層異步共識組設計

3.1 區(qū)塊驗證機制

本文引入PBFT算法構建上層異步共識框架中的區(qū)塊驗證機制。該算法中的節(jié)點角色分為客戶端、備份節(jié)和主節(jié)點。主節(jié)點提出區(qū)塊并向備份節(jié)點廣播提案,備份節(jié)點對提案進行驗證與決策。具體實踐中,PBFT算法采用一定的選舉機制來確定哪個節(jié)點成為主節(jié)點,主節(jié)點再生成新的區(qū)塊,將含有新交易的區(qū)塊作為提案廣播給備份節(jié)點。備份節(jié)點收到主節(jié)點的提案后對提案進行驗證。從微觀層面來看,該過程分為3個關鍵階段。1)預準備階段。備份節(jié)點執(zhí)行預準備階段,檢查提案的數字簽名是否有效,并確認提案中的交易是否符合系統規(guī)則,以此來驗證主節(jié)點的身份和提案的合法性。2)準備階段。一旦備份節(jié)點認可了提案的合法性,隨即向其他備份節(jié)點廣播準備消息,代表備份節(jié)點已經驗證通過并準備接受該提案。3)準備接收消息。備份節(jié)點需要等待來自多數其他備份節(jié)點的準備消息[4]。一旦收到足夠數量的準備消息,備份節(jié)點即進入準備狀態(tài),準備接受并執(zhí)行該區(qū)塊。

主節(jié)點收到大多數備份節(jié)點的準備消息后,將提交區(qū)塊并廣播提交消息。提交消息通知所有節(jié)點,包括備份節(jié)點,開始執(zhí)行該區(qū)塊中的交易。主節(jié)點廣播提交消息后,所有備份節(jié)點執(zhí)行相同的區(qū)塊操作。最終保證整個系統中所有節(jié)點執(zhí)行的交易是一致的。備份節(jié)點執(zhí)行區(qū)塊中的所有交易,并更新其本地狀態(tài)機。此外,本文還為PBFT算法設計了視圖更改、超時檢測和重新選舉主節(jié)點等容錯機制,處理節(jié)點故障或遇到的惡意行為,保證系統的可靠性。

3.2 惡意節(jié)點處理

在上層異步共識設計中,故意廣播錯誤的提案、拒絕執(zhí)行合法的區(qū)塊或者試圖雙重支付等惡意節(jié)點,均會對共識過程造成破壞。針對這一問題,本文設計了一整套針對惡意節(jié)點的處理方案。當節(jié)點發(fā)現當前視圖下無法達成共識或者有惡意行為發(fā)生時,以檢測到消息超時或者消息不一致來確定問題存在。一旦檢測到問題,系統會觸發(fā)視圖更改機制,選擇新的主節(jié)點來提出新的提案、引導共識過程,防止惡意節(jié)點長期干擾系統正常運行。如果節(jié)點在預期時間內未收到足夠數量的準備消息或提交消息,系統認定主節(jié)點或備份節(jié)點可能出現問題,并嘗試重新選舉或更改視圖以恢復共識過程。對于由網絡問題或節(jié)點故障導致的消息丟失或延遲,系統可以利用重試機制嘗試重新發(fā)送消息或者重新執(zhí)行區(qū)塊,保證共識過程的連續(xù)性與一致性,其代碼片段為如下所示。

class ConsensusSystem:

def __init__(self):

self.current_view = 0

self.main_node = None

self.backup_nodes = []

self.timeout_threshold = 10" # Timeout threshold in seconds

def handle_malicious_behavior(self):

if self.detect_malicious_behavior():

self.trigger_view_change()

def detect_malicious_behavior(self):

return self.detect_timeout() or self.detect_inconsistency()

def detect_timeout(self):

return self.main_node is None or self.main_node.timeout gt; self.timeout_threshold or any(node.timeout gt; self.timeout_threshold for node in self.backup_nodes)

def detect_inconsistency(self):

return self.main_node is None or not self.main_node.is_consistent() or any(not node.is_consistent() for node in self.backup_nodes)

def trigger_view_change(self):

self.current_view += 1

self.select_new_main_node()

def select_new_main_node(self):

self.main_node = self.backup_nodes.pop(0)

self.backup_nodes.append(self.main_node)

self.recover_consensus()

def recover_consensus(self):

if self.detect_malicious_behavior():

self.trigger_view_change()

else:

self.retry_messages()

def retry_messages(self):

for node in self.backup_nodes:

node.retry()

# Usage example

consensus_system = ConsensusSystem()

consensus_system.handle_malicious_behavior()

該代碼創(chuàng)建了一個“ConsensusSystem”實例,并設置了主節(jié)點和備份節(jié)點。調用“handle_malicious_behavior”檢測并處理惡意行為。分別使用“detect_malicious_behavior”檢測是否存在超時或消息不一致;使用“detect_timeout”檢測主節(jié)點或備份節(jié)點是否超時;使用“detect_inconsistency”檢測消息是否不一致。如果檢測到惡意行為,觸發(fā)“trigger_view_change”選擇新的主節(jié)點并嘗試恢復共識過程?;凇皉etry_messages”嘗試重新發(fā)送消息或重新執(zhí)行區(qū)塊,以保證共識過程的連續(xù)性。

4 結論

高水平區(qū)塊鏈分片系統的異步共識設計能夠保障整個系統在分布式環(huán)境下的安全,并能保證系統高效運行。本次研究得出以下3個結論。1)在底層異步共識組的設計中,超級節(jié)點管理各個分片內的共識過程,因此選舉算法的設計必須綜合考慮節(jié)點的信任度、性能指標和網絡條件。在上層異步共識組的設計中,區(qū)塊驗證機制可保障系統的安全性,并保證數據的一致性,避免發(fā)生雙重支付、無效交易。2)針對可能存在的惡意節(jié)點,采用超時檢測、錯誤行為證明和快速視圖更改等策略,對惡意節(jié)點進行有效處理,以便迅速處理惡意行為,將其對系統的潛在損害最小化。3)共識模塊的設計能夠保證系統能夠在異步環(huán)境下穩(wěn)定運行。有效的共識模塊能夠實現系統性能、安全性的有效監(jiān)控,靈活應對動態(tài)的網絡條件和節(jié)點參與情況的變化,從而使整個分片系統能夠高效、安全運行。

參考文獻

[1]浮宇麗,任亞唯.基于可驗證秘密共享的區(qū)塊鏈分片存儲模型[J].計算機工程與設計,2023,44(12):3536-3544.

[2]王瑞民,吳佳璇,張建輝.基于秘密分割的區(qū)塊鏈安全數據共享模型[J].重慶郵電大學學報(自然科學版),2023,35(6):1145-1153.

[3]徐克圣,謝詔馳.星型區(qū)塊鏈架構的TKM分片算法[J].計算機應用研究,2024,41(3):683-687.

[4]闕琦峰,陳之豪,張召,等.面向分片許可鏈的無協調者跨片交易處理[J].計算機研究與發(fā)展,2023,60(11):2469-2488.

全州县| 庐江县| 友谊县| 那曲县| 广河县| 辽阳市| 扶沟县| 什邡市| 扎兰屯市| 那曲县| 灯塔市| 洪江市| 平定县| 灵宝市| 宁远县| 新乡县| 泸州市| 龙山县| 扶绥县| 什邡市| 钦州市| 贺州市| 太和县| 北辰区| 肥乡县| 开阳县| 怀宁县| 思南县| 达拉特旗| 潮安县| 丰台区| 渑池县| 礼泉县| 龙口市| 江口县| 哈巴河县| 巴东县| 凯里市| 茶陵县| 凌云县| 蓬安县|