本技術(shù)涉及區(qū)塊鏈,特別是涉及一種區(qū)塊鏈數(shù)據(jù)的處理方法、裝置、計算機設備、存儲介質(zhì)和計算機程序產(chǎn)品。
背景技術(shù):
1、隨著區(qū)塊鏈技術(shù)的發(fā)展,越來越多的業(yè)務系統(tǒng)開始使用區(qū)塊鏈技術(shù)。由于區(qū)塊鏈具有去中心化、透明性和可追溯性的特點,給區(qū)塊鏈中的交易提供了安全保障。傳統(tǒng)技術(shù)中,主節(jié)點獲取服務器本地的時間作為區(qū)塊打包的時間,將該時間添加至區(qū)塊中,該時間又稱作上鏈時間。上鏈時間具有重要的作用,例如上鏈時間可以追溯數(shù)據(jù)或信息的來源和變更歷史,確保數(shù)據(jù)的真實性和完整性。
2、然而,由于區(qū)塊鏈屬于分布式系統(tǒng),支持部分節(jié)點作惡,即部分節(jié)點惡意寫入不合理時間。相關(guān)技術(shù)中,從節(jié)點對上鏈時間進行時間范圍合理性的驗證,但通常這個時間范圍比較寬泛,無法保證提案時間的準確性。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種能夠提高提案時間準確性的區(qū)塊鏈數(shù)據(jù)的處理方法、裝置、計算機設備、存儲介質(zhì)和計算機程序產(chǎn)品。
2、第一方面,本技術(shù)提供了一種區(qū)塊鏈數(shù)據(jù)的處理方法。所述方法包括:
3、接收主節(jié)點發(fā)送的待共識的區(qū)塊,以進入當前輪次的共識過程;
4、從所述區(qū)塊中獲取提案時間戳;其中,所述提案時間戳為基于所述主節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述主節(jié)點在所述區(qū)塊的打包階段的本地時間進行計算得到;
5、基于所述從節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述從節(jié)點的當前本地時間進行計算,得到校驗時間戳;
6、在所述提案時間戳與所述校驗時間戳的距離小于預設范圍內(nèi)的情況下,執(zhí)行所述區(qū)塊中的交易,得到執(zhí)行結(jié)果;
7、基于所述執(zhí)行結(jié)果得到對應的投票結(jié)果,并得到所述投票結(jié)果對應的本地時間作為所述從節(jié)點的當前投票階段對應的候選時間戳,所述當前投票階段對應的候選時間戳攜帶于當前投票階段對應的投票信息中。
8、第二方面,本技術(shù)還提供了一種區(qū)塊鏈數(shù)據(jù)的處理方法,應用于區(qū)塊鏈系統(tǒng)中的主節(jié)點,所述方法包括:
9、獲取預設數(shù)量的交易,并基于所述交易生成待共識的區(qū)塊,以進入當前輪次的共識過程;
10、基于所述主節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述主節(jié)點的在區(qū)塊打包階段的本地時間,確定所述區(qū)塊的提案時間戳;
11、將所述提案時間戳添加至所述區(qū)塊,并將所述區(qū)塊廣播至區(qū)塊鏈中的各從節(jié)點,以使從節(jié)點基于所述從節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述從節(jié)點的當前本地時間進行計算,得到校驗時間戳;所述從節(jié)點基于所述候選時間戳和所述校驗時間戳對所述區(qū)塊進行校驗。
12、第三方面,本技術(shù)還提供了一種區(qū)塊鏈數(shù)據(jù)的處理裝置,應用于區(qū)塊鏈系統(tǒng)中的從節(jié)點,該裝置包括:
13、接收模塊,用于接收主節(jié)點發(fā)送的待共識的區(qū)塊,以進入當前輪次的共識過程;
14、第一獲取模塊,用于從所述區(qū)塊中獲取提案時間戳;其中,所述提案時間戳為基于所述主節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述主節(jié)點在所述區(qū)塊的打包階段的本地時間進行計算得到;
15、校驗時間戳生成模塊,用于基于所述從節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述從節(jié)點的當前本地時間進行計算,得到校驗時間戳;
16、執(zhí)行模塊,用于在所述提案時間戳與所述校驗時間戳的距離小于預設范圍內(nèi)的情況下,執(zhí)行所述區(qū)塊中的交易,得到執(zhí)行結(jié)果;
17、投票結(jié)果生成模塊,用于基于所述執(zhí)行結(jié)果得到對應的投票結(jié)果,并得到所述投票結(jié)果對應的本地時間作為所述從節(jié)點的當前投票階段對應的候選時間戳,所述當前投票階段對應的候選時間戳攜帶于當前投票階段對應的投票信息中。
18、在一個實施例中,所述主節(jié)點還用于:
19、基于所述主節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳中,所述主節(jié)點分別確定收集到的所述主節(jié)點的候選時間戳,以及收集到的其他節(jié)點的候選時間戳;
20、基于收集到的其他節(jié)點的候選時間戳,以及收集到的所述主節(jié)點的候選時間戳,得到累積時間偏差;
21、基于所述累積時間偏差以及所述其他節(jié)點的數(shù)量,得到平均時間偏差;
22、對所述主節(jié)點在所述區(qū)塊的打包階段的本地時間和所述平均時間偏差進行求和計算,得到提案時間戳。
23、在一個實施例中,所述校驗時間戳生成模塊還用于:
24、從所述從節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳中,分別確定收集到的所述從節(jié)點的候選時間戳,以及收集到的其他節(jié)點的候選時間戳;
25、基于所述收集到的其他節(jié)點的所述候選時間戳,以及所述收集到的所述從節(jié)點的所述候選時間戳,得到累積時間偏差;
26、基于所述累積偏差以及所述收集到的其他節(jié)點的數(shù)量,得到平均時間偏差;
27、對所述從節(jié)點的當前本地時間和所述平均時間偏差進行融合計算,得到校驗時間戳。
28、在一個實施例中,區(qū)塊鏈數(shù)據(jù)的處理裝置還包括:
29、第一廣播模塊,用于將當前投票階段對應的投票信息廣播至所述區(qū)塊鏈系統(tǒng)中的其他節(jié)點,接收其他節(jié)點廣播的當前投票階段對應的投票信息;
30、第一收集模塊,用于收集各所述其他節(jié)點廣播的當前投票階段對應的合法投票信息攜帶的候選時間戳;
31、投票信息生成模塊,用于基于預設數(shù)量的其他節(jié)點廣播的當前投票階段對應的投票信息中的投票結(jié)果,得到所述從節(jié)點的下一個投票階段對應的投票信息。
32、在一個實施例中,區(qū)塊鏈數(shù)據(jù)的處理裝置還包括:
33、進入模塊,用于進入下一個投票階段;其中,所述下一個投票階段對應的投票信息中攜帶所述從節(jié)點在當前投票階段收集的各所述其他節(jié)點廣播的當前投票階段對應的候選時間戳;
34、第二廣播模塊,用于將所述從節(jié)點的下一個投票階段對應的投票信息廣播至所述區(qū)塊鏈系統(tǒng)中的其他節(jié)點,接收其他節(jié)點廣播的下一個投票階段對應的投票信息;
35、第二收集模塊,用于收集各所述其他節(jié)點廣播的下一個投票階段對應的合法投票信息攜帶的候選時間戳;直至收集完畢其他節(jié)點廣播的目標投票階段對應的合法投票信息攜帶的候選時間戳,得到所述從節(jié)點收集到的總的候選時間戳。
36、在一個實施例中,所述執(zhí)行模塊還用于:
37、從所述區(qū)塊的附加數(shù)據(jù)中,分別獲取節(jié)點及對應的候選時間戳;
38、將所述附加數(shù)據(jù)中的候選時間戳與所述從節(jié)點在上一輪次的共識過程中收集的總的候選時間戳進行比較;
39、針對同一節(jié)點的候選時間戳,在所述附加數(shù)據(jù)中存儲的與所述從節(jié)點收集均相同,以及所述提案時間戳與所述校驗時間戳的距離小于預設范圍內(nèi)的情況下,執(zhí)行所述區(qū)塊中的交易。
40、在一個實施例中,所述執(zhí)行模塊還用于:
41、從所述區(qū)塊的附加數(shù)據(jù)中,分別獲取節(jié)點及對應的候選時間戳;
42、將所述附加數(shù)據(jù)中的候選時間戳與所述從節(jié)點在上一輪次的共識過程中收集的總的候選時間戳進行比較;
43、針對同一節(jié)點的候選時間戳,在所述附加數(shù)據(jù)中存儲的與所述從節(jié)點收集均相同,以及所述提案時間戳與所述校驗時間戳的距離小于預設范圍內(nèi)的情況下,執(zhí)行所述區(qū)塊中的交易。
44、在一個實施例中,所述執(zhí)行模塊還用于:
45、將所述附加數(shù)據(jù)中的總的候選時間戳,通過節(jié)點和對應候選時間戳匹配存儲于列表中;
46、遍歷所述列表中的節(jié)點,在所述從節(jié)點在上一輪次的共識過程中收集的總的候選時間戳中存在遍歷的所述節(jié)點對應的候選時間戳的情況下,比較遍歷的節(jié)點的候選時間戳與所述從節(jié)點收集的對應候選時間戳。
47、在一個實施例中,區(qū)塊鏈數(shù)據(jù)的處理裝置還包括:校驗模塊,所述校驗模塊用于:
48、從所述區(qū)塊的附加數(shù)據(jù)中,分別獲取節(jié)點及對應的候選時間戳;
49、將所述附加數(shù)據(jù)中的候選時間戳與所述從節(jié)點收集的候選時間戳進行比較;
50、在至少一個同一節(jié)點的候選時間戳在所述附加數(shù)據(jù)中存儲的與所述從節(jié)點中收集的不一致的情況下,無需執(zhí)行所述區(qū)塊中的交易,確定投票結(jié)果為反對票。
51、在一個實施例中,所述執(zhí)行模塊還用于:
52、從所述區(qū)塊的附加數(shù)據(jù)中分別獲取節(jié)點的時間戳簽名;其中,所述時間戳簽名包括對提案時間戳、區(qū)塊高度和共識輪次的簽名;
53、分別驗證每個節(jié)點對應的所述時間戳簽名,在全部驗證通過以及所述提案時間戳與所述校驗時間戳的距離小于預設范圍內(nèi)的情況下,執(zhí)行所述區(qū)塊中的交易。
54、在一個實施例中,所述執(zhí)行模塊還用于:
55、在至少一個時間戳簽名驗證不通過的情況下,無需執(zhí)行所述區(qū)塊中的交易,確定投票結(jié)果為反對票。
56、在一個實施例中,所述裝置還包括:
57、進入模塊,還用于進入下一個投票階段,接收其他節(jié)點廣播的下一個投票階段對應的投票信息;其中,所述下一個投票階段對應的投票信息中攜帶所述其他節(jié)點在當前投票階段收集的除自身以外的其他節(jié)點廣播的當前投票階段對應的候選時間戳,以及對應的時間戳簽名;
58、第一驗證模塊,用于分別驗證每個所述時間戳簽名;在各個所述時間戳簽名均驗證通過的情況下,確定其他節(jié)點廣播的下一個投票階段對應的投票信息為合法投票信息,將所述合法投票信息中的候選時間戳收集至緩存中。
59、在一個實施例中,所述第一驗證模塊還用于:
60、獲取接收到其他節(jié)點廣播的下一個投票階段對應的投票信息的候選時間戳;
61、在接收到的所述候選時間戳與所述從節(jié)點當前的本地時間的距離位于閾值范圍以內(nèi),確定其他節(jié)點廣播的下一個投票階段對應的投票信息為合法投票信息。
62、在一個實施例中,所述第一驗證模塊還用于:
63、從所述其他節(jié)點廣播的下一個投票階段對應的投票信息分別獲取候選時間戳;
64、在所述從節(jié)點緩存中存在所述其他節(jié)點廣播的下一個投票階段對應的投票信息中候選時間戳,且緩存中的候選時間戳與所述其他節(jié)點的候選時間戳相等的情況下,以及各個所述時間戳簽名均驗證通過的情況下,確定其他節(jié)點廣播的下一個投票階段對應的投票信息為合法投票信息。
65、在一個實施例中,區(qū)塊鏈數(shù)據(jù)的處理裝置還包括第二驗證模塊,所述第二驗證模塊用于:
66、從所述其他節(jié)點廣播的下一個投票階段對應的投票信息分別獲取候選時間戳;
67、在所述從節(jié)點緩存中存在所述其他節(jié)點廣播的下一個投票階段對應的投票信息中候選時間戳,且緩存中的候選時間戳與所述其他節(jié)點的候選時間戳不相等的情況下,確定所述其他節(jié)點廣播的下一個投票階段對應的投票信息為不合法投票信息;
68、丟棄所述不合法的投票信息,并從節(jié)點緩存中刪除所述其他節(jié)點的候選時間戳。
69、在一個實施例中,區(qū)塊鏈數(shù)據(jù)的處理裝置還包括存儲模塊,所述存儲模塊用于在所述區(qū)塊在所述目標投票階段被共識通過的情況下,將所述從節(jié)點在當前輪次的共識過程收集的總的候選時間戳存儲至所述區(qū)塊的附加數(shù)據(jù)中。
70、第四方面,本技術(shù)還提供了一種區(qū)塊鏈數(shù)據(jù)的處理裝置,應用于區(qū)塊鏈系統(tǒng)中的主節(jié)點,所述方法包括:
71、第二獲取模塊,用于獲取預設數(shù)量的交易,并基于所述交易生成待共識的區(qū)塊,以進入當前輪次的共識過程;
72、提案時間戳生成模塊,用于基于所述主節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述主節(jié)點的在區(qū)塊打包階段的本地時間,確定所述區(qū)塊的提案時間戳;
73、區(qū)塊生成模塊,用于將所述提案時間戳添加至所述區(qū)塊,并將所述區(qū)塊廣播至區(qū)塊鏈中的各從節(jié)點,以使從節(jié)點基于所述從節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述從節(jié)點的當前本地時間進行計算,得到校驗時間戳;所述從節(jié)點基于所述候選時間戳和所述校驗時間戳對所述區(qū)塊進行校驗。
74、第五方面,本技術(shù)還提供了一種計算機設備。所述計算機設備包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)本公開實施例任一項所述的方法。
75、第六方面,本技術(shù)還提供了一種計算機可讀存儲介質(zhì)。所述計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)本公開實施例任一項所述的方法。
76、第七方面,本技術(shù)還提供了一種計算機程序產(chǎn)品。所述計算機程序產(chǎn)品,包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)本公開實施例任一項所述的方法。
77、上述區(qū)塊鏈數(shù)據(jù)的處理方法、裝置、計算機設備、存儲介質(zhì)和計算機程序產(chǎn)品,通過所述主節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述主節(jié)點在所述區(qū)塊的打包階段的本地時間,確定提案時間戳。相較于現(xiàn)有技術(shù)中直接使用區(qū)塊打包階段的本體時間,本公開實施例增加了對除主節(jié)點以外的其他節(jié)點時間,從而確定的提案時間戳更加接近于從節(jié)點的當前時間,后續(xù)從節(jié)點對該提按時間戳進行驗證時,可以設置相較于現(xiàn)有技術(shù)較窄的預設范圍,提高了候選時間戳驗證的準確率,提高了作惡節(jié)點的作惡難度,使其不容易作惡。并且在主節(jié)點本地時間持續(xù)領(lǐng)先或持續(xù)滯后于從節(jié)點時,本技術(shù)確定的提案時間戳也不會上述現(xiàn)象的影響。進一步地,本公開實施例,通過所述從節(jié)點在上一輪次共識過程中目標投票階段收集的各個節(jié)點的合法投票信息對應的候選時間戳,以及所述從節(jié)點的當前本地時間進行計算,確定校驗時間戳。校驗時間戳也不再單純使用從節(jié)點本地時間進行校驗,而是結(jié)合了從節(jié)點在上一輪次共識過程中收集的候選時間戳,有助于進一步限定預設范圍的大小,提高時間戳驗證的有效性,有效地過濾作惡節(jié)點發(fā)送的信息。