智能合约调用的一致性检测方法、装置、设备及存储介质与流程

文档序号:18888516发布日期:2019-10-15 21:20阅读:184来源:国知局
智能合约调用的一致性检测方法、装置、设备及存储介质与流程

本申请属于计算机技术领域,具体涉及一种智能合约调用的一致性检测方法、装置、设备及存储介质。



背景技术:

区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。

智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转,在区块链环境里,智能合约表现为可执行代码。由于区块链具有去中心化、不可篡改和高可用性的特点,将智能合约以数字化的形式写入区块链中,可保障对智能合约的存储、读取、执行整个过程透明可跟踪、不可篡改。

在高并发进行智能合约调用时,区块链各节点执行智能合约的顺序可能出现错乱执行的情况,而体现整个区块链网络中,各节点的执行顺序又不相同,相当于智能合约乱序调用,智能合约乱序调用后各节点的一致性情况对整个区块链网络影响较大,但现有技术对区块链的各节点高并发乱序调用智能合约的一致性的研究甚少。



技术实现要素:

为了实现对各节点高并发乱序调用智能合约的一致性进行检测,本申请提出了一种智能合约调用的一致性检测方法、装置、设备及存储介质。

一方面,本申请提出了一种智能合约调用的一致性检测的方法,所述方法包括:

获取目标区块链,所述目标区块链包括至少一个节点;

通过面向切面编程的方式向与所述目标区块链对应的原始数据内容中注入乱序控制信息;

向每个节点中部署智能合约,所述智能合约包括资源转移规则或变量运算规则;

通过所述乱序控制信息控制每个节点乱序调用所述智能合约,得到与所述节点对应的智能合约乱序调用结果;

基于得到的每个节点对应的智能合约乱序调用结果,确定所述智能合约乱序调用的一致性检测结果。

另一方面,本申请提出了一种智能合约调用的一致性检测装置,所述装置包括:

目标区块链获取模块,用于获取目标区块链,所述目标区块链包括至少一个节点;

乱序控制信息注入模块,用于通过面向切面编程的方式向与所述目标区块链对应的原始数据内容中注入乱序控制信息;

智能合约部署模块,用于向每个节点中部署智能合约,所述智能合约包括资源转移规则或变量运算规则;

乱序调用结果获取模块,用于通过所述乱序控制信息控制每个节点乱序调用所述智能合约,得到与所述节点对应的智能合约乱序调用结果;

一致性检测结果确定模块,用于基于得到的每个节点对应的智能合约乱序调用结果,确定所述智能合约乱序调用的一致性检测结果。

另一方面,本申请提出了一种电子设备,所述电子设备包括:处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述所述的智能合约调用的一致性检测方法。

另一方面,本申请提出了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述所述的智能合约调用的一致性检测方法。

本申请提出的智能合约的一致性检测方法、装置、设备及存储介质,通过面向切面编程的方式,保证在不改变区块链服务的源代码下,向区块链的源代码中注入乱序控制代码,然后向每个节点中部署包括资源转移规则或变量运算规则的智能合约,实现控制各个节点的各个线程在高并发执行智能合约时出现乱序、重复或延迟执行的情况,接着查看与每个节点对应的智能合约乱序调用结果,最后基于每个节点对应的智能合约乱序调用结果,验证区块链各节点高并发乱序调用智能合约的一致性情况,从而实现了在不改变区块链源代码的情况下,对各节点乱序调用智能合约的一致性进行检查,降低了区块链产品的缺陷和风险,保证了智能合约乱序调用的一致性检测结果的准确性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本申请实施例提供的智能合约调用的一致性检测系统的系统架构图。

图2是本申请实施例提供的智能合约调用的一致性检测方法的一种流程示意图。

图3是本申请实施例提供的通过面向切面编程的方式向与所述目标区块链对应的原始数据内容中注入乱序控制信息的一种流程示意图。

图4是本申请实施例提供的aop乱序控制代码的编写、编译以及部署的原理图。

图5是本申请实施例提供的向每个节点中部署智能合约,所述智能合约包括资源转移规则或变量运算规则的一种流程示意图。

图6是本申请实施例提供的通过所述乱序控制信息控制每个节点乱序调用所述智能合约,得到与所述节点对应的智能合约乱序调用结果的一种流程示意图。

图7是本申请实施例提供的货币的转移以及变量的加、减运算的部署结果示意图。

图8是本申请实施例提供的智能合约的账户余额或智能合约中存储的变量的数值的查看结果示意图。

图9是本申请实施例提供的基于得到的每个节点对应的智能合约乱序调用结果,确定所述智能合约乱序调用的一致性检测结果的一种流程示意图。

图10是本申请实施例提供的智能合约调用的一致性检测方法的工作原理图。

图11是本申请实施例提供的智能合约调用的一致性检测装置的结构示意图。

图12是本申请实施例提供的服务器结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

区块链是由众多节点共同组成的一个端对端的去中心化网络,每个节点都允许获得一份完整的数据库拷贝,节点之间基于一套共识机制来维护整个区块链。图1所示为本申请实施例提供的智能合约调用的一致性检测系统的系统架构图,该智能合约调用的一致性检测系统可以作为调用智能节约的一致性检测方法的实施环境,如图1所示,该系统架构110可以包括分布式节点111、112、113、114、115和116,各个分布式节点之间可以通过通信链路进行连接,比如可以通过有线通信链路或无线通信链路进行连接等,多个分布式节点共同组成了区块链网络。用户可通过客户端120与服务器130互相连接,二者同时还可经由网络接入相应的节点。

应当理解,图1中所述的分布式节点的数量仅仅是示意性的,根据实现需要,可以具有任意数目的分布式节点。

在一个实施例中,服务器130可以响应于客户端120接收到的智能合约调用请求,然后由各节点(分布式节点111、112、113、114、115和116)对智能合约进行调用。

图2是本申请实施例提供的一种智能合约调用的一致性检测方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:

s201.获取目标区块链,所述目标区块链包括至少一个节点。

本说明书实施例中,首先需要确定出目标区块链,该目标区块链可以为由图1中的节点111、112、113、114、115和116组成的区块链网络。

s203.通过面向切面编程的方式向与所述目标区块链对应的原始数据内容中注入乱序控制信息。

本说明书实施例中,可以通过面向切面编程(aspectorientedprogramming,aop)的方式向区块链的运行流程注入乱序控制代码,即aop乱序控制代码,具体地,如图3所示,所述通过面向切面编程的方式向与所述目标区块链对应的原始数据内容中注入乱序控制信息,可以包括:

s301.通过面向切面编程的方式创建所述乱序控制信息,所述乱序控制信息包括延迟执行控制信息或重复执行控制信息。

本说明书实施例中,首先需要编写aop乱序控制代码,该aop乱序控制代码可以包括延迟执行控制代码或重复执行控制代码,使得控制在智能合约方法执行前后,随机增加延迟或重复执行的线程乱序行为。其中,延迟执行控制代码又可以进一步包括随机延迟控制代码或固定延迟控制代码,所述随机延迟控制代码用于控制智能合约随机延迟一段时间,所述固定延迟控制代码用于控制智能合约固定延迟一段时间,重复执行控制代码又可以进一步包括随机重复执行代码或固定重复执行控制代码,所述随机重复执行代码用于控制智能合约随机重复执行一定次数,所述固定重复执行代码用于控制智能合约固定执行一定次数。

s303.对所述乱序控制信息进行编译。

本说明书实施例中,在编写好aop乱序控制代码后,可以对该aop乱序控制代码以及区块链对应的原始数据内容进行编译,区块链对应的原始数据内容即为该区块链的源代码。编译的过程可以通过编译器来完成,该编译器可以是支持aop编译的编译器,比如aspectj编译器等,aspectj编译器是一个面向切面的框架,它扩展了java语言,aspectj定义了aop语法,它有一个专门的编译器用来生成遵守java字节编码规范的class文件。其中,java是一门面向对象编程语言,class是对某种类型的对象定义变量和方法的原型。

s305.确定所述乱序控制信息在所述原始数据内容中的切入位置。

s307.将编译后的乱序控制信息按照所述切入位置注入所述原始数据内容中。

本说明书实施例中,在对目标区块链的源代码进行编译的过程中,可以首先对该源代码进行解析,确定出需要注入aop乱序控制代码的切入位置,进而将编译后的aop乱序控制代码按照所述切入位置插入所述源代码中。具体地,所述aop乱序控制代码的编写、编译以及部署的原理图如图4所示。

在一个可行的实施例中,当aop乱序控制代码被注入到区块链的源代码中之后,aop乱序控制代码的修改变得不太容易,但很多时候,aop乱序控制代码的编写并不是很完美,需要根据实际运行需求对最初注入到源代码中的aop乱序控制代码进行修改。为了防止aop乱序控制代码被写死,无法便捷修改,从而实现不了随机延迟或固定延迟,随机重复次数或固定重复次数的需求,可以将aop乱序控制代码的设计与共享内存redis交互,便于通过外部脚本对aop乱序控制代码进行控制。其中,redis是一种高性能的分布式存储数据库。比如,某次执行需要重复执行n次,n为大于或等于1的整数,那可以通过修改redis中相应的值,以使aop乱序控制代码得到修改,这样就可以按照修改后的重复执行的次数对智能合约进行重复调用。再比如,某一执行需要固定延迟一段时间,则可以通过修改redis中相应的值,以使aop乱序控制代码得到修改,这样就可以按照修改后的固定执行的时间对智能可约进行固定延迟执行一段时间,一段时间过后,再做其他操作。

本说明书实施例中,通过aop控制信息可以在保证不改变区块链服务的源代码的情况下,向区块链智能节约的运作流程注入控制代码,实现控制各个节点的各个线程在之智能合约执行时出现乱序、重复或延迟执行的情况。因为aop控制技术具有不改变源代码的优点,因此不会造成区块链产品缺陷和风险,保证区块链源代码的可维护性,此外,由于可以通过外部脚本对aop乱序控制代码进行控制,提高aop乱序控制代码的便捷控制,方便实现随机或固定延迟,随机重复或固定重复的需求。而区块链产品较低的产品缺陷和风险、区块链源代码较高的可维护性以及aop乱序控制代码的便捷控制,均可以为智能合约的乱序调用的一致性检测提供保障,从而保证了智能合约乱序调用的一致性检测结果的准确性。

s205.向每个节点中部署智能合约,所述智能合约包括资源转移规则或变量运算规则。

本说明书实施例中,为了验证智能合约乱序调用的一致性,需要将智能合约部署到每个节点中,所述智能合约可以包括资源转移规则或变量运算规则中的至少一种。

在一个可行的实施例中所述资源转移规则可以包括货币的转入、转出规则,所述货币可以为虚拟货币或数字货币等。

在一个可行的实施例中,所述变量运算规则可以包括变量的加、减运算规则等,所述变量按照变量的作用范围来分,可以包括全局变量和局部变量等,按照存储占用空间来分,又可以包括整型变量,所述整型变量又可以进一步包括长整型变量、短整型变量、字符型变量、浮点型变量等。

本说明实施例中,在向每个节点部署智能合约之前,需要编写该智能合约代码,所述智能合约代码即为运行货币转入、转出规则的代码或运行变量加、减运算的代码,接着对智能合约代码进行编译、部署、发布到已经部署的区块链的每个节点中。

具体地,如图5所示,所述向每个节点中部署智能合约,所述智能合约包括资源转移规则或变量运算规则,可以包括:

s501.创建所述智能合约;其中,所述资源转移规则包括货币的转入、转出规则,所述变量运算规则包括变量的加、减运算规则。

s503.对所述智能合约进行编译。

s505.将编译后的智能合约部署到每个节点中。

s207.通过所述乱序控制信息控制每个节点乱序调用所述智能合约,得到与所述节点对应的智能合约乱序调用结果。

在实际应用中,编写发包脚本,用户会发调用请求(比如转账请求、加减请求)到每个节点上,当每个节点接收到用户的请求后,会以较高的并发量调用智能合约中的各类方法,比如,向智能节约转账,智能合约转账到外部,对智能合约中存储的变量相加或对智能合约中存储的变量相减等,与此同时,通过aop乱序控制代码控制每个节点上乱序执行智能合约中的各类方法,比如,是否开启节点乱序执行操作,随机或固定延迟,随机或固定重复执行等。

具体地,如图6所示,所述通过所述乱序控制信息控制每个节点乱序调用所述智能合约,得到与所述节点对应的智能合约乱序调用结果,可以包括:

s601.在每个节点调用所述智能合约的过程中,运行所述延迟执行控制信息或所述重复执行控制信息。

本说明书实施例中,可以设置一个是否开启节点乱序操作的步骤,比如在每个节点调用智能合约的过程中,当需要乱序控制的时候,则可以开启节点乱序执行操作,提高智能合约乱序调用的一致性检测的灵活性和可控性。

s603.基于所述延迟执行控制信息或所述重复执行控制信息,控制每个节点延迟或重复执行第一操作、第二操作、第三操作或第四操作中的至少一种;其中,所述第一操作为将外部账户的货币转入与所述节点对应的智能合约的操作,所述第二操作为将与所述节点对应的智能合约中的货币转出到所述外部账户的操作,所述第三操作为对与所述节点对应的智能节约中存储的变量进行相加的操作,所述第四操作为对与所述节点对应的智能合约中存储的变量进行相减的操作。

本说明书实施例中,在开启节点乱序执行操作之后,就可以通过aop乱序控制代码控制每个节点延迟或重复执行货币的转入、转出操作,或智能合约中存储的变量的加、减运算操作。货币的转移以及变量的加、减运算的部署结果示意图,可以如图7所示,图7中的add表示加,minus表示减,int256addnum表示256位整数的加法函数,int256minusnum表示256位整数的减法函数,transfer表示资源转移。

在实际应用中,所述外部账户指的是区块链外部的账户,每个节点的智能合约中均存在一个账户,存在智能合约中的账户相当于是内部账户,而存在与区块链外部的账户则为外部账户,比如外部用户的账户。

本说明书实施例中,在每个节点高并发调用所述智能合约之后,可以从每个节点中获得与所述节点对应的智能合约乱序调用结果,所述智能合约乱序调用结果可以包括合约验证信息、节点验证信息以及区块链功能验证信息,所述合约验证信息用于衡量智能合约的变化,所述节点验证信息用于衡量每个节点的变化,所述区块链功能验证信息用于衡量每个节点继续执行区块链操作的能力。而从各个维度获取不同的乱序调用结果,可以明显提高智能合约乱序调用的一致性检测的准确性和可信度。

s605.从每个节点中获取与所述节点对应的智能合约的账户余额或智能合约中存储的变量的数值,得到与所述节点对应的合约验证信息。

在一个可行的实施例中,可以从每个节点中调用合约getbalance方法和getnum方法静态读取智能合约的账户余额、智能合约中存储的变量的数值等,从而得到所述合约验证信息。其中,getbalance方法指的是获取余额的方法,getnum方法是获取存储的变量数值的方法。其中,智能合约的账户余额或智能合约中存储的变量的数值的查看结果示意图可以如图8所示,如图8所示,某一个节点的智能合约的账户余额为99990,存储的变量的数值为121。

在一个可行的实施例中,可以采用view方式声明查询方法,以获取智能合约的账户余额、智能合约中存储的变量的数值等,其中,view方式声明查询方法是一种在本地查找的方法。采用view方式声明查询方法,可以使得只能通过本地的节点(即目标区块链中的节点)去查看余额及储存的变量数值,而不会从网络上共识去查,这样就保证查找到的数据是基于区块链本地的,而不是从其他节点获取到的,保证了智能合约账户余额、存储的变量的数值获取的效率和准确性。

s607.从每个节点中获取与所述节点对应的外部账户的余额、区块链的高度或交易次数中的至少一种,得到与所述节点对应的节点验证信息。

在一个可行的实施例中,可以从每个节点中读取出每个节点对应的外部账户的余额、每个节点对应的区块链的高度、每个节点的交易次数等信息,从而得到所述节点验证信息。

s609.从每个节点中获取与所述节点对应的日志记录信息,得到与所述节点对应的区块链功能验证信息,所述区块链功能验证信息表征所述节点是否具备继续调用所述智能合约的能力。

在一个可行的实施例中,区块链功能验证信息的获取过程可以包括:

从每个节点中获取与所述节点对应的日志记录信息。

判断该日志记录信息是否异常。

当所述节点对应的日志记录信息未出现异常时,则得到表征所述节点具备继续调用所述智能合约的能力的区块链功能验证信息。

当所述节点对应的日志记录信息出现异常时,则得到表征所述节点不具备继续调用所述智能合约的能力的区块链功能验证信息。

在实际应用中,继续调用所述智能合约的能力可以理解为继续执行区块链操作(向区块链发起交易信息等均正常)。

s209.基于得到的每个节点对应的智能合约乱序调用结果,确定所述智能合约乱序调用的一致性检测结果。

本说明书实施例中,在得到智能合约乱序调用结果,需要对该智能合约乱序调用结果进行分析,从而确定所述智能合约乱序调用的一致性检测结果。

在一个可行的实施例中,当每个节点的合约验证信息、节点验证信息、区块链功能验证信息全部一致时,且每个节点均具备继续调用所述智能合约的能力,则认为通过所述智能合约乱序调用的一致性检测,否则认为没有通过所述智能合约乱序调用的一致性检测。比如,如图1所示,区块链网络中一共有6个节点,则当这6个节点中的约验证信息、节点验证信息、区块链功能验证信息全部一致时,且这6个节点均具备继续调用所述智能合约的能力时,则认为通过所述智能合约乱序调用的一致性检测。

在一个可行的实施例中,为了提高智能合约乱序调用的一致性检测的效率,并不需要每个节点的数据必须完全一样才能够确定通过智能合约乱序调用的一致性检测,在不影响网络共识的前提下,只要有预设数量个节点的数据完全一致,比如有2/3个节点的数据完全一致,且这2/3个节点均具备继续调用所述智能合约的能力,则就可以认为各个节点通过一致性检测,否则,认为没有通过一致性检测。比如,如图1所示,区块链网络中一共有6个节点,则当这6个节点中的其中4个节点(比如节点111、112、114、116)的约验证信息、节点验证信息、区块链功能验证信息全部一致时,且这4个节点均具备继续调用所述智能合约的能力时,则认为各个节点通过所述智能合约乱序调用的一致性检测。

具体地,如图9所示,所述基于得到的每个节点对应的智能合约乱序调用结果,确定所述智能合约乱序调用的一致性检测结果,还可以包括:

s901.获取所述合约验证信息以及所述节点验证信息相一致的节点,得到目标节点集合。

s903.当目标节点的数量大于预设阈值,且每个目标节点的区块链功能验证信息表征所述目标节点具备继续调用所述智能合约的能力,则确定通过所述智能合约乱序调用的一致性检测。

s905.当所述目标节点的数量小于或等于所述预设阈值,则确定未通过所述智能合约乱序调用的一致性检测。

图10所示为本申请实施例提供的一种智能合约调用的一致性检测方法的工作原理图,如图10所示,首先向区块链对应的源代码中注入随机或固定延迟,随机或固定重复的aop乱序控制代码,接着向区块链中的每个节点中注入包括货币转入转出和/或储存变量的加减运算的智能合约,当每个节点接收到外部用户的调用请求之后,每个节点开始调用所述智能合约,与此同时,开启节点乱序执行操作,控制每个节点延迟或重复执行货币的转入、转出和/或存储变量的加、减操作,得到每个节点对应的合约账户余额、合约中存储变量的数值、外部账户余额、区块链高度、交易次数、日志记录等乱序调用结果,最后判断是否有预设数量个节点的上述数据全部一致,且该预设数量个节点可以具备继续执行区块链操作的能力,如果是,则可以认为区块链各节点乱序调用所述智能合约的一致性检测结果为通过,否则,则认为不通过。本申请中,由于aop控制技术具有不改变源代码的优点,能够降低区块链产品缺陷和风险,保证区块链源代码的可维护性,此外,从不同维度高并发调用智能合约,从而获取不同维度的乱序调用结果,可以显著提高智能合约乱序调用的一致性检测的准确性和可信度。

本申请实施例还提供了一种智能合约调用的一致性检测装置,如图11所示,所述装置可以包括:

目标区块链获取模块1101,用于获取目标区块链,所述目标区块链包括至少一个节点。

乱序控制信息注入模块1103,用于通过面向切面编程的方式向与所述目标区块链对应的原始数据内容中注入乱序控制信息。

智能合约部署模块1105,用于向每个节点中部署智能合约,所述智能合约包括资源转移规则或变量运算规则。

乱序调用结果获取模块1107,用于通过所述乱序控制信息控制每个节点乱序调用所述智能合约,得到与所述节点对应的智能合约乱序调用结果。

一致性检测结果确定模块1109,用于基于得到的每个节点对应的智能合约乱序调用结果,确定所述智能合约乱序调用的一致性检测结果。

在一个可行的实施例中,所述乱序控制信息注入模块1103可以包括:

乱序控制信息创建单元,用于通过面向切面编程的方式创建所述乱序控制信息,所述乱序控制信息包括延迟执行控制信息或重复执行控制信息。

乱序控制信息编译单元,用于对所述乱序控制信息进行编译。

切入位置确定单元,用于确定所述乱序控制信息在所述原始数据内容中的切入位置。

注入单元,用于将编译后的乱序控制信息按照所述切入位置注入所述原始数据内容中。

在一个可行的实施例中,智能合约部署模块1105可以包括:

智能节约创建单元,用于创建所述智能合约;其中,所述资源转移规则包括货币的转入、转出规则,所述变量运算规则包括变量的加、减运算规则。

智能合约编译单元,用于对所述智能合约进行编译。

部署单元,用于将编译后的智能合约部署到每个节点中。

在一个可行的实施例中,所述乱序调用结果获取模块1107可以包括:

运行单元,用于在每个节点调用所述智能合约的过程中,运行所述延迟执行控制信息或所述重复执行控制信息。

延迟或重复执行单元,用于基于所述延迟执行控制信息或所述重复执行控制信息,控制每个节点延迟或重复执行第一操作、第二操作、第三操作或第四操作中的至少一种;其中,所述第一操作为将外部账户的货币转入与所述节点对应的智能合约的操作,所述第二操作为将与所述节点对应的智能合约中的货币转出到所述外部账户的操作,所述第三操作为对与所述节点对应的智能节约中存储的变量进行相加的操作,所述第四操作为对与所述节点对应的智能合约中存储的变量进行相减的操作。

合约验证信息获取单元,用于从每个节点中获取与所述节点对应的智能合约的账户余额或智能合约中存储的变量的数值,得到与所述节点对应的合约验证信息。

节点验证信息获取单元,用于从每个节点中获取与所述节点对应的外部账户的余额、区块链的高度或交易次数中的至少一种,得到与所述节点对应的节点验证信息。具体地,当所述节点对应的日志记录信息未出现异常时,则得到表征所述节点具备继续调用所述智能合约的能力的区块链功能验证信息,当所述节点对应的日志记录信息出现异常时,则得到表征所述节点不具备继续调用所述智能合约的能力的区块链功能验证信息。

区块链功能验证信息获取单元,用于从每个节点中获取与所述节点对应的日志记录信息,得到与所述节点对应的区块链功能验证信息,所述区块链功能验证信息表征所述节点是否具备继续调用所述智能合约的能力。

在一个可行的实施例中,所述一致性检测结果确定模块1109可以包括:

目标节点集合获取单元,用于获取所述合约验证信息以及所述节点验证信息相一致的节点,得到目标节点集合。

检测结果判断单元,用于当目标节点的数量大于预设阈值,且每个目标节点的区块链功能验证信息表征所述目标节点具备继续调用所述智能合约的能力,则确定通过所述智能合约乱序调用的一致性检测,当所述目标节点的数量小于或等于所述预设阈值,则确定未通过所述智能合约乱序调用的一致性检测。

本申请实施例还提供了一种调用智能节约的一致性检测方法的电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的智能合约调用的一致性检测方法。

本申请的实施例还提供了一种存储介质,所述存储介质可设置于终端之中以保存用于实现方法实施例中一种智能合约调用的一致性检测方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的智能合约调用的一致性检测方法。

可选地,在本说明书实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书实施例所述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。

本申请实施例所提供的智能合约的一致性检测方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图12是本申请实施例提供的一种智能合约的一致性检测方法的服务器的硬件结构框图。如图12所示,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1210(处理器1210可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器1230,一个或一个以上存储应用程序1223或数据1222的存储介质1220(例如一个或一个以上海量存储设备)。其中,存储器1230和存储介质1220可以是短暂存储或持久存储。存储在存储介质1220的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1210可以设置为与存储介质1220通信,在服务器1200上执行存储介质1220中的一系列指令操作。服务器1200还可以包括一个或一个以上电源1260,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1240,和/或,一个或一个以上操作系统1221,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

输入输出接口1240可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1200的通信供应商提供的无线网络。在一个实例中,输入输出接口1240包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1240可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1200还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。

需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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