CN109859038B - 一种区块链智能合约的生效方法及装置 - Google Patents
一种区块链智能合约的生效方法及装置 Download PDFInfo
- Publication number
- CN109859038B CN109859038B CN201811602952.5A CN201811602952A CN109859038B CN 109859038 B CN109859038 B CN 109859038B CN 201811602952 A CN201811602952 A CN 201811602952A CN 109859038 B CN109859038 B CN 109859038B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- latest version
- contract
- effective
- intelligent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例公开一种区块链智能合约的生效方法及装置。其中,所述方法包括:接收智能合约调用请求;根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;获取所述最新版本的智能合约并执行。所述装置用于执行上述方法。本发明实施例提供的区块链智能合约的生效方法及装置,保证了最新版本的智能合约在不同区块链节点分别执行的准确性。
Description
技术领域
本发明实施例涉及区块链技术领域,具体涉及一种区块链智能合约的生效方法及装置。
背景技术
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据并维护其在节点间的一致性、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种分布式基础架构与计算范式。智能合约由区块链内的多个用户共同参与制定,可用于用户之间的任何交易行为。基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。
将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。同时,由区块链自带的共识算法构建出一套状态机***,使得智能合约能够高效地运行。智能合约一旦部署就无法进行修改,而在某些情况下需要对已经部署的智能合约进行修改,例如发现智能合约的漏洞或者业务逻辑变更,就需要部署新版本的智能合约,对原有的智能合约进行升级。现有技术中,能够在所有需要的节点部署新版本的智能合约,新版本的智能合约在部署完成之后是即时生效的,无法保证新版本的智能合约在部署完成后在各个节点生效的同步,会出现有的节点执行升级后的智能合约,有的节点执行升级前的智能合约,导致数据错乱。
因此,如何提出一种区块链智能合约的生效方法,以保证智能合约执行的准确性成为业界亟待解决的重要课题。
发明内容
针对现有技术中的缺陷,本发明实施例提供一种区块链智能合约的生效方法及装置。
一方面,本发明实施例提供一种区块链智能合约的生效方法,包括:
接收智能合约调用请求;
根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;
若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;
获取所述最新版本的智能合约并执行。
另一方面,本发明实施例提供一种区块链智能合约的生效装置,包括:
接收模块,用于接收智能合约调用请求;
第一获得模块,用于根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;
第一判断模块,用于在判断获知所述生效状态为合约生效之后,确定调用最新版本的智能合约;
第一执行模块,用于获取所述最新版本的智能合约并执行。
再一方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的区块链智能合约的生效方法的步骤。
又一方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述的区块链智能合约的生效方法的步骤。
本发明实施例提供的区块链智能合约的生效方法及装置,由于能够通接收智能合约调用请求,根据智能合约调用请求获最新版本的取智能合约的合约地址,并根据最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态,最新版本的智能合约的生效状态是预先获得的,在判断获知生效状态为合约生效之后,确定最新版本的智能合约生效,获取最新版本的智能合约并执行,使处于生效状态的最新版本的智能合约被执行,保证了最新版本的智能合约在不同区块链节点分别执行的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的区块链智能合约的生效方法的流程示意图;
图2为本发明另一实施例提供的区块链智能合约的生效方法的流程示意图;
图3为本发明再一实施例提供的区块链智能合约的生效方法的流程示意图;
图4为本发明又一实施例提供的区块链智能合约的生效方法的流程示意图;
图5为本发明一实施例提供的区块链智能合约的生效装置的结构示意图;
图6为本发明另一实施例提供的区块链智能合约的生效装置的结构示意图;
图7为本发明又一实施例提供的区块链智能合约的生效装置的结构示意图;
图8为本发明再一实施例提供的区块链智能合约的生效装置的结构示意图;
图9为本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的区块链智能合约的生效方法的流程示意图,如图1所示,本发明实施例提供的区块链智能合约的生效方法,包括:
S101、接收智能合约调用请求;
具体地,在对区块链的各个节点部署的智能合约进行升级,获得最新版本的智能合约之后,各个所述节点的区块链智能合约的生效装置(以下简称生效装置)会存储所述最新版本的智能合约。所述节点的客户端可以发送智能合约调用请求给所述生效装置,所述生效装置会接收所述智能合约调用请求。其中,所述节点是在区块链中进行交易和数据交换的网络节点,可以采用服务器实现。
S102、根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;
具体地,所述生效装置在接收到所述智能合约调用请求之后,可以根据所述智能合约调用请求获得最新版本的智能合约的合约地址,然后根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态。所述生效状态包括合约生效和合约未生效两种状态,所述合约生效表示当前节点满足所述最新版本的智能合约生效条件,可以执行与所述最新版本的智能合约生效条件对应的最新版本的智能合约,所述合约未生效表示所述当前节点不满足所述最新版本的智能合约生效条件,不能执行与所述最新版本的智能合约生效条件对应的最新版本的智能合约。其中,所述当前节点是指接收所述智能合约调用请求的服务器所在的节点;所述最新版本的智能合约的生效状态是预先获得的,所述最新版本的智能合约的生效状态与最新版本的智能合约的合约地址对应。
例如,所述智能合约调用请求包括所述最新版本的智能合约的合约地址,所述生效装置接收到所述智能合约调用请求,即可从接收到的所述智能合约调用请求中获得所述最新版本的智能合约的合约地址。或者,所述智能合约调用请求包括路由合约地址和智能合约的地址标识,所述路由合约地址与所述智能合约的地址映射表对应,所述智能合约的地址映射表中包括至少一个智能合约的地址标识以及与所述智能合约的地址标识一一对应的最新版本的智能合约的合约地址。所述生效装置可以根据所述路由合约地址查询获得与所述路由合约地址对应的所述智能合约的地址映射表,然后根据所述智能合约的地址标识查询获得与所述智能合约的地址标识对应的最新版本的智能合约的合约地址。其中,所述智能合约的地址映射表是预设的。
S103、若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;
具体地,所述生效装置在获得所述最新版本的智能合约的生效状态之后,判断所述生效状态为所述合约生效还是所述合约未生效,如果所述生效状态为合约生效,那么确定最新版本的智能合约生效,可以执行最新版本的智能合约。
例如,所述合约生效用1表示,所述合约未生效用0表示,所述生效装置获得的生效状态为1,说明所述合约生效,可以执行最新版本的智能合约。所述生效装置获得的生效状态为0,说明所述合约未生效,可以执行所述最新版本的智能合约升级前的智能合约。
S104、获取所述最新版本的智能合约并执行。
具体地,所述生效装置在确定最新版本的智能合约生效之后,根据所述最新版本的智能合约的合约地址获得最新版本的智能合约,并执行最新版本的智能合约。
例如,区块链A包括N个部署智能合约a1的节点,由于智能合约a1的业务逻辑需要进行变更,对智能合约a1进行升级,在上述N个节点部署最新版本的智能合约a2,同时部署与最新版本的智能合约a2对应的最新版本的智能合约生效条件b:当前节点的块高度大于50时,最新版本的智能合约a2生效。并将最新版本的智能合约生效条件b与最新版本的智能合约a2的合约地址对应。上述N个节点中的每个所述节点的生效装置会定期检测节点的块高度,并根据节点的块高度以及最新版本的智能合约生效条件b确定所述节点是否满足最新版本的智能合约生效条件b,如果节点的块高度大于50,说明节点满足智能条件生效条件b,最新版本的智能合约a2的生效状态为所述合约生效,如果节点的块高度小于或者等于50,说明节点不满足能条件生效条件b,最新版本的智能合约a2的生效状态为所述合约不生效。所述生效装置可以将最新版本的智能合约a2的生效状态与最新版本的智能合约a2的合约地址对应存储。其中,所述定期根据实际情况进行设置,本发明实施例不做限定。
上述N个节点中的节点n3的客户端发送智能合约调用请求至节点n3的生效装置,所述智能合约调用请求包括最新版本的智能合约a2的合约地址;节点n3的生效装置接收到所述最新版本的智能合约调用请求之后,从所述智能合约调用请求中获得最新版本的智能合约a2的合约地址,然后根据最新版本的智能合约a2的合约地址查询获得最新版本的智能合约a2的生效状态。如果节点n3的生效装置判断出最新版本的智能合约a2的生效状态为所述合约生效,那么确定智能合约a2生效;所述生效装置可以根据最新版本的智能合约a2的合约地址查询获得最新版本的智能合约a2并执行。如果节点n3的生效装置判断出最新版本的智能合约a2的生效状态为所述合约未生效,那么确定最新版本的智能合约a2不生效,可以获取智能合约a1并执行。
本发明实施例提供的区块链智能合约的生效方法,由于能够通接收智能合约调用请求,根据智能合约调用请求获最新版本的取智能合约的合约地址,并根据最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态,最新版本的智能合约的生效状态是预先获得的,在判断获知生效状态为合约生效之后,确定最新版本的智能合约生效,获取最新版本的智能合约并执行,使处于生效状态的最新版本的智能合约被执行,保证了最新版本的智能合约在不同区块链节点分别执行的准确性。此外,由于预先获得了最新版本的智能合约的生效状态,可以提高对智能合约调用请求的处理效率。
图2为本发明另一实施例提供的区块链智能合约的生效方法的流程示意图,如图2所示,在上述各实施例的基础上,进一步地,本发明实施例提供的区块链智能合约的生效方法还包括:
S105、若判断获知所述生效状态为合约未生效,则根据所述最新版本的智能合约的合约地址获得最新版本的智能合约生效条件;其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约的合约地址对应;
具体地,所述生效装置在获得所述最新版本的智能合约的生效状态之后,判断所述生效状态为所述合约生效还是所述合约未生效,如果所述生效状态为所述合约未生效,那么根据所述最新版本的智能合约的合约地址获得最新版本的智能合约生效条件。其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约的合约地址对应;所述最新版本的智能合约生效条件根据实际与进行设置,本发明实施例不做限定。
例如,所述最新版本的智能合约生效条件为:当节点的块高度大于50时,最新版本的智能合约生效。或者,部署最新版本的智能合约的时间为2018年11月26日,所述最新版本的智能合约生效条件为:最新版本的智能合约在2018年12月1日生效。或者,所述最新版本的智能合约生效条件为:当节点的交易笔数超过500笔,最新版本的智能合约生效。其中,所述生效装置可以通过相应的应用程序编程接口(Application Programming Interface,简称API)获取到所述当前节点的块高度、时间和交易笔数。
S106、若判断获知当前节点满足所述最新版本的智能合约生效条件,则确定所述最新版本的智能合约生效;
具体地,所述生效装置在获得所述最新版本的智能合约生效条件之后,判断当前节点是否满足所述最新版本的智能合约生效条件,如果所述当前节点满足所述最新版本的智能合约生效条件,那么所述生效装置确定最新版本的智能合约生效,会调用最新版本的所述智能合约。其中,所述当前节点是指接收所述智能合约调用请求的服务器所在的节点。可理解的是,可以在部署最新版本的智能合约的时候将与最新版本的智能合约对应的最新版本的智能合约生效条件同时部署。
例如,所述最新版本的智能合约生效条件为:当前节点的块高度大于50时,所述最新版本的智能合约生效。所述生效装置获取到所述当前节点的块高度为70,将所述当前节点的块高度70与所述最新版本的智能合约生效条件中的块高度50进行比较,由于70大于50,可以确认与所述最新版本的智能合约生效条件对应的最新版本的智能合约生效。
S107、获取所述最新版本的智能合约并执行。
具体地,所述生效装置在确认所述最新版本的智能合约生效之后,可以根据所述最新版本的智能合约的合约地址,获取所述最新版本的智能合约,并执行所述最新版本的智能合约。
图3为本发明再一实施例提供的区块链智能合约的生效方法的流程示意图,如图3所示,在上述各实施例的基础上,进一步地,本发明实施例提供的区块链智能合约的生效方法还包括:
S108、若判断获知所述当前节点不满足所述最新版本的智能合约生效条件,则确认调用所述最新版本的智能合约升级前的智能合约;
具体地,所述生效装置在获得所述最新版本的智能合约生效条件之后,判断所述当前节点是否满足所述最新版本的智能合约生效条件,如果所述当前节点不满足所述最新版本的智能合约生效条件,那么所述生效装置确认调用所述最新版本的智能合约升级前的智能合约。
例如,所述最新版本的智能合约生效条件为:当前节点的块高度大于50时,所述智能合约生效。所述生效装置获取到所述当前节点的块高度为45,将所述当前节点的块高度45与所述最新版本的智能合约生效条件中的块高度50进行比较,由于45小于50,所述当前节点不满足所述最新版本的智能合约生效条件,所述生效装置确认调用所述最新版本的智能合约升级前的智能合约。
S109、获取所述升级前的智能合约并执行。
具体地,所述生效装置在确认调用所述最新版本的智能合约升级前的智能合约之后,可以根据升级前的智能合约的合约地址获得升级前的智能合约,并执行所述升级前的智能合约。其中,可以建立所述最新版本的智能合约的合约地址与升级前的智能合约的合约地址的对应关系,当所述当前节点不满足所述最新版本的智能合约生效条件时,可以通过所述最新版本的智能合约的合约地址获得升级前的智能合约的合约地址。
图4为本发明又一实施例提供的区块链智能合约的生效方法的流程示意图,如图4所示,在上述各实施例的基础上,进一步地,所述最新版本的智能合约的生效状态的获取步骤如下:
S401、定期检测获得节点的状态参数,所述状态参数是预设的;
具体地,所述生效装置可以定期检测获得节点的状态参数,例如每秒钟检测一次,所述状态参数是预设的,例如所述状态参数为所述当前节点的块高度、时间和交易笔数。其中,所述生效装置可以通过相应的API获取到所述当前节点的状态参数。其中,所述定期根据实际需要进行设置,本发明实施例不做限定。可理解的是,所述生效装置检测的是所述生效装置所属的节点的状态参数,在本发明实施例中所述节点包括所述生效装置。
S402、根据所述节点的状态参数以及与所述状态参数对应的最新版本的智能合约生效条件,判断所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件;其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约对应;
具体地,所述生效装置在获得所述节点的状态参数之后,可以根据所述节点的状态参数以及与所述状态参数对应的最新版本的智能合约生效条件,判断所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件。其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约对应,即每个所述最新版本的智能合约对应一个所述最新版本的智能合约生效条件。可理解的是,与所述状态参数对应的最新版本的智能合约生效条件可以有多个。
例如,所述状态参数包括所述节点的块高度、时间和交易笔数。与所述节点的块高度对应的最新版本的智能合约生效条件为:当节点的块高度大于第一阈值时,最新版本的智能合约生效。如果所述节点的块高度大于所述第一阈值,那么所述节点满足与所述节点的块高度对应的最新版本的智能合约生效条件;否则,所述节点不满足与所述节点的块高度对应的最新版本的智能合约生效条件。所述节点的时间对应的最新版本的智能合约生效条件为:最新版本的智能合约在某年某月某日起生效。如果所述节点的时间在某年某月某日之后(包括某年某月某日),那么为所述节点满足与所述节点的时间对应的最新版本的智能合约生效条件;否则,所述节点不满足与所述节点的时间对应的最新版本的智能合约生效条件。与所述节点的交易笔数对应的最新版本的智能合约生效条件为:当节点的交易笔数超过第二阈值,最新版本的智能合约生效。如果所述节点的交易笔数大于第二阈值,那么所述节点满足与所述节点的交易笔数对应的最新版本的智能合约生效条件;否则,所述节点不满足与所述节点的交易笔数对应的最新版本的智能合约生效条件。其中,所述第一阈值和所述第二阈值根据实际情况进行设置,本发明实施例不做限定。
S403、根据所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件的判断结果,获得与所述最新版本的智能合约的合约地址对应的最新版本的智能合约的生效状态。
具体地,对于每个与所述状态参数对应的最新版本的智能合约生效条件,所述生效装置都可以获得一个判断结果,即所述节点满足与所述状态参数对应的最新版本的智能合约生效条件或者所述节点不满足与所述状态参数对应的最新版本的智能合约生效条件。如果所述判断结果为所述节点满足与所述状态参数对应的最新版本的智能合约生效条件,那么与上述最新版本的智能合约生效条件对应的最新版本的智能合约的生效状态为所述合约生效;如果所述判断结果为所述节点不满足与所述状态参数对应的最新版本的智能合约生效条件,那么与上述最新版本的智能合约生效条件对应的最新版本的智能合约的生效状态为所述合约未生效。由于所述最新版本的智能合约与所述最新版本的智能合约的合约地址一一对应,为了方便查找所述最新版本的智能合约的生效状态,可以将所述最新版本的智能合约的合约地址与最新版本的智能合约的生效状态对应,从而获得与所述最新版本的智能合约的合约地址对应的最新版本的智能合约的生效状态。
本发明实施例提供的区块链智能合约的生效方法,由于能够通接收智能合约调用请求,根据智能合约调用请求获最新版本的取智能合约的合约地址,并根据最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态,最新版本的智能合约的生效状态是预先获得的,在判断获知生效状态为合约生效之后,确定最新版本的智能合约生效,获取最新版本的智能合约并执行,使处于生效状态的最新版本的智能合约被执行,保证了最新版本的智能合约在不同区块链节点分别执行的准确性。进一步地,通过最新版本的智能合约生效条件获得节点的最新版本的最新版本的智能合约的生效状态,保证了在各个节点最新版本的智能合约执行的同步性。
图5为本发明一实施例提供的区块链智能合约的生效装置的结构示意图,如图5所示,本发明实施例提供的区块链智能合约的生效装置包括接收模块501、第一获得模块502、第一判断模块503和第一执行模块504,其中:
接收模块501用于接收智能合约调用请求;第一获得模块502用于根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;第一判断模块503用于在判断获知所述生效状态为合约生效之后,确定调用最新版本的智能合约;第一执行模块504用于获取所述最新版本的智能合约并执行。
具体地,在对区块链的各个节点部署的智能合约进行升级,获得最新版本的智能合约之后,所述节点的客户端可以发送智能合约调用请求给接收模块501,接收模块501会接收所述智能合约调用请求。其中,所述节点是在区块链中进行交易和数据交换的网络节点,可以采用服务器实现。
在接收到所述智能合约调用请求之后,第一获得模块502可以根据所述智能合约调用请求获得最新版本的智能合约的合约地址,然后根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态。所述生效状态包括合约生效和合约未生效两种状态,所述合约生效表示当前节点满足所述最新版本的智能合约生效条件,可以执行与所述最新版本的智能合约生效条件对应的最新版本的智能合约,所述合约未生效表示所述当前节点不满足所述最新版本的智能合约生效条件,不能执行与所述最新版本的智能合约生效条件对应的最新版本的智能合约。其中,所述当前节点是指接收所述智能合约调用请求的服务器所在的节点;所述最新版本的智能合约的生效状态是预先获得的,所述最新版本的智能合约的生效状态与最新版本的智能合约的合约地址对应。
在获得所述最新版本的智能合约的生效状态之后,第一判断模块503判断所述生效状态为所述合约生效还是所述合约未生效,如果所述生效状态为合约生效,那么确定最新版本的智能合约生效,可以执行最新版本的智能合约。
在确定最新版本的智能合约生效之后,第一执行模块504根据所述最新版本的智能合约的合约地址获得最新版本的智能合约,并执行最新版本的智能合约。
本发明实施例提供的区块链智能合约的生效装置,由于能够通接收智能合约调用请求,根据智能合约调用请求获最新版本的智能合约的合约地址,并根据最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态,最新版本的智能合约的生效状态是预先获得的,在判断获知生效状态为合约生效之后,确定最新版本的智能合约生效,获取最新版本的智能合约并执行,使处于生效状态的最新版本的智能合约被执行,保证了最新版本的智能合约在不同区块链节点分别执行的准确性。此外,由于预先获得了最新版本的智能合约的生效状态,可以提高对智能合约调用请求的处理效率。
图6为本发明另一实施例提供的区块链智能合约的生效装置的结构示意图,如图6所示,在上述各实施例的基础上,进一步地,本发明实施例提供的区块链智能合约的生效装置还包括第二判断模块505、第三判断模块506和第二执行模块507,其中:
第二判断模块505用于在判断获知所述生效状态为合约未生效之后,根据所述最新版本的智能合约的合约地址获得最新版本的智能合约生效条件;第三判断模块506用于在判断获知当前节点满足所述最新版本的智能合约生效条件之后,确定调用所述最新版本的智能合约;第二执行模块507用于获取所述最新版本的智能合约并执行。
具体地,在获得所述最新版本的智能合约的生效状态之后,第二判断模块505判断所述生效状态为所述合约生效还是所述合约未生效,如果所述生效状态为所述合约未生效,那么根据所述最新版本的智能合约的合约地址获得最新版本的智能合约生效条件。其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约的合约地址对应;所述最新版本的智能合约生效条件根据实际与进行设置,本发明实施例不做限定。
在获得所述最新版本的智能合约生效条件之后,第三判断模块506判断当前节点是否满足所述最新版本的智能合约生效条件,如果所述当前节点满足所述最新版本的智能合约生效条件,那么所述生效装置确定最新版本的智能合约生效,会调用最新版本的所述智能合约。其中,所述当前节点是指接收所述智能合约调用请求的服务器所在的节点。可理解的是,可以在部署最新版本的智能合约的时候将与最新版本的智能合约对应的最新版本的智能合约生效条件同时部署。
在确认所述最新版本的智能合约生效之后,第二执行模块507可以根据所述最新版本的智能合约的合约地址,获取所述最新版本的智能合约,并执行所述最新版本的智能合约。
图7为本发明又一实施例提供的区块链智能合约的生效装置的结构示意图,如图7所示,在上述各实施例的基础上,进一步地,本发明实施例提供的区块链智能合约的生效装置还包括第四判断模块508和第三执行模块509,其中:
第四判断模块508用于在判断获知所述当前节点不满足所述最新版本的智能合约生效条件之后,确认调用所述最新版本的智能合约升级前的智能合约;第三执行模块509用于获取所述升级前的智能合约并执行。
具体地,在获得所述最新版本的智能合约生效条件之后,第四判断模块508判断所述当前节点是否满足所述最新版本的智能合约生效条件,如果所述当前节点不满足所述最新版本的智能合约生效条件,那么第四判断模块508确认调用所述最新版本的智能合约升级前的智能合约。
在确认调用所述最新版本的智能合约升级前的智能合约之后,第三执行模块509可以根据升级前的智能合约的合约地址获得升级前的智能合约,并执行所述升级前的智能合约。其中,可以建立所述最新版本的智能合约的合约地址与升级前的智能合约的合约地址的对应关系,当所述当前节点不满足所述最新版本的智能合约生效条件时,可以通过所述最新版本的智能合约的合约地址获得升级前的智能合约的合约地址。
图8为本发明再一实施例提供的区块链智能合约的生效装置的结构示意图,如图8所示,在上述各实施例的基础上,进一步地,本发明实施例提供的区块链智能合约的生效装置还包括检测模块510、第五判断模块511和第二获得模块512,其中:
检测模块510用于定期检测当前节点的状态参数,所述状态参数是预设的;第五判断模块511用于根据所述节点的状态参数以及与所述状态参数对应的最新版本的智能合约生效条件,判断所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件;其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约对应;第二获得模块512用于根据所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件的判断结果,获得与所述最新版本的智能合约的合约地址对应的最新版本的智能合约的生效状态。
具体地,检测模块510可以定期检测获得节点的状态参数,例如每秒钟检测一次,所述状态参数是预设的,例如所述状态参数为所述当前节点的块高度、时间和交易笔数。其中,检测模块510可以通过相应的API获取到所述当前节点的状态参数。其中,所述定期根据实际需要进行设置,本发明实施例不做限定。可理解的是,检测模块510检测的是检测模块510所属的节点的状态参数,在本发明实施例中所述节点包括检测模块510。
在获得所述节点的状态参数之后,第五判断模块511可以根据所述节点的状态参数以及与所述状态参数对应的最新版本的智能合约生效条件,判断所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件。其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约对应,即每个所述最新版本的智能合约对应一个所述最新版本的智能合约生效条件。可理解的是,与所述状态参数对应的最新版本的智能合约生效条件可以有多个。
对于每个与所述状态参数对应的最新版本的智能合约生效条件,第二获得模块512都可以获得一个判断结果,即所述节点满足与所述状态参数对应的最新版本的智能合约生效条件或者所述节点不满足与所述状态参数对应的最新版本的智能合约生效条件。如果获得所述判断结果为所述节点满足与所述状态参数对应的最新版本的智能合约生效条件,那么与上述最新版本的智能合约生效条件对应的最新版本的最新版本的智能合约的生效状态为所述合约生效;如果所述判断结果为所述节点不满足与所述状态参数对应的最新版本的智能合约生效条件,那么与上述最新版本的智能合约生效条件对应的最新版本的最新版本的智能合约的生效状态为所述合约未生效。由于所述最新版本的智能合约与所述最新版本的智能合约的合约地址一一对应,为了方便查找所述最新版本的智能合约的生效状态,可以将所述最新版本的智能合约的合约地址与最新版本的智能合约的生效状态对应,从而获得与所述最新版本的智能合约的合约地址对应的最新版本的智能合约的生效状态。
本发明实施例提供的装置的实施例具体可以用于执行上述相应方法实施例的处理流程,其功能在此不再赘述,可以参照上述相应方法实施例的详细描述。
图9为本发明一实施例提供的电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行如下方法:接收智能合约调用请求;根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;获取所述最新版本的智能合约并执行。
本实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收智能合约调用请求;根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;获取所述最新版本的智能合约并执行。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收智能合约调用请求;根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;获取所述最新版本的智能合约并执行。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种区块链智能合约的生效方法,其特征在于,包括:
接收智能合约调用请求;
根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;
若判断获知所述生效状态为合约生效,则确定最新版本的智能合约生效;
获取所述最新版本的智能合约并执行;
所述最新版本的智能合约的生效状态的获取步骤如下:
定期检测获得节点的状态参数,所述状态参数是预设的;
根据所述节点的状态参数以及与所述状态参数对应的最新版本的智能合约生效条件,判断所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件;其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约对应;
根据所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件的判断结果,获得与所述最新版本的智能合约的合约地址对应的最新版本的智能合约的生效状态。
2.根据权利要求1所述的方法,其特征在于,还包括:
若判断获知所述生效状态为合约未生效,则根据所述最新版本的智能合约的合约地址获得最新版本的智能合约生效条件;其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约的合约地址对应;
若判断获知当前节点满足所述最新版本的智能合约生效条件,则确定所述最新版本的智能合约生效;
获取所述最新版本的智能合约并执行。
3.根据权利要求2所述的方法,其特征在于,还包括:
若判断获知所述当前节点不满足所述最新版本的智能合约生效条件,则确认调用所述最新版本的智能合约升级前的智能合约;
获取所述升级前的智能合约并执行。
4.一种区块链智能合约的生效装置,其特征在于,包括:
接收模块,用于接收智能合约调用请求;
第一获得模块,用于根据所述智能合约调用请求获取最新版本的智能合约的合约地址,并根据所述最新版本的智能合约的合约地址获得对应的最新版本的智能合约的生效状态;其中,所述最新版本的智能合约的生效状态是预先获得的,与所述最新版本的智能合约的合约地址对应;
第一判断模块,用于在判断获知所述生效状态为合约生效之后,确定调用最新版本的智能合约;
第一执行模块,用于获取所述最新版本的智能合约并执行;
检测模块,用于定期检测当前节点的状态参数,所述状态参数是预设的;
第五判断模块,用于根据所述节点的状态参数以及与所述状态参数对应的最新版本的智能合约生效条件,判断所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件;其中,所述最新版本的智能合约生效条件是预设的,与所述最新版本的智能合约对应;
第二获得模块,用于根据所述节点是否满足与所述状态参数对应的最新版本的智能合约生效条件的判断结果,获得与所述最新版本的智能合约的合约地址对应的最新版本的智能合约的生效状态。
5.根据权利要求4所述的装置,其特征在于,还包括第二判断模块、第三判断模块和第二执行模块,其中:
所述第二判断模块,用于在判断获知所述生效状态为合约未生效之后,根据所述最新版本的智能合约的合约地址获得最新版本的智能合约生效条件;
所述第三判断模块,用于在判断获知当前节点满足所述最新版本的智能合约生效条件之后,确定调用所述最新版本的智能合约;
所述第二执行模块,用于获取所述最新版本的智能合约并执行。
6.根据权利要求5所述的装置,其特征在于,还包括第四判断模块和第三执行模块,其中:
所述第四判断模块,用于在判断获知所述当前节点不满足所述最新版本的智能合约生效条件之后,确认调用所述最新版本的智能合约升级前的智能合约;
所述第三执行模块,用于获取所述升级前的智能合约并执行。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3任一项所述的区块链智能合约的生效方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至3任一项所述的区块链智能合约的生效方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811602952.5A CN109859038B (zh) | 2018-12-26 | 2018-12-26 | 一种区块链智能合约的生效方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811602952.5A CN109859038B (zh) | 2018-12-26 | 2018-12-26 | 一种区块链智能合约的生效方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109859038A CN109859038A (zh) | 2019-06-07 |
CN109859038B true CN109859038B (zh) | 2021-06-25 |
Family
ID=66892534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811602952.5A Active CN109859038B (zh) | 2018-12-26 | 2018-12-26 | 一种区块链智能合约的生效方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109859038B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111932260B (zh) * | 2020-09-18 | 2021-01-26 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
WO2022263690A1 (es) * | 2021-06-16 | 2022-12-22 | E Process Med, S.L. | Método de generacion de contratos inteligentes |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017180846A1 (en) * | 2016-04-14 | 2017-10-19 | Pricewaterhousecoopers Llp | Cryptoconomy solution for administration and governance in a distributed system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101444272B1 (ko) * | 2013-02-27 | 2014-10-22 | (주) 아트리아트레이딩 | 주소록을 이용하여 대차 거래를 지원하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능 기록 매체 |
US20180220278A1 (en) * | 2017-02-01 | 2018-08-02 | BriefTrace Ltd. | System and method for securing and verifying information from transportation monitors |
CN107943580A (zh) * | 2017-11-13 | 2018-04-20 | 上海点融信息科技有限责任公司 | 用于管理区块链节点处的用户智能合约的方法以及设备 |
CN108170740B (zh) * | 2017-12-18 | 2022-04-26 | 深圳前海微众银行股份有限公司 | 数据迁移方法、***和计算机可读存储介质 |
CN108510389B (zh) * | 2018-03-30 | 2020-12-18 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN108833398B (zh) * | 2018-06-08 | 2020-12-15 | 深圳智链未来科技有限公司 | 一种区块链智能合约更新方法、装置及设备 |
-
2018
- 2018-12-26 CN CN201811602952.5A patent/CN109859038B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017180846A1 (en) * | 2016-04-14 | 2017-10-19 | Pricewaterhousecoopers Llp | Cryptoconomy solution for administration and governance in a distributed system |
Also Published As
Publication number | Publication date |
---|---|
CN109859038A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109885612B (zh) | 区块链智能合约的同步生效方法及装置 | |
CN110677462B (zh) | 多区块链网络的访问处理方法、***、装置及存储介质 | |
CN108416449B (zh) | 一种运维方法和装置 | |
CN109753300B (zh) | 一种算法升级方法、计算任务发送方法及相关装置 | |
CN109859038B (zh) | 一种区块链智能合约的生效方法及装置 | |
CN110347545A (zh) | 一种业务平台缓存策略的测试方法及装置 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN111694638A (zh) | 规则包加载方法、规则包执行方法及终端设备 | |
CN112083971B (zh) | 组件处理方法、设备及存储介质 | |
CN111147605B (zh) | 服务注册方法、装置和设备 | |
CN103647811A (zh) | 一种实现应用访问后台服务的方法和装置 | |
CN113703946B (zh) | 应用恢复方法及其装置、电子设备、计算机可读存储介质 | |
CN110737548A (zh) | 数据请求方法和服务器 | |
CN110737458A (zh) | 一种代码更新方法和相关装置 | |
CN108733536B (zh) | 监控管理***及方法 | |
CN110119429B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN109933407B (zh) | 区块链dapp虚拟机、数据处理方法和计算设备 | |
CN109194703B (zh) | 云平台主机间通信负载的处理方法、电子装置及介质 | |
CN111105277A (zh) | 一种区块链状态变更交易追溯的方法及装置 | |
CN109189424A (zh) | 一种固件升级方法及装置 | |
CN115421891A (zh) | 一种任务分发方法、装置、设备及介质 | |
CN114968286A (zh) | 微服务发布方法、装置、存储介质及电子设备 | |
CN110309149B (zh) | 一种数据表处理方法、装置、电子设备及存储介质 | |
CN113867778A (zh) | 一种镜像文件的生成方法、装置、电子设备及存储介质 | |
CN109542598B (zh) | 定时任务管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |