劉穎,馬玉鵬,趙凡,王軼,蔣同海
(1.中國科學(xué)院新疆理化技術(shù)研究所,新疆烏魯木齊 830011;2.中國科學(xué)院大學(xué),北京 100049;3.新疆民族語音語言信息處理實驗室,新疆烏魯 木齊 830011)
區(qū)塊鏈作為一種分布式賬本,集成了P2P 網(wǎng)絡(luò)、密碼學(xué)、分布式共識協(xié)議、智能合約、數(shù)據(jù)庫和虛擬機(jī)等技術(shù),具有去中心化、防篡改、可追溯、可共享、可信驗證和隱私保護(hù)等特點[1]。由于企業(yè)對不同應(yīng)用場景的信任需求有所差異,使得區(qū)塊鏈需要權(quán)衡去中心化、一致性和擴(kuò)展性之間的關(guān)系[2]。目前,由于聯(lián)盟鏈在隱私保護(hù)、訪問控制等方面的優(yōu)勢,更適合多參與方數(shù)據(jù)交互的需求[3],因此被應(yīng)用于供應(yīng)鏈、數(shù)據(jù)共享等領(lǐng)域,其中由IBM 開發(fā)的Hyperledger Fabric 是當(dāng)前廣泛使用的聯(lián)盟鏈框架[4]。RAUCHS 等[5]研究表明,48%的聯(lián)盟鏈項目都是基于Fabric 平臺實現(xiàn)。因此,F(xiàn)abric 在學(xué)術(shù)和工業(yè)上都具有較高的研究價值。
由于聯(lián)盟鏈基于共識的網(wǎng)絡(luò)環(huán)境[6],智能合約的運行必須是確定性程序,在每筆交易和區(qū)塊處理后,所有節(jié)點都要達(dá)到相同的狀態(tài)[7]。聯(lián)盟鏈不允許不確定因素進(jìn)入網(wǎng)絡(luò),導(dǎo)致智能合約僅限于從區(qū)塊鏈網(wǎng)絡(luò)內(nèi)部訪問數(shù)據(jù),與第三方業(yè)務(wù)系統(tǒng)之間無法實現(xiàn)安全的數(shù)據(jù)交互,對不同企業(yè)或組織間的數(shù)據(jù)共享造成了阻礙。針對該問題,研究者引入了預(yù)言機(jī),其負(fù)責(zé)從外界獲取數(shù)據(jù)并對數(shù)據(jù)進(jìn)行驗證和預(yù)處理,相當(dāng)于在聯(lián)盟鏈和外部世界之間形成安全通道,避免破壞鏈內(nèi)數(shù)據(jù)的安全性[8],預(yù)言機(jī)工作場景多為價格預(yù)測、IoT 等領(lǐng)域。但是,當(dāng)預(yù)言機(jī)授權(quán)多個機(jī)構(gòu)協(xié)同管理數(shù)據(jù)上鏈操作時,其數(shù)據(jù)更新周期較短、規(guī)模較大且存在并發(fā)沖突問題,即同一時間段內(nèi)修改大量相同主鍵的交易數(shù)據(jù)。針對預(yù)言機(jī)獲取鏈外海量交易數(shù)據(jù)上鏈存在并發(fā)沖突的情況,F(xiàn)abric 系統(tǒng)采用多版本并發(fā)控制(MVCC)機(jī)制解決該問題,通過快速讀取交易數(shù)據(jù)版本來提高讀取效率和并發(fā)性,導(dǎo)致大量并發(fā)沖突的交易數(shù)據(jù)被延遲發(fā)現(xiàn)并標(biāo)記為無效。研究[9]表明,F(xiàn)abric 處理并發(fā)交易數(shù)據(jù)時,成功率不足25%。目前改進(jìn)方法有Fabric++[9]、StreamChain[10]和FabricSharp[11],但仍不能完全解決沖突交易數(shù)據(jù)上鏈問題,且占用大量Fabric 系統(tǒng)計算和存儲資源。XU 等[12]提出LMLS算法,通過在Fabric 系統(tǒng)內(nèi)對沖突交易數(shù)據(jù)的主鍵改為復(fù)合鍵的方式,在一定程度上解決了并發(fā)沖突問題,但其更改了賬本數(shù)據(jù)庫中業(yè)務(wù)的關(guān)聯(lián)性,影響歷史狀態(tài)數(shù)據(jù)庫信息,同時解碼復(fù)合鍵又增加Fabric的資源消耗,不適合實際業(yè)務(wù)場景應(yīng)用。因此,合理解決并發(fā)沖突問題并提高交易成功率成為亟待解決的問題。
本文自主研發(fā)了Fabric 預(yù)言機(jī)作為測試平臺。在預(yù)言機(jī)中設(shè)計了海量數(shù)據(jù)預(yù)處理(MCPP)方法,通過實時監(jiān)聽沖突交易數(shù)據(jù)在聯(lián)盟鏈中的上鏈完成度,減少高爭用對Fabric 造成的工作負(fù)載,提高了數(shù)據(jù)傳輸過程中Fabric 處理事務(wù)的高效性和安全性。
預(yù)言機(jī)概念最早由圖靈提出,在計算機(jī)復(fù)雜理論與可計算理論中,用來研究圖靈機(jī)系統(tǒng)內(nèi)確定性問題的黑盒子。區(qū)塊鏈領(lǐng)域借鑒了圖靈所提出的概念,將向區(qū)塊鏈提供確定性信息的人、硬件或軟件統(tǒng)稱為預(yù)言機(jī)[13]。預(yù)言機(jī)在獲取外部數(shù)據(jù)源的選取機(jī)制方面已經(jīng)取得一定研究成果。SATA 等[14]在以太坊中提出一種人工智能與預(yù)言機(jī)相結(jié)合的機(jī)制。ADLER 等[15]提出一種基于投票博弈的預(yù)言機(jī),解決獲取命題真假的問題。CAI 等[16]提出一種基于非線性鎖定規(guī)則,通過預(yù)測評分方案來選取結(jié)果。SOBER 等[17]和NELATURU 等[18]提出一種基于閾值簽名的投票預(yù)言機(jī),通過參與者的投票情況來選取結(jié)果。MERLINI 等[19]提出一種預(yù)言機(jī)協(xié)議,解決配對問題中選民的懶惰均衡問題。
上述研究在預(yù)言機(jī)選取數(shù)據(jù)源上取得了進(jìn)展,主要貢獻(xiàn)為獎懲機(jī)制、投票機(jī)制及信譽(yù)機(jī)制等,但局限于特定領(lǐng)域采取針對性措施來解決問題,并未考慮預(yù)言機(jī)獲取海量交易數(shù)據(jù)后,接入聯(lián)盟鏈的服務(wù)質(zhì)量問題。
為了保證數(shù)據(jù)獲取的可用性、準(zhǔn)確性和安全性,研究者們在預(yù)言機(jī)功能擴(kuò)展方面進(jìn)行了研究。GAO等[20]在預(yù)言機(jī)中增加選擇存儲功能,提高區(qū)塊鏈獲取數(shù)據(jù)的速度。WANG 等[21]提出一種對多源數(shù)據(jù)的提取和分析方法。ZHANG 等[22]提出一種數(shù)據(jù)聚合方案,對預(yù)言機(jī)獲取的數(shù)據(jù)加強(qiáng)了隱私保護(hù)。WANG 等[23]提出一種可擴(kuò)展的安全分析框架,在攻擊發(fā)生之前檢測漏洞。KUMAR 等[24]提出一種處理金融數(shù)據(jù)的方法。
綜上所述,預(yù)言機(jī)的擴(kuò)展功能發(fā)展至今,實現(xiàn)了對外部數(shù)據(jù)源的存儲、分析、聚合及檢測等方法,但預(yù)言機(jī)在獲取的海量交易數(shù)據(jù)存在并發(fā)沖突問題時,并未考慮不同規(guī)模數(shù)據(jù)對Fabric 網(wǎng)絡(luò)環(huán)境及服務(wù)質(zhì)量的影響,缺少鏈上實際應(yīng)用的運行與測試。
目前,在學(xué)術(shù)界與工業(yè)界中已有很多針對Fabric并發(fā)沖突交易數(shù)據(jù)上鏈的研究。GOEL 等[25]提出一種基于優(yōu)先級的事務(wù)驗證模型,用于支持交易的差異化服務(wù)質(zhì)量。GORENFLO 等[26]通過提高交易吞吐量更改Fabric 架構(gòu),減少交易排序和驗證期間的計算和I/O 開銷。RUAN 等[11]提出一種增強(qiáng)執(zhí)行交易驗證架構(gòu)的方法,通過生成沖突圖并對其進(jìn)行序列化減少無效交易。THAKKAR 等[27]通過對背書階段的改進(jìn),將狀態(tài)數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)改為哈希表來提高吞吐量。SHARMA 等[28]提出用數(shù)據(jù)庫技術(shù)對事務(wù)重新排序和早期中止,以提高Fabric 性能,但沒有討論背書失敗和虛讀問題。SOUSA 等[29]通過在Fabric 中實現(xiàn)BFT-SMART 共識協(xié)議來提高吞吐量。RAMAN 等[30]提出一種有損壓縮的方式來降低背書和驗證階段的通信成本,但這種方法只適用于對有損壓縮不敏感的大型數(shù)據(jù)集存儲的場景。NASIRIFARD 等[31]提出用無沖突復(fù)制數(shù)據(jù)類型(CRDT)的概念來解決沖突,但該方法只適用于CRDT 建模的用例。
綜上所述,現(xiàn)有方法通過提高吞吐量來減少交易失敗數(shù)據(jù)數(shù)量,同時注重延遲的影響,即通過優(yōu)化Fabric 中MVCC 機(jī)制,解決了沖突交易失敗的問題,而在實際應(yīng)用場景中,通過犧牲Fabric 系統(tǒng)計算和存儲資源來解決并發(fā)沖突問題會降低Fabric 性能。因此,本文提出一種基于Fabric 預(yù)言機(jī)的數(shù)據(jù)上鏈預(yù)處理機(jī)制,將數(shù)據(jù)獲取和沖突檢測方法相結(jié)合,通過提前發(fā)現(xiàn)并對沖突交易數(shù)據(jù)進(jìn)行預(yù)處理,保證海量交易數(shù)據(jù)完整上鏈。
Fabric 平臺作為最具代表性的聯(lián)盟鏈,通過多個組織的聯(lián)盟組成網(wǎng)絡(luò),并且為了提高系統(tǒng)并發(fā)能力,組織節(jié)點之間并發(fā)處理交易。Fabric 的MVCC 機(jī)制在處理并發(fā)沖突時會出現(xiàn)交易延遲中止現(xiàn)象,即在執(zhí)行階段就已經(jīng)違反驗證標(biāo)準(zhǔn)的交易直到驗證階段才被會發(fā)現(xiàn),降低了系統(tǒng)性能。Fabric 的交易處理流程遵循EOV 三階段原則,具體如下:
1)執(zhí)行階段??蛻舳讼虮硶?jié)點發(fā)送交易請求,背書節(jié)點在本地獨立地驗證每一筆交易,然后將帶有驗證結(jié)果的交易返回給客戶端。
2)排序階段??蛻舳耸紫葘Ⅱ炞C結(jié)果發(fā)送給排序節(jié)點并建立全局順序,然后排序節(jié)點將交易結(jié)果按順序打包成規(guī)定交易數(shù)量的區(qū)塊,最后發(fā)送給驗證節(jié)點。
3)驗證階段。驗證節(jié)點獨立串行化驗證塊中的每筆交易,根據(jù)驗證系統(tǒng)鏈碼(VSCC)機(jī)制驗證交易是否遵循背書策略以及根據(jù)MVCC 機(jī)制驗證每個讀寫集密鑰的版本是否與當(dāng)前世界狀態(tài)中密鑰的版本相同。
Fabric 聯(lián)盟鏈作為典型的分布式系統(tǒng),各節(jié)點在網(wǎng)絡(luò)中獨立部署和維護(hù)賬本,利用Gossip 通信實現(xiàn)狀態(tài)同步。根據(jù)分布式系統(tǒng)中的CAP 定理的原則,不能同時兼顧一致性、可用性、分區(qū)容錯性三要素。Fabric 在保證一致性和分區(qū)容錯性的前提下無法確保一致性,因此Fabric 直到驗證階段,通過節(jié)點共識和驗證來確保所有節(jié)點中世界狀態(tài)數(shù)據(jù)庫的最終一致性。Fabric 為滿足一致性原則,在高并發(fā)情況下,所有交易數(shù)據(jù)都執(zhí)行EOV 流程,受到鏈碼邏輯復(fù)雜度、數(shù)據(jù)訪問頻率、排序算法效率、服務(wù)規(guī)模、背書策略的復(fù)雜度等因素產(chǎn)生的訪問延遲的影響,使其驗證階段的平均時延增加,主要原因為當(dāng)前區(qū)塊校驗為順序串行執(zhí)行,無法充分利用多核資源。因此,在同一出塊時間內(nèi),相同主鍵的交易數(shù)據(jù)只有一條驗證成功,并且直到驗證結(jié)束才會被發(fā)現(xiàn),失敗交易數(shù)據(jù)需重復(fù)執(zhí)行EOV 流程才能完成成功上鏈操作。在文獻(xiàn)[32]中開展了改變節(jié)點數(shù)量分析EOV 流程對Fabric 性能影響的實驗,實驗結(jié)果表明,當(dāng)Peer 節(jié)點數(shù)量從1 增加到4 時,吞吐量僅增加了1.5 倍,而CPU 占用率增加了4 倍。這是由于每個Peer 節(jié)點都對塊中交易執(zhí)行驗證流程而產(chǎn)生組織內(nèi)的冗余工作。在EOV 流程中,只有驗證階段符合背書策略的交易才能實現(xiàn)負(fù)載平衡,因此高并發(fā)場景下會降低CPU 利用率。由于驗證階段進(jìn)行多個簽名驗證和對磁盤的同步輸入輸出操作,成本高于執(zhí)行階段,因此吞吐量的增量并不顯著:當(dāng)超過每個組織4 個Peer 節(jié)點后,吞吐量沒有增加;當(dāng)Peer 節(jié)點不變,CPU 數(shù)量從1 增加到16 時,吞吐量增加了5.5 倍,而CPU 利用率降低了55%。這是由于當(dāng)CPU 較少時,執(zhí)行階段與驗證階段對CPU 的爭奪導(dǎo)致其利用率較高。當(dāng)CPU 數(shù)量增加時,驗證階段可利用多個CPU 并行處理事務(wù)從而提高吞吐量。此外,驗證階段提交的交易可能存在在執(zhí)行階段更改世界狀態(tài)數(shù)據(jù)庫的情況,導(dǎo)致驗證階段讀取過時數(shù)據(jù)狀態(tài)。
綜上所述,通過添加Peer 節(jié)點來擴(kuò)展Fabric 網(wǎng)絡(luò)可以幫助減少執(zhí)行階段的工作負(fù)載,但對驗證和提交階段沒有太大幫助。此外,通過增加CPU 數(shù)量提升性能并增加額外基礎(chǔ)設(shè)施成本是不合理的。當(dāng)多個組織協(xié)同工作時,組織內(nèi)的冗余工作會增加,為了提高效率和降低成本,海量數(shù)據(jù)沖突預(yù)處理通過鏈下提前檢測沖突交易數(shù)據(jù)并對其重排序,利用分區(qū)歸并的思路,提升EOV 流程中驗證階段的一致性吞吐量,減少無效交易數(shù)據(jù)在執(zhí)行、排序和驗證階段對CPU 的占用率和無效時延,避免了失敗交易數(shù)據(jù)重復(fù)執(zhí)行EOV 流程,為Fabric 在海量交易場景下獲得了更高的成功率。
為了更加直觀地理解Fabric 中MVCC 機(jī)制處理沖突的原理和細(xì)節(jié),通過圖1 進(jìn)行詳細(xì)說明。
圖1 Fabric 沖突處理原理Fig.1 Principle of handling conflicts in Fabric
首先,客戶端在同一時間段內(nèi),分別發(fā)送兩條交易提案Tx1 和Tx2,且主鍵修改相同??蛻舳烁鶕?jù)背書策略將Tx1 和Tx2 打包發(fā)送給背書節(jié)點,通過驗證數(shù)字簽名來確定節(jié)點是否有權(quán)限執(zhí)行該交易,驗證通過后模擬智能合約,將結(jié)果返回給客戶端。接著,客戶端依次驗證節(jié)點身份并對比返回的結(jié)果是否一致,當(dāng)結(jié)果一致時將提案結(jié)果和之前的交易提案一起打包成交易并簽名,反饋給排序節(jié)點,否則中止處理。然后,排序節(jié)點將接收到的交易進(jìn)行簽名驗證并按照共識策略排序,根據(jù)區(qū)塊生成策略將Tx1 和Tx2 打包生成新的區(qū)塊。最后,排序節(jié)點把這些區(qū)塊發(fā)送給記賬節(jié)點并對塊中每筆交易進(jìn)行狀態(tài)校驗。Tx1 率先驗證,驗證成功后將結(jié)果寫入世界狀態(tài)數(shù)據(jù)庫,密鑰版本也隨之更新。當(dāng)Tx2 到達(dá)驗證階段時,檢測到與Tx2 背書時的結(jié)果不同,導(dǎo)致Tx2 被標(biāo)記為無效。Fabric 在執(zhí)行排序之前模擬了事務(wù)所需運行的智能合約,影響了事務(wù)之間的序列化沖突交易數(shù)據(jù)的數(shù)量,使交易執(zhí)行與交易提交分開處理,導(dǎo)致違反背書原則的交易直到驗證結(jié)束才被發(fā)現(xiàn),如果想要全部交易數(shù)據(jù)成功上鏈,需要再次推送失敗交易重新執(zhí)行EOV 流程,增加了高爭用給Fabric 帶來的工作負(fù)載,降低了數(shù)據(jù)傳輸過程中并發(fā)沖突交易數(shù)據(jù)的成功率。因此,本文提出的數(shù)據(jù)上鏈預(yù)處理機(jī)制在EOV 流程執(zhí)行前檢測出沖突交易,避免無效交易占用系統(tǒng)資源,提高了Fabric 性能。
本節(jié)提出一種基于預(yù)言機(jī)的數(shù)據(jù)上鏈預(yù)處理機(jī)制,整體架構(gòu)由三部分組成,分別為外部組織、預(yù)言機(jī)和Fabric,如圖2 所示??蛻舳俗鳛橥獠拷M織,負(fù)責(zé)提供可信的數(shù)據(jù)源。預(yù)言機(jī)作為第三方服務(wù),負(fù)責(zé)接收外部組織和區(qū)塊鏈的數(shù)據(jù)交互請求,為Fabric提供安全可用的交易數(shù)據(jù)。預(yù)言機(jī)作為連接真實世界和Fabric 聯(lián)盟鏈的接口,將外部數(shù)據(jù)傳輸至聯(lián)盟鏈內(nèi)和將鏈內(nèi)數(shù)據(jù)發(fā)送給外部組織,具體功能包括:事件處理負(fù)責(zé)對數(shù)據(jù)過濾聚合,留痕服務(wù)保障交易數(shù)據(jù)的行為可追溯,訂閱推送實現(xiàn)了自動化調(diào)用智能合約等。Fabric 聯(lián)盟鏈內(nèi)3 個節(jié)點部署了聯(lián)盟鏈智能合約和用于與預(yù)言機(jī)進(jìn)行數(shù)據(jù)交互的智能合約,每個節(jié)點都要監(jiān)聽和執(zhí)行網(wǎng)絡(luò)中發(fā)生的事務(wù)。
圖2 整體架構(gòu)Fig.2 Overall architecture
預(yù)言機(jī)作為Fabric 與外部世界進(jìn)行數(shù)據(jù)互操作傳輸?shù)幕A(chǔ),為聯(lián)盟鏈與外部組織之間實現(xiàn)多種模式的數(shù)據(jù)交互提供了安全基礎(chǔ),主要集成了兩種數(shù)據(jù)傳輸機(jī)制,分別為輸入式預(yù)言機(jī)和輸出式預(yù)言機(jī),是區(qū)別于聯(lián)盟鏈的第三方服務(wù),由權(quán)限管理、事件處理、留痕服務(wù)、訂閱推送和MCPP 這五部分協(xié)同組成。權(quán)限管理模塊負(fù)責(zé)對外部組織身份調(diào)用智能合約的權(quán)限進(jìn)行驗證,以保障數(shù)據(jù)源可信和安全;事件處理模塊負(fù)責(zé)將預(yù)言機(jī)獲取的數(shù)據(jù)進(jìn)行過濾、聚合等整合操作;留痕服務(wù)保證數(shù)據(jù)傳輸行為的可追溯性;訂閱推薦即自定義訂閱推送器,用戶通過設(shè)置參數(shù),獲取鏈上數(shù)據(jù)周期,定時調(diào)用智能合約讀取鏈上數(shù)據(jù),實現(xiàn)主動推送的輸出式預(yù)言機(jī)功能;MCPP 解決了海量上鏈交易數(shù)據(jù)中的并發(fā)沖突情況。
在大量應(yīng)用場景下有海量交易數(shù)據(jù)上鏈的需求,但Fabric 中MVCC 機(jī)制會使沖突交易延遲發(fā)現(xiàn)并被標(biāo)記為無效,為減少無效交易占用Fabric 系統(tǒng)計算和存儲資源,解決上鏈?zhǔn)聞?wù)在進(jìn)入EOV 流程前可能觸發(fā)Fabric 中MVCC 機(jī)制的沖突問題,基于預(yù)言機(jī)提出一種基于加鎖和重排序的方法,將沖突交易數(shù)據(jù)按批次延遲處理,并將其緩存于預(yù)言機(jī)隊列中,從而確保交易數(shù)據(jù)總量的完整性和同主鍵交易數(shù)據(jù)的序列化一致性,以提高Fabric 處理沖突交易數(shù)據(jù)的成功率。
MCPP 通過檢測、監(jiān)聽、延時提交、事務(wù)加鎖和重排序緩存方法實現(xiàn)塊內(nèi)沖突交易數(shù)據(jù)數(shù)量的最小化。該方法解決海量交易數(shù)據(jù)上鏈中存在并發(fā)沖突現(xiàn)象的交易流程如圖3 所示。預(yù)言機(jī)獲取海量交易數(shù)據(jù)后,判斷交易主鍵是否加鎖,即是否為正在執(zhí)行的交易,如果加鎖則對其序列化重排序加入緩存,否則對該主鍵加鎖再檢測下一條可執(zhí)行交易,當(dāng)可執(zhí)行交易滿足批量打包交易數(shù)量時,推送至Fabric 中監(jiān)聽上鏈完成度,監(jiān)聽到上鏈成功后對加鎖主鍵解鎖。循環(huán)訪問緩存內(nèi)不同主鍵的無沖突交易執(zhí)行上鏈操作,直到緩存內(nèi)交易為空。
圖3 MCPP 沖突處理流程Fig.3 Procedure of MCPP for handling conflicts
3.2.1 加鎖機(jī)制及交易延時提交
在本文所涉及的交易數(shù)據(jù)形式化定義中,T為交易,P為背書節(jié)點,KW為修改交易的主鍵,VW為修改交易的值,Ei為需要上鏈交易的寫集合,u為Ei中包含的KW主鍵數(shù)量,ci為Ei主鍵需要修改的次數(shù),將每個交易主鍵成功交易的次數(shù)記為N。當(dāng)交易總數(shù)一定時,KW越多,每條KW對應(yīng)的交易沖突數(shù)越少,反之,KW越少,并發(fā)沖突的數(shù)據(jù)越多。當(dāng)預(yù)言機(jī)獲取外部組織發(fā)送的數(shù)據(jù)集Ei后,由于每筆交易在Fabric的EOV 流程中并行獨立模擬,驗證階段會更新本地狀態(tài)數(shù)據(jù)庫,如果短時間內(nèi)發(fā)起多筆同主鍵交易,可能導(dǎo)致世界狀態(tài)數(shù)據(jù)庫瞬時變化,因此直到驗證階段才發(fā)現(xiàn)背書響應(yīng)中的讀寫集不匹配的無效交易,即如果交易Ti中的和交易Tj中的相等,則存在并發(fā)沖突,計算方法如下:
在重排序階段前,針對同一出塊時間內(nèi),如果相同主鍵的交易數(shù)據(jù)更新到同一個塊的賬本中,則會出現(xiàn)新交易正在讀取的數(shù)據(jù)版本號被執(zhí)行階段的交易更新的現(xiàn)象,導(dǎo)致新交易讀取了無效數(shù)據(jù)版本號,從而上鏈?zhǔn)?。通過在交易數(shù)據(jù)進(jìn)入排序階段前,將當(dāng)前事務(wù)要更新的主鍵執(zhí)行加鎖并對該交易啟動監(jiān)聽操作,將鎖定階段出現(xiàn)的同主鍵交易緩存在預(yù)言機(jī)內(nèi)存中。當(dāng)前交易在執(zhí)行和驗證階段需要一段時間間隔,防止其他沖突交易讀取錯誤數(shù)據(jù)狀態(tài)版本號。為了保障對符合要求的主鍵交易加鎖的準(zhǔn)確性,使用Semaphore 設(shè)置同主鍵交易中只允許一個許可的二元信號量方法。加鎖和解鎖過程調(diào)用AQS框架的共享模式鎖,其主要特點是不會出現(xiàn)阻塞線程的現(xiàn)象,只須判斷當(dāng)前值與預(yù)期值是否相等即可。如圖4 所示,設(shè)定每個塊內(nèi)最大交易數(shù)據(jù)的值為n,當(dāng)n=10 時,在加鎖機(jī)制中索引交易主鍵的最大值即為10。通過循環(huán)塊內(nèi)事務(wù)得到5 條無沖突交易數(shù)據(jù),對其依次加鎖后執(zhí)行上鏈操作,當(dāng)檢索到同主鍵交易時,則加入重排序機(jī)制的待處理階段,防止這些沖突交易占用系統(tǒng)資源。
圖4 主鍵加鎖原理Fig.4 Primary key locking principle
3.2.2 重排序緩存
當(dāng)同一區(qū)塊中包含多筆交易時,前一筆交易在后一筆交易前提交并更改了數(shù)據(jù)狀態(tài)的版本號,導(dǎo)致后一筆交易在執(zhí)行階段讀取了舊版本的數(shù)據(jù),則這樣的交易數(shù)據(jù)構(gòu)成了依賴關(guān)系,存在并發(fā)沖突現(xiàn)象。在面臨高并發(fā)沖突情況時,F(xiàn)abric 系統(tǒng)中的EOV 流程效率較低的根本原因是大量沖突交易在驗證階段耗時長且直到驗證結(jié)束才被發(fā)現(xiàn)。本文在預(yù)言機(jī)中提出的MCPP 對交易數(shù)據(jù)集Ei中檢測到的沖突交易進(jìn)行序列化重排序緩存,確保相同主鍵的數(shù)據(jù)以非沖突的全局序列化順序提交至鏈上。在預(yù)言機(jī)中提前檢測到并發(fā)沖突交易,有效預(yù)防沖突交易進(jìn)入Fabric 排序階段生成在同一塊內(nèi),減少多次執(zhí)行失敗交易的次數(shù),且MCPP 在不影響同一主鍵串行執(zhí)行順序的情況下,以最佳全局順序?qū)崿F(xiàn)重排序。排序后的交易以鍵值對的形式存儲在預(yù)言機(jī)緩存中,沖突的交易數(shù)據(jù)以序列化方式延時提交上鏈。當(dāng)緩存內(nèi)交易上鏈成功后及時刪除交易數(shù)據(jù)信息,避免重復(fù)上鏈操作。
如圖5 所示,假設(shè)在同一出塊時間內(nèi)發(fā)起6 筆交易,其中第1、2、3 筆交易和第4、5、6 筆交易存在兩組并發(fā)沖突現(xiàn)象。當(dāng)T1 到達(dá)時,由于K1 第1 次出現(xiàn),滿足待上鏈交易要求,根據(jù)依賴關(guān)系,T2、T3 沖突交易進(jìn)入重排序沖突交易緩存中。同理,在與主鍵K2相關(guān)的T4、T5、T6 交易中,T4 為無沖突交易且可直接上鏈,T5、T6 進(jìn)入重排序沖突交易緩存中且待上鏈。在重排序緩存中,建立同主鍵索引循環(huán),防止多個沖突交易上鏈后再次觸發(fā)MVCC 機(jī)制,通過循環(huán)索引重排序緩存中不同主鍵的無沖突交易數(shù)據(jù),對其執(zhí)行上鏈操作,并在成功上鏈后刪除緩存中該筆交易記錄。綜上分析,該重排序緩存方法只需對所有待上鏈交易數(shù)據(jù)執(zhí)行單次遍歷,利用線性規(guī)模的緩存空間對無沖突交易和待排序沖突交易進(jìn)行預(yù)處理,并分批執(zhí)行上鏈操作,因此該算法的時間復(fù)雜度和空間復(fù)雜度均為O(n),其中,n為交易數(shù)據(jù)總量,表明了該算法在處理大規(guī)模海量沖突交易數(shù)據(jù)時具有良好的擴(kuò)展性。
圖5 依賴關(guān)系圖Fig.5 Dependency graph
本文研究了重排序緩存方法對基于Fabric 的海量交易數(shù)據(jù)上鏈預(yù)處理機(jī)制的整體實時性的影響,通常用延遲時間作為衡量標(biāo)準(zhǔn)。重排序緩存方法通過對沖突交易預(yù)處理并循環(huán)上鏈無沖突主鍵的交易數(shù)據(jù),減少無效交易進(jìn)入EOV 流程,提高了交易處理效率和吞吐量。通過分析重排序緩存方法的時間復(fù)雜度可知,對整體流程的實時性影響主要取決于同主鍵沖突交易數(shù)據(jù)的數(shù)量、系統(tǒng)特性等因素。當(dāng)沖突交易較多時,重排序緩存方法通過有效降低鏈碼執(zhí)行、交易排序、驗證等環(huán)節(jié)的訪問延遲,從而提高海量交易數(shù)據(jù)整體上鏈的實時性能。
通過序列化重排序緩存機(jī)制,在驗證階段發(fā)生前使用重排序方式識別無效交易,并且在不影響相同主鍵序列化順序的前提下,所有交易僅執(zhí)行一次EOV 流程就實現(xiàn)成功上鏈,使Fabric 系統(tǒng)中上鏈成功的有效事務(wù)數(shù)量顯著增加,減少了不必要的EOV流程對Fabric 的資源消耗。
3.2.3 核心算法描述
算法1 給出了MCPP 的沖突檢測與解決方法,該算法將檢測到的沖突交易數(shù)據(jù)緩存在預(yù)言機(jī)中待處理,防止主鍵相同的交易觸發(fā)MVCC 機(jī)制導(dǎo)致交易失敗的問題,實現(xiàn)了相同主鍵的交易在Fabric 內(nèi)的執(zhí)行順序為串行序列化,保障了同主鍵交易發(fā)起順序不被改變。
算法1MCPP 算法
盡管聯(lián)盟鏈技術(shù)受到關(guān)注和推廣,但目前并未被全面應(yīng)用于各個領(lǐng)域,大部分構(gòu)想仍處于測試階段,并且聯(lián)盟鏈技術(shù)中的共識機(jī)制限制了其吞吐量和實時效率,導(dǎo)致大部分有價值信息仍存儲在鏈外世界。如果不同外部組織或機(jī)構(gòu)能夠有效利用聯(lián)盟鏈技術(shù)協(xié)同管理系統(tǒng),合理利用鏈內(nèi)與鏈外數(shù)據(jù),增強(qiáng)多領(lǐng)域信息交互并擴(kuò)大資源共享范圍,則將有利于構(gòu)建相互融合的價值生態(tài)。因此,如何在不影響聯(lián)盟鏈系統(tǒng)特點的前提下,使外部組織安全合理地調(diào)用鏈碼從而實現(xiàn)數(shù)據(jù)傳輸成為亟待解決的問題。本文改進(jìn)了文獻(xiàn)[33]的數(shù)據(jù)遷移機(jī)制,通過綜合考慮外部組織行為的信任度和當(dāng)前鏈內(nèi)環(huán)境的安全性,對外部組織的身份增加了規(guī)范的權(quán)限認(rèn)證,限制了外部組織調(diào)用智能合約的身份。同時,在預(yù)言機(jī)中設(shè)計不同節(jié)點間使用非對稱加密技術(shù)建立密鑰,保障數(shù)據(jù)傳輸過程中的安全性和完整性。
3.3.1 外部組織權(quán)限驗證
評估和驗證外部組織行為的信任度指聯(lián)盟鏈網(wǎng)絡(luò)中外部組織與其他機(jī)構(gòu)或企業(yè)進(jìn)行數(shù)據(jù)互操作行為的真實性、合法性和有效性。身份認(rèn)證要確保參與者身份可信、數(shù)據(jù)訪問受限、接口調(diào)用受控,數(shù)據(jù)交互要確保數(shù)據(jù)的一致性和可追溯性。對外部組織信任度研究有助于提高Fabric 網(wǎng)絡(luò)的安全性、互操作性和可擴(kuò)展性,促進(jìn)了聯(lián)盟鏈與其他領(lǐng)域的融合和創(chuàng)新。因此,本文通過AES 算法來加密令牌,當(dāng)外部組織調(diào)用預(yù)言機(jī)拉取或推送數(shù)據(jù)時,需要攜帶預(yù)言機(jī)發(fā)放的令牌,以確保外部組織的行為經(jīng)過預(yù)言機(jī)授權(quán),實現(xiàn)了外部組織對Fabric 中鏈碼調(diào)用行為的合法性限制。預(yù)言機(jī)驗證令牌通過后處理外部組織的業(yè)務(wù)請求。
3.3.2 數(shù)據(jù)傳輸安全性保障
為了保證數(shù)據(jù)傳輸過程的安全性,通過RSA非對稱算法來加密外部組織與預(yù)言機(jī)之間的通信數(shù)據(jù),預(yù)言機(jī)和外部組織分別擁有一對密鑰。當(dāng)聯(lián)盟鏈請求預(yù)言機(jī)獲取可信外部組織的數(shù)據(jù)時,聯(lián)盟鏈向預(yù)言機(jī)發(fā)送外部數(shù)據(jù)上鏈請求,通過預(yù)言機(jī)的公鑰對傳輸?shù)臄?shù)據(jù)加密,預(yù)言機(jī)收到數(shù)據(jù)后,使用本地保存的私鑰進(jìn)行解密數(shù)據(jù)內(nèi)容,利用TLS 技術(shù)產(chǎn)生的密鑰加密執(zhí)行上鏈操作。當(dāng)通過預(yù)言機(jī)將聯(lián)盟鏈內(nèi)數(shù)據(jù)輸出給可信外部組織時,預(yù)言機(jī)調(diào)用智能合約讀取數(shù)據(jù)后,使用外部組織的公鑰加密數(shù)據(jù),當(dāng)外部組織收到數(shù)據(jù)后,使用本地保存的私鑰進(jìn)行解密操作,保證了數(shù)據(jù)傳輸過程的安全性。
同時,為了保障數(shù)據(jù)傳輸過程中鏈內(nèi)環(huán)境安全,在設(shè)計數(shù)據(jù)傳輸保障措施的過程中,主要從以下3 個方面進(jìn)行考量:1)在聯(lián)盟鏈內(nèi)部實施身份認(rèn)證和權(quán)限控制機(jī)制,確保每個外部組織通過預(yù)言機(jī)與Fabric 進(jìn)行數(shù)據(jù)交互時,都具有合法的數(shù)字證書和訪問權(quán)限,從而防范偽造、冒充和篡改等惡意行為;2)在聯(lián)盟鏈中編寫和執(zhí)行安全的鏈碼,確保智能合約能夠正確安全地調(diào)用預(yù)言機(jī)中的數(shù)據(jù),從而避免智能合約的漏洞問題;3)在聯(lián)盟鏈內(nèi)部對其行為進(jìn)行監(jiān)督和審計,確保交易的可驗證性和可追溯性。因此,在數(shù)據(jù)交互過程中,不僅需要平衡數(shù)據(jù)隱私和業(yè)務(wù)效率,而且需要考慮鏈內(nèi)不同層次和角度的安全措施。
如圖6 所示,以輸入式預(yù)言機(jī)為例,詳細(xì)解釋在數(shù)據(jù)傳輸過程中如何保證數(shù)據(jù)上鏈過程的完整性和安全性。在準(zhǔn)備階段,預(yù)言機(jī)利用AES 算法將權(quán)限令牌的ID 加密后分發(fā)給不同的外部組織,用來設(shè)定外部組織調(diào)用聯(lián)盟鏈內(nèi)鏈碼的合法權(quán)限,預(yù)言機(jī)和外部組織之間利用RSA 產(chǎn)生一對密鑰,用來保證數(shù)據(jù)傳輸過程的安全性和完整性。在執(zhí)行過程中:首先聯(lián)盟鏈向預(yù)言機(jī)發(fā)起數(shù)據(jù)請求命令,預(yù)言機(jī)將請求發(fā)送給外部組織,外部組織通過公鑰PK1 將事先發(fā)放的權(quán)限令牌和數(shù)據(jù)加密發(fā)送給預(yù)言機(jī);然后預(yù)言機(jī)通過自身私鑰PR1 解密令牌和數(shù)據(jù),再利用AES 解密令牌id 驗證外部組織身份是否合法,在驗證通過后,聯(lián)盟鏈和預(yù)言機(jī)之間通過TLS 產(chǎn)生的通信密鑰PK2 將數(shù)據(jù)加密傳遞給聯(lián)盟鏈;最后聯(lián)盟鏈利用PR2 進(jìn)行解密,F(xiàn)abric 獲取數(shù)據(jù)并完成上鏈操作。
圖6 數(shù)據(jù)傳輸保障措施Fig.6 Data transmission guarantee measure
為了驗證研究方案的可行性、安全性和高效性,通過實驗?zāi)M了海量交易數(shù)據(jù)上鏈的場景,將原始Fabric 系統(tǒng)處理的海量交易數(shù)據(jù)與基于Fabric 預(yù)言機(jī)獲取的海量交易數(shù)據(jù)進(jìn)行比較。設(shè)計并實現(xiàn)MCPP 并測試了3 組實驗,對預(yù)言機(jī)在短時間內(nèi)處理海量交易數(shù)據(jù)的有效性進(jìn)行全面分析。由于目前在聯(lián)盟鏈領(lǐng)域沒有權(quán)威的數(shù)據(jù)集作為參考,因此實驗通過數(shù)據(jù)生成器生成交易集合,在該集合中每條數(shù)據(jù)代表一條交易,每筆交易以鍵值對的形式存儲。實驗環(huán)境所使用的服務(wù)器配置與Fabric 網(wǎng)絡(luò)配置如表1 所示。
表1 服務(wù)器與Fabric 網(wǎng)絡(luò)配置Table 1 Server and Fabric network configuration
實驗評價指標(biāo)為:1)總時間,表示處理所有交易數(shù)據(jù)的時間成本;2)交易成功率,表示成功寫入賬本的交易與所有交易數(shù)據(jù)的比例;3)交易到達(dá)率,表示單位時間內(nèi)成功寫入賬本的交易數(shù)據(jù)量。
為了驗證數(shù)據(jù)上鏈預(yù)處理機(jī)制在沒有并發(fā)沖突場景下對整體性能的影響,設(shè)定交易數(shù)據(jù)總量為5 000~20 000,該數(shù)據(jù)集中所有交易數(shù)據(jù)的主鍵都不同,即短時間內(nèi)沒有相同的交易修改同一筆數(shù)據(jù),不存在并發(fā)沖突。
如圖7 所示,測試兩種方法處理不同交易數(shù)量的時延情況,分別為Fabric 中MVCC 方法直接處理交易和使用MCPP 處理交易的時延。實驗結(jié)果表明,在沒有并發(fā)沖突的情況下,兩種方法隨著交易總數(shù)的增加,MCPP 與MVCC 的時延相差不多。盡管MCPP 增加了檢測沖突交易的流程,但沒有沖突交易存在時系統(tǒng)不會增加額外開銷,與Fabric 系統(tǒng)中MVCC 方法處理交易時所需的時間相比效率沒有明顯降低。因此,MCPP 適用于沒有并發(fā)沖突的海量交易數(shù)據(jù)場景。
圖7 不同交易數(shù)據(jù)總量的時延對比Fig.7 Comparison of delay of total amount of different transaction data
為了更好地模擬高并發(fā)實例中,在海量交易數(shù)據(jù)中用戶主題較少的場景,即同一時間段內(nèi)出現(xiàn)大量的交易數(shù)據(jù)對相同主鍵進(jìn)行修改操作的情況。對不同的交易到達(dá)率進(jìn)行實驗,即每秒從客戶端發(fā)送的事務(wù)總數(shù)分別為50、250、500 和1 000,大規(guī)模交易數(shù)據(jù)總量為20 000,涉及的交易主鍵數(shù)量K分別為250、500、1 000 和2 000,每個主鍵中交易數(shù)據(jù)量分布相對均勻。
如圖8 所示,交易中主鍵數(shù)量越多,即同一時間段內(nèi)需要修改的相同主鍵的交易數(shù)量越少,兩種方法處理交易的總時間相對越多。由于K越大所產(chǎn)生的沖突交易數(shù)量越少,導(dǎo)致同主鍵沖突交易所占用塊內(nèi)空間減少,為避免觸發(fā)MVCC 機(jī)制,沖突交易分在不同塊內(nèi)上鏈,因此當(dāng)K越大時,MCPP 機(jī)制為解決沖突交易數(shù)據(jù)成功上鏈,耗時相較于Fabric 中的MVCC方法增多。通過分析得出,MCPP 的實際時間與Fabric處理交易數(shù)據(jù)的時間有關(guān),形式化定義如下:
圖8 不同交易到達(dá)率下總時延和交易成功率對比Fig.8 Comparison of total delay and transaction success rate under different transaction arrival rates
其中:Tb為出塊時間;BTx為塊內(nèi)最大交易數(shù)據(jù)量;Tm為MCPP 處理交易時延;Tf為Fabric 系統(tǒng)處理交易時延。出塊時間誤差來源于預(yù)言機(jī)中其他數(shù)據(jù)處理模塊在處理數(shù)據(jù)時的額外開銷。
由圖8 可知,隨著交易到達(dá)率的增加,不同K值下MCPP 的交易成功率接近100%,但Fabric 的成功率僅為10%。這表明在大規(guī)模沖突情況下通過預(yù)言機(jī)獲取海量交易數(shù)據(jù)時,無論交易中包含多少主鍵,都可以解決海量沖突數(shù)據(jù)成功上鏈的問題。由圖8中時延曲線可知,MCPP 雖然犧牲了一些時間,但在可接受范圍內(nèi),MVCC 雖然處理了所有交易數(shù)據(jù),但將大部分并發(fā)交易數(shù)據(jù)都被標(biāo)記為無效。因此,在海量交易數(shù)據(jù)高并發(fā)場景下MCPP 性能優(yōu)于MVCC。
為了更直觀地驗證MCPP 在實際應(yīng)用中解決常規(guī)并發(fā)沖突的有效性,實驗?zāi)M了海量交易數(shù)據(jù)存在常規(guī)沖突情況下兩種方法處理交易的時延情況,即海量交易數(shù)據(jù)中只存在少量沖突交易數(shù)據(jù)。該實驗大規(guī)模交易數(shù)據(jù)總量為20 000,設(shè)計包含不同沖突主鍵數(shù)量的數(shù)據(jù)集,分別為20、50、100 和200,每條主鍵包含的沖突數(shù)據(jù)量為2,沖突交易分布相對均勻。
如圖9 所示,當(dāng)處理20 000 條交易數(shù)據(jù)且存在少量沖突交易數(shù)據(jù)時,MCPP 處理交易時延與MVCC 平均時延相似。如表2 所示,在MCPP 中沖突交易數(shù)據(jù)全部上鏈成功,MVCC 則將沖突交易數(shù)據(jù)標(biāo)記為無效。這表明MCPP 在處理少量沖突數(shù)據(jù)時沒有降低系統(tǒng)交易效率,成功率接近100%,而Fabric 通過MVCC 方法對沖突交易數(shù)據(jù)處理的上鏈成功率幾乎為0%,即將所有同主鍵沖突交易數(shù)據(jù)標(biāo)記為無效。由于在實驗過程中沖突交易數(shù)據(jù)隨機(jī)分布,當(dāng)帶有沖突的交易主鍵數(shù)量增加時,處理沖突交易數(shù)據(jù)所觸發(fā)的鎖機(jī)制和重排序緩存占用了系統(tǒng)資源,同時網(wǎng)絡(luò)時延產(chǎn)生的不穩(wěn)定性對系統(tǒng)執(zhí)行交易的總時間產(chǎn)生了影響,使得MCPP 在測試過程中的平均時延略高于MVCC,但MCPP 的執(zhí)行時間較為穩(wěn)定,在可接受范圍內(nèi)。
表2 成功上鏈的交易數(shù)據(jù)對比Table 2 Comparison of successful up-chain transaction data
圖9 常規(guī)沖突時延分析Fig.9 Delay analysis of conventional conflicts
在實驗環(huán)境下模擬海量數(shù)據(jù)上鏈操作,測試身份認(rèn)證和通信密鑰在協(xié)同工作時數(shù)據(jù)的完整性和安全性。數(shù)據(jù)由誠實設(shè)備生成,在所有交易數(shù)據(jù)有效的前提下,為了保護(hù)數(shù)據(jù)信息的完整性,采用AES和RSA 加密算法對傳輸數(shù)據(jù)加密保護(hù),經(jīng)實驗運算后,當(dāng)惡意節(jié)點偽造認(rèn)證信息攻擊有效信息時,由于無法獲取由預(yù)言機(jī)管理者生成的私鑰,惡意節(jié)點最終無法通過認(rèn)證。此外,當(dāng)預(yù)言機(jī)向聯(lián)盟鏈發(fā)布交易數(shù)據(jù)時,通過TLS 技術(shù)避免了惡意用戶實施攻擊。
為了進(jìn)一步評估數(shù)據(jù)傳輸保障措施在數(shù)據(jù)傳輸過程中的性能,分別對5 000、10 000、15 000、20 000條的交易數(shù)據(jù)規(guī)模進(jìn)行實驗,并與未采用權(quán)限驗證方法的外部組織進(jìn)行對比分析。由表3 可以看出,通過實驗評估發(fā)現(xiàn),數(shù)據(jù)傳輸保障措施能夠有效地保證交易數(shù)據(jù)在鏈外的處理結(jié)果為完整密文,并且數(shù)據(jù)的一致性和安全性得到保障,同時引入驗證外部組織身份的方法對時延的影響非常小,且在可接受范圍內(nèi),不會影響系統(tǒng)整體性能。
表3 權(quán)限驗證時延分析Table 3 Delay analysis of permission verification
為了進(jìn)一步驗證MCPP 在檢測沖突交易數(shù)據(jù)時的性能優(yōu)勢,與LMLS[12]在處理不同規(guī)模的交易數(shù)據(jù)下進(jìn)行對比實驗,且每個主鍵中包含的沖突交易數(shù)量分布相對均勻。由圖10 可以看出,當(dāng)交易數(shù)據(jù)規(guī)模達(dá)到1 000 時,MCPP 運行時間比LMLS 縮短了38%,當(dāng)數(shù)據(jù)規(guī)模達(dá)到10 000 時,MCPP 的運行時間縮短了21.4%,因此MCPP 在處理大規(guī)模交易數(shù)據(jù)存在沖突時的性能顯著優(yōu)于LMLS。這是因為LMLS需要占用鏈上的Fabric 系統(tǒng)資源檢測和處理沖突交易數(shù)據(jù),并在EOV 流程中對沖突交易數(shù)據(jù)創(chuàng)建副本緩存,同時改變了沖突交易的存儲方式,導(dǎo)致重復(fù)上鏈沖突交易的時間開銷增加。相比之下,MCPP 無需修改Fabric 中底層代碼,就能實現(xiàn)對沖突交易的檢測和處理,具有較高的可擴(kuò)展性和靈活性,且其優(yōu)勢隨交易數(shù)據(jù)規(guī)模增大更加明顯。此外,MCPP 還增加了對交易數(shù)據(jù)的保障機(jī)制,在保證交易數(shù)據(jù)安全上鏈的同時,不影響系統(tǒng)整體性能。
圖10 MCPP 與LMLS 運行時間對比Fig.10 Comparison of running time of MCPP and LMLS
本文設(shè)計并實現(xiàn)一種基于Fabric 預(yù)言機(jī)的數(shù)據(jù)上鏈預(yù)處理機(jī)制,在不影響相同主鍵串行執(zhí)行順序的情況下,通過對沖突交易數(shù)據(jù)檢測、監(jiān)聽、延時提交、事務(wù)加鎖、重排序緩存等方式,在EOV 流程開始前檢測出沖突交易數(shù)據(jù),使得多沖突的交易數(shù)據(jù)完整上鏈,提高了不同機(jī)構(gòu)或組織協(xié)同管理交易數(shù)據(jù)的工作效率。實驗結(jié)果表明,在確保交易數(shù)據(jù)有效的基礎(chǔ)上,MCPP 在處理海量交易數(shù)據(jù)執(zhí)行上鏈時,無論上鏈交易數(shù)據(jù)存在大規(guī)模沖突還是常規(guī)沖突的現(xiàn)象,數(shù)據(jù)上鏈預(yù)處理機(jī)制都可以有效提高沖突交易數(shù)據(jù)的成功率,且在處理無并發(fā)沖突的海量交易數(shù)據(jù)時保持高效性,同時在傳輸過程中保障交易數(shù)據(jù)的安全性和完整性。MCPP 通過實驗得到有效驗證后,在中科興疆鏈供應(yīng)鏈管理系統(tǒng)中進(jìn)行實際應(yīng)用,主要運用于工業(yè)互聯(lián)網(wǎng)、司法協(xié)同等數(shù)據(jù)共享管理業(yè)務(wù),在處理復(fù)雜事件時同一時間段內(nèi)推送至鏈上的交易數(shù)據(jù)接近20 000 條。下一步將對比分析不同的聯(lián)盟鏈并結(jié)合預(yù)言機(jī)特點,改進(jìn)適用于不同聯(lián)盟鏈的高性能通用并發(fā)處理技術(shù),加強(qiáng)系統(tǒng)擴(kuò)展性。