一种区块链网关的实现方法、装置、网关和介质与流程

文档序号:25991723发布日期:2021-07-23 21:03阅读:156来源:国知局
一种区块链网关的实现方法、装置、网关和介质与流程

本申请实施例涉及计算机计算领域,具体涉及区块链技术。



背景技术:

以太坊是目前使用广泛的一种区块链网络,作为业务功能提供方的开发用户可以将自己的业务逻辑以智能合约的形式部署到以太坊上运行,以实现数据的公开透明和不可篡改的目的。

目前,开发用户通过以太坊提供的程序接口来管理自己在区块链上部署的业务逻辑,其难度是相对较高的。开发用户需要对所调用的智能合约及参数按照以太坊的编码规则进行编码以及进行签名,需要经过一系列复杂操作才能将业务事务请求发送到基于以太坊的区块链节点。

因此,现有技术想要通过以太坊区块链节点来调用智能合约,对技术人员的要求门槛较高,不方便操作。



技术实现要素:

本申请实施例提供一种区块链网关的实现方法、装置、设备和介质,以优化区块链智能合约的调用方式,使其更加方便操作。

第一方面,本申请实施例提供了一种区块链网关的实现方法,包括:

合约解析单元对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容;

所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理;

所述合约解析单元通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果;

所述合约解析单元对所述执行结果进行解析,并响应所述业务请求。

本申请实施例由合约解析单元对获取到的业务请求进行解析,并基于带调用的目标智能合约的方法名称和参数,对业务请求进行编码,以生成合约结构内容;通过智能合约调用桥,将合约结构内容传输至区块链节点,以请求区块链节点根据合约结构内容调用目标智能合约来执行业务处理;合约解析单元对执行结果进行解析,并响应业务请求。上述技术方案通过合约解析单元对业务请求自动进行解析编码,得到合约结构内容,以供区块链网络直接调用目标智能合约进行处理,以及通过合约解析单元解析由智能合约调用桥所接收的区块链节点调用目标智能合约的执行结果,以响应业务请求,减少了技术人员调用区块链网络中部署的业务逻辑的操作难度,降低了技术人员调用智能合约的技术门槛,进而优化了区块链智能合约的调用方式,提高了调用智能合约的便捷度。

可选的,所述业务请求包括业务上链请求和业务查询请求。

上述申请中的一个可选实施方式,通过将业务请求细化为包括业务上链请求和业务查询请求,进而丰富了可调用的智能合约的类型。

可选的,合约解析单元对获取到的业务请求进行解析之前,还包括:所述合约解析单元作为服务端,从对应的客户端获取所述业务请求;

相应的,所述合约解析单元对所述执行结果进行解析,并响应所述业务请求包括:

所述合约解析单元对所述执行结果进行解析,并将解析结果反馈给发起所述业务请求的客户端。

上述申请中的一个可选实施方式,在合约解析单元解析业务请求之前,从与合约解析单元所对应的客户端进行业务请求的获取,使得无法直接调用区块链智能合约的客户端,能够向所对应的合约解析单元发送业务请求,进而通过合约解析单元进行智能合约的调用,以及智能合约执行结果的反馈,为无法直接调用区块链智能合约的客户端提供了可能。

可选的,若所述业务请求为交易类型的交易请求,所述方法还包括:

所述合约解析单元通过所述智能合约调用桥把所述交易请求发送到区块链节点上;

所述合约解析单元接收通过智能合约调用桥同步返回的交易请求的交易哈希值,并通过所述交易哈希值的回执确定交易是否完成。

上述申请中的一个可选实施方式,通过在合约解析单元所获取的月清秋为交易类型的交易请求时,追加合约解析单元经由智能合约调用桥向区块链节点发送交易请求,并接收反馈的交易请求的交易哈希值,从而根据所反馈的交易哈希值的回执确定交易是否完成,丰富了调用智能合约执行交易请求的相关内容,同时实现了对交易请求的执行情况的有效监控。

可选的,所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,还包括:

节点管理单元获取节点池中至少一个区块链节点的状态信息;

所述节点管理单元根据状态信息确定用于处理当前合约结构内容的区块链节点。

上述申请中的一个可选实施方式,通过在通过智能合约调用桥向区块链节点传输合约结构内容之前,追加由节点管理单元进行区块链节点的状态信息的获取,并根据所获取的状态信息确定处理当前合约结构内容的区块链节点,从而完善了区块链节点的确定机制,为区块链网络中各区块链节点所执行任务的均衡分配提供保障。

可选的,所述状态信息包括:区块链节点的负载状态信息和区块链节点的通信状态信息;

节点管理单元获取节点池中至少一个区块链节点的状态信息,包括:

所述节点管理单元按照设定规律与区块链网络中的多个区块链节点进行通信,以采集各区块链节点的状态信息。

上述申请中的一个可选实施方式,通过追加节点管理单元按照设定规律与区块链网络中的多个节点进行通信,以采集各区块链节点的状态信息,从而为处理当前合约结构内容的区块链节点的确定提供参照。

可选的,所述方法还包括:

如果所述节点管理单元监测到状态信息出现异常的区块链节点,则发起异常提醒。

上述申请中的一个可选实施方式,在节点管理单元检测到有区块链节点的状态信息存在异常时,进行异常提醒,以便及时掌控异常区块链节点的情况。

可选的,所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,还包括:

计数管理单元根据发起方账户的前次计数值确定本次计数值,将所述本次计数值添加至所述合约结构内容中;

其中,所述发起方账户与所述业务请求的发起方一一对应或一对多对应;所述计数值顺序递增。

上述申请中的一个可选实施方式,通过在通过智能合约调用桥向区块链节点传输合约结构内容之前,追加由计数管理单元根据发起方账户的前次计数值确定本次计数值,并将本次计数值添加至合约结构内容,从而避免了在区块链网络中对合约结构内容的重复传播或重复执行,同时,针对各发起方账户设置本次计数值,为区块链节点对发起方账户所发起的业务请求的顺序执行提供保障。

可选的,所述方法还包括:

所述计数管理单元通过所述智能合约调用桥向区块链节点发起计数值校正查询请求,以查询所述发起方账户在所述区块链中记录的最新计数值;

所述计数管理单元根据所述最新计数值更新本地的前次计数值。

上述申请中的一个可选实施方式,由计数管理单元通过智能合约调用桥向区块链节点发起计数校正查询请求,以进行最新计数值的获取,从而根据最新计数值进行本地的前次计数值的更新校正,为各发起方账户的计数值的准确性提供保证。

可选的,所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,还包括:

如果所述业务请求为业务上链请求,则事务管理单元对待上链的所述合约结构内容启动监控;

相应的,在所述合约结构内容传输给区块链节点之后,还包括:

所述事务管理单元获取所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理后产生的事务数据的事务标识;

所述事务管理单元根据所述事务标识监控所述事务数据的上链状态;

如果所述事务数据上链失败或执行超时,则将所述合约结构内容向区块链节点进行重发。

上述申请中的一个可选实施方式,在通过智能合约调用桥,将合约结构内容传输至区块链节点之前,追加通过事务管理单元对业务上链请求的合约结构内容的执行和结果上链情况进行监控,并在上链失败或执行超时时,进行合约结构内容的重新发送,以保证业务上链请求的有效执行。

可选的,所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,还包括:

所述事务管理单元检测所述合约结构内容中的计数值,并判断是否存在不连续的空计数值;

如果存在空计数值,则所述事务管理单元通过所述智能合约调用桥请求区块链节点产生对应所述空计数值的空事务请求。

上述申请中的一个可选实施方式,在通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,追加事务管理单元检测合约结构内容中的计数值,并在存在不连续的空计数值时,由事务管理单元通过智能合约调用桥请求区块链节点产生对应空计数值的空事务请求,为各发起方账户的计数值的连续性提供保证。

可选的,所述方法还包括:

如果所述业务请求为业务查询请求,则事件订阅单元将所述业务查询请求记录至订阅池中,并向区块链节点注册查询监听事件,以请求在区块链节点中出现满足条件的查询事件时进行反馈;

所述事件订阅单元将反馈的查询数据,作为执行结果提供给所述合约解析单元。

上述申请中的一个可选实施方式,通过事件订阅单元对业务查询请求相关事件进行监听注册,并在区块链节点中出现满足条件的查询事件时,将该查询事件的查询数据反馈至可约解析单元以供用户进行查看,从而为用户对区块链节点中某一类别请求的执行情况的有效监控提供保障。

第二方面,本申请实施例还提供了一种区块链网关的实现装置,包括:

合约解析单元,用于对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容;

合约解析单元,还用于通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理;

合约解析单元,还用于通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果;

合约解析单元,还用于对所述执行结果进行解析,并响应所述业务请求。

第三方面,本申请实施例还提供了一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面实施例所提供的一种区块链网关的实现方法。

第四方面,本申请实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面实施例所提供的一种区块链网关的实现方法。

上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1a是本申请实施例中的一种区块链系统的结构示意图;

图1b是本申请实施例一中的一种区块链网关的实现方法的流程图;

图2是本申请实施例二中的一种区块链网关的实现方法的流程图;

图3是本申请实施例三中的一种区块链网关的实现方法的流程图;

图4是本申请实施例四中的一种区块链网关的实现方法的流程图;

图5是本申请实施例五中的一种区块链网关的实现装置的结构图;

图6是用来实现本申请实施例的区块链网关的实现方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

为了清楚的介绍本申请各实施例的技术方案,首先对本申请实施例所适用的软件架构进行说明。

参见图1a所示的一种区块链系统的结构示意图,该系统包括:网关系统10、智能合约调用桥20和区块链网络30;智能合约调用桥20分别与网关系统10和区块链网络30通信连接。

其中,网关系统10,包括:合约解析单元11,用于对待执行的业务请求在调用智能合约时所需的参数进行解析和编码,得到编码数据,以及对智能合约执行结果进行反解析;

区块链网络30中部署的区块链节点31,接收编码数据,并调用智能合约得到相应的执行结果;

智能合约调用桥20,用于在网关系统10和区块链网络30之间进行数据传输。

进一步地,网关系统10,还包括:节点管理单元12、计数管理单元13、事务管理单元14以及事件订阅单元15中的至少一个。

其中,节点管理单元12,用于管理区块链网络30中所包含的各区块链节点31;

计数管理单元13,用于在合约解析单元11所得到的编码数据中添加计数值,以标识编码数据对应的业务请求的执行顺序;

事务管理单元14,用于管理区块链网络30中事务请求的执行情况;

事件订阅单元15,用于监听区块链网络30中的特定事件。

实施例一

图1b是本申请实施例一中的一种区块链网关的实现方法的流程图,本申请实施例适用于通过图1a所示的网关系统10对区块链网络中所部署的智能合约进行调用的情况。该方法由区块链网关的实现装置执行,该装置通过软件和/或硬件实现,并具体配置于电子设备中。该电子设备可以常规计算设备,还可以是承载有区块链节点的计算设备。

如图1b所示的一种区块链网关的实现方法,包括:

s101、合约解析单元对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容。

其中,业务请求可以是开发用户通过部署有网关的电子设备直接发起的业务请求,还可以是部署有包括合约解析单元的网关的电子设备作为服务端,从对应的客户端获取的业务请求。也即,普通用户通过客户端生成业务请求;服务端从该客户端中获取该业务请求。

其中,业务请求包括业务上链请求和业务查询请求。需要说明的是,业务查询请求可以直接获取查询结果,还可以将整个查询过程上链存储。

示例性地,合约解析单元对业务请求进行解析,以得到业务请求的业务需求关联信息;根据业务需求关联信息确定待调用的目标智能合约;基于待调用的目标智能合约的方法名称和参数,确定函数签名和输入参数;对函数签名和输入参数进行编码,生成合约结构内容,以使所生成的内容能够适配区块链网络所支持的智能合约调用所需的格式。

需要注意的是,开发用户可以理解为在区块链网络开发和部署智能合约,或进一步对智能合约进行管理的用户。普通用户可以理解为具备智能合约调用需求以处理业务请求的用户。

s102、所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理。

其中,智能合约调用桥,可以理解为一种软件接口,利用以太坊官方语言的sdk(softwaredevelopmentkit,软件开发工具包)与以太坊区块链网络中的节点通讯,发起智能合约的事务请求,并反馈智能合约的执行结果。

合约解析单元将合约结构内容发送至智能合约调用桥;智能合约调用桥将所接收的合约结构内容传输至区块链网络中的至少一个区块链节点,以请求区块链节点根据合约结构内容调用目标智能合约来执行业务处理。

示例性地,区块链节点根据合约结构内容调用目标智能合约来执行业务处理,可以是:区块链节点将合约结构内容封装成事务请求,并根据该事务请求调用目标智能合约来执行该事务请求,得到执行结果,并打包到区块中,并将事务请求和执行结果发送至其他节点,供其他节点执行进行验证。

或者,可选的,区块链节点将合约结构内容封装成事务请求后,还可以将该事务请求传输至区块链网络,由区块链网络中的其他节点接收该事务请求,并根据该事务请求调用目标智能合约,得到执行结果。

可以理解的是,由于一个智能合约调用桥可以同时与多个网关的合约解析单元通信,因此,在合约解析单元在生成合约结构内容时,还可以添加本合约解析单元的网关签名,便于智能合约调用桥后续根据该网关签名进行执行结果的准确反馈。或者,可以将该网关在区块链中部署的智能合约的合约地址,添加到合约结构内容中,以便于智能合约调用桥准确的调用智能合约并得到反馈。

s103、所述合约解析单元通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果。

当区块链节点调用目标智能合约来执行业务处理,得到执行结果后,将执行结果发送至智能合约调用桥;智能合约调用桥将执行结果反馈至合约解析单元。

s104、所述合约解析单元对所述执行结果进行解析,并响应所述业务请求。

当合约解析单元接收到执行结果后,将执行结果解析成用户可读形式的结果,并将解析后的执行结果向用户加以呈现。

可以理解的是,当业务请求为开发用户通过部署有网关的电子设备直接发起时,直接通过该电子设备对解析后的执行结果加以呈现;当业务请求为普通用户通过客户端向部署有网关的服务端发起时,部署有合约解析单元的服务端将解析结果反馈至发起业务请求的客户端,由客户端向普通用户加以呈现。

当业务请求为交易类型的交易请求时,在生成合约结构内容之后,所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点,合约解析单元接收通过智能合约调用桥,同步返回的交易请求的交易哈希值,并通过所述交易哈希值的回执确定交易是否完成。例如可以上链查询,该交易是否已经上链。

本申请实施例由合约解析单元对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对业务请求进行编码,以生成合约结构内容;通过智能合约调用桥,将合约结构内容传输至区块链节点,以请求区块链节点根据合约结构内容,调用目标智能合约来执行业务处理;合约解析单元对执行结果进行解析,并响应业务请求。上述技术方案通过合约解析单元对业务请求自动进行解析编码,得到合约结构内容,以供区块链网络直接调用目标智能合约进行处理,以及通过合约解析单元解析由智能合约调用桥所接收的区块链节点调用目标智能合约的执行结果,以响应业务请求,减少了技术人员调用区块链网络中部署的业务逻辑的操作难度,降低了技术人员调用智能合约的技术门槛,进而优化了区块链智能合约的调用方式,提高了调用智能合约的便捷度。

在上述各实施例的技术方案的基础上,当业务请求为业务查询请求时,为了便于业务请求发起方及时获取丰富全面的信息,还可以通过事件订阅单元将所述业务查询请求记录至订阅池中,并向区块链节点注册查询监听事件,以请求在区块链节点中出现满足条件的查询事件时进行反馈;所述事件订阅单元将反馈的查询数据,作为执行结果提供给所述合约解析单元。

具体的,事件订阅单元会维护一个事件订阅池,用户发起订阅时,会将业务查询请求添加至订阅池中,订阅池会为每份订阅在区块链节点上创建一个websocket监听,当事件触发后订阅池会收到事件数据,事件订阅单元将事件数据反馈至合约解析单元,由合约解析单元对事件数据解析后推送给订阅用户。

示例性地,向区块链节点注册监听事件,可以是事件订阅单元自身,向区块链节点中注册与该业务查询请求的关联事件的监听,或者通过智能合约调用桥,向区块链节点中注册与该业务查询请求的关联事件的监听。其中,关联事件,可以是该业务查询请求相同类型的请求、相同内容的请求、与业务查询请求具备内容关联的请求、以及与业务查询请求发起方或目标查询方相关联的请求等请求中的至少一个的执行事件。

实施例二

图2是本申请实施例二中的一种区块链网关的实现方法的流程图,本申请实施例在上述各实施例的技术方案的基础上,进行了优化改进。

进一步地,在“所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点”之后,追加“节点管理单元获取节点池中至少一个区块链节点的状态信息;所述节点管理单元根据状态信息确定用于处理当前合约结构内容的区块链节点”,以丰富网关的节点确定功能。

如图2所示的一种区块链网络的实现方法,包括:

s201、合约解析单元对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容。

s202、节点管理单元获取节点池中至少一个区块链节点的状态信息。

其中,网关系统本地会维护一个节点池,用于记录多个与自身具备通信关系的区块链节点。其中,该通信关系通过智能合约调用桥在网关系统和区块链网络之间的双向通信加以实现。

可以理解的是,当智能合约调用桥能够与不同的区块链网络进行通信时,节点池中的区块链节点可以来自相同的区块链网络,也可以来自不同的区块链网络。

在本申请实施例的一种可选实施方式中,获取节点池中至少一个区块链节点的状态信息,可以是:所述节点管理单元按照设定规律与区块链网络中的多个区块链节点进行通信,以采集各区块链节点的状态信息。

示例性地,可以采用轮询的方式向至少一个区块链节点发送心跳信号,并根据心跳信号的反馈结果确定各区块链节点的状态信息。

s203、所述节点管理单元根据状态信息确定用于处理当前合约结构内容的区块链节点。

可选的,状态信息包括区块链节点的负载状态信息,用于表征区块链节点的当前数据处理量。在当前数据处理量较大时,表明该区块链节点继续添加业务处理可能会出现超负荷情况,将会降低业务处理效率,此时不适宜采用该区块链节点进行该业务请求的业务处理;在当前数据处理量较小时,表明该区块链节点继续添加业务对业务处理效率影响不大,因此可以进行该业务请求的业务处理。

可以理解的是,根据各区块链节点的负载状态信息,确定用于处理当前合约结构内容的区块链节点,有利于区块链网络中的负载均衡,从而保证了区块链网络的业务处理效率。

可选的,状态信息还可以包括区块链节点的通信状态信息,用于表征区块链节点的当前可接入情况。当获取不到区块链节点的通信状态信息,或获取到区块链节点的通信状态信息为状态异常时,表明该区块链节点出现未启动或脱机等异常情况,无法与承载有网关系统的电子设备进行正常通信,因此不适宜采用该区块链节点进行该业务请求的业务处理;当获取到区块链节点的通信状态信息为状态正常时,表明该区块链节点与承载有网关系统的电子设备的通信通道正常,因此可以采用该区块链节点进行该业务请求的业务处理。

可以理解的是,根据各区块链节点的通信状态信息,确定用于处理当前合约结构内容的区块链节点,避免了向通信状态较差或通信状态异常的区块链节点,发送合约结构内容无法得到执行结果的情况,同时减少了合约结构内容由于无法顺利执行,而多次重新发送所投入的时间成本。

在本申请实施例的一种可选实施方式中,为了使用户有效掌控各区块链节点的当前状态,当监测到状态信息出现异常的区块链节点时,节点管理单元还会发起异常提醒。例如,某区块链节点断开通信。

s204、所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理。

s205、所述合约解析单元通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果。

s206、所述合约解析单元对所述执行结果进行解析,并响应所述业务请求。

本申请实施例通过在合约解析单元通过智能合约调用桥,将合约结构内容传输给区块链节点之前,通过节点管理单元获取节点池中至少一个区块链节点的状态信息;节点管理单元根据状态信息确定用于处理当前合约结构内容的区块链节点。上述技术方案通过部署节点管理单元,以对处理当前合约结构内容的区块链节点进行确定,从而为智能合约调用桥进行合约结构内容发送的目的地提供数据支撑,完善了区块链节点的确定机制,为区块链网络中各区块链节点所执行任务的均衡分配提供保障。

实施例三

图3是本申请实施例三中的一种区块链网关的实现方法的流程图,本申请实施例在上述各实施例的技术方案的基础上,进行了优化改进。

进一步地,在“所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点”之前,追加“计数管理单元根据发起方账户的前次计数值确定本次计数值,将所述本次计数值添加至所述合约结构内容中;其中,所述发起方账户与所述业务请求的发起方一一对应或一对多对应;所述计数值顺序递增”,以丰富网关的节点计数功能。

如图3所示的一种区块链网关的实现方法,包括:

s301、合约解析单元对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容。

s302、计数管理单元根据发起方账户的前次计数值确定本次计数值,将所述本次计数值添加至所述合约结构内容中。

其中,所述发起方账户与所述业务请求的发起方一一对应或一对多对应;所述计数值顺序递增。

其中,发起方账户可以理解为网关系统对应的账户,是区块链中注册的账户,业务请求的发起方可以理解为使用网关系统的普通用户。当承载有网关系统的电子设备为某一普通用户的账户,作为平台方为其他普通用户提供业务服务时,发起方账户与业务请求的发起方可以是一对一或一对多关系。

示例性地,计数管理单元在合约解析单元生成合约结构内容后,获取该发起方账户的前次计数值(nonce),并在前次计数值的基础上加一,确定本次计数值;将本次计数值添加至合约结构内容中,以标识合约结构内容的执行顺序,从而保证当同一发起方账户依次发起多个业务请求情况下,各业务请求顺序执行,避免在后业务请求的执行需要在先业务请求的执行结果时,在先业务请求还未执行而导致在后业务请求的执行受阻的情况的发生。另外,在业务请求高并发的情况下,还可以通过引入具备顺序递增特性的计数值,来保证各业务请求能够被有效处理。

可选的,网关系统在计数管理单元本地缓存有发起方账户的计数值,当该发起方账户再次发起请求时,对缓存中的计数值进行累加,并添加至合约结构内容中。

由于同一发起方账户可以通过不同的网关系统接入区块链网络,因此计数管理单元本地缓存的前次计数值可能不准确,因此还可以引入计数值更新机制,以保证各发起方账户的计数值的准确性。

可选的,计数管理单元通过所述智能合约调用桥向区块链节点发起计数值校正查询请求,以查询所述发起方账户在所述区块链中记录的最新计数值;所述计数管理单元根据所述最新计数值更新本地的前次计数值。

s303、所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理。

s304、所述合约解析单元通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果。

s305、所述合约解析单元对所述执行结果进行解析,并响应所述业务请求。

本申请实施例的技术方案,通过在合约解析单元通过智能合约调用桥,将合约结构内容传输给区块链节点之前,追加计数管理单元根据发起方账户的前次计数值确定本次计数值,将本次计数值添加至合约结构内容的相关内容,并通过计数值顺序递增的特性,为合约结构内容在区块链网络中的顺序执行提供了保障。

实施例四

图4是本申请实施例四中的一种区块链网关的实现方法的流程图,本申请实施例在上述各实施例的技术方案的基础上,进行了优化改进。

进一步地,在“合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点”之前,追加“如果所述业务请求为业务上链请求,则事务管理单元对待上链的所述合约结构内容启动监控”;相应的,在执行“所述合约结构内容传输给区块链节点”之后,追加“所述事务管理单元获取所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理后产生的事务数据的事务标识;所述事务管理单元根据所述事务标识监控所述事务数据的上链状态;如果所述事务数据上链失败或执行超时,则将所述合约结构内容向区块链节点进行重发”,以丰富网关的事务管理功能。

如图4所示的一种区块链网关的实现方法,包括:

s401、合约解析单元对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容。

s402、如果所述业务请求为业务上链请求,则事务管理单元对待上链的所述合约结构内容启动监控。

需要说明的是,当业务请求为业务上链请求时,在生成业务上链请求对应的合约结构内容之后,事务管理单元启动监控,以对合约结构内容的处理过程,也即业务上链过程,进行监控,以保证业务上链请求的有效执行。其中,业务上链请求可以是交易类型的交易请求。

s403、所述合约解析单元通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理。

s404、所述事务管理单元获取所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理后产生的事务数据的事务标识。

区块链节点处理业务上链事务请求后,产生事务数据以及事务数据的事务标识,并将事务标识反馈至事务管理单元;事务管理单元获取该事务标识。

s405、所述事务管理单元根据所述事务标识监控所述事务数据的上链状态。

事务管理单元从区块链中查询该事务标识,或者通过智能合约调用桥从区块链中查询该事务标识,以监控事务数据的上链状态。

s406、如果所述事务数据上链失败或执行超时,则将所述合约结构内容向区块链节点进行重发。

当在区块链中能够查询到该事务标识时,表明该业务上链请求被成功执行;当查询不到该事务标识时,表明该业务上链请求由于执行失败或执行超时等情况导致被无效执行,因此需要合约解析单元通过智能合约调用桥,将合约结构内容重新发送至区块链节点进行执行,直至执行成功。

s407、所述合约解析单元通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果。

s408、所述合约解析单元对所述执行结果进行解析,并响应所述业务请求。

本申请实施例在合约解析单元能通过智能合约调用桥,通过智能合约调用桥,将合约结构内容传输给区块链节点之前,追加在业务请求为业务上链请求时,通过事务管理单元对带上连的合约结构内容启动监控,并在合约结构内容传输至区块链节点后,事务管理单元获取区块链节点根据合约结构内容调用目标智能合约来执行业务处理后产生的事务数据的事务标识,从而根据事务标识来监控合约结构内容的执行和执行结果的上链情况;通过在上链失败或执行超时时,将合约结构内容向区块链节点重新发送,以保证业务上链请求的有效执行。

在上述各实施例的技术方案的基础上,可能存在计数值不连续的现象。为了避免上述情况的发生,事务管理单元会预先对计数值的连续情况进行监测,并在监测到计数值产生不连续情况时,对不连续部分的计数值进行补充,即产生一个空的事务请求,以保证合约结构内容的正常处理,同时减少等待时间。

示例性地,所述事务管理单元监测所述合约结构内容中的计数值,并判断是否存在不连续的空计数值;如果存在空计数值,则所述事务管理单元通过所述智能合约调用桥请求区块链节点产生对应所述空计数值的空事务请求。

实施例五

图5是本申请实施例五中的一种区块链网关的实现装置的结构图,本申请实施例适用于通过图1a所示的网关系统10对区块链网络中所部署的智能合约进行调用的情况。该装置通过软件和/或硬件实现,并具体配置于电子设备中。该电子设备可以常规计算设备,还可以是承载有区块链节点的计算设备。

如图5所示的一种区块链网关的实现装置500,包括:合约解析单元501。其中,

合约解析单元501,用于对获取到的业务请求进行解析,并基于待调用的目标智能合约的方法名称和参数,对所述业务请求进行编码,以生成合约结构内容;

合约解析单元501,还用于通过智能合约调用桥,将所述合约结构内容传输给区块链节点,以请求所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理;

合约解析单元501,还用于通过所述智能合约调用桥,接收所述区块链节点调用所述目标智能合约后的执行结果;

合约解析单元501,还用于对所述执行结果进行解析,并响应所述业务请求。

本申请实施例由合约解析单元对获取到的业务请求进行解析,并基于带调用的目标智能合约的方法名称和参数,对业务请求进行编码,以生成合约结构内容;通过智能合约调用桥,将合约结构内容传输至区块链节点,以请求区块链节点根据合约结构内容调用目标智能合约来执行业务处理;对执行结果进行解析,并响应业务请求。上述技术方案通过合约解析单元对业务请求自动进行解析编码,得到合约结构内容,以供区块链网络直接调用目标智能合约进行处理,以及通过合约解析单元解析由过智能合约调用桥所接收的区块链节点调用目标智能合约的执行结果,以响应业务请求,减少了技术人员调用区块链网络中部署的业务逻辑的操作难度,降低了技术人员调用智能合约的技术门槛,进而优化了区块链智能合约的调用方式,提高了调用智能合约的便捷度。

进一步地,所述业务请求包括业务上链请求和业务查询请求。

进一步地,合约解析单元501,还用于:

在对获取到的业务请求进行解析之前,作为服务端从对应的客户端获取所述业务请求;

相应的,所述合约解析单元501,在执行对所述执行结果进行解析,并响应所述业务请求时,具体用于:

对所述执行结果进行解析,并将解析结果反馈给发起所述业务请求的客户端。

进一步地,若所述业务请求为交易类型的交易请求,合约解析单元501,还用于:

通过所述智能合约调用桥把所述交易请求发送到区块链节点上,;

接收通过智能合约调用桥同步返回的交易请求的交易哈希值,并通过所述交易哈希值的回执确定交易是否完成。

进一步地,该装置还包括,节点管理单元,用于:

在所述合约解析单元501通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,获取节点池中至少一个区块链节点的状态信息;

根据状态信息确定用于处理当前合约结构内容的区块链节点。

进一步地,所述状态信息包括:区块链节点的负载状态信息和区块链节点的通信状态信息;

相应的,节点管理单元,在执行获取节点池中至少一个区块链节点的状态信息时,具体用于:

按照设定规律与区块链网络中的多个区块链节点进行通信,以采集各区块链节点的状态信息。

进一步地,节点管理单元,还用于:

在监测到状态信息出现异常的区块链节点,发起异常提醒。

进一步地,该装置还包括,计数管理单元,用于:

在所述合约解析单元501通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,根据发起方账户的前次计数值确定本次计数值,将所述本次计数值添加至所述合约结构内容中;

其中,所述发起方账户与所述业务请求的发起方一一对应或一对多对应;所述计数值顺序递增。

进一步地,计数管理单元,还用于:

通过所述智能合约调用桥向区块链节点发起计数值校正查询请求,以查询所述发起方账户在所述区块链中记录的最新计数值;

根据所述最新计数值更新本地的前次计数值。

进一步地,该装置还包括,事务管理单元,用于:

在所述合约解析单元501通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,在所述业务请求为业务上链请求时,对待上链的所述合约结构内容启动监控;

相应的,事务管理单元,还用于:

在合约解析单元501将所述合约结构内容传输给区块链节点之后,获取所述区块链节点根据所述合约结构内容调用所述目标智能合约来执行业务处理后产生的事务数据的事务标识;

根据所述事务标识监控所述事务数据的上链状态;

在所述事务数据上链失败或执行超时时,将所述合约结构内容向区块链节点进行重发。

进一步地,事务管理单元,还用于:

在所述合约解析单元501通过智能合约调用桥,将所述合约结构内容传输给区块链节点之前,监测所述合约结构内容中的计数值,并判断是否存在不连续的空计数值;

在存在空计数值时,通过所述智能合约调用桥请求区块链节点产生对应所述空计数值的空事务请求。

进一步地,该装置还包括,事件订阅单元,用于:

在所述业务请求为业务查询请求时,将所述业务查询请求记录至订阅池中,并向区块链节点注册查询监听事件,以请求在区块链节点中出现满足条件的查询事件时进行反馈;

将反馈的查询数据,作为执行结果提供给所述合约解析单元。

上述区块链网关的实现装置可执行本申请任意实施例所提供的区块链网关的实现方法,具备执行区块链网关的实现方法相应的功能模块和有益效果。

实施例六

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图6所示,是实现本申请实施例的区块链网关的实现方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。

存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的区块链网关的实现方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的区块链网关的实现方法。

存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的区块链网关的实现方法对应的程序指令/模块(例如,附图5所示的合约解析单元501)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的区块链网关的实现方法。

存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储所述区块链网关的实现方法的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至实现区块链网关的实现方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

实现区块链网关的实现方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。

输入装置603可接收输入的数字或字符信息,以及产生与实现区块链网关的实现方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

本申请实施例由合约解析单元对获取到的业务请求进行解析,并基于带调用的目标智能合约的方法名称和参数,对业务请求进行编码,以生成合约结构内容;通过智能合约调用桥,将合约结构内容传输至区块链节点,以请求区块链节点根据合约结构内容调用目标智能合约来执行业务处理;合约解析单元对执行结果进行解析,并响应业务请求。上述技术方案通过合约解析单元对业务请求自动进行解析编码,得到合约结构内容,以供区块链网络直接调用目标智能合约进行处理,以及通过合约解析单元解析由智能合约调用桥所接收的区块链节点调用目标智能合约的执行结果,以响应业务请求,减少了技术人员调用区块链网络中部署的业务逻辑的操作难度,降低了技术人员调用智能合约的技术门槛,进而优化了区块链智能合约的调用方式,提高了调用智能合约的便捷度。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1