[發(fā)明專利]一種基于共享前綴的以太坊數(shù)據(jù)存儲(chǔ)方法及系統(tǒng)在審
| 申請(qǐng)?zhí)枺?/td> | 202210480748.0 | 申請(qǐng)日: | 2022-05-05 |
| 公開(kāi)(公告)號(hào): | CN115167755A | 公開(kāi)(公告)日: | 2022-10-11 |
| 發(fā)明(設(shè)計(jì))人: | 蔡曉軍;申兆巖;陳澤豪;張余豪;賈智平 | 申請(qǐng)(專利權(quán))人: | 山東大學(xué) |
| 主分類號(hào): | G06F3/06 | 分類號(hào): | G06F3/06 |
| 代理公司: | 濟(jì)南圣達(dá)知識(shí)產(chǎn)權(quán)代理有限公司 37221 | 代理人: | 趙妍 |
| 地址: | 266237 *** | 國(guó)省代碼: | 山東;37 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 共享 前綴 以太 數(shù)據(jù) 存儲(chǔ) 方法 系統(tǒng) | ||
本發(fā)明提供了一種基于共享前綴的以太坊數(shù)據(jù)存儲(chǔ)方法及系統(tǒng),包括:獲取以太坊中的賬戶數(shù)據(jù)的樹(shù)形結(jié)構(gòu);為樹(shù)形結(jié)構(gòu)中的每一個(gè)節(jié)點(diǎn)生成一個(gè)前綴值;基于前綴值,將樹(shù)形結(jié)構(gòu)中的每一個(gè)節(jié)點(diǎn)轉(zhuǎn)化成一個(gè)二元組;根據(jù)所述二元組中鍵的字典序?qū)ΧM進(jìn)行排序后,依次寫(xiě)入數(shù)據(jù)庫(kù)。通過(guò)對(duì)樹(shù)形結(jié)構(gòu)的序列化進(jìn)行優(yōu)化,減少了訪問(wèn)樹(shù)形結(jié)構(gòu)的IO開(kāi)銷,提升了以太坊交易驗(yàn)證、執(zhí)行的速度。
技術(shù)領(lǐng)域
本發(fā)明屬于以太坊鍵值存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種基于共享前綴的以太坊數(shù)據(jù)存儲(chǔ)方法及系統(tǒng)。
背景技術(shù)
本部分的陳述僅僅是提供了與本發(fā)明相關(guān)的背景技術(shù)信息,不必然構(gòu)成在先技術(shù)。
以太坊內(nèi)部維護(hù)一個(gè)全局狀態(tài)MPT(Merkle Patricia Trie)來(lái)管理賬戶數(shù)據(jù)。對(duì)于建立在以太坊上的面向以太坊分布式應(yīng)用(Decentralization Application,DApp)而言,每一筆交易的上鏈時(shí)都需要得到整個(gè)網(wǎng)絡(luò)的確認(rèn)。在完成交易可靠性驗(yàn)證之后,交易在每一個(gè)分布式節(jié)點(diǎn)中重新執(zhí)行。在這個(gè)過(guò)程中,每一筆交易的驗(yàn)證和執(zhí)行需要多次訪問(wèn)全局狀態(tài)。全局狀態(tài)存儲(chǔ)了以太坊系統(tǒng)中所有的用戶信息以及合約信息,它是一棵樹(shù)狀結(jié)構(gòu),類似于字典樹(shù),其節(jié)點(diǎn)由賬戶地址的一部分構(gòu)成,所有的賬戶信息被儲(chǔ)存在葉子節(jié)點(diǎn)中。
以太坊中的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)MPT是一顆樹(shù)形結(jié)構(gòu),其常駐于內(nèi)存并保存全局賬戶、智能合約等信息。毫無(wú)疑問(wèn),在內(nèi)存中MPT上的一次訪問(wèn)是能夠充分體現(xiàn)局部性這一特點(diǎn)的。如圖2和圖3所示,針對(duì)MPT的一次訪問(wèn)都會(huì)訪問(wèn)從根節(jié)點(diǎn)(Root Node)到葉子節(jié)點(diǎn)(LeafNode)(所請(qǐng)求的值被保存在Leaf Node上)的一次完整分支,不僅如此,由于樹(shù)狀結(jié)構(gòu)的索引設(shè)計(jì),每次相鄰訪問(wèn)的節(jié)點(diǎn)一定互為父子節(jié)點(diǎn)。然而,由于以太坊全局狀態(tài)的爆炸增長(zhǎng),MPT已經(jīng)增長(zhǎng)到了一個(gè)非常龐大的地步,因此,內(nèi)存無(wú)法駐留一個(gè)完整的MPT,大部分請(qǐng)求都會(huì)在磁盤(pán)上進(jìn)行。
然而,MPT的存儲(chǔ)方式是將每一個(gè)節(jié)點(diǎn)(Node)轉(zhuǎn)化成一個(gè)二元組(key,value)并插入到數(shù)據(jù)庫(kù)LevelDB中,鍵key和值value的構(gòu)造方式如下:
Key=Hash(RLP(Node))
Value=RLP(Node)
這種方式雖然保證了以太坊的數(shù)據(jù)安全,但是無(wú)序的key構(gòu)造方式,使得一次訪問(wèn)中的所有節(jié)點(diǎn)被無(wú)序、離散地存儲(chǔ)到磁盤(pán)的不同位置上。實(shí)際上,二元組的物理布局與LevelDB的內(nèi)部設(shè)計(jì)有關(guān)。LevelDB磁盤(pán)組件被分為多個(gè)層級(jí),每一個(gè)層級(jí)由多個(gè)SST文件組成,換言之,所有的元組在同一層級(jí)按照其key的字典序升序排列。因此,無(wú)序的哈希構(gòu)造方法決定了由Node轉(zhuǎn)化的二元組在磁盤(pán)上的布局是不連續(xù)的。在最差的情況下,一次針對(duì)MPT的訪問(wèn)需要訪問(wèn)n個(gè)Node,這n個(gè)Node所轉(zhuǎn)化的鍵值對(duì)被存儲(chǔ)到了n個(gè)不同的SST文件中,因此,造成了MPT訪問(wèn)在磁盤(pán)上的局部性的缺失并引發(fā)了大量的IO操作。因此,當(dāng)前的以太坊系統(tǒng)設(shè)計(jì)嚴(yán)重拖慢了交易的驗(yàn)證和執(zhí)行速度,進(jìn)而限制了DApp的吞吐量。
發(fā)明內(nèi)容
為了解決上述背景技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明提供一種基于共享前綴的以太坊數(shù)據(jù)存儲(chǔ)方法及系統(tǒng),對(duì)樹(shù)形結(jié)構(gòu)的序列化進(jìn)行優(yōu)化,減少了訪問(wèn)樹(shù)形結(jié)構(gòu)的IO開(kāi)銷,提升了以太坊交易驗(yàn)證、執(zhí)行的速度。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
本發(fā)明的第一個(gè)方面提供一種基于共享前綴的以太坊數(shù)據(jù)存儲(chǔ)方法,其包括:
獲取以太坊中的賬戶數(shù)據(jù)的樹(shù)形結(jié)構(gòu);
為樹(shù)形結(jié)構(gòu)中的每一個(gè)節(jié)點(diǎn)生成一個(gè)前綴值;
基于前綴值,將樹(shù)形結(jié)構(gòu)中的每一個(gè)節(jié)點(diǎn)轉(zhuǎn)化成一個(gè)二元組;
根據(jù)所述二元組中鍵的字典序?qū)ΧM進(jìn)行排序后,依次寫(xiě)入數(shù)據(jù)庫(kù)。
進(jìn)一步地,所述前綴值的生成方法為列前綴編碼方法,具體的:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于山東大學(xué),未經(jīng)山東大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210480748.0/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F3-00 用于將所要處理的數(shù)據(jù)轉(zhuǎn)變成為計(jì)算機(jī)能夠處理的形式的輸入裝置;用于將數(shù)據(jù)從處理機(jī)傳送到輸出設(shè)備的輸出裝置,例如,接口裝置
G06F3-01 .用于用戶和計(jì)算機(jī)之間交互的輸入裝置或輸入和輸出組合裝置
G06F3-05 .在規(guī)定的時(shí)間間隔上,利用模擬量取樣的數(shù)字輸入
G06F3-06 .來(lái)自記錄載體的數(shù)字輸入,或者到記錄載體上去的數(shù)字輸出
G06F3-09 .到打字機(jī)上去的數(shù)字輸出
G06F3-12 .到打印裝置上去的數(shù)字輸出
- 服務(wù)器、系統(tǒng)及信息共享方法
- 一種信息共享系統(tǒng)及信息共享方法
- 一種移動(dòng)終端的數(shù)據(jù)無(wú)線共享方法及該移動(dòng)終端
- 一種桌面共享系統(tǒng)及方法
- 一種用于共享移動(dòng)汽車電池的方法
- 一種基于物聯(lián)網(wǎng)的移動(dòng)共享方法及移動(dòng)共享系統(tǒng)
- 一種數(shù)據(jù)共享方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 基于云平臺(tái)的數(shù)據(jù)共享方法、裝置、共享平臺(tái)及存儲(chǔ)介質(zhì)
- 確定共享乘坐度量
- 設(shè)備功能共享方法、裝置、終端及存儲(chǔ)介質(zhì)
- 報(bào)文傳輸?shù)姆椒把b置
- 以太網(wǎng)設(shè)備的連接器的連接方法及以太網(wǎng)設(shè)備
- 以太網(wǎng)齊納式安全柵的應(yīng)用
- 一種在工業(yè)以太網(wǎng)中傳輸標(biāo)準(zhǔn)以太網(wǎng)數(shù)據(jù)的方法
- 列車級(jí)以太網(wǎng)交換設(shè)備及系統(tǒng)
- 基于區(qū)塊鏈技術(shù)的虛擬陵墓運(yùn)營(yíng)的方法和裝置
- 一種車載以太網(wǎng)數(shù)據(jù)接入裝置
- 以太網(wǎng)通信系統(tǒng)、以太網(wǎng)通信的實(shí)現(xiàn)方法、設(shè)備及介質(zhì)
- 一種以太網(wǎng)轉(zhuǎn)接模塊
- 具有路由器功能的計(jì)算機(jī)





