本技術涉及計算機,尤其涉及區(qū)塊鏈,具體涉及一種區(qū)塊處理方法、一種區(qū)塊處理裝置、一種計算機設備、一種計算機可讀存儲介質、以及一種計算機程序產(chǎn)品。
背景技術:
1、在區(qū)塊鏈技術中,區(qū)塊上傳到區(qū)塊鏈之前需要進行區(qū)塊驗證,區(qū)塊驗證是指對區(qū)塊中的交易進行驗證。區(qū)塊中的交易之間具備交易依賴關系,在區(qū)塊的驗證過程中,如果不能按照合理的驗證順序對交易進行驗證,將導致驗證時交易依賴嚴重,例如,交易a依賴于交易b,如果沒有對交易b進行驗證,那么即使存在空閑的交易驗證資源,也不能對交易a進行驗證,這樣會嚴重影響區(qū)塊的驗證效率。
技術實現(xiàn)思路
1、本技術實施例提供了一種區(qū)塊處理方法、裝置及計算機設備、存儲介質、程序產(chǎn)品,可以提升區(qū)塊的驗證效率。
2、一方面,本技術實施例提供了一種區(qū)塊處理方法,該區(qū)塊處理方法包括:
3、接收提案節(jié)點發(fā)送的待驗證的區(qū)塊;區(qū)塊包括待驗證的多個交易;
4、獲取區(qū)塊的區(qū)塊驗證指示信息;區(qū)塊驗證指示信息包括多個交易之間的交易依賴關系,以及在交易依賴關系下每個交易的交易驗證指示信息;任一個交易的交易驗證指示信息用于指示從相應交易開始驗證,到相應交易的依賴鏈中的全部交易驗證結束所需的預估資源消耗信息;
5、根據(jù)交易依賴關系以及每個交易的交易驗證指示信息,對多個交易進行排序,得到多個交易的驗證順序;
6、在區(qū)塊的驗證過程中,按照驗證順序對多個交易進行驗證,得到區(qū)塊的驗證結果,并將驗證結果反饋至提案節(jié)點。
7、相應地,本技術實施例提供了一種區(qū)塊處理裝置,該區(qū)塊處理裝置包括:
8、通信單元,用于接收提案節(jié)點發(fā)送的待驗證的區(qū)塊;區(qū)塊包括待驗證的多個交易;
9、處理單元,用于獲取區(qū)塊的區(qū)塊驗證指示信息;區(qū)塊驗證指示信息包括多個交易之間的交易依賴關系,以及在交易依賴關系下每個交易的交易驗證指示信息;任一個交易的交易驗證指示信息用于指示從相應交易開始驗證,到相應交易的依賴鏈中的全部交易驗證結束所需的預估資源消耗信息;
10、處理單元,還用于根據(jù)交易依賴關系以及每個交易的交易驗證指示信息,對多個交易進行排序,得到多個交易的驗證順序;
11、處理單元,還用于在區(qū)塊的驗證過程中,按照驗證順序對多個交易進行驗證,得到區(qū)塊的驗證結果,并將驗證結果反饋至提案節(jié)點。
12、在一種實現(xiàn)方式中,處理單元,用于根據(jù)交易依賴關系以及每個交易的交易驗證指示信息,對多個交易進行排序,得到多個交易的驗證順序時,具體用于執(zhí)行如下步驟:
13、根據(jù)交易依賴關系,在多個交易中確定屬于第一順序優(yōu)先級的第一交易;第一交易是多個交易中不存在依賴交易的交易;
14、根據(jù)各個第一交易的交易驗證指示信息之間的數(shù)值關系,確定各個第一交易在第一順序優(yōu)先級下的驗證順序;
15、根據(jù)交易依賴關系,在多個交易中確定屬于第二順序優(yōu)先級的第二交易;第二交易是多個交易中依賴于第一交易的交易;
16、根據(jù)各個第二交易的交易驗證指示信息之間的數(shù)值關系,確定各個第二交易在第二順序優(yōu)先級下的驗證順序;
17、繼續(xù)確定屬于后續(xù)順序優(yōu)先級的后續(xù)交易,以及確定各個后續(xù)交易在后續(xù)順序優(yōu)先級下的驗證順序;其中,第一順序優(yōu)先級的驗證順序早于第二順序優(yōu)先級。
18、在一種實現(xiàn)方式中,區(qū)塊驗證指示信息是從區(qū)塊驗證圖中讀取的;區(qū)塊驗證圖包括節(jié)點和有向邊,區(qū)塊驗證圖中的節(jié)點表示區(qū)塊中的交易,區(qū)塊驗證圖中節(jié)點的節(jié)點值表示區(qū)塊中交易的交易驗證指示信息,區(qū)塊驗證圖中的有向邊表示區(qū)塊中交易之間的交易依賴關系;
19、與區(qū)塊驗證圖中的目標節(jié)點連接的有向邊包括以下至少一種:入邊和出邊;目標節(jié)點存在入邊表示目標節(jié)點依賴于其他節(jié)點,其他節(jié)點通過目標節(jié)點的入邊與目標節(jié)點連接;目標節(jié)點存在出邊表示目標節(jié)點被參考節(jié)點所依賴,參考節(jié)點通過目標節(jié)點的出邊與目標節(jié)點連接;目標節(jié)點是區(qū)塊驗證圖中的任一個節(jié)點;
20、第一交易是區(qū)塊驗證圖中的第一節(jié)點所表示的交易,第一節(jié)點存在出邊但不存在入邊;第二交易是區(qū)塊驗證圖中的第二節(jié)點所表示的交易,第二節(jié)點與第一節(jié)點的出邊連接。
21、在一種實現(xiàn)方式中,處理單元,用于獲取區(qū)塊的區(qū)塊驗證指示信息時,具體用于執(zhí)行如下步驟:
22、接收提案節(jié)點發(fā)送的區(qū)塊驗證指示信息;或者,接述提案節(jié)點發(fā)送的區(qū)塊執(zhí)行指示信息,根據(jù)區(qū)塊執(zhí)行指示信息生成區(qū)塊驗證指示信息;
23、其中,區(qū)塊執(zhí)行指示信息包括交易依賴關系,以及每個交易的交易執(zhí)行指示信息;任一個交易的交易執(zhí)行指示信息用于指示執(zhí)行相應交易的單獨資源消耗信息。
24、在一種實現(xiàn)方式中,處理單元,用于根據(jù)區(qū)塊執(zhí)行指示信息生成區(qū)塊驗證指示信息時,具體用于執(zhí)行如下步驟:
25、根據(jù)區(qū)塊執(zhí)行指示信息創(chuàng)建區(qū)塊執(zhí)行圖;
26、將區(qū)塊執(zhí)行圖轉換為區(qū)塊驗證圖;
27、從區(qū)塊驗證圖中讀取區(qū)塊驗證指示信息。
28、在一種實現(xiàn)方式中,處理單元,用于根據(jù)區(qū)塊執(zhí)行指示信息創(chuàng)建區(qū)塊執(zhí)行圖時,具體用于執(zhí)行如下步驟:
29、將區(qū)塊中的交易確定為區(qū)塊執(zhí)行圖中的節(jié)點;
30、將區(qū)塊中交易的交易執(zhí)行指示信息,確定為區(qū)塊執(zhí)行圖中節(jié)點的節(jié)點值;
31、將區(qū)塊中交易之間的交易依賴關系,確定為區(qū)塊執(zhí)行圖中對應節(jié)點之間的有向邊;
32、其中,與區(qū)塊執(zhí)行圖中的目標節(jié)點連接的有向邊包括以下至少一種:入邊和出邊;目標節(jié)點存在入邊表示目標節(jié)點依賴于其他節(jié)點,其他節(jié)點通過目標節(jié)點的入邊與目標節(jié)點連接;目標節(jié)點存在出邊表示目標節(jié)點被參考節(jié)點所依賴,參考節(jié)點通過目標節(jié)點的出邊與目標節(jié)點連接;目標節(jié)點是區(qū)塊執(zhí)行圖中的任一個節(jié)點。
33、在一種實現(xiàn)方式中,處理單元,用于將區(qū)塊執(zhí)行圖轉換為區(qū)塊驗證圖時,具體用于執(zhí)行如下步驟:
34、確定區(qū)塊執(zhí)行圖中的起始節(jié)點;起始節(jié)點是區(qū)塊執(zhí)行圖中存在入邊但不存在出邊的節(jié)點;
35、確定與起始節(jié)點通過起始節(jié)點的入邊相連接的轉換節(jié)點;
36、采用起始節(jié)點與轉換節(jié)點之間的節(jié)點和值,更新轉換節(jié)點的節(jié)點值;
37、將轉換節(jié)點確定為新的起始節(jié)點,繼續(xù)確定新的轉換節(jié)點,并對新的轉換節(jié)點的節(jié)點值進行更新,直至遍歷完區(qū)塊執(zhí)行圖中的所有節(jié)點,得到區(qū)塊驗證圖。
38、在一種實現(xiàn)方式中,與轉換節(jié)點連接的起始節(jié)點的數(shù)量為多個;處理單元,用于采用起始節(jié)點與轉換節(jié)點之間的節(jié)點和值,更新轉換節(jié)點的節(jié)點值時,具體用于執(zhí)行如下步驟:
39、分別確定轉換節(jié)點與每個起始節(jié)點之間的節(jié)點和值;
40、采用轉換節(jié)點與每個起始節(jié)點之間的節(jié)點和值中的最大和值,更新轉換節(jié)點的節(jié)點值。
41、在一種實現(xiàn)方式中,區(qū)塊中還包括多個交易中每個交易的第一交易執(zhí)行結果;處理單元,用于在區(qū)塊的驗證過程中,按照驗證順序對多個交易進行驗證,得到區(qū)塊的驗證結果時,具體用于執(zhí)行如下步驟:
42、按照驗證順序執(zhí)行多個交易,得到多個交易中每個交易的第二交易執(zhí)行結果;
43、若多個交易中每個交易的第一交易執(zhí)行結果與第二交易執(zhí)行結果均相同,則生成對區(qū)塊驗證通過的驗證結果。
44、另一方面,本技術實施例提供了一種區(qū)塊處理方法,該區(qū)塊處理方法包括:
45、從交易池中獲取多個交易;
46、將多個交易打包為待驗證的區(qū)塊,將區(qū)塊發(fā)送至驗證節(jié)點,使驗證節(jié)點基于區(qū)塊的區(qū)塊驗證指示信息,對多個交易進行排序,得到多個交易的驗證順序,并在區(qū)塊的驗證過程中,按照驗證順序對多個交易進行驗證,得到區(qū)塊的驗證結果;
47、接收驗證節(jié)點反饋的驗證結果;
48、其中,區(qū)塊驗證指示信息包括多個交易之間的交易依賴關系,以及在交易依賴關系下每個交易的交易驗證指示信息;任一個交易的交易驗證指示信息用于指示從相應交易開始驗證,到相應交易的依賴鏈中的全部交易驗證結束所需的預估資源消耗信息。
49、相應地,本技術實施例提供了一種區(qū)塊處理裝置,該區(qū)塊處理裝置包括:
50、處理單元,用于從交易池中獲取多個交易;
51、處理單元,還用于將多個交易打包為待驗證的區(qū)塊,將區(qū)塊發(fā)送至驗證節(jié)點,使驗證節(jié)點基于區(qū)塊的區(qū)塊驗證指示信息,對多個交易進行排序,得到多個交易的驗證順序,并在區(qū)塊的驗證過程中,按照驗證順序對多個交易進行驗證,得到區(qū)塊的驗證結果;
52、通信單元,用于接收驗證節(jié)點反饋的驗證結果;
53、其中,區(qū)塊驗證指示信息包括多個交易之間的交易依賴關系,以及在交易依賴關系下每個交易的交易驗證指示信息;任一個交易的交易驗證指示信息用于指示從相應交易開始驗證,到相應交易的依賴鏈中的全部交易驗證結束所需的預估資源消耗信息。
54、在一種實現(xiàn)方式中,處理單元,還用于執(zhí)行如下步驟:
55、獲取區(qū)塊的區(qū)塊執(zhí)行指示信息,根據(jù)區(qū)塊執(zhí)行指示信息生成區(qū)塊驗證指示信息,將區(qū)塊驗證指示信息發(fā)送至驗證節(jié)點;或者,獲取區(qū)塊的區(qū)塊執(zhí)行指示信息,將區(qū)塊執(zhí)行指示信息發(fā)送至驗證節(jié)點,以使驗證節(jié)點根據(jù)區(qū)塊執(zhí)行指示信息生成區(qū)塊驗證指示信息;
56、其中,區(qū)塊執(zhí)行指示信息包括交易依賴關系,以及每個交易的交易執(zhí)行指示信息;任一個交易的交易執(zhí)行指示信息用于指示執(zhí)行相應交易的單獨資源消耗信息。
57、在一種實現(xiàn)方式中,處理單元,用于將多個交易打包為待驗證的區(qū)塊時,具體用于執(zhí)行如下步驟:
58、創(chuàng)建m個交易執(zhí)行資源,m為大于或等于2的整數(shù);
59、采用m個交易執(zhí)行資源并發(fā)執(zhí)行多個交易;
60、將多個交易以及多個交易的交易執(zhí)行結果打包為區(qū)塊。
61、在一種實現(xiàn)方式中,多個交易需要調用n個智能合約執(zhí)行,n為正整數(shù);處理單元,用于采用m個交易執(zhí)行資源并發(fā)執(zhí)行多個交易時,具體用于執(zhí)行如下步驟:
62、當n大于或等于m時,采用m個交易執(zhí)行資源中的每個交易執(zhí)行資源分別執(zhí)行一個智能合約下的交易;
63、當n小于m時,采用m個交易執(zhí)行資源中的至少兩個交易執(zhí)行資源執(zhí)行同一個智能合約下的交易。
64、在一種實現(xiàn)方式中,m個交易執(zhí)行資源中的任一個交易執(zhí)行資源為目標交易執(zhí)行資源,目標交易執(zhí)行資源用于執(zhí)行目標智能合約下的交易,目標智能合約包括多個合約方法,目標智能合約下的交易是調用多個合約方法中的至少一個合約方法執(zhí)行的;
65、采用目標交易執(zhí)行資源執(zhí)行目標智能合約下的交易的過程,包括:
66、獲取目標智能合約中每個合約方法的資源消耗經(jīng)驗信息;
67、根據(jù)執(zhí)行目標智能合約下的交易所調用的合約方法的資源消耗經(jīng)驗信息,確定執(zhí)行目標智能合約下的交易所需的執(zhí)行資源消耗信息;
68、根據(jù)執(zhí)行目標智能合約下的交易所需的執(zhí)行資源消耗信息,對目標智能合約下的交易進行排序,得到目標智能合約下交易的交易執(zhí)行順序;
69、采用目標交易執(zhí)行資源調用目標智能合約,按照交易執(zhí)行順序,執(zhí)行目標智能合約下的交易。
70、在一種實現(xiàn)方式中,n個智能合約中的參考智能合約下的交易,需要采用m個交易執(zhí)行資源中的p個交易執(zhí)行資源執(zhí)行,p為大于或等于2,且小于或等于m的整數(shù);參考智能合約包括多個合約方法,p個交易執(zhí)行資源分別用于調用參考智能合約中的不同合約方法;參考智能合約下的交易是調用多個合約方法中的至少一個合約方法執(zhí)行的;
71、采用p個交易執(zhí)行資源執(zhí)行參考智能合約下的交易的過程,包括:
72、獲取參考智能合約中每個合約方法的資源消耗經(jīng)驗信息;
73、根據(jù)參考智能合約中每個合約方法的資源消耗經(jīng)驗信息和相應合約方法下的交易數(shù)量,確定參考智能合約中每個合約方法的總資源消耗經(jīng)驗信息;
74、根據(jù)參考智能合約中每個合約方法的總資源消耗經(jīng)驗信息,將多個合約方法分配至p個交易執(zhí)行資源;
75、采用p個交易執(zhí)行資源調用分配的合約方法,執(zhí)行分配的合約方法下的交易。
76、相應地,本技術實施例提供一種計算機設備,該計算機設備包括:
77、處理器,適于實現(xiàn)計算機程序;
78、計算機可讀存儲介質,計算機可讀存儲介質存儲有計算機程序,計算機程序適于由處理器加載并執(zhí)行上述的區(qū)塊處理方法。
79、相應地,本技術實施例提供一種計算機可讀存儲介質,該計算機可讀存儲介質存儲有計算機程序,該計算機程序被計算機設備的處理器讀取并執(zhí)行時,使得計算機設備執(zhí)行上述的區(qū)塊處理方法。
80、相應地,本技術實施例提供了一種計算機程序產(chǎn)品或計算機程序,該計算機程序產(chǎn)品或計算機程序包括計算機指令,該計算機指令存儲在計算機可讀存儲介質中。計算機設備的處理器從計算機可讀存儲介質讀取該計算機指令,處理器執(zhí)行該計算機指令,使得該計算機設備執(zhí)行上述的區(qū)塊處理方法。
81、本技術實施例中,可以根據(jù)待驗證的區(qū)塊中包括的多個交易之間的交易依賴關系,以及在交易依賴關系下每個交易的交易驗證指示信息,對多個交易進行排序,得到多個交易的驗證順序,然后,可以在區(qū)塊的驗證過程中,按照驗證順序對多個交易進行驗證,任一個交易的交易驗證指示信息用于指示從該交易開始驗證,到該交易的依賴鏈中的全部交易驗證結束所需的預估資源消耗信息;可以看出,在對區(qū)塊中的多個交易進行排序時,考慮了每個交易在交易依賴關系下的預估資源消耗信息,這樣使得排序得到的驗證順序是合理的,從而,在區(qū)塊的驗證過程中,按照合理的驗證順序對多個交易進行驗證,可以提升區(qū)塊的驗證效率。