智能合约的部署方法及装置、电子设备、存储介质制造方法及图纸

技术编号:32133497 阅读:24 留言:0更新日期:2022-01-29 19:37
本申请提供一种智能合约的部署方法及装置、电子设备、计算机可读存储介质,该方法包括:接收针对基础合约的合约部署指令;其中,所述基础合约包括数据迁移接口,所述合约部署指令用于升级所述基础合约、并迁移所述基础合约的合约数据;从所述合约部署指令中解析出所述基础合约的合约地址;根据所述合约地址和所述数据迁移接口,在区块链中将所述基础合约的合约数据迁移至指定合约。本申请方案,无需借助外部的数据迁移工具,避免了使用数据迁移工具的弊端;此外,指定合约在升级时可以基于业务需求变更数据结构。需求变更数据结构。需求变更数据结构。

【技术实现步骤摘要】
智能合约的部署方法及装置、电子设备、存储介质


[0001]本申请涉及区块链
,特别涉及一种智能合约的部署方法及装置、电子设备、计算机可读存储介质。

技术介绍

[0002]EVM(Ethereum Virtual Machine,以太坊虚拟机)是当前区块链领域应用最为广泛的虚拟机,其支持的智能合约语言是图灵完备的,可用于实现智能合约。智能合约一经发布到区块链上就无法篡改,即便智能合约中存在漏洞需要修改或者业务逻辑发生变更,也无法在原有合约上直接修改再重新发布,因此,在合约设计之初需要结合业务场景考虑合理的升级机制。

技术实现思路

[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]图1为本申请一实施例提供的智能合约的部署方法的应用场景示意图;
[0040]图2为本申请一实施例提供的电子设备的结构示意图;
[0041]图3为本申请一实施例提供的智能合约的部署方法的流程示意图;
[0042]图4为本申请一实施例提供的数据迁移方法的流程示意图;
[0043]图5为本申请另一实施例提供的数据迁移方法的流程示意图;
[0044]图6为图5中步骤430的细节流程示意图;
[0045]图7为本申请一实施例提供的数据迁移场景的示意图;
[0046]图8为本申请另一实施例提供的数据迁移场景的示意图;
[0047]图9为本申请又一实施例提供的数据迁移场景的示意图;
[0048]图10为本申请一实施例提供的智能合约的部署装置的框图。
具体实施方式
[0049]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
[0050]相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种智能合约的部署方法,其特征在于,包括:接收针对基础合约的合约部署指令;其中,所述基础合约包括数据迁移接口,所述合约部署指令用于升级所述基础合约、并迁移所述基础合约的合约数据;从所述合约部署指令中解析出所述基础合约的合约地址;根据所述合约地址和所述数据迁移接口,在区块链中将所述基础合约的合约数据迁移至指定合约。2.根据权利要求1所述的方法,其特征在于,所述数据迁移接口包括索引查询接口和数据获取接口;所述根据所述合约地址和所述数据迁移接口,在区块链中将所述基础合约的合约数据迁移至指定合约,包括:将所述合约地址作为所述指定合约的构造函数的输入参数,通过所述构造函数调用所述索引查询接口,获得所述合约数据的全量索引信息;通过所述构造函数基于所述全量索引信息中索引信息,调用所述数据获取接口,读取与所述索引信息对应的合约数据,并写入所述指定合约;当所述构造函数执行完毕后,生成函数处理事件;其中,所述函数处理事件指示所述基础合约的合约数据是否迁移完成。3.根据权利要求2所述的方法,其特征在于,在所述生成函数处理事件之后,所述方法还包括:如果所述函数处理事件指示所述合约数据未迁移完成,通过所述指定合约的升级函数调用所述索引查询接口,获得所述全量索引信息;确定已迁移合约数据的索引信息,作为完成索引信息;通过所述升级函数,依据所述全量索引信息和所述完成索引信息,将所述基础合约中未迁移的合约数据写入所述指定合约。4.根据权利要求3所述的方法,其特征在于,所述通过所述升级函数,依据所述全量索引信息和所述完成索引信息,将所述基础合约中未迁移的合约数据写入所述指定合约,包括:确定所述全量索引信息与所述完成索引信息之间的索引数量差值,并判断所述索引数量差值是否大于差值阈值;若索引数量差值大于所述差值阈值,通过所述升级函数调用所述数据获取接口,读取所述完成索引信息和所述差值阈值之间的合约数据,写入所述指定合约;基于所述差值阈值更新所述完成索引信...

【专利技术属性】
技术研发人员:邓泰生顾费勇曹崇瑞胡志敏李刚锐
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1