關(guān)鍵詞:HyperledgerFabric;交易沖突;映射;有向無環(huán)圖;沖突消除 中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1001-3695(2025)07-004-1948-08 doi:10.19734/j.issn.1001-3695.2024.11.0452
Abstract:HyperledgerFabricisa mainstreamconsortium blockchain platform.When facing multipleconcurrent transactions thatareinterrelated,theexistingarchitecturetendstogeneratealargenumberof invalidtransactionswhichsverelyrduces thesystem’sefectivetransactionprocessingcapability.Toaddressthisisse,thispaperproposedaconflicteliminationechnism that integrated map and directed acyclic graph(DAG),known as the FabricIMD(Fabric integrated with map and DAG) mechanism.The mechanism identified dependencies between transactions atthe per node(endorser)through map andconstructed theserelationshipsusingadirectedacyclicgaphtoadjust theendorsementorderoftransactions,therebyefectivelyavoiding transactionconflicts.Experimentsdemonstratethatwhentherearemultipleinterrelatedconcuenttransactions,F(xiàn)abricIMDmechanismcansignificantlyreduceinvalidtransactionscausedbytransactionconflicts.Withvaryingdegresofconflict among transactions,the system’s effective transaction throughput increased by 15.68% to 96.08% . Moreover,when dealing withunrelatedconcurrnttransactions,the introductionofthis mechanismdidnotsignificantlyimpact systemperfor-mance.In summary,F(xiàn)abricIMDmechanismnotonlyavoidstransactionconflictsbutalsoenhancesthesystem’seffectivetransaction throughout and significantly reduces the number of invalid transactions.
Key Words:Hyperledger Fabric;transactionconflict;map;directed acyclic graph(DAG);conflict elimination
0 引言
區(qū)塊鏈起源于比特幣[1],其實(shí)質(zhì)是集合了對(duì)等(peertopeer,P2P)網(wǎng)絡(luò)、共識(shí)機(jī)制和密碼學(xué)等技術(shù)的分布式數(shù)據(jù)庫系統(tǒng)。區(qū)塊鏈具有去中心化、數(shù)據(jù)不易竄改和可追溯的優(yōu)點(diǎn),能有效建立多方信任以解決數(shù)據(jù)流通和交易的安全問題,已廣泛應(yīng)用于智能電網(wǎng)[2]、車聯(lián)網(wǎng)[3]、物聯(lián)網(wǎng)[4]和邊緣計(jì)算[5]等領(lǐng)域。
根據(jù)節(jié)點(diǎn)是否可以自由加入,區(qū)塊鏈分為公有鏈、聯(lián)盟鏈和私有鏈。HyperledgerFabric[作為聯(lián)盟鏈的代表之一,具有開源、高度模塊化、可定制、可插拔的特點(diǎn),在數(shù)字化業(yè)務(wù)場景中受到廣泛關(guān)注[7]。HyperledgerFabric采用“執(zhí)行-排序-驗(yàn)證-提交”的架構(gòu),雖然提升了系統(tǒng)交易吞吐量,也帶來了一些問題。這是因?yàn)椋涸谀M執(zhí)行階段,交易并發(fā)且相互隔離,若多筆交易同時(shí)讀取和修改數(shù)據(jù)庫中同一數(shù)據(jù)將會(huì)產(chǎn)生沖突;在驗(yàn)證階段,由于采用多版本并發(fā)控制(MVCC)機(jī)制來保證數(shù)據(jù)庫中數(shù)據(jù)的一致性,這些沖突的交易大多是無效的[8],導(dǎo)致大量網(wǎng)絡(luò)資源和存儲(chǔ)資源的浪費(fèi)。目前解決HyperledgerFabric并發(fā)沖突的方法主要有兩種:一是在排序階段之前減少交易沖突的產(chǎn)生;二是在排序階段及驗(yàn)證階段,最小化沖突交易的數(shù)量。
在排序階段之前減少交易沖突產(chǎn)生方面,Zhang等人在客戶端處采用緩存策略,對(duì)滿足背書條件的交易進(jìn)行沖突分析。無沖突時(shí),交易直接提交至排序節(jié)點(diǎn);有沖突時(shí),交易被暫存至沖突隊(duì)列,待沖突解決后重新執(zhí)行。然而,該方法并不適用于多客戶端環(huán)境中的交易并發(fā)沖突。王盛姣等人[10提出一種背書節(jié)點(diǎn)緩存策略,用于存儲(chǔ)待驗(yàn)證交易的寫集。在交易模擬執(zhí)行時(shí),背書節(jié)點(diǎn)通過比對(duì)交易背書結(jié)果與緩存信息識(shí)別沖突。無沖突時(shí),背書結(jié)果返回至客戶端;否則,給客戶端返回背書失敗信息。但該方案未考慮客戶端對(duì)背書失敗交易的處理機(jī)制。若客戶端對(duì)失敗交易實(shí)施重發(fā),將導(dǎo)致頻繁的客戶端與背書節(jié)點(diǎn)間的通信,這可能增加網(wǎng)絡(luò)負(fù)載并占用關(guān)鍵通信資源,對(duì)區(qū)塊鏈網(wǎng)絡(luò)性能構(gòu)成潛在影響。 Xu 等人[11]在客戶端處引入鎖機(jī)制以檢測(cè)交易沖突,通過為沖突交易創(chuàng)建臨時(shí)數(shù)據(jù)庫索引,并在驗(yàn)證通過后與原索引歸并。然而,此方案只適用于單客戶端場景,而且在異步區(qū)塊鏈系統(tǒng)中實(shí)現(xiàn)節(jié)點(diǎn)同步的鎖服務(wù)將增加額外的通信成本[10]
在排序階段及驗(yàn)證階段最小化沖突交易數(shù)量方面,Sharma等人[8提出一種基于交易重排序的策略,該策略通過構(gòu)建區(qū)塊內(nèi)交易依賴關(guān)系圖,識(shí)別并消除循環(huán)依賴,以優(yōu)化交易排序。然而,此策略僅緩解了區(qū)塊內(nèi)的交易沖突,未能解決跨區(qū)塊的沖突問題,且可能引起交易提前終止。 Xu 等人[12]提出了一種節(jié)點(diǎn)排序策略,通過交易按鍵分組并結(jié)合余額驗(yàn)證,實(shí)現(xiàn)沖突交易的有效合并,以避免驗(yàn)證失敗。然而,該方法對(duì)賬戶余額的依賴可能限制智能合約的靈活性。吳海博等人[13]為解決區(qū)塊內(nèi)交易沖突,提出了一種高效的事務(wù)調(diào)度機(jī)制,通過依賴鏈和危險(xiǎn)結(jié)構(gòu)檢測(cè)來識(shí)別并中止?jié)撛谘h(huán)依賴的事務(wù)。同時(shí),為解決區(qū)塊間沖突,建議在排序節(jié)點(diǎn)構(gòu)建緩存區(qū)進(jìn)行交易沖突檢測(cè)。但這種方法可能削弱了系統(tǒng)的隱私保護(hù)優(yōu)勢(shì)。Gorenflo等人[14]提出了一種\"執(zhí)行-排序-執(zhí)行”的交易流程,通過依賴性分析在驗(yàn)證階段識(shí)別沖突交易,并基于最新數(shù)據(jù)庫狀態(tài)重新執(zhí)行,然后更新賬本。這種機(jī)制繞過了MVCC驗(yàn)證機(jī)制,可能影響系統(tǒng)安全性。Nasirifard等人[15]提出了FabricCRDT方法,結(jié)合HyperledgerFabric與CRDT。在背書節(jié)點(diǎn)驗(yàn)證時(shí),對(duì)CRDT交易跳過MVCC驗(yàn)證,使用CRDT技術(shù)合并提交。但這種方法需要定義特定數(shù)據(jù)結(jié)構(gòu),且繞過MVCC機(jī)制可能限制其適用性。
可見,現(xiàn)有在排序階段之前減少交易沖突產(chǎn)生的方法通常限于單客戶端環(huán)境或缺乏對(duì)背書失敗交易的客戶端處理機(jī)制,導(dǎo)致適用性不強(qiáng)。而在排序階段及驗(yàn)證階段最小化沖突交易數(shù)量的方法,如在排序節(jié)點(diǎn)處采用交易重排序策略,雖然解決了沖突問題,但可能需要對(duì)系統(tǒng)架構(gòu)進(jìn)行調(diào)整,影響隱私性。事實(shí)上,原HyperledgerFabric架構(gòu)中的排序服務(wù)通過不參與交易的驗(yàn)證與執(zhí)行,實(shí)現(xiàn)了共識(shí)與交易處理的分離,既增強(qiáng)了共識(shí)部分的模塊化,也確保了交易隱私[。因此,迫切需要一種新的沖突消除機(jī)制,它應(yīng)具有廣泛的適用性,同時(shí)不改變系統(tǒng)架構(gòu)。
沖突的本質(zhì)在于交易之間的相互依賴性,而有向無環(huán)圖(directedacyclicgraph,DAG)是表征這種依賴性的有力工具。例如,文獻(xiàn)[16,17]通過考慮每筆交易執(zhí)行時(shí)所需的互斥資源,構(gòu)建了DAG來確定區(qū)塊內(nèi)交易的執(zhí)行順序。每筆交易執(zhí)行后,依賴于此交易的其他交易的人度將減少1。當(dāng)交易的入度降至0時(shí),表明其依賴的所有前置條件均已滿足,這些交易可以獨(dú)立并發(fā)執(zhí)行,從而充分利用多核CPU的計(jì)算資源。
受到上述研究的啟發(fā),本文提出一種融合映射與DAG的沖突消除機(jī)制FabricIMD,旨在減少系統(tǒng)中因交易沖突導(dǎo)致出現(xiàn)無效交易的同時(shí)最大程度保留系統(tǒng)在隱私保護(hù)方面的優(yōu)勢(shì)。該機(jī)制適宜于采用“執(zhí)行-排序-驗(yàn)證\"架構(gòu)的系統(tǒng),因?yàn)樵趫?zhí)行階段便能獲取交易需要讀取或者修改的賬戶信息,用于識(shí)別交易間依賴關(guān)系。相較之下,在遵循“排序-執(zhí)行\(zhòng)"架構(gòu)的平臺(tái)上,通常需要增加額外機(jī)制,如文獻(xiàn)16]所述由智能合約開發(fā)者定義接口的互斥參數(shù),或文獻(xiàn)[17]中提出對(duì)智能合約進(jìn)行標(biāo)記的方法,以判定交易的依賴性。本文的主要貢獻(xiàn)有:
a)提出一種融合映射與DAG的交易沖突消除機(jī)制Fa-bricIMD。該機(jī)制通過鍵值對(duì)映射的方法追蹤系統(tǒng)中賬戶的變動(dòng)情況,記錄引起賬戶變動(dòng)的交易信息,并確定交易間的依賴關(guān)系。然后,將所有未完成交易之間的依賴關(guān)系構(gòu)建為DAG,并根據(jù)DAG確定交易的背書順序。此機(jī)制能夠在保持系統(tǒng)高吞吐量的同時(shí),顯著減少因交易沖突而產(chǎn)生的無效交易數(shù)量。
b)搭建實(shí)驗(yàn)測(cè)試系統(tǒng),驗(yàn)證了在無交易沖突條件下,引入FabricIMD機(jī)制對(duì)系統(tǒng)性能的影響較??;在存在不同程度交易沖突的情況下,F(xiàn)abricIMD機(jī)制能有效提升系統(tǒng)有效交易吞吐量,并減少無效交易。
1HyperledgerFabric交易流程及沖突問題分析
1.1HyperledgerFabric交易流程簡介
在HyperledgerFabric框架中,交易流程由客戶端發(fā)起,向背書節(jié)點(diǎn)提交交易提案。滿足背書策略要求后,交易被發(fā)送至排序節(jié)點(diǎn),該節(jié)點(diǎn)負(fù)責(zé)按時(shí)間順序和通道ID對(duì)交易進(jìn)行排序并打包成區(qū)塊,隨后分發(fā)至所有對(duì)等節(jié)點(diǎn)。對(duì)等節(jié)點(diǎn)在此架構(gòu)中扮演多重角色,包括背書、提交、主節(jié)點(diǎn)和錨節(jié)點(diǎn),分別負(fù)責(zé)交易背書、賬本更新、區(qū)塊廣播及跨組織通信。賬本由“世界狀態(tài)\"和“區(qū)塊鏈\"構(gòu)成,前者存儲(chǔ)當(dāng)前賬本狀態(tài),后者記錄所有交易變更。組織由信任的對(duì)等節(jié)點(diǎn)組成,至少包含一個(gè)背書節(jié)點(diǎn),其背書行為體現(xiàn)了組織的交易認(rèn)可。背書策略明確了交易背書的組織要求,確保了交易的合法性和有效性。
HyperledgerFabric交易流程如圖1所示,包括執(zhí)行、排序和驗(yàn)證階段。
a)執(zhí)行階段:客戶端向組織內(nèi)的背書節(jié)點(diǎn)提交交易提案,提案中包括客戶端簽名、調(diào)用的鏈碼及其參數(shù)等信息。背書節(jié)點(diǎn)根據(jù)提案中的參數(shù),調(diào)用本地部署的鏈碼與賬本進(jìn)行交互,模擬執(zhí)行交易提案,但在此階段不對(duì)賬本進(jìn)行更新。
b)排序階段:排序節(jié)點(diǎn)收到客戶端提交的交易后,不驗(yàn)證交易的有效性,而是根據(jù)交易所屬通道和到達(dá)時(shí)間等因素,對(duì)交易進(jìn)行排序并打包成區(qū)塊。排序節(jié)點(diǎn)之間就生成的區(qū)塊達(dá)成共識(shí),隨后將區(qū)塊發(fā)送至各對(duì)等節(jié)點(diǎn)。
c)驗(yàn)證階段:對(duì)等節(jié)點(diǎn)接收排序節(jié)點(diǎn)發(fā)送的區(qū)塊,依次對(duì)區(qū)塊內(nèi)交易進(jìn)行驗(yàn)證。首先,執(zhí)行VSCC(驗(yàn)證系統(tǒng)鏈碼)以檢查交易是否符合背書策略。接著,利用MVCC機(jī)制,驗(yàn)證交易讀集中的鍵版本號(hào)是否與賬本中的世界狀態(tài)一致。驗(yàn)證通過后,對(duì)等節(jié)點(diǎn)將有效交易的寫集更新至世界狀態(tài)數(shù)據(jù)庫,并最終將區(qū)塊記錄到區(qū)塊鏈賬本中。
1.2 交易沖突問題分析
在進(jìn)行沖突問題分析前,先給出兩個(gè)基本概念:
a)讀寫集[18:在基于最新賬本狀態(tài)的背景下,背書節(jié)點(diǎn)通過模擬執(zhí)行交易提案中的參數(shù),生成交易的讀寫集。讀集囊括了模擬執(zhí)行中訪問的所有唯一鍵及其對(duì)應(yīng)的已提交版本號(hào)。寫集記錄了模擬執(zhí)行期間對(duì)鍵的更新,包括鍵的新值和若被刪除的標(biāo)志。
b)交易依賴:如果有兩筆交易 TXi 和 Txj,Txi 寫集中的鍵與Txj 讀集中的鍵重疊,則交易 Txi 和交易 Txj 之間存在交易依賴。
HyperledgerFabric在執(zhí)行階段支持節(jié)點(diǎn)并發(fā)處理來自一個(gè)或多個(gè)客戶端的交易。然而,在存在交易依賴的情況下,如果多筆交易同時(shí)執(zhí)行,系統(tǒng)中可能出現(xiàn)交易沖突問題,導(dǎo)致在驗(yàn)證階段大量交易被標(biāo)記為無效,從而影響系統(tǒng)性能。
產(chǎn)生上述現(xiàn)象的原因在于,當(dāng)存在依賴關(guān)系的兩筆交易TXi 和 Txj 并發(fā)執(zhí)行,若交易 Txi 在交易 Txj 之前完成驗(yàn)證并更新世界狀態(tài)數(shù)據(jù)庫,則交易 Txj 在驗(yàn)證階段因讀集中鍵的版本與當(dāng)前世界狀態(tài)中的版本不一致,即交易 Txj 與交易 Txi 產(chǎn)生“讀-寫\"沖突,從而被標(biāo)記為無效。當(dāng)這兩筆交易被納入同一區(qū)塊或分別進(jìn)人不同區(qū)塊時(shí),將分別觸發(fā)區(qū)塊內(nèi)交易沖突和區(qū)塊間交易沖突問題。
2 融合映射與DAG的沖突消除機(jī)制FabricIMD
2.1 交易流程
FabricIMD機(jī)制分為背書和提交兩個(gè)階段。引入該機(jī)制后,交易流程如圖2所示。
2.2 FabricIMD機(jī)制-背書階段
該階段在背書節(jié)點(diǎn)部署映射和構(gòu)建DAG。
2.2.1 部署映射
1)映射背書節(jié)點(diǎn)根據(jù)交易背書結(jié)果讀寫集中的鍵來判斷當(dāng)前交易與之前的交易是否存在依賴。若只構(gòu)建DAG,背書節(jié)點(diǎn)需要遍歷DAG中所有頂點(diǎn)對(duì)應(yīng)的交易才能判斷依賴性,導(dǎo)致效率很低。通過構(gòu)建讀寫集映射,無須遍歷DAG中的所有頂點(diǎn)就能判斷當(dāng)前交易與之前交易的依賴關(guān)系,因此需要建立讀寫集映射以提高檢索效率。
此外,在交易背書結(jié)果中,還存在讀集和寫集中的鍵不一致的情況。如果僅構(gòu)建寫集鍵映射而不構(gòu)建讀集鍵映射,可能會(huì)產(chǎn)生沖突。例如,交易 Txi 因與之前交易存在依賴關(guān)系需等待DAG更新之后再執(zhí)行。背書節(jié)點(diǎn)收到新的交易 Txj ,其讀集中的鍵與之前所有待處理交易的寫集中的鍵均不相同,但其寫集中的鍵與交易 Txi 讀集中的鍵相同。在僅構(gòu)建寫集鍵映射的情況下,該交易將會(huì)被判斷為沒有依賴性,直接進(jìn)入后續(xù)交易流程。但實(shí)際上,由于交易 Txj 寫集中的鍵與交易 Txi 讀集中的鍵相同,若這兩筆交易同時(shí)執(zhí)行,將產(chǎn)生沖突??紤]到這個(gè)問題,F(xiàn)abricIMD機(jī)制中不但建立寫集鍵映射,還需要建立讀集鍵映射。
2)構(gòu)建映射映射分為讀集鍵映射和寫集鍵映射,使用交易讀寫集中的鍵作為鍵,交易的集合作為值,從而追蹤當(dāng)前時(shí)刻的鍵讀寫操作。背書節(jié)點(diǎn)獲取新交易 Txi 的背書結(jié)果后,對(duì)讀寫集映射進(jìn)行如下處理:
a)背書節(jié)點(diǎn)首先遍歷背書結(jié)果讀集中的鍵。
(a)在讀集鍵映射中獲取該鍵對(duì)應(yīng)的值,即當(dāng)前讀取該鍵狀態(tài)的交易集合 TxSet={Txa,Txb,Txc,…} ;
(b)將交易 Txi 加入到該交易集合中,即 TxSet={Txa ,Txb,Txc,…,Txi} ,并將其作為該鍵在讀集鍵映射中的值。
b)接下來,背書節(jié)點(diǎn)遍歷背書結(jié)果寫集中的鍵。
(a)在寫集鍵映射中獲取該鍵對(duì)應(yīng)的值,即當(dāng)前修改該鍵狀態(tài)的交易集合 TxSet1={Txd,Txe,Txj,…} :
(b)將交易 Txi 加入到該集合中,即 TxSet1={Txd,Txe ,Txj,…,Txi} ,并將其作為該鍵在寫集鍵映射中的值。
2.2.2 構(gòu)建DAG
令每筆交易對(duì)應(yīng)DAG中的每個(gè)頂點(diǎn),背書節(jié)點(diǎn)根據(jù)交易的依賴關(guān)系在DAG中動(dòng)態(tài)添加有向邊,構(gòu)建并更新圖結(jié)構(gòu)。
如算法1所示流程,背書節(jié)點(diǎn)獲取新交易 Txi 的背書結(jié)果后,在DAG中新增與其對(duì)應(yīng)的頂點(diǎn) Vn ,并將依賴關(guān)系檢測(cè)碼初始化為0,然后啟動(dòng)對(duì)此筆交易的處理。
a)背書節(jié)點(diǎn)首先遍歷背書結(jié)果讀集中的鍵。
(a)若寫集鍵映射中該鍵對(duì)應(yīng)的值存在,表明當(dāng)前交易TXi 與映射中交易 Txm 存在依賴關(guān)系。背書節(jié)點(diǎn)定位交易 TXm 在DAG中對(duì)應(yīng)的頂點(diǎn) Vm 。
(b)若頂點(diǎn) Vm 與新增頂點(diǎn) Vn 之間不存在有向邊,則在DAG中添加頂點(diǎn) Vm 指向頂點(diǎn) Vn 的有向邊,并將依賴關(guān)系檢測(cè)碼更新為1。
(c)遍歷過程中,背書節(jié)點(diǎn)對(duì)讀集鍵映射進(jìn)行更新。
b)接下來,背書節(jié)點(diǎn)遍歷背書結(jié)果寫集中的鍵:
(a)若讀集鍵映射中該鍵對(duì)應(yīng)的值非空,表明當(dāng)前交易與之前的交易存在依賴關(guān)系。背書節(jié)點(diǎn)執(zhí)行與上述相同的操作。
(b)遍歷過程中,背書節(jié)點(diǎn)對(duì)寫集鍵映射進(jìn)行更新。
c)遍歷結(jié)束后,如果依賴關(guān)系檢測(cè)碼為0,該筆交易的背書結(jié)果將返回至客戶端,否則等待后續(xù)處理。
算法1FabricIMD機(jī)制—背書階段
輸人:交易 Txi 的讀寫集 TxRwSet ;讀集鍵映射RKM;寫集鍵映射WKM;交易間依賴關(guān)系 DAG 輸出:讀集鍵映射RKM;寫集鍵映射WKM;交易間依賴關(guān)系DAG;依賴關(guān)系檢測(cè)碼Code。初始化 Code=0,DAG 頂點(diǎn) Vn for鍵 keyi∈TxRwSet 的讀集doif鍵 keyi 在WKM中對(duì)應(yīng)的值非空dofor交易 Txm∈ 鍵 keyi 在WKM中對(duì)應(yīng)的值doVm 為交易 Txm 在DAG中對(duì)應(yīng)的頂點(diǎn);if Vm 與 Vn 之間不存在有向邊then在DAG中添加頂點(diǎn) Vm 指向頂點(diǎn) Vn 的有向邊;end ifend for(204號(hào) Code=1 :end if將交易 Txi 添加到鍵 keyi 在RKM對(duì)應(yīng)的值中;end forfor鍵 keyj∈TxRwSet 的寫集doif鍵keyj在RKM中對(duì)應(yīng)的值非空thenfor交易 Txa∈ 鍵 keyj 在RKM中對(duì)應(yīng)的值doVa 為交易 Txa 在DAG中對(duì)應(yīng)的頂點(diǎn);if Va 與 Vn 之間不存在有向邊then在DAG中添加頂點(diǎn) Va 指向頂點(diǎn) Vn 的有向邊;endifend forCode=1 end if將交易 TXi 添加到鍵 keyj 在WKM對(duì)應(yīng)的值中;end forreturnRKM,WKM,DAG,Code;
c)下面將通過舉例和圖形化的方式展示DAG的變化過程。
背書節(jié)點(diǎn)先后收到交易1\~5共5筆交易,每筆交易讀集與寫集中的鍵如表1所示。
DAG構(gòu)建過程如圖3所示。
(a)交易1為首筆交易,新建其對(duì)應(yīng)的頂點(diǎn) V1 后,該筆交易直接進(jìn)入后續(xù)交易流程。
(b)對(duì)于交易2,由于需要基于交易1對(duì)鍵 K2 和 K3 的狀態(tài)更新,所以在DAG中添加從頂點(diǎn) V1 指向頂點(diǎn) V2 的有向邊。同理,鑒于交易3依賴于交易1和2,因此在DAG中分別添加頂點(diǎn) V1 和 V2 指向頂點(diǎn) V3 的有向邊。
(c)交易4與前面三筆交易不存在交易依賴,因此新建該筆交易對(duì)應(yīng)的頂點(diǎn) V4 后,交易可以直接進(jìn)入后續(xù)交易流程。
(d)交易5分別與交易2和4存在交易依賴,因此在DAG中分別添加頂點(diǎn) V2 和 V4 指向頂點(diǎn) V5 的有向邊,同時(shí)交易5需要等待后續(xù)處理。
2.3 FabricIMD機(jī)制一提交階段
背書節(jié)點(diǎn)接收到區(qū)塊后,首先驗(yàn)證區(qū)塊內(nèi)交易并更新賬本,隨后對(duì)區(qū)塊內(nèi)交易進(jìn)行遍歷以更新映射和DAG。過程如下:
a)更新映射。背書節(jié)點(diǎn)分別遍歷交易讀集和寫集的鍵,并依據(jù)鍵在映射中移除該筆交易。
b)更新DAG。背書節(jié)點(diǎn)刪除DAG中該筆交易所對(duì)應(yīng)的頂點(diǎn)及其指向其他頂點(diǎn)的有向邊,然后檢查是否新增入度為0的頂點(diǎn)。若有,重新模擬執(zhí)行該新增頂點(diǎn)所對(duì)應(yīng)的交易并將背書結(jié)果返回給客戶端;否則,等待DAG的后續(xù)更新。
算法2FabricIMD機(jī)制—提交階段
輸人:區(qū)塊 B ;讀集鍵映射RKM;寫集鍵映射WKM;交易間依賴關(guān)系 DAG 輸出:讀集鍵映射RKM;寫集鍵映射WKM;交易間依賴關(guān)系 DAG 。for交易 TXi∈B dofor鍵 keyi∈Txi 的寫集do將 TXi 從鍵 keyi 在WKM對(duì)應(yīng)的值中刪除;end forfor鍵 keyi∈Txi 的讀集do將 TXi 從鍵 keyj 在RKM對(duì)應(yīng)的值中刪除;endforVi 為交易 Txi 在DAG中對(duì)應(yīng)的頂點(diǎn);for頂點(diǎn) Vn 為 Vi 的后繼頂點(diǎn)do刪除DAG中頂點(diǎn) Vi 指向頂點(diǎn) Vn 的有向邊;if頂點(diǎn) Vn 的入度為0then模擬執(zhí)行頂點(diǎn) Vn 對(duì)應(yīng)的交易 Txn ,并將背書結(jié)果返回給客戶端;end ifend for在DAG中刪除頂點(diǎn) Vi end forreturnRKM,WKM,DAG;c)圖形化示例DAG更新過程。DAG更新過程如圖4所示。
(a)背書節(jié)點(diǎn)在驗(yàn)證并提交包含交易1和4的區(qū)塊后,從DAG中移除頂點(diǎn) V1 和 V4 及這兩個(gè)頂點(diǎn)指向其他頂點(diǎn)的有向邊。
(b)此時(shí)頂點(diǎn) V2 不再有來自其他頂點(diǎn)的有向邊,即入度為0,表明此時(shí)交易2與系統(tǒng)中正在執(zhí)行的交易不存在沖突。因此,交易2可以重新執(zhí)行。頂點(diǎn) V3 和 V5 的入度不為0,所對(duì)應(yīng)的交易3和5需要等待后續(xù)處理。
(c)當(dāng)交易2完成后,在DAG中刪除頂點(diǎn) V2 指向其他頂點(diǎn)的有向邊及該頂點(diǎn)自身,此時(shí)頂點(diǎn) V3 和 V5 的人度變?yōu)?,可以同時(shí)執(zhí)行交易3和5。
2.4FabricIMD機(jī)制的復(fù)雜度和安全性分析
2.4.1 復(fù)雜度分析
設(shè)每筆交易讀集和寫集中鍵的數(shù)量分別為 n1 和 n2 。對(duì)于任意特定鍵,通過讀寫集映射進(jìn)行值的查找操作具有 O(1) 的時(shí)間復(fù)雜度。該值是一個(gè)交易集合,反映了當(dāng)前正在讀取或者修改該鍵狀態(tài)的交易,設(shè)該交易集合的大小平均為 m 。
在構(gòu)建讀寫集映射和DAG階段,外層循環(huán)首先遍歷 n1 個(gè)讀集中的鍵,對(duì)于每個(gè)鍵,內(nèi)層循環(huán)遍歷其在寫集鍵映射中關(guān)聯(lián)的 ∣m∣ 筆交易,判斷每筆交易對(duì)應(yīng)的頂點(diǎn)是否與當(dāng)前交易對(duì)應(yīng)的頂點(diǎn)間存在有向邊。若無,則在DAG中添加有向邊;若有,則向下進(jìn)行。此判斷步驟旨在防止因當(dāng)前交易讀取的兩個(gè)或多個(gè)鍵與之前某筆交易需要修改的鍵相同,從而導(dǎo)致在對(duì)鍵遍歷的過程中重復(fù)添加有向邊的情況出現(xiàn)。內(nèi)循環(huán)中每次進(jìn)行判斷和添加有向邊操作的時(shí)間復(fù)雜度為 O(1) 。在整個(gè)循環(huán)過程中進(jìn)行判斷操作的次數(shù)為 n1?m* 每次內(nèi)層循環(huán)結(jié)束后將當(dāng)前交易添加到讀集鍵映射中,所需的時(shí)間復(fù)雜度為 O(1) 。綜上所述,對(duì)每筆交易讀集中鍵的操作所需的時(shí)間復(fù)雜度為 O(n1? m )。對(duì)交易寫集中鍵的操作與讀集中類似。因此,在該階段對(duì)每筆交易操作的整體時(shí)間復(fù)雜度為 O((n1+n2)?m) 。
在更新讀寫集映射和DAG階段,外層循環(huán)首先遍歷 n1 個(gè)讀集中的鍵,對(duì)于每個(gè)鍵,內(nèi)層循環(huán)遍歷其在讀集鍵映射中關(guān)聯(lián)的 m 筆交易,以移除當(dāng)前已完成的交易。類似地,遍歷寫集中的鍵,其數(shù)量為 n2 。對(duì)于每個(gè)鍵,循環(huán)遍歷其在寫集鍵映射中關(guān)聯(lián)的 m 筆交易,以移除當(dāng)前已完成的交易。因此,在更新讀寫集映射時(shí)所需的時(shí)間復(fù)雜度為 。接下來,在DAG中遍歷當(dāng)前交易對(duì)應(yīng)頂點(diǎn)指向其他頂點(diǎn)的有向邊,其數(shù)量為 Q ,并逐一刪除這些邊。刪除每條有向邊的操作所需的時(shí)間復(fù)雜度為 O(1) ,因此總的時(shí)間復(fù)雜度為 O(Q) 。最后,刪除當(dāng)前交易對(duì)應(yīng)的頂點(diǎn),所需的時(shí)間復(fù)雜度為 O(1) 。綜上所述,在此階段對(duì)每筆交易操作的整體時(shí)間復(fù)雜度為 O((n1+
。
2.4.2安全性分析
在HyperledgerFabric中,背書節(jié)點(diǎn)接收到來自客戶端的交易提案后將進(jìn)行一系列驗(yàn)證。這些驗(yàn)證包括交易提案的格式是否正確、通過核對(duì)賬本數(shù)據(jù)檢查交易是否被重復(fù)提交過以防范重放攻擊、交易提案簽名是否有效以及客戶端是否有權(quán)限執(zhí)行鏈碼操作[18]。如果驗(yàn)證通過,背書節(jié)點(diǎn)將調(diào)用智能合約模擬執(zhí)行交易提案。本文所提的FabricIMD機(jī)制是在模擬執(zhí)行交易提案步驟后實(shí)施,即該交易提案已經(jīng)被驗(yàn)證通過。因此,該機(jī)制不會(huì)對(duì)系統(tǒng)的安全性問題造成影響。而且,無論是經(jīng)過沖突消除機(jī)制處理后直接進(jìn)人后續(xù)交易流程的交易,還是等待DAG更新后重新執(zhí)行的交易,都將和未引人該機(jī)制時(shí)的系統(tǒng)一樣需要經(jīng)過排序和驗(yàn)證階段,從而減少對(duì)系統(tǒng)的安全性影響。
3 實(shí)驗(yàn)和分析
為驗(yàn)證所提出方法的有效性,構(gòu)建了一個(gè)實(shí)驗(yàn)系統(tǒng)。該系統(tǒng)基于HyperledgerFabric的“執(zhí)行-排序-驗(yàn)證”架構(gòu),由以下主要組件構(gòu)成:
a)客戶端:用于與系統(tǒng)進(jìn)行交互。b)排序部分:五個(gè)節(jié)點(diǎn)組成,負(fù)責(zé)交易的排序打包過程。c)組織:三個(gè)組織,每個(gè)組織內(nèi)各包含一個(gè)背書節(jié)點(diǎn),用
于交易背書。d)共識(shí)算法:排序節(jié)點(diǎn)間采用Raft共識(shí)算法。系統(tǒng)部署在服務(wù)器上,具體配置如下:a)處理器:Intel@ CoreTMi7-9700 CPU @ ,共8
個(gè)核心;b)內(nèi)存:16GBDDR4RAM;c)操作系統(tǒng):Ubuntu22.04.2LTS;d)開發(fā)環(huán)境:使用Go1.21.3Linux/amd64;此外,通過端口映射技術(shù),在單一服務(wù)器上模擬多節(jié)點(diǎn)運(yùn)
行環(huán)境。鑒于本文主要關(guān)注“讀-寫\"交易沖突問題且只讀交易
通常不會(huì)被提交至排序服務(wù)節(jié)點(diǎn)[18],因此在實(shí)驗(yàn)中設(shè)置的交
易均涉及對(duì)賬本的讀寫操作。為了量化實(shí)驗(yàn)效果,采用以下指
標(biāo)作為系統(tǒng)性能評(píng)價(jià)指標(biāo):a)有效交易吞吐量:一段時(shí)間內(nèi),系統(tǒng)平均每秒提交的有
效交易數(shù)量。b)平均有效交易時(shí)延:客戶端發(fā)起交易到收到交易成功
上鏈信息所需的時(shí)間。
c)無效交易數(shù)量:一段時(shí)間內(nèi),系統(tǒng)內(nèi)產(chǎn)生的無效交易數(shù)量。
本章測(cè)試了在不同交易沖突程度和背書策略下,引入FabricIMD機(jī)制后系統(tǒng)性能的變化。
3.1 無交易沖突
在組織中的節(jié)點(diǎn)處初始化生成10000個(gè)賬戶。令客戶端在同一時(shí)間發(fā)送的交易訪問不同的賬戶,因此避免了交易沖突。系統(tǒng)參數(shù)配置如表2所示。
如圖5所示,無交易沖突時(shí),引入FabricIMD機(jī)制后,系統(tǒng)有效交易吞吐量略有下降。這是因?yàn)橐薋abricIMD機(jī)制后,在背書階段增加了沖突消除的操作,而此時(shí)系統(tǒng)中又沒有沖突交易,導(dǎo)致相比于未引入時(shí),系統(tǒng)在相同時(shí)間內(nèi)完成的交易數(shù)量減少。盡管如此,當(dāng)區(qū)塊大小從20增加至100時(shí),有效交易吞吐量的降低幅度最高僅為 2.94% 。原因在于本文提出的Fab-ricIMD機(jī)制能夠有效地處理交易,同時(shí)對(duì)系統(tǒng)資源的占用保持在較低水平。如表3所示,F(xiàn)abricIMD機(jī)制對(duì)每筆交易的處理時(shí)間在 6~9μs ,且該機(jī)制所占用的內(nèi)存空間較小且保持穩(wěn)定。
如圖6所示,引人FabricIMD機(jī)制后,有效交易的平均時(shí)延未有顯著波動(dòng)。上述表明,盡管引人FabricIMD機(jī)制可能會(huì)引入額外的處理開銷,但其對(duì)系統(tǒng)整體性能的影響是有限的。
3.2 不同程度交易沖突
3.2.1不同Zipfian分布參數(shù)對(duì)系統(tǒng)性能的影響
本實(shí)驗(yàn)旨在測(cè)試在不同程度交易沖突條件下,引入Fa-bricIMD機(jī)制后系統(tǒng)的性能。此外,實(shí)驗(yàn)還將評(píng)估無沖突消除機(jī)制的兩種情況(無效交易不重發(fā)和無效交易重發(fā)),以及Fabric ++[8] 和FabricDT[10]兩種方案的性能,作為對(duì)比分析。其中,F(xiàn)abric ++ 為在排序節(jié)點(diǎn)處進(jìn)行交易沖突處理的經(jīng)典方法,F(xiàn)abricDT與FabricIMD一樣,均在背書節(jié)點(diǎn)對(duì)交易進(jìn)行處理。
在表2的系統(tǒng)配置基礎(chǔ)上,本實(shí)驗(yàn)將區(qū)塊內(nèi)最大交易數(shù)量固定為20,通過Zipfian分布函數(shù)[19選擇交易訪問的賬戶。表4為不同Zipfian分布參數(shù)下的交易沖突程度。隨著Zipfian分布參數(shù)的增加,交易間出現(xiàn)沖突的概率增加。
如圖7所示,隨著Zipfian分布參數(shù)的增加,五種方案下的有效交易吞吐量均呈現(xiàn)下降趨勢(shì)。這一現(xiàn)象的根源在于系統(tǒng)處理交易的能力是有限的。在無沖突處理機(jī)制時(shí),無效交易的數(shù)量隨著交易間沖突概率的增大而增多,導(dǎo)致有效交易占比下降。加人沖突處理機(jī)制后,由于需要分配額外的資源來檢測(cè)和消除沖突交易,也導(dǎo)致了有效交易吞吐量的下降。盡管如此,在FabricIMD機(jī)制下,系統(tǒng)有效交易吞吐量下降最少,隨著Zipfian分布參數(shù)從1.01增加到10,吞吐量僅下降了 10.93% ,遠(yuǎn)低于無沖突消除機(jī)制(無效交易不重發(fā))的 47.46% 和Fa-bricDT的 30% 。當(dāng)Zipfian分布參數(shù)為10時(shí),引入FabricIMD機(jī)制后,系統(tǒng)的有效交易吞吐量是無沖突消除機(jī)制且無效交易不重發(fā)時(shí)的1.96倍,是FabricDT的1.44倍。如表5所示,交易在FabricIMD機(jī)制部分的處理耗時(shí)始終在微秒級(jí)別。
如圖8所示,無沖突消除機(jī)制(無效交易不重發(fā))、FabricDT和Fabric ++ 方案的平均有效交易時(shí)延隨Zipfian分布參數(shù)的增加而降低,而FabricIMD機(jī)制的平均有效交易時(shí)延隨Zipfian分布參數(shù)的增加而略微增加。這是因?yàn)閷?duì)比方案在交易流程的驗(yàn)證階段或之前因交易沖突而提前中止了大量交易,從而加速了有效交易的處理。而引入FabricIMD機(jī)制后,由于部分沖突交易的背書順序被調(diào)整,需等待其前置交易執(zhí)行完畢,導(dǎo)致處理時(shí)延增加。與無效交易重發(fā)相比,當(dāng)Zipfian分布參數(shù)小于4時(shí),引人FabricIMD后的時(shí)延與其相當(dāng);當(dāng)Zipfian分布參數(shù)大于4時(shí),引入該機(jī)制下的額外時(shí)延約為 2s (20
盡管如此,引人FabricIMD機(jī)制的系統(tǒng)在無效交易產(chǎn)生數(shù)量上始終為零,優(yōu)于其他方案,如圖9所示。這是因?yàn)镕abric-IMD機(jī)制通過優(yōu)化交易背書順序,確保交易在無沖突環(huán)境下進(jìn)行背書。這一策略不僅避免了因交易沖突而產(chǎn)生無效交易,還減少了無效交易重發(fā)導(dǎo)致的系統(tǒng)交易沖突加劇問題,從而提高了系統(tǒng)的整體效率。
3.2.2區(qū)塊大小對(duì)系統(tǒng)性能的影響
為評(píng)估區(qū)塊大小對(duì)系統(tǒng)性能的影響,實(shí)驗(yàn)以步長40將區(qū)塊內(nèi)最大交易數(shù)量從40增加到200,觀察五種方案下系統(tǒng)各項(xiàng)指標(biāo)。在測(cè)試過程中以Zipfian分布參數(shù)為4來選擇交易修改的賬戶,使系統(tǒng)中保持一定的交易沖突。
圖10和11為系統(tǒng)在不同區(qū)塊大小下的有效交易吞吐量和無效交易數(shù)量。隨著區(qū)塊內(nèi)最大交易數(shù)量的增加,系統(tǒng)的有效交易吞吐量上升。然而,區(qū)塊大小的增大也加劇了交易間的沖突,從而增加了無效交易的產(chǎn)生,此情形在無沖突消除機(jī)制的系統(tǒng)中尤為明顯。
在資源受限的環(huán)境下,對(duì)區(qū)塊內(nèi)交易采用交易重排序策略的Fabric +θ+θ 方案由于需要更多的計(jì)算資源而遭遇了性能瓶頸。與此同時(shí),F(xiàn)abricDT方案通過在背書節(jié)點(diǎn)拒絕對(duì)更多的沖突交易背書來減少無效交易的產(chǎn)生,展現(xiàn)出良好性能。相比之下,引入FabricIMD機(jī)制的系統(tǒng)在背書節(jié)點(diǎn)處通過對(duì)交易背書順序進(jìn)行調(diào)整,相比于其他方案擁有更好的表現(xiàn)。
實(shí)驗(yàn)結(jié)果表明,當(dāng)區(qū)塊大小從40增加到120時(shí),引入Fa-bricIMD機(jī)制的系統(tǒng)其有效交易吞吐量是無該機(jī)制時(shí)的1.48倍,并且相較于FabricDT方案提升了 24%~28% 。然而,當(dāng)區(qū)塊大小超過120時(shí),由于FabricIMD需要更多時(shí)間來調(diào)整交易背書順序以滿足出塊條件,使有效交易吞吐量有所下降。盡管如此,在區(qū)塊大小為160和200時(shí),引入FabricIMD機(jī)制的系統(tǒng)的有效交易吞吐量仍然比無沖突消除機(jī)制且無效交易不重發(fā)時(shí)高出 30% 以上。此外,該機(jī)制確保系統(tǒng)不產(chǎn)生無效交易,避免了其他方案中因無效交易而需進(jìn)行的后續(xù)處理,從而減少了資源浪費(fèi)。
3.2.3共識(shí)節(jié)點(diǎn)數(shù)量對(duì)系統(tǒng)性能的影響
在本項(xiàng)實(shí)驗(yàn)中將共識(shí)節(jié)點(diǎn)數(shù)量從3個(gè)逐步增加到15個(gè),Zipfian分布參數(shù)固定為4,以評(píng)估共識(shí)節(jié)點(diǎn)數(shù)量對(duì)系統(tǒng)性能的影響。隨著共識(shí)節(jié)點(diǎn)數(shù)量從3增加至15,如圖12和13所示,五種方案下系統(tǒng)的有效交易吞吐量均降低,同時(shí)平均時(shí)延均增加。這是因?yàn)殡S著共識(shí)節(jié)點(diǎn)數(shù)量的增加,排序節(jié)點(diǎn)達(dá)成交易共識(shí)的時(shí)間延長。對(duì)于FabricIMD機(jī)制來說,共識(shí)時(shí)間的延長導(dǎo)致背書節(jié)點(diǎn)處的映射和DAG更新速度減緩。但是如圖12所示,F(xiàn)abricIMD機(jī)制的有效交易吞吐量遠(yuǎn)優(yōu)于對(duì)比方案。與無沖突消除機(jī)制(無效交易不重發(fā))相比,所提方案有效交易吞吐量提升了 37%~77% ;與FabricDT相比,有效交易吞吐量增加了 16%~50% 。
3.3 不同背書策略
本節(jié)實(shí)驗(yàn)旨在評(píng)估引人沖入消除機(jī)制后,不同背書策略對(duì)系統(tǒng)性能的影響。實(shí)驗(yàn)環(huán)境擴(kuò)展至包含三個(gè)客戶端和五個(gè)組織,Zipfian分布參數(shù)固定為2。變量 k 表示需要對(duì)交易進(jìn)行背書的組織數(shù)量。如圖14和15所示,引人FabricIMD機(jī)制顯著增強(qiáng)了系統(tǒng)在不同背書策略下的有效交易吞吐量,提升幅度為13.08%~36.79% ,并且顯著降低了無效交易產(chǎn)生數(shù)量。此外,如圖16所示,由于增加FabricIMD機(jī)制對(duì)交易的處理,系統(tǒng)的平均有效交易時(shí)延略有上升。在背書策略調(diào)整過程中,引人FabricIMD機(jī)制對(duì)系統(tǒng)的有效交易吞吐量和無效交易數(shù)量產(chǎn)生了以下影響:
在 k=1 時(shí),有效交易吞吐量相比無沖突消除機(jī)制時(shí)有所提升,同時(shí)也有無效交易產(chǎn)生。這歸因于在此背書策略下,每個(gè)背書節(jié)點(diǎn)僅收到部分交易信息,限制了FabricIMD機(jī)制識(shí)別交易依賴的能力,導(dǎo)致部分交易在驗(yàn)證階段被中止。隨著 k 值的增加,F(xiàn)abricIMD機(jī)制對(duì)交易間依賴關(guān)系識(shí)別能力得到增強(qiáng)。例如,當(dāng) k=2 時(shí),系統(tǒng)的有效交易吞吐量比 k=1 時(shí)提高了5.26% ,無效交易數(shù)量減少了 54.5% 。
當(dāng) k=3 時(shí),至少有一個(gè)組織的背書節(jié)點(diǎn)能夠收到所有客戶端發(fā)出的交易信息,從而全面識(shí)別交易間依賴關(guān)系并調(diào)整背書順序,避免了交易沖突。然而,由于交易僅需部分組織背書,某些交易可能需要多輪背書。具體而言,當(dāng)交易提交至三個(gè)組織時(shí),兩個(gè)組織的背書節(jié)點(diǎn)可能因缺少全部交易信息而對(duì)該交易進(jìn)行背書。但第三個(gè)組織中的背書節(jié)點(diǎn)由于擁有全部交易信息,若識(shí)別該筆交易與之前交易存在交易依賴,則調(diào)整其背書順序。隨著DAG的更新,第三個(gè)組織中的背書節(jié)點(diǎn)基于最新賬本狀態(tài)對(duì)該筆交易重新背書,但可能與前兩個(gè)背書節(jié)點(diǎn)的背書結(jié)果不一致,導(dǎo)致交易需要重新背書。因此, k=3 和 k=4 時(shí),系統(tǒng)有效交易吞吐量出現(xiàn)下降。
當(dāng) k=5 時(shí),每個(gè)組織中的背書節(jié)點(diǎn)都擁有來自客戶端的全部交易信息,避免了部分交易需多次背書的情況。相比 k= 4時(shí),有效交易吞吐量提高了 17.01% 。
4結(jié)束語
本文對(duì)HyperledgerFabric中交易并發(fā)沖突產(chǎn)生的原因進(jìn)行了分析,并提出一種無須修改現(xiàn)有系統(tǒng)架構(gòu)的沖突消除機(jī)制FabricIMD。該機(jī)制在背書節(jié)點(diǎn)處引入,通過融合映射與DAG,對(duì)交易間依賴關(guān)系進(jìn)行識(shí)別,并使用DAG對(duì)此關(guān)系進(jìn)行構(gòu)建,以調(diào)整交易背書順序,從而使無依賴關(guān)系的交易并發(fā)執(zhí)行,存在依賴的交易等待后續(xù)處理。引入此機(jī)制顯著提升了系統(tǒng)性能,相比無此機(jī)制時(shí),有效交易吞吐量的增幅最高提升至96.08% ,同時(shí)顯著降低了無效交易的數(shù)量。此外,本文還探討了不同背書策略下該機(jī)制的性能表現(xiàn)。分析表明,無論采用何種背書策略,引人該機(jī)制均能有效提升有效交易吞吐量,減少無效交易。當(dāng)背書策略要求超過組織數(shù)量的 60% 需對(duì)交易進(jìn)行背書時(shí),引入FabricIMD機(jī)制可完全消除因交易沖突導(dǎo)致的無效交易。在后續(xù)工作中,筆者計(jì)劃針對(duì)多樣化的交易場景,進(jìn)一步驗(yàn)證FabricIMD機(jī)制的優(yōu)勢(shì)和局限性,并進(jìn)行優(yōu)化,例如采用圖形數(shù)據(jù)庫來構(gòu)建DAG,以此減少對(duì)系統(tǒng)內(nèi)存的占用并保證數(shù)據(jù)的訪問速度,或者采用動(dòng)態(tài)識(shí)別DAG規(guī)模的方法,當(dāng)其達(dá)到設(shè)定的閾值后對(duì)后續(xù)識(shí)別到依賴關(guān)系的交易拒絕背書,待DAG的規(guī)模隨著不斷的更新減小后再重新對(duì)交易進(jìn)行FabricIMD機(jī)制處理。此外,還將深入分析該機(jī)制在不同網(wǎng)絡(luò)規(guī)模下的有效性和適用性。
參考文獻(xiàn):
[1]Nakamoto S.Bitcoin:a peer-to-peer electronic cash system[EB/OL]. (2008-10-31)[2024-10-31].https://bitcoin.org/bitcoin.pdf.
[2]MollahMB,ZhaoJun,NiyatoD,etal.Blockchain for future smart grid:a comprehensive survey[J]. IEEE Internet of Things Journal, 2021,8(1):18-43.
[3]包俊,張新有,馮力,等.一種基于區(qū)塊鏈的車聯(lián)網(wǎng)安全認(rèn)證協(xié)議 [J].計(jì)算機(jī)應(yīng)用研究,2023,40(10):2908-2915,2921.(Bao Jun,ZhangXinyou,F(xiàn)engLi,etal.Securityauthenticationprotocol for Internet ofVehiclesbased onblockchain[J].ApplicationResearch ofComputers,2023,40(10) :2908-2915,2921.)
[4]Li Lang,Huang Dongyan,Zhang Chengyao.An eficient DAG blockchain architecture for IoT[J]. IEEE Internet of Things Journal, 2022,10(2) :1286-1296.
[5]Fan Wenhao,Hao Zhibo,Tang Bihua,et al. Resource matching for blockchain-assted edge computing networks[J]. IEEE Internet of Things Jourmal,2024,11(8):14460-14471.
[6]Androulaki E,Barger A,Bortnikov V,et al. Hyperledger Fabric :a distributed operating system for permissioned blockchains[C]//Proc of the13th EuroSys Conference.New York:ACM Press,2018:1-15.
[7]馬超群,姚錚,盧新國,等.Hyperledger Fabric 分布式賬本技術(shù)原 理與應(yīng)用[M].北京:科學(xué)出版社,2022.(MaChaoqun,Yao Zheng,Lu Xinguo,etal.Hyperledger Fabric: principlesandapplications of distributed ledger technology[M]. Beijing: China Science Publishing amp; Media Ltd.,2022.)
[8]Sharma A,Schuhknecht FM,Agrawal D,et al. Bluring the lines between blockchains and database systems:the case of Hyperledger Fabric[C]//Proc of International Conference on Management of Data. New York:ACM Press,2019:105-122.
[9]Zhang Shenbin,Zhou Ence,Pi Bingfeng,et al. A solution for the risk ofnon-deterministic transactionsinHyperledgerFabric[C]//Proc of IEEE International Conference on Blockchain and Cryptocurrency. Piscataway,NJ: IEEE Press,2019:253-261.
[10]王盛姣,董建亮,熊航,等.基于緩存機(jī)制的 Hyperledger Fabric 并 發(fā)沖突檢測(cè)方法[J].信息技術(shù)與網(wǎng)絡(luò)安全,2022,41(6):94-101, 108.(Wang Shengjiao,Dong Jianliang,Xiong Hang,etal. Hyperledger Fabric concurrency conflict detection method based on caching mechanism[J].Information Technology and Network Security,2022,41(6) :94-101,108.)
[11]Xu Lu,Chen Wei,Li Zhixu,et al. Solutions for concurrency conflict problem on Hyperledger Fabric[J].World Wide Web,2021,24 (1):463-482.
[12] Xu Xiaoqiong,Wang Xiaonan,Li Zonghang,et al. Mitigatingconflicting transactions in Hyperledger Fabric-permissoned blockchain for delay-sensitive IoT applications[J]. IEEE Internet of Things Journal,2021,8(13) :10596-10607.
[13]吳海博,劉輝,孫毅,等.一種面向聯(lián)盟鏈 Hyperledger Fabric 的并 發(fā)沖突事務(wù)優(yōu)化方法[J].計(jì)算機(jī)研究與發(fā)展,2024,61(8):2110- 2126.(Wu Haibo,Liu Hui,Sun Yi,et al.A concurrent conflict transaction optimization method for consortium blockchain Hyperledger Fabric[J].Journal of Computer Research and Development, 2024,61(8):2110-2126.)
[14]Gorenflo C,Golab L,Keshav S.XOX Fabric:a hybrid approach to blockchain transaction execution[C]//Proc of IEEE International Conference on Blockchain and Cryptocurrency.Piscataway,NJ:IEEE Press,2020:1-9.
[15]Nasirifard P,Mayer R,Jacobsen HA.FabricCRDT:a conflict-free replicated datatypes approach to permissioned blockchains[C]//Proc of the0thInteatioalidlewareConerec.NeYork:Cres, 2019:110-122.
[16]李輝忠,李陳希,李昊軒,等.FISCO BCOS 技術(shù)應(yīng)用實(shí)踐[J].信 息通信技術(shù)與政策,2020,46(1):52-60.(Li Huizhong,Li Chenxi,Li Haoxuan,et al.An overview on practice of FISCO BCOS technology and application[J]. Information and Communications Technology and Policy,2020,46(1):52-60.)
[17]王行行,鄧浩,丘志杰,等.基于沖突檢測(cè)的區(qū)塊鏈交易執(zhí)行方法: 中國,CN202210718485.2[P]. 2022-10-11.(Wang Hanghang,Deng Hao,Qiu Zhijie,et al.Blockchain transaction execution method based on conflict detection:China,CN202210718485.2[P].2022-10-11.)
[18]Hyperledger.Hyperledger Fabric documentation[EB/OL].[2024-10- 31]. ttps ://hyperledger-fabric. readthedocs.io/en/release-2.5.
[19]Go Authors. zipf. go[EB/OL].[2024-10-31]. htps://github.com/ golang/go/blob/master/src/math/rand/zipf. go? name release#37 .