區(qū)塊鏈查詢技術(shù)優(yōu)化_第1頁
區(qū)塊鏈查詢技術(shù)優(yōu)化_第2頁
區(qū)塊鏈查詢技術(shù)優(yōu)化_第3頁
區(qū)塊鏈查詢技術(shù)優(yōu)化_第4頁
區(qū)塊鏈查詢技術(shù)優(yōu)化_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

區(qū)塊鏈查詢技術(shù)優(yōu)化作者:李楠來源:《電腦知識與技術(shù)》2021年第11期創(chuàng)世區(qū)塊前區(qū)塊1S]|ifi木莎救—KW創(chuàng)世區(qū)塊前區(qū)塊1S]|ifi木莎救—KW居院K小戲舫碰土小后區(qū)塊/EIFRt十點W圖2M-B+樹的結(jié)構(gòu)EffH圖3節(jié)點1-5的M-B-樹的區(qū)塊存儲結(jié)構(gòu)后區(qū)塊*牌.套大罕前區(qū)塊pg、創(chuàng)世區(qū)悅圖4基于M-IT樹的區(qū)塊鏈結(jié)構(gòu).口圖6實驗部署圖1200200$ooO806040圖7數(shù)據(jù)查詢時間3吁.".-:.'1'二'.--3圖8利用區(qū)塊號查詢時間摘要:對區(qū)塊鏈上數(shù)據(jù)查詢功能單一且查詢效率低等問題,提出一種查詢技術(shù)的優(yōu)化方案,該方案對區(qū)埋鏈的Merkle樹進(jìn)行了修改,結(jié)合了8+樹的結(jié)構(gòu),不僅能夠快速驗證(基于M-B+樹根hash),還可以利用B+樹的結(jié)構(gòu)快速查找特定記錄。并將交易的關(guān)鍵信息和對應(yīng)的區(qū)塊號等數(shù)據(jù)存入到關(guān)系數(shù)據(jù)庫MySQL中,從而支持關(guān)系查詢。實驗結(jié)果表明,基于M-B+樹的區(qū)塊鏈系統(tǒng)不僅查詢速度效率提升而且具有豐富的查詢手段。關(guān)鍵詞:區(qū)塊鏈;超級賬本;關(guān)系查詢;B+樹中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2021)11-0213-031引言區(qū)塊鏈技術(shù)主要是解決在分布式、不可信的場景下進(jìn)行安全、可靠、不可更改的交易問題。目前研究內(nèi)容涉及:系統(tǒng)性能分析、安全性能和共識算法研究、技術(shù)應(yīng)用探索等方面,查詢技術(shù)和底層數(shù)據(jù)管理研究不多,由于區(qū)塊鏈采用鏈?zhǔn)浇Y(jié)構(gòu),在查詢的業(yè)務(wù)場景中,查詢效率低、方法有限,且時間復(fù)雜度高,使區(qū)塊鏈技術(shù)應(yīng)用價值被削弱。在查詢領(lǐng)域的研究主要有兩大方向:第一種,對結(jié)點進(jìn)行區(qū)分,并且對查詢的路徑進(jìn)行優(yōu)化,來提升查詢效率,但是這種方法還是在區(qū)塊鏈原有的查詢方式上進(jìn)行優(yōu)化,對原有的區(qū)塊鏈查詢功能沒有提升;第二種,將區(qū)塊鏈和現(xiàn)有的數(shù)據(jù)庫連接,借助數(shù)據(jù)庫豐富的查詢功能,但是這種方法存在數(shù)據(jù)庫數(shù)據(jù)安全問題。第一種方法只是對現(xiàn)有的節(jié)點進(jìn)行優(yōu)化,在區(qū)塊鏈原有的查詢方式上進(jìn)行優(yōu)化,卻沒有從區(qū)塊鏈本身進(jìn)行相應(yīng)的提升改進(jìn),對原有的區(qū)塊鏈查詢功能應(yīng)用場景和查詢手段的改進(jìn)不大第二種,將區(qū)塊鏈和現(xiàn)有的數(shù)據(jù)庫連接,使用數(shù)據(jù)庫豐富的查詢功能,但是存在數(shù)據(jù)庫數(shù)據(jù)的安全問題,而且會使區(qū)塊鏈系統(tǒng)的復(fù)雜性變大,使系統(tǒng)的運行效率變低。為了解決區(qū)塊鏈查詢效率低,豐富查詢功能。本文提出一種新的區(qū)塊鏈查詢方法:結(jié)合B+樹和Merkle樹的各自特點,建立基于M-B+樹的區(qū)塊存儲結(jié)構(gòu),并將區(qū)塊號同步到數(shù)據(jù)庫,在進(jìn)行查詢時先在數(shù)據(jù)庫中查找到相應(yīng)區(qū)塊號后,然后到對應(yīng)區(qū)塊查詢數(shù)據(jù),因為數(shù)據(jù)庫只保留了區(qū)塊號,數(shù)據(jù)都在鏈上,這樣解決了數(shù)據(jù)庫數(shù)據(jù)被篡改的風(fēng)險。2相關(guān)工作針對區(qū)塊鏈查詢,目前的研究如下:賈大宇等[1]在ElasticChain模型基礎(chǔ)上,提出一種新的高效查詢方法:ElasticQM。該框架主要在數(shù)據(jù)層建立B-M樹的區(qū)塊鏈存儲結(jié)構(gòu),提高局部查詢效率。Trent等提出了BigchainDB[2]區(qū)塊鏈數(shù)據(jù)庫,具有高吞吐量、低延遲、大容量、豐富的查詢功能和去中心化、不可篡改和能夠進(jìn)行數(shù)字資產(chǎn)創(chuàng)建、傳輸?shù)奶匦?。北京眾享比特科技有限公司提出ChainSQL[3]技術(shù),該技術(shù)是將數(shù)據(jù)庫的操作記錄各個節(jié)點共識之后記錄到區(qū)塊鏈上,如果共識執(zhí)行失敗或不通過,數(shù)據(jù)庫執(zhí)行回滾操作,這樣就實現(xiàn)了兼顧區(qū)塊鏈和傳統(tǒng)數(shù)據(jù)庫的優(yōu)點。余濤等[4]提出FabricSQL方法,該方法將鏈上的有效交易同步至SQL數(shù)據(jù)庫中,借助數(shù)據(jù)庫管理系統(tǒng)對區(qū)塊鏈數(shù)據(jù)關(guān)系查詢。本文所提出一種區(qū)塊鏈數(shù)據(jù)關(guān)系查詢解決方案,對區(qū)塊鏈區(qū)塊結(jié)構(gòu)修改,結(jié)合Merkle樹和B+樹的特點,建立M-B+區(qū)塊結(jié)構(gòu),并設(shè)計相關(guān)模塊結(jié)合數(shù)據(jù)庫,實現(xiàn)高效、安全的數(shù)據(jù)查詢。3區(qū)塊鏈結(jié)構(gòu)設(shè)計3.1現(xiàn)有的區(qū)塊鏈區(qū)塊結(jié)構(gòu)在現(xiàn)有的區(qū)塊鏈系統(tǒng)中,區(qū)塊主要包含區(qū)塊頭、區(qū)塊體兩大部分。區(qū)塊頭包含:版本號、時間戳、難度系數(shù)、隨機(jī)數(shù)、前區(qū)塊hash、Merkle樹根hash;區(qū)塊體包含:魔法數(shù)、區(qū)塊大小、交易數(shù)量、交易詳情大小。如圖1所示。區(qū)塊結(jié)構(gòu)說明。在區(qū)塊頭中,版本號是用來標(biāo)記當(dāng)前區(qū)塊對應(yīng)的系統(tǒng)版本,大小為4byte;時間戳是記錄區(qū)塊創(chuàng)建的時間,大小為4byte難度系數(shù)是記錄區(qū)塊鏈工作量證明的難度目標(biāo),儲存格式為難度系數(shù)的hash;隨機(jī)數(shù)是記錄區(qū)塊鏈工作量的計算參數(shù),大小為4byte,存儲格式為hash;前區(qū)塊頭的hash是當(dāng)前區(qū)塊的前一^區(qū)塊的區(qū)塊頭的hash,大小為32byte;Merkle樹根hash是當(dāng)前區(qū)塊打包所有的交易記錄都是以Merkle樹的方式記錄的,記錄的是交易樹根的hash,當(dāng)有新的信息存入時,該字段會重新計算更新。在區(qū)塊體中,魔法數(shù)是客戶端解析區(qū)塊數(shù)據(jù)時的識別碼,大小為4byte,是不變常量;區(qū)塊大小為4byte;交易數(shù)量,記錄上一個區(qū)塊創(chuàng)建之后到本區(qū)塊創(chuàng)建完成之間所有的交易筆數(shù)交易詳情,記錄所有交易詳情,包括收支地址、比特幣收支數(shù)量、Merkle節(jié)點值和數(shù)字簽名等,采用的數(shù)據(jù)結(jié)構(gòu)是Merkle樹。區(qū)塊號,是區(qū)塊的編號,也稱區(qū)塊高度,從0開始計算,下一個區(qū)塊的為1,區(qū)塊號和區(qū)塊一一對應(yīng),可以根據(jù)區(qū)塊號快速查詢區(qū)塊的信息。3.2物流信息平臺中區(qū)塊結(jié)構(gòu)設(shè)計1)M-B+樹的區(qū)塊存儲結(jié)構(gòu)Merkle樹的結(jié)構(gòu)設(shè)計可以保證了數(shù)據(jù)安全不被篡改,還能快速驗證數(shù)據(jù)的hash是否存在于區(qū)塊上,查找具體的信息時,根據(jù)區(qū)塊號找到相應(yīng)的區(qū)塊,遍歷區(qū)塊查找相應(yīng)的信息。隨著區(qū)塊鏈上的數(shù)據(jù)變多,查詢相關(guān)數(shù)據(jù)的效率越來越低。本節(jié)提出一種M-B+樹的區(qū)塊存儲結(jié)構(gòu),這種結(jié)構(gòu)不僅結(jié)合了現(xiàn)有的Merkle樹的特點,又提高了查詢效率?;贐+樹和Merkle樹的優(yōu)點,設(shè)計了M-B+樹的區(qū)塊存儲結(jié)構(gòu)。節(jié)點結(jié)構(gòu)如圖2。數(shù)據(jù)結(jié)構(gòu)如下:Node{Nodeleft;Valuevalue;Hashhash;Noderight;}節(jié)點1-5的M-B+樹的區(qū)塊存儲結(jié)構(gòu)如下:2)基于M-B+樹的區(qū)塊鏈結(jié)構(gòu)基于M-B+W的區(qū)塊結(jié)構(gòu),利用該結(jié)構(gòu)搭建的區(qū)塊鏈,形成一種新的區(qū)塊鏈。如圖所示,每一個區(qū)塊都存儲著M-B+樹根hash和M-B+樹根,樹的其余部分放在了區(qū)塊體中。在驗證相關(guān)數(shù)據(jù)是否存在于該區(qū)塊時只需要驗證是否和M-B+樹根hash相等就能快速得到結(jié)果。4區(qū)塊鏈查詢技術(shù)下面將開始分析傳統(tǒng)的區(qū)塊鏈查詢方法,然后提出一種基于M-B+樹結(jié)構(gòu)的區(qū)塊鏈查詢方法。4.1現(xiàn)有的區(qū)塊鏈查詢方法在區(qū)塊鏈中,除了創(chuàng)世區(qū)塊,其他區(qū)塊都記錄了前一個區(qū)塊的hash,形成按時間順序組成的鏈。在查找數(shù)據(jù)時,從區(qū)塊號或區(qū)塊哈希來確定所在的區(qū)塊,然后找到相應(yīng)的區(qū)塊后,在交易信息中找到想要的交易記錄。在交易過程中,查詢流程如下:一個SPV節(jié)點查詢交易地址,節(jié)點間的通信鏈接上建立起bloom過濾器,以Merkleblock消息的形式發(fā)送該區(qū)塊。Merkleblock消息包含區(qū)塊頭和一條連接目標(biāo)交易與Merkle根的Merkle路徑,驗證交易的真實性。4.2基于M-B+樹的區(qū)塊鏈結(jié)構(gòu)查詢方法針對區(qū)塊鏈查詢方面的不足,本節(jié)會將基于M-B+樹的區(qū)塊鏈和關(guān)系型數(shù)據(jù)庫MySQL結(jié)合,將新生成的區(qū)塊的區(qū)塊號、M-B+樹哈希、M-B+路徑、交易信息同步到關(guān)系型數(shù)據(jù)庫MySQL中。在關(guān)系型數(shù)據(jù)庫MySQL中,會將同步過來的區(qū)塊鏈的區(qū)塊號、M-B+樹哈希、M-B+路徑、交易信息進(jìn)行判斷、同步、提取后,處理成MySQL數(shù)據(jù)庫要求的數(shù)據(jù)格式存儲。查詢方法主要分為三個主要部分:數(shù)據(jù)處理和同步模塊、外部數(shù)據(jù)庫、查詢接口。在基于M-B+樹的區(qū)塊鏈運行過程中,數(shù)據(jù)判斷和提出模塊會通過區(qū)塊鏈的數(shù)據(jù)接口,將新生成的區(qū)塊的區(qū)塊號、M-B+樹哈希、M-B+路徑、交易信息同步到關(guān)系型數(shù)據(jù)庫MySQL中。5實驗與分析本章主要是對基于M-B+樹的區(qū)塊鏈結(jié)構(gòu)查詢方法進(jìn)行試驗并和傳統(tǒng)的區(qū)塊鏈系統(tǒng)進(jìn)行比較,并通過試驗結(jié)果證明方案可行性。5.1實驗環(huán)境本文采用HyperledgerFabric開源框架,基于M-B+樹的區(qū)塊結(jié)構(gòu)搭建區(qū)塊鏈系統(tǒng)。實驗的硬件配置為:IntelCoreI5-7300HQ2.50GHZCPU和16GB內(nèi)存的PC,操作系統(tǒng)為Windows10專業(yè)版。使用VMwareWorkstation12.5建立虛擬機(jī),在虛擬機(jī)上模擬實驗的真實節(jié)點,節(jié)點的內(nèi)存為1GB,硬盤為25GB的Ubuntu16.04系統(tǒng)。數(shù)據(jù)來自脫敏的電子交易數(shù)據(jù)集和賬戶數(shù)據(jù)集。圖6所示的實驗部署圖,為了構(gòu)成P2P網(wǎng)絡(luò),首先選擇一個普通結(jié)點作為初始節(jié)點,然后選擇一個超級節(jié)點和初始節(jié)點進(jìn)行鏈接。普通節(jié)點只同步區(qū)塊頭,超級節(jié)點同步整個區(qū)塊的整體信息。當(dāng)普通用戶獲取不在本節(jié)點的信息時,可以在超級節(jié)點上同步信息,減少普通用戶本地存儲。實驗1:在兩個系統(tǒng)中分別錄入相同的原始數(shù)據(jù),然后進(jìn)行一筆交易信息的查詢,利用區(qū)塊鏈上的查詢的接口,控制變量,進(jìn)行多組對照實驗。觀察兩個系統(tǒng)的查詢時間。查詢時間如圖所示,由于單個查詢時間較短,采用1000筆重復(fù)查詢實驗然后取平均值。圖中的橫坐標(biāo)是上鏈的數(shù)據(jù)量規(guī)模,分別是300M,600M和900M,縱坐標(biāo)是時間值,通過實驗結(jié)果可以看出,基于M-B+樹的區(qū)塊鏈系統(tǒng)的查詢時間較傳統(tǒng)的區(qū)塊鏈系統(tǒng)查詢響應(yīng)時間有著明顯的提升。實驗2:在兩個系統(tǒng)中分別錄入相同的原始數(shù)據(jù),然后利用外接數(shù)據(jù)庫MySQL提供的查詢接口,根據(jù)相同的區(qū)塊號進(jìn)行信息查詢,取區(qū)塊號10、100、150、200、250、300進(jìn)行查詢,觀察查詢時間。如圖所示,利用外接數(shù)據(jù)庫提供的查詢接口,利用區(qū)塊號進(jìn)行查詢實驗,通過對實驗結(jié)果進(jìn)行分析,外接數(shù)據(jù)庫查詢時間相較于傳統(tǒng)查詢時間縮短。有些數(shù)據(jù)會緩存在服務(wù)器上,所以整體查詢時間比直接利用區(qū)塊鏈的查詢接口要快。6結(jié)束語本文研究當(dāng)前的區(qū)塊鏈系統(tǒng)的查詢技術(shù),發(fā)現(xiàn)查詢功能不完善,效率低,對區(qū)塊鏈查詢方法進(jìn)行了研究和改善。傳統(tǒng)Fabric區(qū)塊鏈系統(tǒng)的查詢功能是通過文件系統(tǒng)和Key-value數(shù)據(jù)庫實現(xiàn)的,隨著區(qū)塊鏈技術(shù)的普及和廣泛應(yīng)用在各行各業(yè),系統(tǒng)對存儲數(shù)據(jù)的訪問方法支持不足,而且查詢功能單一、效率不高。本文針對在物流中區(qū)塊鏈查詢方面的不足,提出一種解決方案:基于M-B+樹的區(qū)塊鏈系統(tǒng),該方案對區(qū)塊鏈的Merkle樹進(jìn)行了修改,結(jié)合了8+樹的結(jié)構(gòu),能夠使區(qū)塊鏈系統(tǒng)在進(jìn)行交易查詢時不僅能夠快速驗證(基于M-B+樹根hash),而且可以利用B+樹的結(jié)構(gòu)快速查找特定記錄。而且基于M-B+樹的區(qū)塊鏈系統(tǒng)外接了MySQL數(shù)據(jù)庫,將新生成的區(qū)塊的區(qū)塊號、M-B+樹hash、M-B+路徑、交易信息同步到關(guān)系型數(shù)據(jù)庫MySQL中。利用MySQL數(shù)據(jù)庫豐富的查詢功能,能夠快速驗證和得到需要查詢的信息的區(qū)塊號,然后到區(qū)塊鏈中查找特定信息。參考文獻(xiàn):賈大宇,信俊昌,王之瓊,等.存儲容量可擴(kuò)展區(qū)塊鏈系統(tǒng)的高效查詢模型[J].軟件學(xué)報,2019,30(9):2655-2670.McConaghyT,MarquesR,MullerA,etal.BigchainDB:ascalableblockchaindatabase[J].whit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論