本申請涉及區塊鏈,具體涉及一種區塊鏈狀態數據的驗證方法、設備及存儲介質。
背景技術:
1、區塊鏈節點以有序連接的區塊形式存儲數據,區塊鏈交易包含在區塊中,是區塊的主要數據內容。區塊鏈節點同時維護著一個狀態數據庫,根據區塊中包含的交易記錄,提取每個交易包含的合約變量,根據寫入的先后順序寫入狀態數據庫。
2、狀態數據庫基于交易結果構建,其中的數據沒有專門的驗證機制。如果需要驗證狀態數據庫中的狀態變量的值,需要找到變量對應的交易,驗證交易記錄的有效性,從而根據交易記錄中包含的執行結果,與狀態數據庫中的變量值進行比對,確認變量是否被篡改。
3、現有區塊鏈技術對狀態數據庫中的狀態變量的正確性檢測,依賴于對交易和區塊的數字簽名驗證,存在一種可能情況:使用歷史交易記錄結果替換當前狀態變量值,在滿足數字簽名驗證的情況下,實現對狀態變量的篡改,該情況下對于狀態變量的正確性檢測結果是錯誤的。
技術實現思路
1、本申請的至少一個實施例提供了一種區塊鏈狀態數據的驗證方法、設備及存儲介質,用于解決現有技術中對狀態變量的正確性檢測結果不準確的問題。
2、為了解決上述技術問題,本申請是這樣實現的:
3、第一方面,本申請實施例提供了一種區塊鏈狀態數據的驗證方法,包括:
4、在區塊鏈交易過程中記錄發生變化的狀態變量,獲得狀態變量集合;
5、根據所述狀態變量集合創建狀態變量更新記錄;
6、根據所述狀態變量更新記錄對狀態數據庫中的狀態變量的正確性進行驗證。
7、可選的,所述在區塊鏈交易過程中記錄發生變化的狀態變量,獲得狀態變量集合,包括:
8、根據區塊鏈包含的區塊設置區塊周期,每個所述區塊周期包含至少一個區塊;
9、在區塊鏈交易過程中,記錄所述區塊周期內的區塊包含的交易記錄中發生變更的狀態變量,在所述區塊周期結束時獲得所述區塊周期對應的狀態變量集合。
10、可選的,所述方法還包括:
11、在每一個區塊周期的交易開始時將所述狀態變量集合置為空集;
12、其中,所述狀態變量集合包括狀態變量名稱。
13、可選的,所述根據所述狀態變量集合創建狀態變量更新記錄,包括:
14、對所述狀態變量集合進行簽名,生成狀態變量更新記錄。
15、可選的,所述方法還包括:
16、獲取參與所述簽名的節點標識和用于驗證所述狀態變量更新記錄的有效性的公鑰;
17、和/或,
18、生成數字證書,所述數字證書包含參與所述簽名的節點標識和用于驗證所述狀態變量更新記錄的有效性的公鑰。
19、可選的,在根據所述狀態變量集合創建狀態變量更新記錄之后,所述方法還包括:
20、將所述狀態變量更新記錄加入區塊鏈。
21、可選的,所述將所述狀態變量更新記錄加入區塊鏈,包括以下至少一項:
22、在新生成的區塊中加入所述狀態變量更新記錄;
23、創建所述區塊鏈的子鏈或者平行鏈,通過所述子鏈或者平行鏈中的區塊記錄所述狀態變量更新記錄。
24、可選的,所述根據所述狀態變量更新記錄對狀態數據庫中的狀態變量的正確性進行驗證,包括:
25、確定所述狀態數據庫中的待驗證變量對應的交易記錄以及所述交易記錄關聯的目標區塊;
26、確定所述目標區塊到當前區塊高度之間包含的區塊周期;
27、根據所述區塊周期對應的第一狀態變量集合和/或第一狀態變量更新記錄,對所述交易記錄進行驗證,獲得交易記錄的驗證結果;
28、根據所述交易記錄的驗證結果,確定所述待驗證變量的正確性。
29、可選的,所述根據所述區塊周期對應的第一狀態變量集合和/或第一狀態變量更新記錄,對所述交易記錄進行驗證,獲得交易記錄的驗證結果,包括:
30、對所述第一狀態變量集合以及所述第一狀態變量更新記錄進行有效性驗證;
31、在所述第一狀態變量集合以及所述第一狀態變量更新記錄有效的情況下,查找所述第一狀態變量集合中是否包含所述待驗證變量;
32、若所述第一狀態變量集合中包含所述待驗證變量,則確定所述待驗證變量對應的交易記錄錯誤;或者,若所述第一狀態變量集合中未包含所述待驗證變量,則確定所述待驗證變量對應的交易記錄正確。
33、可選的,所述根據所述交易記錄的驗證結果,確定所述待驗證變量的正確性,包括:
34、若所述交易記錄錯誤,則所述待驗證變量的值錯誤;
35、若所述交易記錄正確,則使用所述交易記錄中所述待驗證變量對應的值與所述狀態數據庫中所述待驗證變量對應的值進行比較,確定所述待驗證變量的正確性。
36、第二方面,本申請實施例提供了一種區塊鏈設備,包括收發機和處理器,其中,
37、所述處理器,用于在區塊鏈交易過程中記錄發生變化的狀態變量,獲得狀態變量集合;
38、根據所述狀態變量集合創建狀態變量更新記錄;
39、根據所述狀態變量更新記錄對狀態數據庫中的狀態變量的正確性進行驗證。
40、第三方面,本申請實施例提供了一種區塊鏈狀態數據的驗證裝置,包括:
41、記錄模塊,用于在區塊鏈交易過程中記錄發生變化的狀態變量,獲得狀態變量集合;
42、創建模塊,用于根據所述狀態變量集合創建狀態變量更新記錄;
43、驗證模塊,用于根據所述狀態變量更新記錄對狀態數據庫中的狀態變量的正確性進行驗證。
44、第四方面,本申請實施例提供了一種區塊鏈設備,包括:處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的程序,所述程序被所述處理器執行時實現如第一方面所述的方法的步驟。
45、第五方面,本申請實施例提供了一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質上存儲有計算機程序,所述計算機程序被處理器執行時實現如第一方面所述的區塊鏈狀態數據的驗證方法的步驟。
46、本申請的實施例,通過記錄交易過程中的狀態變量的變更情況,使得區塊鏈節點能夠根據記錄的數據驗證狀態數據庫中的狀態變量值所對應的交易記錄是否被修改,從而確定狀態變量值是否可信,該方式能夠準確地驗證狀態數據庫中的狀態變量值是否被篡改,使得區塊鏈節點能夠快速檢測出攻擊者對狀態數據庫中變量的修改,有利于提高區塊鏈系統的可用性和數據有效性。
1.一種區塊鏈狀態數據的驗證方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述在區塊鏈交易過程中記錄發生變化的狀態變量,獲得狀態變量集合,包括:
3.根據權利要求2所述的方法,其特征在于,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,所述根據所述狀態變量集合創建狀態變量更新記錄,包括:
5.根據權利要求4所述的方法,其特征在于,所述方法還包括:
6.根據權利要求1所述的方法,其特征在于,在根據所述狀態變量集合創建狀態變量更新記錄之后,所述方法還包括:
7.根據權利要求6所述的方法,其特征在于,所述將所述狀態變量更新記錄加入區塊鏈,包括以下至少一項:
8.根據權利要求1所述的方法,其特征在于,所述根據所述狀態變量更新記錄對狀態數據庫中的狀態變量的正確性進行驗證,包括:
9.根據權利要求8所述的方法,其特征在于,所述根據所述區塊周期對應的第一狀態變量集合和/或第一狀態變量更新記錄,對所述交易記錄進行驗證,獲得交易記錄的驗證結果,包括:
10.根據權利要求8所述的方法,其特征在于,所述根據所述交易記錄的驗證結果,確定所述待驗證變量的正確性,包括:
11.一種區塊鏈設備,其特征在于,包括收發機和處理器,其中,
12.一種區塊鏈狀態數據的驗證裝置,其特征在于,包括:
13.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質上存儲有計算機程序,所述計算機程序被處理器執行時實現如權利要求1至10任一項所述的區塊鏈狀態數據的驗證方法的步驟。