基于分布式缓存以及NSQ的智能合约运行方法及装置转让专利

申请号 : CN202110339243.8

文献号 : CN112866421B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏韵刘刚黄文韬吴业骏

申请人 : 中国工商银行股份有限公司

摘要 :

本发明属于区块链技术领域,本发明提供了一种基于分布式缓存以及NSQ的智能合约运行方法及装置,基于分布式缓存以及NSQ的智能合约运行方法包括:客户端发起的针对智能合约的交易请求至应用服务器;应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;所述代理节点转发所述交易请求至所述区块链中的共识节点;所述共识节点执行所述智能合约接口调用,以生成执行结果;所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。本发明针对高并发情况下,解决了现有技术中,智能合约无法实现高性能的执行,以及区块链节点无法完成高效率运算的问题。

权利要求 :

1.一种基于分布式缓存以及NSQ的智能合约运行方法,其特征在于,包括:接收应用服务器所转发的交易请求,并转发所述交易请求至区块链中的共识节点;所述交易请求为客户端所发起的针对智能合约的数据请求;

接收由NSQ节点所转发的智能合约的执行结果,所述执行结果为共识节点执行所述智能合约所生成;

通过所述应用服务器将所述执行结果转发至所述客户端;

根据所述交易请求判断其对应的交易是否重复;

若否,判断执行所述交易是否需要全局唯一标识或/及全局序号;

若需要,生成所述全局唯一标识或/及所述全局序号。

2.根据权利要求1所述的智能合约运行方法,其特征在于,所述接收由NSQ节点所转发的智能合约的执行结果包括:接收由所述NSQ节点所转发的执行日志;所述执行日志由非共识节点通过NSQ将所述执行结果写入而生成;

解析所述执行日志,以获得所述执行结果。

3.根据权利要求1所述的智能合约运行方法,其特征在于,转发所述交易请求至所述区块链中的共识节点包括:发送全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。

4.一种基于分布式缓存以及NSQ的智能合约运行装置,其特征在于,包括:交易请求接收模块,用于接收应用服务器所转发的交易请求,并转发所述交易请求至区块链中的共识节点;所述交易请求为客户端所发起的针对智能合约的数据请求;

执行结果接收模块,用于接收由NSQ节点所转发的智能合约的执行结果,所述执行结果为共识节点执行所述智能合约所生成;

执行结果转发模块,用于通过所述应用服务器将所述执行结果转发至所述客户端;

交易判断模块,用于根据所述交易请求判断其对应的交易是否重复;

序号判断单元,用于若否,判断执行所述交易是否需要全局唯一标识或/及全局序号;

序号生成单元,用于若需要,生成所述全局唯一标识或/及所述全局序号。

5.一种基于分布式缓存以及NSQ的智能合约运行方法,其特征在于,包括:客户端发起的针对智能合约的交易请求至应用服务器;

应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;

所述代理节点转发所述交易请求至所述区块链中的共识节点;

所述共识节点执行所述智能合约接口调用,以生成执行结果;

所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点;

在所述代理节点转发所述交易请求至所述共识节点之前,基于分布式缓存以及NSQ的智能合约运行方法还包括:所述代理节点根据所述交易请求判断其对应的交易是否重复;

若否,所述代理节点判断执行所述交易是否需要全局唯一标识或/及全局序号;

若需要,所述代理节点生成所述全局唯一标识或/及所述全局序号。

6.根据权利要求5所述的智能合约运行方法,其特征在于,所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点包括:所述非共识节点通过NSQ将所述执行结果写入执行日志;

所述非共识节点发送所述执行日志至所述代理节点。

7.根据权利要求6所述的智能合约运行方法,其特征在于,还包括:所述代理节点解析所述执行日志,以获得所述执行结果;

所述代理节点将所述执行结果返回所述应用服务器;

所述应用服务器将结果返回至客户端。

8.根据权利要求7所述的智能合约运行方法,其特征在于,所述代理节点转发所述交易请求至所述共识节点包括:所述代理节点发送所述全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。

9.根据权利要求5所述的智能合约运行方法,其特征在于,还包括:所述代理节点计算每个共识节点的运行情况,以确定最优共识节点;

所述代理节点转发所述交易请求至所述最优共识节点。

10.一种基于分布式缓存以及NSQ的智能合约运行装置,其特征在于,包括:交易请求发起模块,用于客户端发起的针对智能合约的交易请求至应用服务器;

请求发送代理模块,用于应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;

请求发送共识模块,用于所述代理节点转发所述交易请求至所述区块链中的共识节点;

执行结果生成模块,用于所述共识节点执行所述智能合约接口调用,以生成执行结果;

执行结果发送模块,用于所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点;

交易判断模块,用于根据所述交易请求判断其对应的交易是否重复;

序号判断单元,用于若否,判断执行所述交易是否需要全局唯一标识或/及全局序号;

序号生成单元,用于若需要,生成所述全局唯一标识或/及所述全局序号。

11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至3以及5至9任一项所述基于分布式缓存以及NSQ的智能合约运行方法的步骤。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至3以及5至9任一项所述基于分布式缓存以及NSQ的智能合约运行方法的步骤。

说明书 :

基于分布式缓存以及NSQ的智能合约运行方法及装置

技术领域

[0001] 本发明属于区块链技术领域,具体涉及一种基于分布式缓存以及NSQ的智能合约运行方法及装置。

背景技术

[0002] 随着区块链应用的普遍使用,越来越多业务场景需要应用于区块链技术,但是复杂的业务逻辑对区块链的高并发高可用要求相对于现有上链的存证溯源类要求更高。现有智能合约均是为了实现的是存证溯源类业务,不存在对高并发的支付类场景的应用,而且存证类智能合约中也会涉及到热点数据的频繁访问和全局唯一标识的生成的问题,但是现有方案是靠区块链节点节点内置数据库存储热点数据,通过智能合约实现全局唯一标识的生成器,无业务幂等和防重的实现机制。
[0003] 可以理解的是,通过智能合约访问热点数据以及实现全局唯一标识的生成,会大量消耗区块链节点的共识,不利于实际业务的处理效率,热点数据一般都是很少发生变动的参数数据,而且全局唯一标识的生成要求的时效性高,如果频繁调用智能合约来实现,时效性无法保证,而且业务的防重机制和幂等无法实现,并发情况下严重影响区块链节点的高效率运算和智能合约的高性能执行。

发明内容

[0004] 本发明属于区块链技术领域,针对现有技术中的问题,本发明解决了现有技术中,智能合约无法实现高性能执行,以及区块链节点无法完成高效率运算的问题,通过提出结合适合高并发情况下的分布式缓存技术,缓解热点数据的频繁访问带来的节点共识消耗,通过分布式缓存的代理节点计算使用不同的区块链节点执行业务用以提升区块链节点的运行效率,同时结合租户隔离机制,实现区块链节点上通道隔离需要的全局唯一标识的生成器。
[0005] 为解决上述技术问题,本发明提供以下技术方案:
[0006] 第一方面,本发明提供一种基于分布式缓存以及NSQ的智能合约运行方法(代理节点端执行),包括:
[0007] 接收应用服务器所转发的交易请求,并转发所述交易请求至区块链中的共识节点;所述交易请求为客户端所发起的针对智能合约的数据请求;
[0008] 接收由NSQ节点所转发的智能合约的执行结果,所述执行结果为共识节点执行所述智能合约所生成;
[0009] 通过所述应用服务器将所述执行结果转发至所述客户端。
[0010] 一实施例中,所述接收由NSQ节点所转发的智能合约的执行结果包括:
[0011] 接收由所述NSQ节点所转发的执行日志;所述执行日志由非共识节点通过NSQ将所述执行结果写入而生成;
[0012] 解析所述执行日志,以获得所述执行结果。
[0013] 一实施例中,基于分布式缓存以及NSQ的智能合约运行方法还包括:
[0014] 根据所述交易请求判断其对应的交易是否重复;
[0015] 若否,判断执行所述交易是否需要全局唯一标识或/及全局序号;
[0016] 若需要,生成所述全局唯一标识或/及所述全局序号。
[0017] 一实施例中,转发所述交易请求至所述区块链中的共识节点包括:
[0018] 发送全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。
[0019] 第二方面,本发明提供一种基于分布式缓存以及NSQ的智能合约运行装置(代理节点端执行),包括:
[0020] 交易请求接收模块,用于接收应用服务器所转发的交易请求,并转发所述交易请求至区块链中的共识节点;所述交易请求为客户端所发起的针对智能合约的数据请求;
[0021] 执行结果接收模块,用于接收由NSQ节点所转发的智能合约的执行结果,所述执行结果为共识节点执行所述智能合约所生成;
[0022] 执行结果转发模块,用于通过所述应用服务器将所述执行结果转发至所述客户端。
[0023] 一实施例中,交易请求接收模块包括:
[0024] 执行日志接收单元,用于接收由所述NSQ节点所转发的执行日志;所述执行日志由非共识节点通过NSQ将所述执行结果写入而生成;
[0025] 执行日志解析单元,用于解析所述执行日志,以获得所述执行结果。
[0026] 一实施例中,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0027] 交易判断模块,用于根据所述交易请求判断其对应的交易是否重复;
[0028] 序号判断单元,用于若否,判断执行所述交易是否需要全局唯一标识或/及全局序号;
[0029] 序号生成单元,用于若需要,生成所述全局唯一标识或/及所述全局序号。
[0030] 一实施例中,交易请求接收模块还包括:
[0031] 标识发送单元,用于发送全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。
[0032] 第三方面,本发明提供一种基于分布式缓存以及NSQ的智能合约运行方法,包括:
[0033] 客户端发起的针对智能合约的交易请求至应用服务器;
[0034] 应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;
[0035] 所述代理节点转发所述交易请求至所述区块链中的共识节点;
[0036] 所述共识节点执行所述智能合约接口调用,以生成执行结果;
[0037] 所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。
[0038] 一实施例中,所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点包括:
[0039] 所述非共识节点通过NSQ将所述执行结果写入执行日志;
[0040] 所述非共识节点发送所述执行日志至所述代理节点。
[0041] 一实施例中,基于分布式缓存以及NSQ的智能合约运行方法还包括:
[0042] 所述代理节点解析所述执行日志,以获得所述执行结果;
[0043] 所述代理节点将所述执行结果返回所述应用服务器;
[0044] 一实施例中,在所述代理节点转发所述交易请求至所述共识节点之前,还包括:
[0045] 所述代理节点根据所述交易请求判断其对应的交易是否重复;
[0046] 若否,所述代理节点判断执行所述交易是否需要全局唯一标识或/及全局序号;
[0047] 若需要,所述代理节点生成所述全局唯一标识或/及所述全局序号。
[0048] 一实施例中,所述代理节点转发所述交易请求至所述共识节点包括:
[0049] 所述代理节点发送所述全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。
[0050] 一实施例中,基于分布式缓存以及NSQ的智能合约运行方法还包括:
[0051] 所述代理节点计算每个共识节点的运行情况,以确定最优共识节点;
[0052] 所述代理节点转发所述交易请求至所述最优共识节点。
[0053] 第四方面,本发明还提供一种基于分布式缓存以及NSQ的智能合约运行装置,包括:
[0054] 交易请求发起模块,用于客户端发起的针对智能合约的交易请求至应用服务器;
[0055] 请求发送代理模块,用于应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;
[0056] 请求发送共识模块,用于所述代理节点转发所述交易请求至所述区块链中的共识节点;
[0057] 执行结果生成模块,用于所述共识节点执行所述智能合约接口调用,以生成执行结果;
[0058] 执行结果发送模块,用于所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。
[0059] 一实施例中,所述执行结果发送模块包括:
[0060] 执行结果写入单元,用于所述非共识节点通过NSQ将所述执行结果写入执行日志;
[0061] 执行日志发送单元,用于所述非共识节点发送所述执行日志至所述代理节点。
[0062] 一实施例中,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0063] 日志解析模块,用于所述代理节点解析所述执行日志,以获得所述执行结果;
[0064] 结果返回模块,用于所述代理节点将所述执行结果返回所述应用服务器;
[0065] 结果返客户模块,用于所述应用服务器将结果返回至客户端。
[0066] 一实施例中,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0067] 交易判断模块,用于所述代理节点根据所述交易请求判断其对应的交易是否重复;
[0068] 标识判断模块,用于若否,所述代理节点判断执行所述交易是否需要全局唯一标识或/及全局序号;
[0069] 标识生成模块,用于若需要,所述代理节点生成所述全局唯一标识或/及所述全局序号。
[0070] 一实施例中,所述请求发送共识模块具体用于所述代理节点发送所述全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。
[0071] 一实施例中,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0072] 情况计算模块,用于所述代理节点计算每个共识节点的运行情况,以确定最优共识节点;
[0073] 请求发送最优模块,用于所述代理节点转发所述交易请求至所述最优共识节点。
[0074] 第五方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现基于分布式缓存以及NSQ的智能合约运行方法的步骤。
[0075] 第六方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现基于分布式缓存以及NSQ的智能合约运行方法的步骤。
[0076] 从上述描述可知,本发明实施例提供的基于分布式缓存以及NSQ的智能合约运行方法及装置,首先客户端发起的针对智能合约的交易请求至应用服务器;应用服务器发送交易请求至区块链中分布式缓存节点中的代理节点;接着,代理节点转发交易请求至区块链中的共识节点;共识节点执行智能合约接口调用,以生成执行结果;最后区块链中的非共识节点通过NSQ将执行结果发送至代理节点。本发明针对高并发情况下,解决了现有技术中,智能合约无法实现高性能的执行,以及区块链节点无法完成高效率运算的问题,提出结合适合高并发情况下的分布式缓存方法,缓解热点数据的频繁访问带来的节点共识消耗,并通过分布式缓存的代理节点计算使用不同的区块链节点执行业务用以提升区块链节点的运行效率,同时结合租户隔离机制,实现区块链节点上通道隔离需要的全局唯一标识的生成器。

附图说明

[0077] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0078] 图1为本发明的实施例中基于分布式缓存以及NSQ的智能合约运行方法流程示意图一;
[0079] 图2为本发明的实施例中步骤500的流程示意图;
[0080] 图3为本发明的实施例中基于分布式缓存以及NSQ的智能合约运行方法流程示意图二;
[0081] 图4为本发明的实施例中基于分布式缓存以及NSQ的智能合约运行方法流程示意图三;
[0082] 图5为本发明的实施例中步骤300的流程示意图;
[0083] 图6为本发明的实施例中基于分布式缓存以及NSQ的智能合约运行方法流程示意图四;
[0084] 图7为本发明的具体应用实例中高性能智能合约运行系统结构框图;
[0085] 图8为本发明的具体应用实例中分布式缓存节点部署示意图;
[0086] 图9为本发明的具体应用实例中分布式缓存节点的结构框图;
[0087] 图10为本发明的具体应用实例中分布式缓存节点与共识节点交互流程图;
[0088] 图11为本发明的具体应用实例中分布式缓存节点与非共识节点交互流程图;
[0089] 图12为本发明的具体应用实例中分布式缓存节点与应用服务器交互流程图;
[0090] 图13为本发明的具体应用实例中基于分布式缓存以及NSQ的智能合约运行方法流程示意图;
[0091] 图14为本发明的实施例中基于分布式缓存以及NSQ的智能合约运行装置结构框图一;
[0092] 图15为本发明的实施例中执行结果发送模块50的结构框图;
[0093] 图16为本发明的实施例中基于分布式缓存以及NSQ的智能合约运行装置结构框图二;
[0094] 图17为本发明的实施例中的电子设备的结构示意图。

具体实施方式

[0095] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0096] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0097] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0098] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0099] 本发明的实施例提供一种基于分布式缓存以及NSQ的智能合约运行方法的具体实施方式,参见图1,该方法具体包括如下内容:
[0100] 步骤100:客户端发起的针对智能合约的交易请求至应用服务器。
[0101] 具体地,客户端发起业务类交易(即针对智能合约的交易请求)至应用服务器,可以理解的是,应用服务器是发起智能合约调用交易和处理调用交易结果的服务器,一般通过HTTP、HTTPS或者GRPC的方式调用。另外,智能合约是由事件驱动的、具有状态的、运行在一个复制的、分享的账本之上的、且能够保管账本上资产的程序。
[0102] 步骤200:应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点。
[0103] 可以理解的是,分布式缓存是指使用非关系型数据库实现热点数据的快速读写。分布式缓存节点与区块链节点部署在同一个容器内,主要包括代理节点和存储节点,其中代理节点和存储节点是多对多的关系,同一个容器内的代理节点集群内节点相互负载均衡,而存储节点集群内节点存储内容不一致,实施非冗余备份存储,由代理节点按交易ID的hash计算决定存储节点集群中的节点。
[0104] 步骤300:所述代理节点转发所述交易请求至所述区块链中的共识节点。
[0105] 共识节点是区块链网络中对智能合约调用的交易进行共识、区块链账本读写的节点;
[0106] 步骤400:所述共识节点执行所述智能合约接口调用,以生成执行结果;
[0107] 步骤500:所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。
[0108] 可以理解的是,非共识节点是区块链网络中进行背书、签发证书、交易网关,以及对账本拥有读权限的节点;
[0109] 从上述描述可知,本发明实施例提供的基于分布式缓存以及NSQ的智能合约运行方法,首先客户端发起的针对智能合约的交易请求至应用服务器;应用服务器发送交易请求至区块链中分布式缓存节点中的代理节点;接着,代理节点转发交易请求至区块链中的共识节点;共识节点执行智能合约接口调用,以生成执行结果;最后区块链中的非共识节点通过NSQ将执行结果发送至代理节点。本发明针对高并发情况下,解决了现有技术中,智能合约无法实现高性能的执行,以及区块链节点无法完成高效率运算的问题,提出结合适合高并发情况下的分布式缓存方法,缓解热点数据的频繁访问带来的节点共识消耗,并通过分布式缓存的代理节点计算使用不同的区块链节点执行业务用以提升区块链节点的运行效率,同时结合租户隔离机制,实现区块链节点上通道隔离需要的全局唯一标识的生成器。
[0110] 一实施例中,参见图2,步骤500进一步包括:
[0111] 步骤501:所述非共识节点通过NSQ将所述执行结果写入执行日志;
[0112] NSQ:一个基于Go语言的开源的分布式实时消息平台,可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,具备分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保持消息的可靠传递的特征,同时NSQ容易配置和部署,支持众多的消息协议。
[0113] 步骤502:所述非共识节点发送所述执行日志至所述代理节点。
[0114] 一实施例中,参见图3,基于分布式缓存以及NSQ的智能合约运行方法还包括:
[0115] 步骤600:所述代理节点解析所述执行日志,以获得所述执行结果;
[0116] 步骤700:所述代理节点将所述执行结果返回所述应用服务器;
[0117] 步骤800:所述应用服务器将结果返回至客户端。
[0118] 在步骤600至步骤800中,首先。代理节点解析日志,记录执行结果至同一容器内的存储节点;接着,代理节点将执行结果返回应用服务器;最后应用服务器将结果返回至客户端。
[0119] 一实施例中,参见图4,在步骤300之前还包括:
[0120] 步骤900:所述代理节点根据所述交易请求判断其对应的交易是否重复;
[0121] 步骤1000:若否,所述代理节点判断执行所述交易是否需要全局唯一标识或/及全局序号;
[0122] 步骤1100:若需要,所述代理节点生成所述全局唯一标识或/及所述全局序号。
[0123] 在步骤900至步骤1100中,代理节点根据输入的交易ID和通道ID(由解析交易请求获得),读取符合该通道ID下存储节点的交易结果集合,判断是否包含该交易ID;如果包含该交易ID,则说明是重复交易,读取该交易ID已上链的执行结果,则代理节点将执行结果返回应用服务器
[0124] 如果不包含该交易ID,则说明不是重复交易,代理节点则根据交易的执行接口判断是否需要生产该通道下的全局唯一标识或全局序号。
[0125] 一实施例中,参见图5,在步骤300进一步包括:
[0126] 步骤301:所述代理节点发送所述全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。
[0127] 一实施例中,参见图6,基于分布式缓存以及NSQ的智能合约运行方法还包括:
[0128] 步骤1200:所述代理节点计算每个共识节点的运行情况,以确定最优共识节点;
[0129] 步骤1300:所述代理节点转发所述交易请求至所述最优共识节点。
[0130] 在步骤1200以及步骤1300中,分布式缓存节点中的代理节点计算每个共识节点的运行情况,并根据计算结果选择最优节点转发智能合约调用请求。
[0131] 为进一步地说明本方案,本发明还提供基于分布式缓存以及NSQ的智能合约运行方法的具体应用实例,具体包括如下内容。
[0132] 首先介绍几个概念:租户隔离:代理层和数据存储层的数据隔离保护,需要隔离保护的单位都是一个租户。通道隔离:同一条链的节点拥有不同通道的数据访问权限,即不同账本数据。
[0133] 在本具体应用实例中,还提供一种智能合约高性能运行系统,该系统包括应用服务器、共识节点、非共识节点和分布式缓存节点。请参考图7所示,智能合约高性能运行系统涉及四个模块:应用服务器1、共识节点2、非共识节点3和分布式缓存节点4。其中共识节点2和非共识节点3都是区块链节点,部署在同一个区块链网络中,分布式缓存节点4部署在与区块链节点同一容器中,但是不属于区块链网络节点。
[0134] 应用服务器1是发起智能合约调用交易和处理调用交易结果的服务器,一般通过HTTP、HTTPS或者GRPC的方式调用;共识节点2是区块链网络中对智能合约调用的交易进行共识、区块链账本读写的节点;非共识节点3是区块链网络中进行背书、签发证书、交易网关,以及对账本拥有读权限的节点;分布式缓存节点4对交易实现预处理、对热点数据实现快速访问、计算选择智能合约执行的最优运行状态共识节点。其部署如图8和图9所示,分布式缓存节点与区块链节点部署在同一个容器内,主要包括代理节点4‑1和存储节点4‑2,其中代理节点4‑1和存储节点4‑2是多对多的关系,同一个容器内的代理节点集群内节点相互负载均衡,而存储节点集群内节点存储内容不一致,实施非冗余备份存储,由代理节点按交易ID的hash计算决定存储节点集群中的节点。
[0135] 代理节点4‑1负责对合约接口调用请求的输入解析、读写存储节点4‑2的内容、同一通道内全局唯一标识或全局序号的生成、与共识节点2交互、与非共识节点3交互、与应用服务器1交互等。
[0136] 代理节点4‑1与共识节点2的交互流程如图10所示,接收应用服务器1发起的请求,解析请求判断请求是否需要生成全局唯一标识或全局序号,实现交易防重。一般情况下,对于支付类交易需要生成全局唯一标识,对于存证类交易需要全局序号,如果需要生成全局唯一标识,则读取存储节点4‑2内存储的该通道下所有的全局唯一标识,通过雪花计算生成全局唯一标识,且该标识与已存储的全局唯一标识不重复,如果需要生成全局序号,则读取存储节点4‑2内的步长和当前最大序号,计算公式为步长+最大序号生成全局序号,将生成的全局唯一标识或者全局序号存储至以该通道为key的存储节点4‑2内,同时代理节点4‑1将生成的全局唯一标识或者全局序号作为该业务合约调用接口新的输入,接着计算当前区块链节点的所有共识节点2的运行情况,主要包括共识节点2的当前CPU、内存和出块速度等指标,针对此类指标进行排序,选择指标结果最优的共识节点,将新的输入和合约调用请求转发至最优共识节点2,执行合约接口调用和写节点日志。
[0137] 代理节点4‑1与非共识节点3的交互流程如图11所示,合约成功执行接口调用后,非共识节点3将上链日志通过NSQ传输至同一容器内的代理节点4‑1,代理节点4‑1通过日志解析,解析交易ID和交易执行结果,同时存储以交易ID为key,交易执行结果为value的记录于存储节点4‑2中。
[0138] 代理节点4‑1与应用服务器1的交互如图12所示,代理节点4‑1接收应用服务器1发起的合约调用请求,解析该请求中的交易ID,查询存储节点4‑2内是否有该交易ID,如果有则说明该交易是重复交易,执行幂等机制,返回该交易已执行的结果,如果不是重复交易ID,且在业务参数白名单范围内,则执行与共识节点2的交互,完成合约的接口调用,执行与非共识节点3的交互,存储交易执行结果并返回交易结果至应用服务器1,如果不是业务参数白名单范围内,则直接拒绝应用服务器1的请求。避免对共识节点1的消耗和无效共识,提升智能合约的执行效率,减少共识节点的运行消耗;
[0139] 存储节点4‑2用于存储全局唯一标识或全局序号、智能合约执行上链的结果、以及热点数据(例如业务参数、业务控制白名单等),只与代理节点交互,解决数据存储和热点数据的频繁访问,实现幂等和防重。
[0140] 本系统通过分布式缓存节点的白名单控制、热点数据访问控制、共识节点最优选择、非共识节点的链上数据传输至链下等手段,保证智能合约的高效执行和区块链节点的高性能运行,实现高并发情况下的幂等和防重。基于智能合约高性能运行系统的基于分布式缓存以及NSQ的智能合约运行方法的流程如图13所示,
[0141] 步骤S100:客户端发起业务类交易;
[0142] 步骤S101:应用服务器发起业务交易所需的合约调用请求,传输合约调用的完整输入和调用接口;
[0143] 步骤S102:通过负载均衡机制,合约调用请求转发至分布式缓存节点的任意一个代理节点;
[0144] 步骤S103:代理节点根据输入的交易ID和通道ID,读取符合该通道ID下存储节点的交易结果集合,并判断是否包含该交易ID;
[0145] 步骤S104:如果包含该交易ID,则说明是重复交易,读取该交易ID已上链的执行结果,执行步骤S113;
[0146] 步骤S105:如果不包含该交易ID,则说明不是重复交易,代理节点则根据交易的执行接口判断是否需要生产该通道下的全局唯一标识或全局序号;
[0147] 步骤S106:如果不需要生成该通道下的全局唯一标识或全局序号,则读取存储节点内业务执行所需的热点数据,查看交易是否在业务参数的白名单范围内,如果在则继续执行,否则拒绝合约调用执行步骤S113;
[0148] 步骤S107:如果需要生成该通道下的全局唯一标识或全局序号,代理节点计算生成全局唯一标识或全局序号;
[0149] 步骤S108:将生成的全局唯一标识/全局序号、热点数据与交易输入组合,形成新的输入;
[0150] 步骤S109:分布式缓存节点中的代理节点计算每个共识节点的运行情况,选择最优节点转发智能合约调用请求;
[0151] 步骤S110:共识节点执行智能合约接口调用,写节点日志;
[0152] 步骤S111:非共识节点通过NSQ,将合约调用成功的业务结果输出日志至同一容器内的代理节点;
[0153] 步骤S112:代理节点解析日志,记录执行结果至同一容器内的存储节点;
[0154] 步骤S113:代理节点将执行结果返回应用服务器;
[0155] 步骤S114:应用服务器将结果返回至客户端。
[0156] 从上述描述可知,本发明具体应用实例所提供一种基于分布式缓存以及NSQ的智能合约运行方法,引入分布式缓存和NSQ技术与区块链结合,实现智能合约在高并发情况下的高性能运行系统。通过分布式缓存节点的白名单控制、热点数据访问控制、共识节点最优选择、非共识节点的链上数据传输至链下等手段,保证智能合约的高效执行和区块链节点的高性能运行,实现高并发情况下的幂等和防重。
[0157] 基于同一发明构思,本申请实施例还提供了一种基于分布式缓存以及NSQ的智能合约运行装置,可以用于实现上述实施例所描述的方法,如下面的实施例。由于基于分布式缓存以及NSQ的智能合约运行装置解决问题的原理与基于分布式缓存以及NSQ的智能合约运行方法相似,因此基于分布式缓存以及NSQ的智能合约运行装置的实施可以参见基于分布式缓存以及NSQ的智能合约运行方法实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0158] 本发明的实施例提供一种能够实现基于分布式缓存以及NSQ的智能合约运行方法的基于分布式缓存以及NSQ的智能合约运行装置的具体实施方式,参见图14,基于分布式缓存以及NSQ的智能合约运行装置具体包括如下内容:
[0159] 交易请求发起模块10,用于客户端发起的针对智能合约的交易请求至应用服务器;
[0160] 请求发送代理模块20,用于应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;
[0161] 请求发送共识模块30,用于所述代理节点转发所述交易请求至所述区块链中的共识节点;
[0162] 执行结果生成模块40,用于所述共识节点执行所述智能合约接口调用,以生成执行结果;
[0163] 执行结果发送模块50,用于所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。
[0164] 一实施例中,参见图15,所述执行结果发送模块50包括:
[0165] 执行结果写入单元501,用于所述非共识节点通过NSQ将所述执行结果写入执行日志;
[0166] 执行日志发送单元502,用于所述非共识节点发送所述执行日志至所述代理节点。
[0167] 一实施例中,参见图16,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0168] 日志解析模块60,用于所述代理节点解析所述执行日志,以获得所述执行结果;
[0169] 结果返回模块70,用于所述代理节点将所述执行结果返回所述应用服务器;
[0170] 结果返客户模块80,用于所述应用服务器将结果返回至客户端。
[0171] 一实施例中,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0172] 交易判断模块90,用于所述代理节点根据所述交易请求判断其对应的交易是否重复;
[0173] 标识判断模块100,用于若否,所述代理节点判断执行所述交易是否需要全局唯一标识或/及全局序号;
[0174] 标识生成模块110,用于若需要,所述代理节点生成所述全局唯一标识或/及所述全局序号。
[0175] 一实施例中,所述请求发送共识模块具体用于所述代理节点发送所述全局唯一标识或/及全局序号以及所述交易请求至所述共识节点。
[0176] 一实施例中,基于分布式缓存以及NSQ的智能合约运行装置还包括:
[0177] 情况计算模块,用于所述代理节点计算每个共识节点的运行情况,以确定最优共识节点;
[0178] 请求发送最优模块,用于所述代理节点转发所述交易请求至所述最优共识节点。
[0179] 从上述描述可知,本发明实施例提供的基于分布式缓存以及NSQ的智能合约运行装置,首先客户端发起的针对智能合约的交易请求至应用服务器;应用服务器发送交易请求至区块链中分布式缓存节点中的代理节点;接着,代理节点转发交易请求至区块链中的共识节点;共识节点执行智能合约接口调用,以生成执行结果;最后区块链中的非共识节点通过NSQ将执行结果发送至代理节点。本发明可以大大提升智能合约业务处理能力和区块链节点的运行效率,具体有益效果如下:
[0180] 1、基于分布式缓存实现通道隔离的全局唯一标识发生器,实现传统方式下智能合约无法实现通道隔离的全局标识,同时避免了高并发交易时发生全局唯一标识重复导致交易数据被错误覆盖的问题,即实现交易防重;
[0181] 2、使用分布式缓存存储业务白名单和各类业务参数,可保证业务上链前的联盟方身份真实性的确认,同时也可保证热点数据频繁访问的速度,加快合约执行效率;
[0182] 3、通过NSQ实时传输上链交易的执行结果,并使用分布式缓存存储,可对重复提交的业务实施幂等操作,减少底层节点的共识的无效消耗,达到节点运行能力的提升。
[0183] 上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0184] 在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述基于数据机房场景下的人员距离确定方法的步骤,该步骤包括:
[0185] 步骤100:客户端发起的针对智能合约的交易请求至应用服务器;
[0186] 步骤200:应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;
[0187] 步骤300:所述代理节点转发所述交易请求至所述区块链中的共识节点;
[0188] 步骤400:所述共识节点执行所述智能合约接口调用,以生成执行结果;
[0189] 步骤500:所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。
[0190] 下面参考图17,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
[0191] 如图17所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线
604。
[0192] 以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
[0193] 特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述基于数据机房场景下的人员距离确定方法的步骤,该步骤包括:
[0194] 步骤100:客户端发起的针对智能合约的交易请求至应用服务器;
[0195] 步骤200:应用服务器发送所述交易请求至区块链中分布式缓存节点中的代理节点;
[0196] 步骤300:所述代理节点转发所述交易请求至所述区块链中的共识节点;
[0197] 步骤400:所述共识节点执行所述智能合约接口调用,以生成执行结果;
[0198] 步骤500:所述区块链中的非共识节点通过NSQ将所述执行结果发送至所述代理节点。
[0199] 在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
[0200] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0201] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0202] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0203] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0204] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0205] 以上该仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。