本說明書實施例屬于區塊鏈,尤其涉及一種在區塊鏈系統中存儲區塊的方法和節點。
背景技術:
1、區塊鏈(blockchain)是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。區塊鏈系統中按照時間順序將數據區塊以順序相連的方式組合成鏈式數據結構,并以密碼學方式保證的不可篡改和不可偽造的分布式賬本。由于區塊鏈具有去中心化、信息不可篡改、自治性等特性,區塊鏈也受到人們越來越多的重視和應用。
2、在區塊鏈系統中,鏈上區塊數據占用了較多的存儲空間,尤其是對于存證類場景,大量的條目存儲于區塊交易中。隨著區塊鏈系統的長時間運行,區塊數據越積越多,而出于監管和歷史查詢等需要,無法對該部分數據做清理。
3、通過對底層區塊鏈存儲引擎系統的優化,借助于廉價介質等手段,一定程度上降低了區塊鏈各節點的存儲成本。然而,由于每個參與方各自都存儲了一份對該鏈上區塊數據的完整拷貝,各參與方存儲的數據內容完全一樣。雖然通過這種簡單的副本拷貝方式,很容易滿足了拜占庭容錯的要求,但隨著集群參與方數量的增加存儲成本卻是線性增長。
技術實現思路
1、本發明的目的在于提供一種在區塊鏈系統中存儲區塊的方法,以降低區塊鏈系統中對存儲資源的需求。
2、本說明書第一方面提供一種在區塊鏈系統中存儲區塊的方法,所述區塊鏈系統包括n個節點,所述n個節點中包括至少m個有效節點,所述方法由任一節點執行,包括:
3、根據糾刪碼算法,基于目標區塊的區塊體中的至少部分數據獲取n個分片中與自身對應的目標分片,其中,所述n個分片中包括t個數據分片和s個校驗分片,所述n個分片與所述n個節點分別對應,t小于或等于m;
4、存儲所述目標分片。
5、在一種實施方式中,所述n個節點中的m個有效節點滿足拜占庭容錯分布。
6、在一種實施方式中,所述方法還包括:存儲所述目標區塊的區塊頭。
7、本說明書第二方面提供一種計算機可讀存儲介質,其上存儲有計算機程序,當所述計算機程序在計算機中執行時,令計算機執行第一方面所述的方法。
8、本說明書第三方面提供一種區塊鏈節點,包括存儲器和處理器,所述存儲器中存儲有可執行代碼,所述處理器執行所述可執行代碼時,實現第一方面所述的方法。
9、在本說明書實施例提供的方案中,基于區塊中的數據獲取條帶的多個分片,并使得各個節點存儲一個分片,通過該方式大大節省了區塊鏈系統中需要的存儲資源。
1.一種在區塊鏈系統中存儲區塊的方法,所述區塊鏈系統包括n個節點,所述n個節點中包括至少m個有效節點,所述方法由任一節點執行,包括:
2.根據權利要求1所述的方法,還包括:記錄對應關系表,所述對應關系表用于指示各個節點存儲的分片中的交易數據的信息。
3.根據權利要求2所述的方法,所述t個數據分片通過對所述區塊體按順序切分而獲得,所述對應關系表包括第一表格和第二表格,所述第一表格包括區塊中的各個交易數據在所述目標區塊中的偏移位置,所述第二表格包括各個節點存儲的分片的起始位置對應的交易數據的標識、和該起始位置在其對應的交易數據中的偏移位置。
4.根據權利要求3所述的方法,所述區塊被分成多個條帶,所述至少部分數據屬于所述多個條帶中的第一條帶,所述第二表格中還包括各個節點存儲的分片對應的條帶的標識。
5.根據權利要求4所述的方法,所述存儲所述目標分片包括,將所述目標分片與目標區塊的區塊標識、所述第一條帶的標識關聯的存儲。
6.根據權利要求5所述的方法,還包括:
7.根據權利要求6所述的方法,所述從所述一個或多個第一節點讀取所述第一交易數據包括:確定所述第一交易數據在第一節點中對應的第一條帶,從所述第一節點中與所述目標區塊的區塊標識和所述第一條帶的標識關聯存儲的分片中讀取所述第一交易數據。
8.根據權利要求6所述的方法,還包括:
9.根據權利要求6所述的方法,還包括:
10.一種區塊鏈節點,包括存儲器和處理器,所述存儲器中存儲有可執行代碼,所述處理器執行所述可執行代碼時,實現權利要求1-9中任一項所述的方法。