System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及區塊鏈,尤其是涉及一種區塊鏈交易異步處理與故障重試方法及交易中間件。
技術介紹
1、區塊鏈是數字經濟的底層基礎設施,是一種典型的協作性技術,可以提升協作效率,優化業務流程,降低運營成本,降低多方協作的信任成本和與之相關的交易摩擦。
2、區塊鏈技術是一種去中心化、不可篡改、安全可信的分布式賬本技術,結合分布式存儲、點對點傳輸、共識機制、密碼學等多種技術,通過不斷增長的數據區塊來記錄交易數據,確保交易數據的安全和透明。區塊鏈網絡中的交易需要經過多個節點的確認、驗證、打包和記錄區塊,因此交易處理速度相對較慢,比特幣網絡大約每10分鐘出一個新區塊,以太坊的平均區塊時間是約15秒,聯盟區塊鏈的區塊時間可以做到幾秒鐘。
3、業務系統作為請求方將區塊鏈交易請求發送給區塊鏈底層平臺進行處理后,需要等待區塊鏈底層平臺進行交易數據驗證、共識、執行和出塊,這些步驟需要較長時間(如3秒~10分鐘)才能完成,在這些步驟全部完成后交易請求才能處理完成。如果業務系統在發出區塊鏈交易請求后按照同步方式一直等待區塊鏈底層平臺完成交易處理后返回處理結果,同步方式長時間等待會導致業務系統處理區塊鏈交易相關功能的效率很低。另外,當區塊鏈底層平臺出現軟硬件、網絡方面的故障,會發生區塊鏈交易執行失敗,這時業務系統還需要負責交易執行失敗后重新發送交易請求,帶來復雜的交易失敗檢測和重試功能開發工作。區塊鏈底層平臺通常采用鍵值存儲方式保存交易數據,只支持按照區塊鏈交易哈希值精確匹配查詢交易數據和交易結果,不支持多條件匹配查詢,難以滿足業務系
技術實現思路
1、本專利技術的目的就是為了提供一種實現異步處理和故障重試,以降低業務系統的開發難度和工作量的區塊鏈交易異步處理與故障重試方法及交易中間件。
2、本專利技術的目的可以通過以下技術方案來實現:
3、一種區塊鏈交易異步處理與故障重試方法,包括以下步驟:
4、s1、接收業務系統的區塊鏈交易請求,其中所述區塊鏈交易請求包含回調通知地址;
5、s2、將所述區塊鏈交易請求添加到區塊鏈交易數據表和交易請求隊列中,并向業務系統返回區塊鏈交易請求的收到確認信息;
6、s3、持續循環處理所述交易請求隊列中的區塊鏈交易請求,并將區塊鏈交易請求加入交易請求待完成數據表中;
7、s4、定時查詢獲取新產出區塊并解析出區塊中已處理完成的交易列表,基于所述交易列表,根據所述回調通知地址向業務系統發送交易處理結果,并更新所述區塊鏈交易數據表、交易請求待完成數據表;
8、s5、按照設定的超時檢查間隔周期性查詢所述交易請求待完成數據表中的區塊鏈交易請求,取出超時未完成的區塊鏈交易請求并重新加入到交易請求隊列中進行交易請求重試。
9、進一步地,所述區塊鏈交易數據表按照區塊鏈交易請求類型在數據庫中分別定義區塊鏈交易數據表及其業務字段名稱、業務字段數據類型、業務字段數據長度、業務字段數據取值能否為空,同時還包括應用編碼、請求編號、請求時間、回調通知地址、合約地址、交易處理狀態、交易處理結果、交易處理完成時間、區塊高度、區塊時間以及區塊鏈交易哈希。
10、進一步地,步驟s2中,將所述區塊鏈交易請求添加到區塊鏈交易數據表和交易請求隊列中的步驟包括:
11、判斷所述區塊鏈交易請求中的業務字段名稱、業務字段數據類型、業務字段數據長度、業務字段數據取值能否為空是否出現錯誤,若是,則向業務系統返回區塊鏈交易請求參數錯誤的報錯信息,若否,則將區塊鏈交易請求添加到區塊鏈交易數據表中;
12、將所述區塊鏈交易請求添加到所述交易請求隊列中。
13、進一步地,步驟s3的具體步驟包括:
14、持續循環處理所述交易請求隊列中的區塊鏈交易請求,根據區塊鏈交易請求構造區塊鏈交易raw_transaction,將區塊鏈交易發送到區塊鏈底層平臺異步執行交易驗證、共識、打包與處理,同時將區塊鏈交易請求加入交易請求待完成數據表,并從所述交易請求隊列中移除所述區塊鏈交易請求;
15、其中,所述區塊鏈交易請求加入交易請求待完成數據表過程中,先查詢所述交易請求待完成數據表,判斷交易請求待完成數據表中是否存在所述區塊鏈交易請求,若不存在,則將區塊鏈交易請求新增至交易請求待完成數據表中,若存在,則根據區塊鏈交易請求更新交易請求待完成數據表。
16、進一步地,按照所述交易請求待完成數據表中設定的業務主鍵查詢所述交易請求待完成數據表,所述業務主鍵包括交易請求類型、應用編碼和請求編號。
17、進一步地,步驟s4的具體步驟包括:
18、s41、按照區塊鏈底層平臺的出塊間隔,定時查詢獲取新產出區塊并解析出區塊中已處理完成的交易列表;
19、s42、基于所述交易列表,按照所述區塊鏈交易請求中的回調通知地址向業務系統發送交易處理結果;
20、s43、基于所述交易列表,從所述區塊鏈交易數據表中尋找對應的區塊鏈交易請求,更新交易處理狀態、交易處理結果、交易處理完成時間、區塊高度、區塊時間以及區塊鏈交易哈希;
21、s44、基于所述交易列表,從所述交易請求待完成數據表中移除對應的區塊鏈交易請求;
22、s45、返回步驟s41,繼續定時查詢和處理區塊鏈底層平臺的新產出區塊與已處理完成的交易。
23、進一步地,步驟s5的具體步驟包括:
24、s51、按照設定的超時檢查間隔周期性查詢所述交易請求待完成數據表中的區塊鏈交易請求,尋找超時未完成的區塊鏈交易請求;
25、s52、檢查所述交易請求隊列的當前隊列長度,并根據當前隊列長度將所述超時未完成的區塊鏈交易請求重新加入到交易請求隊列中進行交易請求重試;
26、s53、返回步驟s51,繼續周期性查詢和處理超時未完成的區塊鏈交易請求。
27、進一步地,步驟s52的具體步驟包括:
28、s521、如果所述交易請求隊列的當前隊列長度小于可重試隊列長度限值,則將所述超時未完成的區塊鏈交易請求重新加入到交易請求隊列中,并從交易請求待完成數據表中移除所述超時未完成的區塊鏈交易請求;
29、s522、如果所述交易請求隊列的當前隊列長度大于或等于可重試隊列長度限值,則休眠暫停一段時間,然后返回步驟s521繼續處理所述超時未完成的區塊鏈交易請求。
30、進一步地,還包括以下步驟:
31、獲取業務系統的區塊鏈交易請求與交易處理結果的多條件組合查詢請求;
32、基于所述查詢請求,在所述區塊鏈交易數據表進行多條件組合查詢,并將查詢結果返回至業務系統。
33、本實施例還提供一種區塊鏈交易中間件,包括:
34、接收模塊:用于接收業務系統的區塊鏈交易請求;
35、添加模塊:用于將所述區塊鏈交易請求添加到區塊鏈交易數據表和交易請求隊列中,并向業務系統返回區塊鏈交易請本文檔來自技高網...
【技術保護點】
1.一種區塊鏈交易異步處理與故障重試方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,按照區塊鏈交易請求類型在數據庫中分別定義區塊鏈交易數據表及其業務字段名稱、業務字段數據類型、業務字段數據長度、業務字段數據取值能否為空,同時還包括應用編碼、請求編號、請求時間、回調通知地址、合約地址、交易處理狀態、交易處理結果、交易處理完成時間、區塊高度、區塊時間以及區塊鏈交易哈希。
3.根據權利要求2所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,步驟S2中,將所述區塊鏈交易請求添加到區塊鏈交易數據表和交易請求隊列中的步驟包括:
4.根據權利要求1所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,步驟S3的具體步驟包括:
5.根據權利要求4所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,按照所述交易請求待完成數據表中設定的業務主鍵查詢所述交易請求待完成數據表,所述業務主鍵包括交易請求類型、應用編碼和請求編號。
6.根據權利要求1所述的一種區塊鏈交易異步處理
7.根據權利要求1所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,步驟S5的具體步驟包括:
8.根據權利要求7所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,步驟S52的具體步驟包括:
9.根據權利要求1所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,還包括以下步驟:
10.一種區塊鏈交易中間件,其特征在于,包括:
...【技術特征摘要】
1.一種區塊鏈交易異步處理與故障重試方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,按照區塊鏈交易請求類型在數據庫中分別定義區塊鏈交易數據表及其業務字段名稱、業務字段數據類型、業務字段數據長度、業務字段數據取值能否為空,同時還包括應用編碼、請求編號、請求時間、回調通知地址、合約地址、交易處理狀態、交易處理結果、交易處理完成時間、區塊高度、區塊時間以及區塊鏈交易哈希。
3.根據權利要求2所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,步驟s2中,將所述區塊鏈交易請求添加到區塊鏈交易數據表和交易請求隊列中的步驟包括:
4.根據權利要求1所述的一種區塊鏈交易異步處理與故障重試方法,其特征在于,步驟s3的具體步驟包...
【專利技術屬性】
技術研發人員:楊英杰,仲躋煒,易力,
申請(專利權)人:歐冶云商股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。