本申請一個或多個實施例涉及區(qū)塊鏈,尤其涉及一種區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)存儲方法和裝置。
背景技術(shù):
1、區(qū)塊鏈(blockchain)是分布式數(shù)據(jù)存儲、點對點傳輸、共識協(xié)議、加密算法等計算機(jī)技術(shù)的新型應(yīng)用模式。區(qū)塊鏈系統(tǒng)中按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證的不可篡改和不可偽造的分布式賬本。由于區(qū)塊鏈具有去中心化、信息不可篡改、自治性等特性,使得區(qū)塊鏈的應(yīng)用越來越廣泛。
2、在區(qū)塊鏈系統(tǒng)中,各個節(jié)點上的區(qū)塊數(shù)據(jù)和狀態(tài)數(shù)據(jù)需要保持一致,這就意味著n個節(jié)點需要存儲n份全量區(qū)塊數(shù)據(jù),以及n份全量狀態(tài)數(shù)據(jù)。隨著區(qū)塊鏈系統(tǒng)的持續(xù)運行,區(qū)塊數(shù)據(jù)和狀態(tài)數(shù)據(jù)的數(shù)據(jù)量都會越來越大,因此區(qū)塊數(shù)據(jù)的存儲成本也就會越來越高。此外,如果要增加一個新的節(jié)點,就需要將全量區(qū)塊數(shù)據(jù)和全量狀態(tài)數(shù)據(jù)拷貝到該節(jié)點上,通常需要耗費較長時間。
技術(shù)實現(xiàn)思路
1、本申請一個或多個實施例提供技術(shù)方案如下:
2、本申請?zhí)峁┮环N區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)存儲方法;其中,所述區(qū)塊鏈系統(tǒng)中參與共識的區(qū)塊鏈節(jié)點被劃分為至少一個區(qū)塊鏈節(jié)點分組;與所述區(qū)塊鏈系統(tǒng)對應(yīng)的區(qū)塊鏈服務(wù)平臺為各個區(qū)塊鏈節(jié)點分組部署了對應(yīng)的存儲服務(wù);所述存儲服務(wù)的存儲空間用于存儲所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點已共識處理通過的區(qū)塊,以及與所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的指示信息;所述指示信息用于指示與其對應(yīng)的區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊;
3、所述方法應(yīng)用于與所述區(qū)塊鏈系統(tǒng)中的目標(biāo)區(qū)塊鏈節(jié)點分組對應(yīng)的目標(biāo)存儲服務(wù),包括:
4、獲取所述目標(biāo)區(qū)塊鏈節(jié)點分組中的目標(biāo)區(qū)塊鏈節(jié)點響應(yīng)于對第一區(qū)塊的共識處理通過,發(fā)送的與所述第一區(qū)塊對應(yīng)的存儲請求;
5、響應(yīng)于所述存儲請求,確定所述目標(biāo)存儲服務(wù)的目標(biāo)存儲空間中是否已存儲了所述第一區(qū)塊;
6、如果所述目標(biāo)存儲空間中未存儲所述第一區(qū)塊,將所述第一區(qū)塊以及用于指示所述第一區(qū)塊為所述目標(biāo)區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的指示信息存儲至所述目標(biāo)存儲空間;
7、如果所述目標(biāo)存儲空間中已存儲了所述第一區(qū)塊,將所述目標(biāo)存儲空間中存儲的與所述目標(biāo)區(qū)塊鏈節(jié)點對應(yīng)的指示信息更新為用于指示所述第一區(qū)塊為所述目標(biāo)區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的指示信息。
8、本申請還提供一種區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)存儲裝置;其中,所述區(qū)塊鏈系統(tǒng)中參與共識的區(qū)塊鏈節(jié)點被劃分為至少一個區(qū)塊鏈節(jié)點分組;與所述區(qū)塊鏈系統(tǒng)對應(yīng)的區(qū)塊鏈服務(wù)平臺為各個區(qū)塊鏈節(jié)點分組部署了對應(yīng)的存儲服務(wù);所述存儲服務(wù)的存儲空間用于存儲所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點已共識處理通過的區(qū)塊,以及與所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的指示信息;所述指示信息用于指示與其對應(yīng)的區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊;
9、所述裝置應(yīng)用于與所述區(qū)塊鏈系統(tǒng)中的目標(biāo)區(qū)塊鏈節(jié)點分組對應(yīng)的目標(biāo)存儲服務(wù),包括:
10、獲取單元,獲取所述目標(biāo)區(qū)塊鏈節(jié)點分組中的目標(biāo)區(qū)塊鏈節(jié)點響應(yīng)于對第一區(qū)塊的共識處理通過,發(fā)送的與所述第一區(qū)塊對應(yīng)的存儲請求;
11、確定單元,響應(yīng)于所述存儲請求,確定所述目標(biāo)存儲服務(wù)的目標(biāo)存儲空間中是否已存儲了所述第一區(qū)塊;
12、存儲單元,如果所述目標(biāo)存儲空間中未存儲所述第一區(qū)塊,將所述第一區(qū)塊以及用于指示所述第一區(qū)塊為所述目標(biāo)區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的指示信息存儲至所述目標(biāo)存儲空間;
13、更新單元,如果所述目標(biāo)存儲空間中已存儲了所述第一區(qū)塊,將所述目標(biāo)存儲空間中存儲的與所述目標(biāo)區(qū)塊鏈節(jié)點對應(yīng)的指示信息更新為用于指示所述第一區(qū)塊為所述目標(biāo)區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的指示信息。
14、本申請還提供一種電子設(shè)備,包括:
15、處理器;
16、用于存儲處理器可執(zhí)行指令的存儲器;
17、其中,所述處理器通過運行所述可執(zhí)行指令以實現(xiàn)如上述任一項所述方法的步驟。
18、本申請還提供一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)指令,該指令被處理器執(zhí)行時實現(xiàn)如上述任一項所述方法的步驟。
19、在上述技術(shù)方案中,該區(qū)塊鏈系統(tǒng)中參與共識的區(qū)塊鏈節(jié)點被劃分為至少一個區(qū)塊鏈節(jié)點分組,與該區(qū)塊鏈系統(tǒng)對應(yīng)的區(qū)塊鏈服務(wù)平臺為各個區(qū)塊鏈節(jié)點分組部署了對應(yīng)的存儲服務(wù),該存儲服務(wù)的存儲空間用于存儲該區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點已共識處理通過的區(qū)塊以及與該區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的指示信息,該指示信息用于指示該區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊;與該區(qū)塊鏈系統(tǒng)中的任一區(qū)塊鏈節(jié)點分組對應(yīng)的存儲服務(wù)在存儲該區(qū)塊鏈節(jié)點分組中的某個區(qū)塊鏈節(jié)點已共識處理通過的區(qū)塊時,可以先確定該存儲服務(wù)的存儲空間中是否已存儲了該區(qū)塊,如果該存儲空間中未存儲該區(qū)塊,則可以將該區(qū)塊以及用于指示該區(qū)塊為該區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的指示信息存儲至該存儲空間,如果該存儲空間中已存儲了該區(qū)塊,則可以將該存儲空間中存儲的與該區(qū)塊鏈節(jié)點對應(yīng)的指示信息更新為用于指示該區(qū)塊為該區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的指示信息,而不再需要將該區(qū)塊存儲至該存儲空間。
20、采用上述方式,可以通過為各個區(qū)塊鏈節(jié)點分組部署的與其對應(yīng)的存儲服務(wù),對區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)進(jìn)行存儲,并且實現(xiàn)了針對各個存儲服務(wù)的存儲空間中存儲的區(qū)塊數(shù)據(jù)的去重處理,使得只需要在每個存儲服務(wù)的存儲空間中存儲一份全量區(qū)塊數(shù)據(jù),而不再需要在每個參與共識的區(qū)塊鏈節(jié)點上存儲一份全量區(qū)塊數(shù)據(jù)。如果將n個區(qū)塊鏈節(jié)點劃分為x(1≤x≤n)個區(qū)塊鏈節(jié)點分組,那么就只需要存儲x份全量區(qū)塊數(shù)據(jù),而不再需要存儲n份全量區(qū)塊數(shù)據(jù),即存儲需求可以降低至原先的x/n。這樣,可以降低區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)的存儲成本,并且在新節(jié)點加入?yún)^(qū)塊鏈系統(tǒng)時,只需要調(diào)整為新節(jié)點設(shè)置的指示信息即可,從而可以減少新節(jié)點加入?yún)^(qū)塊鏈系統(tǒng)的耗時,實現(xiàn)新節(jié)點在區(qū)塊鏈系統(tǒng)中的秒級加入。
1.一種區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)存儲方法;其中,所述區(qū)塊鏈系統(tǒng)中參與共識的區(qū)塊鏈節(jié)點被劃分為至少一個區(qū)塊鏈節(jié)點分組;與所述區(qū)塊鏈系統(tǒng)對應(yīng)的區(qū)塊鏈服務(wù)平臺為各個區(qū)塊鏈節(jié)點分組部署了對應(yīng)的存儲服務(wù);所述存儲服務(wù)的存儲空間用于存儲所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點已共識處理通過的區(qū)塊,以及與所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的指示信息;所述指示信息用于指示與其對應(yīng)的區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊;
2.根據(jù)權(quán)利要求1所述的方法,所述區(qū)塊鏈服務(wù)平臺為baas平臺;所述存儲空間為云存儲空間。
3.根據(jù)權(quán)利要求1所述的方法,所述存儲空間包含用于存儲區(qū)塊的第一子空間,以及與所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的第二子空間;所述第二子空間用于存儲與所述各個區(qū)塊鏈節(jié)點對應(yīng)的所述指示信息;
4.根據(jù)權(quán)利要求3所述的方法,所述存儲空間包含的與所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的所述第二子空間,還用于暫存各個區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊;
5.根據(jù)權(quán)利要求4所述的方法,將所述第一區(qū)塊暫存至所述目標(biāo)存儲空間包含的與所述目標(biāo)區(qū)塊鏈節(jié)點對應(yīng)的所述第二子空間,包括:
6.根據(jù)權(quán)利要求5所述的方法,確定所述目標(biāo)存儲空間包含的與其它區(qū)塊鏈節(jié)點對應(yīng)的所述第二子空間中,是否已暫存了所述第一區(qū)塊,包括:
7.根據(jù)權(quán)利要求6所述的方法,所述方法還包括:
8.根據(jù)權(quán)利要求7所述的方法,在所述目標(biāo)區(qū)塊鏈節(jié)點針對所述第一區(qū)塊的至少下一個區(qū)塊的共識處理通過后,將所述目標(biāo)存儲空間包含的與所述目標(biāo)區(qū)塊鏈節(jié)點對應(yīng)的所述第二子空間中暫存的所述第一區(qū)塊,提交到所述目標(biāo)存儲空間包含的所述第一子空間,包括:
9.根據(jù)權(quán)利要求3所述的方法,所述存儲空間包含的所述第一子空間中以鏈?zhǔn)浇Y(jié)構(gòu)存儲區(qū)塊。
10.根據(jù)權(quán)利要求3所述的方法,所述方法還包括:
11.根據(jù)權(quán)利要求10所述的方法,從所述目標(biāo)存儲空間中讀取所述第二區(qū)塊,包括:
12.根據(jù)權(quán)利要求1所述的方法,所述指示信息包括與其對應(yīng)的區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊的區(qū)塊高度。
13.一種區(qū)塊鏈系統(tǒng)中的區(qū)塊數(shù)據(jù)存儲裝置;其中,所述區(qū)塊鏈系統(tǒng)中參與共識的區(qū)塊鏈節(jié)點被劃分為至少一個區(qū)塊鏈節(jié)點分組;與所述區(qū)塊鏈系統(tǒng)對應(yīng)的區(qū)塊鏈服務(wù)平臺為各個區(qū)塊鏈節(jié)點分組部署了對應(yīng)的存儲服務(wù);所述存儲服務(wù)的存儲空間用于存儲所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點已共識處理通過的區(qū)塊,以及與所述區(qū)塊鏈節(jié)點分組中的各個區(qū)塊鏈節(jié)點對應(yīng)的指示信息;所述指示信息用于指示與其對應(yīng)的區(qū)塊鏈節(jié)點已共識處理通過的最新區(qū)塊;
14.一種電子設(shè)備,包括:
15.一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)指令,該指令被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至12中任一項所述的方法。