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