降低區塊鏈節點儲存占用的方法總結

2021-09-22 22:31:31 字數 1631 閱讀 4929

​ 隨著區塊鏈的不斷執行,產生的資料越來越多,占用的儲存也就越來越多。在這一點上,對於任何區塊鏈專案都是一樣的。在傳統的中心化專案裡,可以通過刪除歷史資料而降低對儲存占用,保證在業務穩定的情況下,對儲存的占用是穩定的, 對於區塊鏈而言,歷史資料是對新資料可信的證明,是不能隨意刪除的,這也就意味著儲存占用只能是不斷的增加,所以儲存問題將是所有區塊鏈專案面臨的乙個重大問題。本文討論幾種減緩儲存增加速度的方法。本文討論的方法以以太坊系公鏈為基礎。

​ 降低礦機的儲存占用。

先看看目前礦機儲存的區塊鏈主要資料都有哪些。

對於以太坊系的公鏈(全同步礦機)來說主要是兩類資料:1、區塊資料 2、賬戶狀態資料。下面具體看看都是什麼樣的資料,在leveldb資料庫中都是以k:v的形式進行儲存

1、區塊資料:

​ a 區塊總難度td :

​ b 區塊header資料 :

​ c 區塊body資料 : // body即transactions,uncles

​ d 區塊交易收條: //receipts即塊內所有的交易收條。

​ e 交易索引:。//注:所以交易的查詢是根據交易hash找到所在的blocknumber,blockhash,index,然後根據blocknumber,blockhash找到對應的body,然後根據index定位到交易在body中的位置。

​ f preimages : //注:用於記錄opsha3時的hash與data,用於vmdebug。

2、賬戶狀態資料:

​ a 狀態資料: //每個區塊都會有對應的stateroot 與 allaccountinfo

以上是對占用儲存資料的整理,針對以上資料,如果要減少對儲存的占用,大致有以下幾種方式。

1、將區塊資料進行壓縮儲存

​ 根據測試,將區塊body資料以及交易收條進行壓縮儲存,可降低區塊資料30% ~ 65%的儲存。交易收條越多,壓縮比越大。

2、部分區塊資料不儲存

​ 考慮上述區塊資料儲存的必要性,如果不必要是否可以不進行儲存。

​ 比如區塊交易收條,對於礦機(或者部分礦機)而言,在校驗完區塊交易後,只要不需要查詢交易收條,那收條就是沒用的。而對於挖礦礦機,只負責挖礦,基本不涉及交易的查詢。根據測試,普通交易的交易收條大小佔整個交易資料大小的50%以上。 注:普通交易資料大小 = 交易大小 + 收條大小 + 交易索引

3、刪除舊的狀態資料

​ 狀態資料儲存的是區塊對應的賬戶狀態,在礦機以快速同步模式啟動節點時,就相當於只保留區塊資料,不儲存狀態資料。由於狀態資料是需要參與到區塊共識的,所以理論上保留最近的狀態資料,刪除舊區塊的狀態資料是可以的。

4、中心化儲存並多副本備份

​ 完整的資料只保留在部分礦機或者專用伺服器或公有雲,其他礦機只保留驗證資訊。最近產生的區塊盡量所有礦機都儲存,然後根據一定的規則去刪除舊的區塊資料,但留下可驗證的區塊資訊。

5、狀態分片

​ 根據賬戶資訊進行分片,每個分片只關心對應賬戶的交易與儲存。實現複雜,會涉及到跨片/跨鏈互動。

6、儲存分片

​ 不分片狀態,只分片儲存。簡單模型如下:兩個礦機,乙個儲存塊號為單數的完整區塊資料,乙個儲存塊號為雙數的完整區塊資料。最近的塊都進行儲存,定時清除不屬於自己應該儲存的塊資料,保留header,刪除body,刪除狀態資料。

目前總結以上6種方式,歡迎討論。

the end!

區塊鏈節點和區塊區別 區塊鏈的節點是什麼?

區塊鏈節點,通常指的是區塊鏈網路中的計算機,也就是說任何連線到區塊鏈網路的計算機 包括手機,礦機等 都稱為節點。比如說位元幣網路是乙個公有鏈,使用者在自己的聯網電腦上執行位元幣程式時,這個電腦就成為位元幣區塊鏈網路中的乙個節點。操作乙個節點可以是普通錢包使用者,礦工或多人協作。不同的區塊鏈對節點的數...

區塊鏈節點和區塊區別 區塊鏈的「區塊」和「鏈」

2017年以來,區塊鏈大火,但是其技術相對生澀。很多 紛紛用通俗易懂的漫畫方式,簡單明瞭的體現出來了區塊鏈的區別和特點。區塊鏈由以前的一人記賬,變成了大家一起記賬的模式,讓賬目和交易更加安全,這就是分布式資料儲存。此外,區塊鏈相關的技術除了分布式儲存,還有去中心化 智慧型合約 加密演算法等等。分布式...

華為再申請區塊鏈專利「區塊鏈賬本的儲存方法及裝置」

鳳凰網科技訊 北京時間7月27日訊息,天眼查資料顯示,近日,華為技術 新增數條專利資訊,其中之一為 區塊鏈賬本的儲存方法及裝置。申請日為2019年1月17日,申請公布日為2020年7月24日。專利基本資訊摘要顯示,本申請提供一種區塊鏈賬本的儲存方法及裝www.cppcns.com置。區塊鏈賬本包括乙...