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的具体步骤包...
【专利技术属性】
技术研发人员:杨英杰,仲跻炜,易力,
申请(专利权)人:欧冶云商股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。