本發(fā)明涉及區(qū)塊鏈,尤其涉及一種區(qū)塊鏈交易處理方法及系統(tǒng)。
背景技術:
1、區(qū)塊鏈(blockchain)是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。
2、區(qū)塊鏈通常按照時間順序將數據區(qū)塊以順序相連的方式進行組合,并構成一種鏈式數據結構,同時以密碼學方式保證的不可篡改和不可偽造的分布式賬本。由于區(qū)塊鏈具有去中心化、信息不可篡改、自治性等特性,區(qū)塊鏈也受到人們越來越多的重視和應用。
3、現有的在區(qū)塊鏈中執(zhí)行交易的方案中節(jié)點每次執(zhí)行一筆交易,則會帶來區(qū)塊鏈狀態(tài)的改變,從而需要修改狀態(tài)樹,例如交易中需要創(chuàng)建一個新的賬戶,那么狀態(tài)樹將新增一個狀態(tài)在葉子節(jié)點中,從而增加了區(qū)塊鏈狀態(tài)樹的存儲量,由于區(qū)塊鏈狀態(tài)數量不斷增加,狀態(tài)樹的高度也不斷增加,使得交易執(zhí)行過程中對狀態(tài)的讀寫效率降低,導致交易執(zhí)行的效率越來越低、存儲開銷越來越大。
技術實現思路
1、本發(fā)明提供了一種區(qū)塊鏈交易處理方法及系統(tǒng),用于解決現有的在區(qū)塊鏈中執(zhí)行交易的方案導致交易執(zhí)行的效率越來越低、存儲開銷越來越大的技術問題。
2、本發(fā)明第一方面提供的一種區(qū)塊鏈交易處理方法,包括:
3、當區(qū)塊鏈中的檔案節(jié)點接收到交易請求時,所述檔案節(jié)點根據所述交易請求進行預執(zhí)行交易,生成交易打包數據;
4、所述區(qū)塊鏈中的多個共識節(jié)點基于預置共識算法,確定出塊者共識節(jié)點;
5、所述出塊者共識節(jié)點采用預置數字簽名算法對所述交易打包數據進行驗證;
6、若驗證通過,所述出塊者共識節(jié)點基于預置凍結協(xié)議條件,判斷所述交易打包數據的數據類型是否為凍結類型;
7、若是,所述出塊者共識節(jié)點對所述出塊者共識節(jié)點的數據存儲樹進行更新,確定未來時刻數據存儲樹,并停止交易;
8、若否,所述出塊者共識節(jié)點采用所述交易打包數據進行交易,生成目標交易結果。
9、可選地,所述交易請求包括交易數據和數字簽名;所述交易打包數據包括第一交易打包數據和第二交易打包數據;所述所述檔案節(jié)點根據所述交易請求進行預執(zhí)行交易,生成交易打包數據的步驟,包括:
10、所述檔案節(jié)點基于所述預置數字簽名算法對數字簽名進行驗證;
11、若驗證通過,所述檔案節(jié)點基于預置凍結協(xié)議條件,確定交易數據的數據類型是否為凍結類型;
12、若所述交易數據的數據類型不為凍結類型,所述檔案節(jié)點判斷所述檔案節(jié)點的當前存儲樹或緩存存儲樹是否存在所述交易數據對應的交易讀集;
13、若所述檔案節(jié)點的當前存儲樹和緩存存儲樹均不存在所述交易數據對應的交易讀集,所述檔案節(jié)點根據所述檔案節(jié)點的全局存儲樹中的所述交易數據對應的交易讀集的狀態(tài)數據,生成默克爾證明;
14、所述檔案節(jié)點采用所述交易數據和所述默克爾證明進行預交易,生成交易寫集;
15、所述檔案節(jié)點對交易寫集、所述檔案節(jié)點的全局存儲樹中的所述交易數據對應的交易讀集、所述交易數據、所述數字簽名和所述默克爾證明進行打包,生成第一交易打包數據;
16、若所述檔案節(jié)點的當前存儲樹或緩存存儲樹存在所述交易數據對應的交易讀集,所述檔案節(jié)點采用所述交易數據和所述檔案節(jié)點的當前存儲樹或緩存存儲樹的所述交易數據對應的交易讀集的狀態(tài)數據進行預交易,生成交易寫集;
17、所述檔案節(jié)點對交易寫集、所述檔案節(jié)點的當前存儲樹或緩存存儲樹的所述交易數據對應的交易讀集、所述交易數據和所述數字簽名進行打包,生成第二交易打包數據。
18、可選地,所述交易打包數據還包括第三交易打包數據;所述方法還包括:
19、若所述交易數據的數據類型為凍結類型,所述檔案節(jié)點對所述交易數據和所述數字簽名進行打包,生成第三交易打包數據。
20、可選地,所述所述出塊者共識節(jié)點基于預置凍結協(xié)議條件,判斷所述交易打包數據的數據類型是否為凍結類型的步驟,包括:
21、所述出塊者共識節(jié)點判斷所述交易打包數據中的交易數據是否存在凍結標識符;
22、若存在,所述出塊者共識節(jié)點確定所述交易數據的數據類型為凍結類型;
23、若不存在,所述出塊者共識節(jié)點確定所述交易數據的數據類型不為凍結類型。
24、可選地,所述出塊者共識節(jié)點的數據存儲樹包括出塊者共識節(jié)點的當前存儲樹和出塊者共識節(jié)點的緩存存儲樹;所述未來時刻數據存儲樹包括未來時刻的緩存存儲樹和未來時刻的當前存儲樹;所述所述出塊者共識節(jié)點對所述出塊者共識節(jié)點的數據存儲樹進行更新,確定未來時刻數據存儲樹的步驟,包括:
25、所述出塊者共識節(jié)點將出塊者共識節(jié)點的當前存儲樹作為未來時刻的緩存存儲樹;
26、所述出塊者共識節(jié)點對所述出塊者共識節(jié)點的當前存儲樹進行數據清除,確定未來時刻的當前存儲樹。
27、可選地,所述所述出塊者共識節(jié)點采用所述交易打包數據進行交易,生成目標交易結果的步驟,包括:
28、所述出塊者共識節(jié)點判斷出塊者共識節(jié)點的當前存儲樹或出塊者共識節(jié)點的緩存存儲樹是否存在所述交易數據對應的交易讀寫集;
29、若所述出塊者共識節(jié)點的當前存儲樹和所述出塊者共識節(jié)點的緩存存儲樹均不存在所述交易數據對應的交易讀寫集,所述出塊者共識節(jié)點采用所述交易打包數據中的默克爾證明、交易讀集的狀態(tài)數據、交易寫集的狀態(tài)數據,以及交易數據進行交易,生成目標交易結果;
30、若所述出塊者共識節(jié)點的當前存儲樹或所述出塊者共識節(jié)點的緩存存儲樹存在所述交易數據對應的交易讀寫集,所述出塊者共識節(jié)點采用所述交易數據對應的交易讀寫集的狀態(tài)數據和交易打包數據中的交易數據進行交易,生成目標交易結果。
31、可選地,在所述所述出塊者共識節(jié)點采用所述交易打包數據進行交易,生成目標交易結果的步驟之后,包括:
32、所述出塊者共識節(jié)點構建初始區(qū)塊,并將所述目標交易結果與所述初始區(qū)塊進行合并,確定目標區(qū)塊;
33、所述出塊者共識節(jié)點將所述目標區(qū)塊廣播至所述區(qū)塊鏈的多個節(jié)點中;
34、所述區(qū)塊鏈的多個節(jié)點對所述目標區(qū)塊進行驗證;
35、若驗證通過,所述區(qū)塊鏈中的多個節(jié)點將所述目標區(qū)塊添加到各所述節(jié)點的本地區(qū)塊鏈中,確定新的區(qū)塊鏈。
36、本發(fā)明第二方面提供的一種區(qū)塊鏈交易處理系統(tǒng),包括:
37、預交易模塊,用于當區(qū)塊鏈中的檔案節(jié)點接收到交易請求時,所述檔案節(jié)點根據所述交易請求進行預執(zhí)行交易,生成交易打包數據;
38、確定模塊,用于所述區(qū)塊鏈中的多個共識節(jié)點基于預置共識算法,確定出塊者共識節(jié)點;
39、驗證模塊,用于所述出塊者共識節(jié)點采用預置數字簽名算法對所述交易打包數據進行驗證;
40、判斷模塊,用于若驗證通過,所述出塊者共識節(jié)點基于預置凍結協(xié)議條件,判斷所述交易打包數據的數據類型是否為凍結類型;
41、更新模塊,用于若是,所述出塊者共識節(jié)點對所述出塊者共識節(jié)點的數據存儲樹進行更新,確定未來時刻數據存儲樹,并停止交易;
42、交易模塊,用于若否,所述出塊者共識節(jié)點采用所述交易打包數據進行交易,生成目標交易結果。
43、本發(fā)明第三方面提供的一種區(qū)塊鏈交易處理方法,應用于區(qū)塊鏈中的檔案節(jié)點,包括:
44、當接收到交易請求時,根據所述交易請求進行預執(zhí)行交易,生成交易打包數據;
45、響應接收的目標請求,將所述交易打包數據發(fā)送至所述區(qū)塊鏈中的出塊者共識節(jié)點。
46、本發(fā)明第四方面提供的一種區(qū)塊鏈交易處理方法,應用于區(qū)塊鏈中的出塊者共識節(jié)點,包括:
47、發(fā)送目標請求至所述區(qū)塊鏈中的檔案節(jié)點,并獲取所述區(qū)塊鏈中的檔案節(jié)點發(fā)送的交易打包數據;
48、采用預置數字簽名算法對所述交易打包數據進行驗證;
49、若驗證通過,基于預置凍結協(xié)議條件,判斷所述交易打包數據的數據類型是否為凍結類型;
50、若是,對所述出塊者共識節(jié)點的數據存儲樹進行更新,確定未來時刻數據存儲樹,并停止交易;
51、若否,采用所述交易打包數據進行交易,生成目標交易結果。
52、從以上技術方案可以看出,本發(fā)明具有以下優(yōu)點:
53、本發(fā)明的上述技術方案提供了一種區(qū)塊鏈交易處理方法,當區(qū)塊鏈中的檔案節(jié)點接收到交易請求時,檔案節(jié)點根據交易請求進行預執(zhí)行交易,生成交易打包數據;區(qū)塊鏈中的多個共識節(jié)點基于預置共識算法,確定出塊者共識節(jié)點;出塊者共識節(jié)點采用預置數字簽名算法對交易打包數據進行驗證;若驗證通過,出塊者共識節(jié)點基于預置凍結協(xié)議條件,判斷交易打包數據的數據類型是否為凍結類型;若是,出塊者共識節(jié)點對出塊者共識節(jié)點的數據存儲樹進行更新,確定未來時刻數據存儲樹,并停止交易;若否,出塊者共識節(jié)點采用交易打包數據進行交易,生成目標交易結果;基于上述方案,通過預置凍結協(xié)議條件確定交易打包數據的數據類型,并根據相應的數據類型執(zhí)行對應的交易處理,能夠減少共識節(jié)點存儲的數據,提高執(zhí)行交易的效率,進一步地減少了存儲開銷。