一种智能合约管理的方法以及相关装置
专利摘要:本申请公开了一种智能合约管理的方法以及相关装置,通过接收目标事件的操作指令,并确定所述目标事件;然后获取所述目标事件对应的第一智能合约;并根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;进而调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作,实现了智能合约的自动调用过程,且可以迅速的调用用于判定目标事件的多个智能合约,提高了智能合约的调用效率以及可操作性。
专利说明:
一种智能合约管理的方法以及相关装置
[0001] 技术领域
[0002] 本申请涉及计算机技术领域,尤其涉及一种智能合约管理的方法以及相关装置。
[0003] 背景技术
[0004] 区块链技术的诞生,真正意义上开辟了为“数字化信用”赋能的通道,而智能合约作为区块链中重要的资产,具有不可替代的作用。智能合约部署在区块链上,是分布式应用的基本单元,分布式应用可以看成是一组互联的智能合约,它们可以共同促成高级功能的实现。就像一个大公司由很多不同的部门组成一样,各个模块共同产生“整体大于部分之和”的效益。分布式应用是通过区块链层部署一组智能合约的,然后与这些智能合约进行交互实现。
[0005] 目前常规的区块链系统智能合约包括以超级账本为代表的联盟链,在联盟链中智能合约在每个节点单独安装、实例化,并在需求执行相关判定过程时调用该智能合约。
[0006] 但是,在每个节点上都进行智能合约的独立安装和实例化,操作繁琐;且当目标事件复杂度较高的时候,需要通过多个智能合约间协作的方式完成,此时独立安装需要耗费大量时间,影响智能合约调用的效率。
[0007] 发明内容
[0008] 有鉴于此,本申请第一方面提供一种智能合约管理的方法,可应用于超级账本系统或其他联盟链智能合约管理的应用的运行过程中,具体包括:接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;
[0009] 获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;
[0010] 根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;
[0011] 调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
[0012] 优选的,在本申请一些可能的实现方式中,所述根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约,包括:
[0013] 确定所述第一智能合约中的特征元素,所述特征元素基于合约代码设定,所述合约代码为所述第一智能合约在所述数据库中的储存形式;
[0014] 根据所述特征元素遍历所述数据库中与所述特征元素存在关联关系的合约集合;
[0015] 根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约。
[0016] 优选的,在本申请一些可能的实现方式中,所述确定所述第一智能合约中的特征元素,包括:
[0017] 获取所述目标事件对应的第一智能合约;
[0018] 确定所述第一智能合约的版本信息,所述版本信息为指示所述第一智能合约的标识信息;
[0019] 所述根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约,包括:
[0020] 根据所述第一智能合约的版本信息遍历所述数据库,以确定与所述第一智能合约存在关联关系且所述版本信息对应的多个所述第二智能合约。
[0021] 优选的,在本申请一些可能的实现方式中,所述方法还包括:
[0022] 确定所述第一智能合约对应的多个所述版本信息,所述版本信息用于指示更新后的所述第一智能合约的标识信息;
[0023] 根据多个所述版本信息分别储存所述第一智能合约,并储存对应的多个所述第二智能合约,以得到多个智能合约集合,所述智能合约集合用于指示不同版本信息下的所述目标事件的触发过程。
[0024] 优选的,在本申请一些可能的实现方式中,所述接收目标事件的操作指令,并确定所述目标事件,包括:
[0025] 接收目标事件的操作指令;
[0026] 根据所述操作指令确定对应的所述区块链节点;
[0027] 根据所述区块链节点的特征确定所述目标事件。
[0028] 优选的,在本申请一些可能的实现方式中,所述根据所述操作指令确定对应的区块链节点之后,所述方法还包括:
[0029] 根据所述操作指令确定对应的区块链节点;
[0030] 确定所述区块链节点对应的触发操作,所述触发操作用于指示调用所述第一智能合约和多个所述第二智能合约后的判定对象。
[0031] 优选的,在本申请一些可能的实现方式中,所述智能合约的管理方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
[0032] 本申请第二方面提供一种智能合约管理的装置,包括:接收单元,用于接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;
[0033] 获取单元,用于获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;
[0034] 遍历单元,用于根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;
[0035] 调用单元,用于调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
[0036] 优选的,在本申请一些可能的实现方式中,所述遍历单元,具体用于确定所述第一智能合约中的特征元素,所述特征元素基于合约代码设定,所述合约代码为所述第一智能合约在所述数据库中的储存形式;
[0037] 所述遍历单元,具体用于根据所述特征元素遍历所述数据库中与所述特征元素存在关联关系的合约集合;
[0038] 所述遍历单元,具体用于根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约。
[0039] 优选的,在本申请一些可能的实现方式中,所述遍历单元,具体用于获取所述目标事件对应的第一智能合约;
[0040] 所述遍历单元,具体用于确定所述第一智能合约的版本信息,所述版本信息为指示所述第一智能合约的标识信息;
[0041] 所述遍历单元,具体用于根据所述第一智能合约的版本信息遍历所述数据库,以确定与所述第一智能合约存在关联关系且所述版本信息对应的多个所述第二智能合约。
[0042] 优选的,在本申请一些可能的实现方式中,所述遍历单元,还用于确定所述第一智能合约对应的多个所述版本信息,所述版本信息用于指示更新后的所述第一智能合约的标识信息;
[0043] 所述遍历单元,还用于根据多个所述版本信息分别储存所述第一智能合约,并储存对应的多个所述第二智能合约,以得到多个智能合约集合,所述智能合约集合用于指示不同版本信息下的所述目标事件的触发过程。
[0044] 优选的,在本申请一些可能的实现方式中,所述接收单元,具体用于接收目标事件的操作指令;
[0045] 所述接收单元,具体用于根据所述操作指令确定对应的所述区块链节点;
[0046] 所述接收单元,具体用于根据所述区块链节点的特征确定所述目标事件。
[0047] 优选的,在本申请一些可能的实现方式中,所述接收单元,还用于根据所述操作指令确定对应的区块链节点;
[0048] 所述接收单元,还用于确定所述区块链节点对应的触发操作,所述触发操作用于指示调用所述第一智能合约和多个所述第二智能合约后的判定对象。
[0049] 优选的,在本申请一些可能的实现方式中,所述智能合约的管理方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
[0050] 本申请第三方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一项所述的智能合约管理的的方法。
[0051] 本申请第四方面提供一种计算机设备,包括:存储器、处理器以及总线系统;所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行上述第一方面或第一方面任一项所述的智能合约管理的的方法。
[0052] 从以上技术方案可以看出,本申请实施例具有以下优点:
[0053] 通过接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;然后获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;并根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;进而调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作,实现了智能合约的自动调用过程,且可以迅速的调用用于判定目标事件的多个智能合约,提高了智能合约的调用效率以及可操作性。
[0054] 附图说明
[0055] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0056] 图1为联盟链系统运行的网络架构图;
[0057] 图2为一种智能合约管理的系统架构图;
[0058] 图3为本申请实施例提供的一种智能合约管理的方法的流程图;
[0059] 图4为本申请实施例提供的另一种智能合约管理的方法的流程图;
[0060] 图5为本申请实施例提供的一种智能合约管理的界面显示示意图;
[0061] 图6为本申请实施例提供的智能合约管理装置的结构示意图;
[0062] 图7为本申请实施例提供的另一种智能合约管理装置的结构示意图;
[0063] 图8A为本申请实施例提供的一种数据共享系统示意图;
[0064] 图8B为本申请实施例提供的数据共享系统中的区块组成示意图;
[0065] 图8C为本申请实施例提供的区块链节点的数据传输响应示意图。
[0066] 具体实施方式
[0067] 本申请实施例提供了一种智能合约管理的方法以及相关装置,可以应用于超级账本系统或其他联盟链智能合约管理的应用的运行过程中,具体通过接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;然后获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;并根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;进而调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作,实现了智能合约的自动调用过程,且可以迅速的调用用于判定目标事件的多个智能合约,提高了智能合约的调用效率以及可操作性。
[0068] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0069] 应理解,本申请提供的智能合约管理方法可以应用于可应用于区块链中联盟链系统的运行过程中,具体的,联盟链系统可以运行于如图1所示的网络架构中,如图1所示,是联盟链系统运行的网络架构图,如图可知,客户端代表由最终用户操作的实体,它连接到某一个节点或者排序服务节点上与区块链网络进行通信。客户端向背书节点提交交易提案,当收集到足够背书后,向排序服务节点广播交易,进行排序,生成区块。然后背书节点会执行交易并对结果进行签名背书,即指定节点执行交易并向生成交易提案的客户端应用程序返回是/否响应的过程;背书节点是动态的角色,是与具体链码绑定的,每个链码在实例化的时候都会设置背书策略,指定特定节点的有效交易背书。客户端接收响应结果后,向排序节点提交交易,排序服务节点接收包含背书签名的交易,对未打包的交易进行排序生成区块,广播给其他节点,其中,记账节点也会收到区块广播,记账节点负责验证从排序服务节点接收的区块里的交易,然后将块提交(写入/追加)到其通道账本的副本,记账节点还将每个块中的每个交易标记为有效或无效。
[0070] 本申请提出的智能合约管理方法可应用于背书节点或结账节点中,作为独立的装置(插件)或程序运行,用户可通过控制台输入YAML配置,用于指示特定的智能合约种类,当收到第一智能合约的调用请求时,通过对第一智能合约的代码进行分析,在智能合约数据库中遍历具有关联关系的多个第二智能合约,进而协同完成对于目标时间的判定过程;另外,用户还可以根据需求对相关智能合约进行安装、实例化或升级操作,可以通过docker对相关操作进行编辑。
[0071] 可以理解的是,上述联盟链系统可以运行于个人移动终端,也可以运行于服务器,还可以作为运行于第三方设备以提供智能合约管理,以进行相关事件的判定;具体的联盟链系统可以是以一种程序的形式在上述设备中运行,也可以作为上述设备中的系统部件进行运行,还可以作为云端服务程序的一种,具体运作模式因实际场景而定,此处不做限定。
[0072] 区块链技术的诞生,真正意义上开辟了为“数字化信用”赋能的通道,而智能合约作为区块链中重要的资产,具有不可替代的作用。智能合约部署在区块链上,是分布式应用的基本单元,分布式应用可以看成是一组互联的智能合约,它们可以共同促成高级功能的实现。就像一个大公司由很多不同的部门组成一样,各个模块共同产生“整体大于部分之和”的效益。分布式应用是通过区块链层部署一组智能合约的,然后与这些智能合约进行交互实现。
[0073] 目前常规的区块链系统智能合约包括以超级账本为代表的联盟链,在联盟链中智能合约在每个节点单独安装、实例化,并在需求执行相关判定过程时调用该智能合约。
[0074] 但是,在每个节点上都进行智能合约的独立安装和实例化,操作繁琐;且当目标事件复杂度较高的时候,需要通过多个智能合约间协作的方式完成,此时独立安装需要耗费大量时间,影响智能合约调用的效率。
[0075] 为了解决上述问题,本申请提出了一种智能合约管理的方法,该方法应用于图2所示的智能合约管理的系统框架中,如图2所示,是一种智能合约管理的系统架构图,图中包括任务层、智能合约依赖管理层以及区块链接口层;其中,任务层用于智能合约的构建,并定期或定时对智能合约进行升级,而且还负载智能合约与相关事件的关联过程;智能合约依赖管理层用于智能合约依赖分析,即根据第一智能合约确定存在关联关系的多个第二智能合约,智能合约依赖管理层还用于导入新的智能合约以及相关智能合约关联关系的升级过程;区块链接口层用于智能合约的安装、实例化以及升级过程,以便于相关节点对智能合约的调用。
[0076] 可以理解的是,此处以任务层、智能合约依赖管理层以及区块链接口层为例进行说明,具体的也可以是基于其他功能划分结构对智能合约管理系统进行划分,具体的划分形式因实际场景而定,此处不做限定。
[0077] 可以理解的是,本申请所提供的方法可以为一种程序的写入,以作为硬件系统中的一种处理逻辑,也可以作为一种智能合约管理装置,采用集成或外接的方式实现上述处理逻辑。作为一种实现方式,该智能合约管理装置通过接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;然后获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;并根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;进而调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作,实现了智能合约的自动调用过程,且可以迅速的调用用于判定目标事件的多个智能合约,提高了智能合约的调用效率。
[0078] 结合上述流程架构,下面将对本申请中智能合约管理的方法进行介绍,请参阅图3,图3为本申请实施例提供的一种智能合约管理的方法的流程图,本申请实施例至少包括以下步骤:
[0079] 301、接收目标事件的操作指令,并确定所述目标事件。
[0080] 本实施例中,所述目标事件为区块链节点中的操作实例,具体的,所述目标事件为联盟链中的基于智能合约进行判定的事件,具体应用包括超级账本。
[0081] 可选的,由于目标事件在不同区块链节点中对应的判定过程可能不同,例如在背书节点中,智能合约用于判定是否执行交易提案;在记账节点中,智能合约用于判定交易事件的有效性。具体的,首先接收目标事件的操作指令;然后根据所述操作指令确定对应的所述区块链节点,例如:背书节点或记账节点;然后根据所述区块链节点的特征确定所述目标事件。
[0082] 对应的,在确定目标事件后,目标事件对应的区块链节点执行的操作即作为后续调用智能合约后的判定对象或触发对象。
[0083] 302、获取所述目标事件对应的第一智能合约。
[0084] 本实施例中,所述第一智能合约与触发对所述目标事件的操作相关,由于一般对与目标事件的判定过程涉及多个智能合约的协作过程,多个智能操作存在判断逻辑上的关联,此处第一智能合约可以是与目标事件的判定过程涉及的多个智能合约中的任意一个,也可以是用户通过控制台输入的指定智能合约。
[0085] 303、根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约。
[0086] 本实施例中,数据库为智能合约的代码集合,即数据库包括了用于对目标事件进行判断的所有智能合约的代码集合,因而通过对于智能合约相关代码的分析,可以得到各个智能合约之间的关联关系。
[0087] 具体的,确定多个第二智能合约的过程可以首先确定所述第一智能合约中的特征元素,所述特征元素基于合约代码设定,所述合约代码为所述第一智能合约在所述数据库中的储存形式;然后根据所述特征元素遍历所述数据库中与所述特征元素存在关联关系的合约集合;进而根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约。例如:智能合约可以由二进制数列注册,第一智能合约的特性元素为数列00101,则在数据库中遍历与该数列相关的多个智能合约,并确定为第二智能合约。
[0088] 在一种可能的场景中,由于用户可以对智能合约进行更新,可能产生不同版本的智能合约,为适用于该场景,可以首先获取所述目标事件对应的第一智能合约;然后确定所述第一智能合约的版本信息,所述版本信息为指示所述第一智能合约的标识信息;并确定具有相同版本信息的第二智能合约。
[0089] 可以理解的是,版本信息可以是基于时刻设定的,即实时更新版本信息;也可以是基于触发条件的根性,即用户修订触发条件时生成新的版本信息;还可以是基于固定时间段的更新过程,即版本信息固定预设时间段进行储存并生成对应的版本信息;另外,对与上述版本信息产生的多个智能合约,可以根据各自的版本信息进行安装、实例化,以便于需要时进行调用。
[0090] 304、调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
[0091] 本实施例中,第一智能合约和多个第二智能合约为对应节点上安装并实例化的智能合约,即对于每个区块链节点都可以自动导入关联的智能合约集合,以协作触发对所述目标事件的操作。
[0092] 结合上述实施例可知,通过接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;然后获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;并根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;进而调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作,实现了智能合约的自动调用过程,且可以迅速的调用用于判定目标事件的多个智能合约,提高了智能合约的调用效率以及可操作性。
[0093] 上述实施例介绍了两种粒度的结合过程,但在实际应用中还可以是更多的粒度的结合,下面对该场景进行说明,如图4所示,图4为本申请实施例提供的另一种智能合约管理的方法的流程图,本申请实施例至少包括以下步骤:
[0094] 401、接收目标事件的操作指令,并确定所述目标事件。
[0095] 402、获取所述目标事件对应的第一智能合约。
[0096] 本实施例中,步骤401-402与图3中步骤301-302类似,具体特征描述可以进行参考,此处不做赘述。
[0097] 403、确定第一智能合约的版本信息。
[0098] 本实施例中,版本信息可以是基于时刻设定的,即实时更新版本信息;也可以是基于触发条件的根性,即用户修订触发条件时生成新的版本信息;还可以是基于固定时间段的更新过程,即版本信息固定预设时间段进行储存并生成对应的版本信息。
[0099] 404、根据不同版本信息下的第一智能合约分别进行储存。
[0100] 本实施例中,不同版本信息下的第一智能合约不会相互干扰,例如:用户对于第一智能合约进行了升级,此时产生了不同版本的第一智能合约分别对升级前与升级后的第一智能合约进行储存,并设置相应的版本信息。
[0101] 405、根据不同版本信息下的所述第一智能合约遍历数据库,分别确定与所述第一智能合约存在关联关系的多个第二智能合约,并分类储存。
[0102] 本实施例中,基于不同版本信息下的第一智能合约,将其对应的多个第二智能合约进行关联,并分类储存。
[0103] 在一种可能的场景中,第二智能合约进行了更新,而第一智能合约没有更新,此时可以根据更新后的第二智能合约抓取对应的第一智能合约进行打包储存。
[0104] 可以理解的是,智能合约的更新过程包括升级、参数修订、触发条件修改等,具体形式因实际场景而定,此处不做限定。
[0105] 406、根据操作指令调用符合当前版本信息的第一智能合约和多个第二智能合约。
[0106] 本实施例中,步骤406与图3中步骤304类似,具体特征描述可以进行参考,此处不做赘述。
[0107] 通过智能合约在使用过程中可能存在迭代、更新的情况进行分类储存,使得通过智能合约管理装置通过所有事件服务,可以实现智能合约的实时更新、条件触发更新、定时更新等精细化的控制条件。
[0108] 在一种可能的显示方式中,可以采用如图5所述的显示方式,图5为本申请实施例提供的一种智能合约管理的界面显示示意图。该界面可以包括多个事件的判定过程,以及设计协同判定的智能合约数;用户可以点击详情知晓各个用户判定各个事件的智能合约的版本号,以及具体的第一智能合约的类型,并得到用于关联第二智能合约的关联代码。应当注意的是,图中智能合约的形式、版本形式以及关联代码为举例说明,具体形式因实际场景而定,此处不做限定。
[0109] 可以理解的是,上述实施例中设计的参数或步骤均可在该界面中进行显示,此处不做限定。
[0110] 为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图6,图6为本申请实施例提供的智能合约管理装置的结构示意图,智能合约管理装置600包括:
[0111] 接收单元601,用于接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;
[0112] 获取单元602,用于获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;
[0113] 遍历单元603,用于根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;
[0114] 调用单元604,用于调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
[0115] 优选的,在本申请一些可能的实现方式中,所述遍历单元603,具体用于确定所述第一智能合约中的特征元素,所述特征元素基于合约代码设定,所述合约代码为所述第一智能合约在所述数据库中的储存形式;
[0116] 所述遍历单元603,具体用于根据所述特征元素遍历所述数据库中与所述特征元素存在关联关系的合约集合;
[0117] 所述遍历单元603,具体用于根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约。
[0118] 优选的,在本申请一些可能的实现方式中,所述遍历单元603,具体用于获取所述目标事件对应的第一智能合约;
[0119] 所述遍历单元603,具体用于确定所述第一智能合约的版本信息,所述版本信息为指示所述第一智能合约的标识信息;
[0120] 所述遍历单元603,具体用于根据所述第一智能合约的版本信息遍历所述数据库,以确定与所述第一智能合约存在关联关系且所述版本信息对应的多个所述第二智能合约。
[0121] 优选的,在本申请一些可能的实现方式中,所述遍历单元603,还用于确定所述第一智能合约对应的多个所述版本信息,所述版本信息用于指示更新后的所述第一智能合约的标识信息;
[0122] 所述遍历单元603,还用于根据多个所述版本信息分别储存所述第一智能合约,并储存对应的多个所述第二智能合约,以得到多个智能合约集合,所述智能合约集合用于指示不同版本信息下的所述目标事件的触发过程。
[0123] 优选的,在本申请一些可能的实现方式中,所述接收单元601,具体用于接收目标事件的操作指令;
[0124] 所述接收单元601,具体用于根据所述操作指令确定对应的所述区块链节点;
[0125] 所述接收单元601,具体用于根据所述区块链节点的特征确定所述目标事件。
[0126] 优选的,在本申请一些可能的实现方式中,所述接收单元601,还用于根据所述操作指令确定对应的区块链节点;
[0127] 所述接收单元601,还用于确定所述区块链节点对应的触发操作,所述触发操作用于指示调用所述第一智能合约和多个所述第二智能合约后的判定对象。
[0128] 优选的,在本申请一些可能的实现方式中,所述智能合约的管理方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
[0129] 通过接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;然后获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;并根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;进而调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作,实现了智能合约的自动调用过程,且可以迅速的调用用于判定目标事件的多个智能合约,提高了智能合约的调用效率以及可操作性。
[0130] 本申请实施例还提供了一种智能合约管理装置,请参阅图7,图7是本申请实施例提供的另一种智能合约管理装置的结构示意图,该智能合约管理装置700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对智能合约管理装置中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在智能合约管理装置700上执行存储介质730中的一系列指令操作。
[0131] 智能合约管理装置700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
[0132] 上述实施例中由智能合约管理装置所执行的步骤可以基于该图7所示的智能合约管理装置结构。
[0133] 本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有智能合约管理指令,当其在计算机上运行时,使得计算机执行如前述图2至图5所示实施例描述的方法中智能合约管理装置所执行的步骤。
[0134] 本申请实施例中还提供一种包括智能合约管理指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图2至图5所示实施例描述的方法中智能合约管理装置所执行的步骤。
[0135] 本申请实施例还提供了一种智能合约管理系统,所述智能合约管理系统可以包含图6所描述实施例中的智能合约管理装置,或者图7所描述的智能合约管理装置。
[0136] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0137] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0138] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0139] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0140] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,智能合约管理装置,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0141] 另外,上述智能合约管理的方法和装置还可以应用于数据共享系统中,参见图8A所示的数据共享系统,数据共享系统800是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点801,多个节点801可以是指数据共享系统中各个客户端,其中,每个客户端运行于基于本申请方法对应的终端设备上。每个节点801在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
[0142] 对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
[0143] 表1节点与节点标识对应关系
[0144]


节点名称
节点标识

节点1
117.114.151.174

节点2
117.116.189.145




节点N
119.123.789.258





[0145] 数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图8B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本信息、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本信息、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
[0146] 在生成区块链中的各个区块时,参见图8C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
[0147] SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
[0148] 其中,SHA256为计算特征值所用的特征值算法;version(版本信息)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
[0149] 这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
[0150] 以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
权利要求:1.一种智能合约管理的方法,其特征在于,包括:
接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;
获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;
根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;
调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约,包括:
确定所述第一智能合约中的特征元素,所述特征元素基于合约代码设定,所述合约代码为所述第一智能合约在所述数据库中的储存形式;
根据所述特征元素遍历所述数据库中与所述特征元素存在关联关系的合约集合;
根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一智能合约中的特征元素,包括:
获取所述目标事件对应的第一智能合约;
确定所述第一智能合约的版本信息,所述版本信息为指示所述第一智能合约的标识信息;
所述根据所述第一智能合约确定所述合约集合中存在关联关系的多个所述第二智能合约,包括:
根据所述第一智能合约的版本信息遍历所述数据库,以确定与所述第一智能合约存在关联关系且所述版本信息对应的多个所述第二智能合约。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定所述第一智能合约对应的多个所述版本信息,所述版本信息用于指示更新后的所述第一智能合约的标识信息;
根据多个所述版本信息分别储存所述第一智能合约,并储存对应的多个所述第二智能合约,以得到多个智能合约集合,所述智能合约集合用于指示不同版本信息下的所述目标事件的触发过程。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述接收目标事件的操作指令,并确定所述目标事件,包括:
接收目标事件的操作指令;
根据所述操作指令确定对应的所述区块链节点;
根据所述区块链节点的特征确定所述目标事件。
6.根据权利要求5所述的方法,其特征在于,所述根据所述操作指令确定对应的区块链节点之后,所述方法还包括:
根据所述操作指令确定对应的区块链节点;
确定所述区块链节点对应的触发操作,所述触发操作用于指示调用所述第一智能合约和多个所述第二智能合约后的判定对象。
7.根据权利要求5所述的方法,其特征在于,所述智能合约的管理方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
8.一种智能合约管理装置,其特征在于,包括:
接收单元,用于接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;
获取单元,用于获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;
遍历单元,用于根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;
调用单元,用于调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述权利要求1至7任一项所述的智能合约管理方法。
10.一种计算机设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适用于所述处理器加载并执行以下步骤:
接收目标事件的操作指令,并确定所述目标事件,所述目标事件为区块链节点中的操作实例;
获取所述目标事件对应的第一智能合约,所述第一智能合约与触发对所述目标事件的操作相关;
根据所述第一智能合约遍历数据库,以确定与所述第一智能合约存在关联关系的多个第二智能合约;
调用所述第一智能合约和多个所述第二智能合约,以协作触发对所述目标事件的操作。
公开号:CN110602227
申请号:CN201910888431.9A
发明人:王颖涛
申请人:腾讯科技(深圳)有限公司
申请日:2019-09-19
公开日:2019-12-20