基于智能合约的数据处理方法、服务器转让专利

申请号 : CN202110066750.9

文献号 : CN112748932B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨舟

申请人 : 矩阵元技术(深圳)有限公司

摘要 :

本说明书提供了基于智能合约的数据处理方法、服务器。基于该方法,可以预先在包含有布设于合约管理方一侧的第一服务器、布设于合约发布方一侧的第二服务器和布设于合约调用方一侧的第三服务器的数据处理系统中部署预设的版本控制合约、预设的实例合约和预设的注册合约,从而可以基于上述数据处理系统,在升级、发布更新版本的第二合约的过程中,通过解耦升级操作和发布操作,灵活、高效地对数据处理系统中的智能合约进行诸如发布、升级等相关的数据处理。

权利要求 :

1.一种基于智能合约的数据处理方法,其特征在于,所述方法应用于数据处理系统,其中,所述数据处理系统至少包含有布设于合约管理方一侧的第一服务器、布设于合约发布方一侧的第二服务器和布设于合约调用方一侧的第三服务器;且所述数据处理系统中还部署有预设的版本控制合约、预设的实例合约、预设的注册合约,所述方法包括:第一服务器生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布的智能合约;

第一服务器调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的合约版本信息与第二合约的合约地址的映射关系;

第二服务器调用预设的版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取所述第二合约;

第二服务器调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二合约的合约地址;

第二服务器调用预设的注册合约的注册更新接口,基于实例化后的第一合约的合约标识,对实例化后的第二合约进行更新注册;并建立实例化后的第一合约的合约标识与实例化后的第二合约的合约地址的映射关系;

第三服务器通过预设的注册合约,调用实例化后的第二合约;其中,所述第三服务器调用预设的注册合约的注册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约地址;第三服务器根据所述实例化后的第二合约的合约地址,通过实例合约调用实例化后的第二合约,以代替实例化后的第一合约。

2.根据权利要求1所述的方法,其特征在于,第三服务器根据所述实例化后的第二合约的合约地址,调用实例化后的第二合约,包括:第三服务器根据所述实例化后的第二合约的合约地址,调用实例化后的第二合约,并基于所述实例化后的第二合约进行目标数据处理。

3.根据权利要求2所述的方法,其特征在于,所述目标数据处理包括:基于UTXO智能合约的交易数据处理。

4.根据权利要求1所述的方法,其特征在于,在第一服务器生成关于第一合约的更新版本之前,所述方法还包括:

第一服务器生成第一合约;

第一服务器调用预设的版本控制合约的创建接口创建第一合约,以确定第一合约的合约版本信息;并对第一合约进行注册,建立第一合约的合约版本信息与第一合约的合约地址的映射关系;

第二服务器调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第一合约进行实例化处理,得到实例化后的第一合约,以及实例化后的第一合约的合约地址;

第二服务器调用预设的注册合约的注册接口对所述实例化后的第一合约进行注册,以确定实例化后的第一合约的合约标识,并建立实例化后的第一合约的合约标识与实例化后的第一合约的合约地址的映射关系。

5.根据权利要求4所述的方法,其特征在于,在建立实例化后的第一合约的合约标识与实例化后的第一合约的合约地址的映射关系之后,所述方法还包括:第三服务器通过预设的注册合约,调用实例化后的第一合约。

6.根据权利要求3所述的方法,其特征在于,所述第一合约的合约版本信息包括:用于指示第一合约的合约类型的第一字符串、用于指示第一合约的主版本的第二字符串、用于指示第一合约的子版本号的第三字符串。

7.根据权利要求6所述的方法,其特征在于,在第一服务器建立第二合约的合约版本信息与第二合约的合约地址的映射关系之后,所述方法还包括:第二服务器间隔预设的时间间隔,检索预设的版本控制合约中的合约版本信息;

第二服务器在检测到第二合约的版本信息,并确定第二合约的版本信息中的第一字符串、第二字符串与第一合约的版本信息相同,且所述第二合约的合约版本信息中的第三字符串与所述第一合约的版本信息不同的情况下,触发调用预设的版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取所述第二合约。

8.根据权利要求1所述的方法,其特征在于,在第二服务器获取所述第二合约之后,所述方法还包括:

第二服务器对所述第二合约进行审核,得到审核结果;并根据所述审核结果,确定是否升级第一合约;

第二服务器在确定升级第一合约的情况下,触发调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理。

9.一种服务器,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至8中任一项所述方法的步骤。

10.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被执行时实现权利要求1至8中任一项所述方法的步骤。

说明书 :

基于智能合约的数据处理方法、服务器

技术领域

[0001] 本说明书属于互联网技术领域,尤其涉及基于智能合约的数据处理方法、服务器。

背景技术

[0002] 在涉及区块链的数据处理场景中,由于链上数据的不可篡改性,导致基于现有方法对部署到链上的智能合约的管理和修改较为繁琐,使得基于智能合约的诸如升级、发布
等相关数据处理的处理效率较低。此外,在涉及区块链的数据处理场景中,大多采用去中心
化的方式来进行相关的数据处理,这也导致基于现有方法在进行基于智能合约的数据处理
时还存在处理不够灵活等问题。
[0003] 针对上述问题,目前尚未提出有效的解决方案。

发明内容

[0004] 本说明书提供了一种基于智能合约的数据处理方法、服务器,以能够灵活、高效地对数据处理系统中的智能合约进行诸如发布、升级等相关的数据处理。
[0005] 本说明书提供了一种基于智能合约的数据处理方法,所述方法应用于数据处理系统,其中,所述数据处理系统至少包含有布设于合约管理方一侧的第一服务器、布设于合约
发布方一侧的第二服务器和布设于合约调用方一侧的第三服务器;且所述数据处理系统中
还部署有预设的版本控制合约、预设的实例合约、预设的注册合约,所述方法包括:
[0006] 第一服务器生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布的智能合约;
[0007] 第一服务器调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的合约版本信息与第二合约的合约
地址的映射关系;
[0008] 第二服务器调用预设的版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取所述第二合约;
[0009] 第二服务器调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二合约的合约地址;
[0010] 第二服务器调用预设的注册合约的注册更新接口,基于实例化后的第一合约的合约标识,对实例化后的第二合约进行更新注册;并建立实例化后的第一合约的合约标识与
实例化后的第二合约的合约地址的映射关系;
[0011] 第三服务器通过预设的注册合约,调用实例化后的第二合约。
[0012] 在一个实施例中,第三服务器通过预设的注册合约,调用实例化后的第二合约,包括:
[0013] 第三服务器调用预设的注册合约的注册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约地址;
[0014] 第三服务器根据所述实例化后的第二合约的合约地址,通过实例合约调用实例化后的第二合约,以代替实例化后的第一合约。
[0015] 在一个实施例中,第三服务器根据所述实例化后的第二合约的合约地址,调用实例化后的第二合约,包括:
[0016] 第三服务器根据所述实例化后的第二合约的合约地址,调用实例化后的第二合约,并基于所述实例化后的第二合约进行目标数据处理。
[0017] 在一个实施例中,所述目标数据处理包括:基于UTXO智能合约的交易数据处理。
[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] 图1是应用本说明书实施例提供的基于智能合约的数据处理方法的数据处理系统结构组成的一个实施例的示意图;
[0047] 图2是本说明书的一个实施例提供的基于智能合约的数据处理方法的流程示意图;
[0048] 图3是在一个场景示例中,应用本说明书实施例提供的基于智能合约的数据处理方法的一种实施例的示意图;
[0049] 图4是本说明书的一个实施例提供的服务器的结构组成示意图;
[0050] 图5是在一个场景示例中,应用本说明书实施例提供的基于智能合约的数据处理方法的一种实施例的示意图。

具体实施方式

[0051] 为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述
的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,
本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于
本说明书保护的范围。
[0052] 考虑到现有的智能合约的升级方法,受限于区块链上数据的不可篡改性的影响,导致在对链上部署的智能合约进行升级等修改处理时,过程较为繁琐,处理效率相对较低。
并且,现有的智能合约的升级方法,往往也不适用于去中心化的场景,使用也不够灵活。
[0053] 针对产生上述问题的根本原因,本说明书考虑预先在包含有布设于合约管理方一侧的第一服务器、布设于合约发布方一侧的第二服务器和布设于合约调用方一侧的第三服
务器的数据处理系统中部署好配置有相应接口的预设的版本控制合约、预设的实例合约和
预设的注册合约。通过引入并利用上述预设的版本控制合约、预设的实例合约、预设的注册
合约,可以将数据处理系统中的关于智能合约的升级操作和发布操作等数据处理进行解
耦。
[0054] 这样当第一服务器生成针对第一合约的更新版本的第二合约时,可以调用预设的版本控制合约,基于第一合约的合约版本信息对第二合约进行更新注册;第二服务器可以
调用预设的版本控制合约,获取第一服务器注册的第二合约,并调用预设的实例合约对第
二合约进行实例化处理,得到实例化后的第二合约和实例化后的第二合约的合约地址;第
二服务器进而可以调用预设的注册合约,基于原有的实例化后的第一合约的合约标识,对
实例化后的第二合约进行更新注册;第三服务器可以通过上述预设的注册合约,直接调用
实例化后的第二合约。从而可以灵活、高效地对数据处理系统中的智能合约进行诸如发布、
升级等相关的数据处理,提高了相关的数据处理效率。
[0055] 本说明书实施例提供一种基于智能合约的数据处理方法,所述基于智能合约的数据处理方法具体可以应用于包含有第一服务器、第二服务器和第三服务器的数据处理系统
中。
[0056] 可以参阅图1所示。在本实施例中,上述第一服务器具体可以为布设于合约管理方(例如,VersionManager)一侧的服务器(或者计算节点)。上述第二服务器具体可以为布设
于合约发布方(例如,Author)一侧的服务器(或者计算节点)。上述第三服务器具体可以为
布设于合约调用方(例如,Caller)一侧的服务器(或者计算节点)。
[0057] 在本实施例中,预先还在所述数据处理系统中部署好配置好相应的数据接口的预设的版本控制合约(例如,VersionControllerContract)、预设的实例合约(例如,
InstanceContract)以及预设的注册合约(例如,RegistryContract)等合约模块。
[0058] 在发布第一版本的合约(可以记为第一合约)阶段,数据处理系统中的第一服务器可以先生成第一合约。
[0059] 第一服务器可以调用预设的版本控制合约的创建接口(例如,Create接口)创建第一合约,以确定出第一合约的合约版本信息,并对第一合约进行注册,建立第一合约的合约
版本信息与第一合约的合约地址的映射关系。
[0060] 进而,第二服务器可以调用预设的版本控制合约的部署接口(例如,Deploy接口),通过预设的实例合约对所述第一合约进行实例化处理,得到实例化后的第一合约,以及实
例化后的第一合约的合约地址。
[0061] 接着,第二服务器调用预设的注册合约的注册接口(例如,Registry接口)对所述实例化后的第一合约进行注册,以确定出实例化后的第一合约的合约标识,并建立实例化
后的第一合约的合约标识与实例化后的第一合约的合约地址的映射关系。
[0062] 这样,第三服务器可以通过调用预设的注册合约的注册地址获取接口(例如,GetRegistryAddress接口),根据实例化后的第一合约的合约标识,获取实例化后的第一合
约的合约地址;并根据所述实例化后的第一合约的合约地址,通过实例合约调用实例化后
的第一合约,以进行具体的目标数据处理。
[0063] 在发布更新版本的合约(可以记为第二合约)阶段,第一服务器可以先生成关于第一合约的更新版本,作为第二合约。
[0064] 第一服务器可以调用预设的版本控制合约的版本更新接口(例如,UpdateVersion接口),基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的
合约版本信息与第二合约的合约地址的映射关系。
[0065] 进而,第二服务器调用预设的版本控制合约的合约升级接口(例如,UpgradeContract接口),根据第二合约的合约版本信息与第二合约的合约地址的映射关
系,获取所述第二合约;
[0066] 接着,第二服务器可以调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二合约
的合约地址。
[0067] 进一步,第二服务器可以调用预设的注册合约的注册更新接口(例如,UpdateRegistry接口),基于实例化后的第一合约的合约标识,对实例化后的第二合约进行
更新注册;并建立实例化后的第一合约的合约标识与实例化后的第二合约的合约地址的映
射关系。
[0068] 这样,第三服务器调用预设的注册合约的注册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约地址;并根据所述实例化后的第二合
约的合约地址,通过实例合约调用实例化后的第二合约,以代替之前使用的实例化后的第
一合约,进行具体的目标数据处理。
[0069] 基于上述方法,通过引入并利用预设的版本控制合约、预设的实例合约、预设的注册合约,可以将数据处理系统中的关于智能合约的升级操作和发布操作等数据处理进行解
耦,从而能够灵活、高效地对数据处理系统中的智能合约进行诸如发布、升级等相关的数据
处理。
[0070] 在本实施例中,所述第一服务器、第二服务器和第三服务器具体可以包括一种能够实现数据传输、数据处理等功能的后台服务器。具体的,所述第一服务器、第二服务器和
第三服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,
所述第一服务器、第二服务器和第三服务器也可以为运行于该电子设备中,为数据处理、存
储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述第一服务器、第二服
务器和第三服务器所包含的服务器的数量。所述第一服务器、第二服务器和第三服务器具
体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
[0071] 参阅图2所示,本说明书实施例提供了一种基于智能合约的数据处理方法,其中,该方法具体应用于包含有第一服务器、第二服务器和第三服务器的数据处理系统。具体实
施时,该方法可以包括以下内容。
[0072] S201:第一服务器生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布的智能合约。
[0073] 在一个实施例中,上述第一服务器具体可以理解为布设于合约管理方一侧的服务器或者计算节点。其中,所述合约管理方具体负责制作并提供相关的合约代码。
[0074] 上述第二服务器具体可以理解为布设于合约发布方一侧的服务器或者计算节点。其中,所述合约发布方具体负责对合约管理方所提供的合约代码进行实例化处理,得到合
约调用方能够直接调取使用的实例化后的合约,并将该实例化后的合约进行对外发布。
[0075] 上述第三服务器具体可以理解为布设于合约调用方一侧的服务器或者计算节点。其中,所述合约调用方具体负责调用实例化后的合约进行具体的目标数据处理。
[0076] 在一个实施例中,具体实施前,还结合涉及区块链的数据处理场景中处理特点,预先在数据处理系统中部署预设的版本控制合约、预设的实例合约,以及预设的注册合约。
[0077] 其中,上述预设的版本控制合约(例如,VersionControllerContract)具体可以理解为一种执行基于预设的版本控制合约的协议规则的合约模块。上述预设的版本控制合约
具体可以用于记录合约管理方生成的各个合约,以及各个合约的各个不同版本的相关信
息。上述预设的版本控制合约,基于相应的协议规则,还预先配置有多种支持不同功能数据
接口。
[0078] 具体的,预设的版本控制合约中可以配置有以下所列举的一个或多个数据接口:创建接口(例如,Create接口)、部署接口(例如,Deploy接口)、版本更新接口(例如,
UpdateVersion接口),以及合约升级接口(例如,UpgradeContract接口)等。
[0079] 其中,上述创建接口用于支持创建相应版本的模板合约、对应的合约版本信息,并将该模板合约与所对应的合约地址进行绑定。上述部署接口用于支持将相应版本的合约的
代码部署到实例合约中进行实例化处理。上述版本更新接口用于支持更新已有合约的版本
和地址。上述合约升级接口用于支持更新相应合约地址的合约到指定版本。
[0080] 上述预设的实例合约(例如,InstanceContract)具体可以理解为一种执行基于预设的实例合约的协议规则的合约模块。上述预设的实例合约具体可以用于通过对合约代码
进行实例化处理,得到供合约调用方调用的实例化后的合约。类似的,上述预设的实例合
约,基于相应的协议规则,也预先配置有多种支持不同功能数据接口。
[0081] 具体的,预设的实例合约中可以配置有合约地址升级接口(例如,Upgrade接口)等。其中,合约地址升级接口用于支持将相应的实例化后的合约地址升级到指定合约地址。
[0082] 上述预设的注册合约(例如,RegistryContract)具体可以理解为一种执行基于预设的注册合约的协议规则的合约模块。上述预设的注册合约具体可以用于对新生成的实例
化化后的合约(包括全新的合约,以及更新版本的合约)的合约地址进行注册,以供合约调
用方获取使用。
[0083] 具体的,预设的注册合约中可以配置有以下所列举的一个或多个数据接口:注册接口(例如,Registry接口)、注册地址获取接口(例如,GetRegistryAddress接口)、注册更
新接口(例如,例如,UpdateRegistry接口)等。
[0084] 其中,上述注册接口用于支持将实例化后的合约的合约标识与实例化后的合约的合约地址进行绑定。上述注册地址获取接口用于支持合约调用方根据合约标识获得对应的
实例化后的合约的合约地址。上述注册更新接口用于支持对指定合约标识所绑定的合约地
址进行更新。
[0085] 在一个实施例中,上述第一合约具体可以理解为预先生成并已经在数据处理系统中发布、应用了的智能合约。其中,上述智能合约(Smart Contract)具体可以理解为一种旨
在以信息化方式传播、验证或执行合的,用于进行某种具体数据处理的,具有不可篡改特性
计算机协议。基于智能合约,可以允许在没有第三方的情况下进行可信的数据处理。
[0086] 在一个实施例中,上述第二合约具体可以理解为一种针对上述第一合约的更新版本的合约。
[0087] 在本实施例中,具体实施时,第一服务器可以在之前所生成的第一合约的合约代码的基础上进行相应修改、更新,得到新版本的合约代码,作为上述第二合约。
[0088] 其中,第二合约只是第一合约的更新版本,第二合约的合约类型、主版本与第一合约相同,第二合约只是子版本号(对应更新版本)与第一合约不同。
[0089] S202:第一服务器调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的合约版本信息与第二合约
的合约地址的映射关系。
[0090] 在一个实施例中,上述第二合约的合约地址具体可以理解为一种用于指示第二合约的存储位置的地址数据。例如,第二合约的合约地址可以表示为:0xJKLM。
[0091] 在一个实施例中,上述第一合约的合约版本信息具体可以是第一字符串、第二字符串和第三字符串组成。其中,第一字符串具体可以用于指示合约类型。第二字符串具体可
以用于指示主版本。第三字符串具体可以用于指示具体的子版本号。
[0092] 具体的,例如,第一合约的合约版本信息可以表示为66‑01‑01。其中,第一字符串:“66”指示第一合约的合约类型。第二字符串:位于中间位置的“01”指示第一合约的主版本。
第三字符串:位于末尾位置的“01”指示第一合约的子版本号,表示第一合约是“66‑01”主版
本合约的第一个子版本合约。
[0093] 在一个实施例中,具体实施时,第一服务器可以调用预设的版本控制合约的版本更新接口,进而可以基于第一合约的合约版本信息,确定出第二合约的合约版本信息,并对
第二合约进行针对第一合约的更新注册,以建立第二合约的合约版本信息与第二合约的合
约地址的映射关系。
[0094] 具体的,按照上述方式所确定出的第二合约的合约版本信息中的第一字符串、第二字符串与第一合约相同,第三字符串与第一合约不同。
[0095] 以合约版本信息为“66‑01‑01”的第一合约为例,对应的第二合约的合约版本信息可以表示为“66‑01‑02”。其中,第二合约的合约版本信息中的第三字符串“02”指示第二合
约的子版本号,表示第二合约是“66‑01”主版本合约的第二个子版本合约。
[0096] 在本实施例中,第一服务器在按照上述方式建立第二合约的合约版本信息与第二合约的合约地址的映射关系后,还会将上述第二合约的合约版本信息与第二合约的合约地
址的映射关系存储在预设的版本控制合约中。
[0097] 在本实施例中,在上述预设的版本控制合约中,还会存储有之前建立的第一合约的合约版本信息与第一合约的合约地址的映射关系。
[0098] 具体的,可以参阅表1所示,在第一服务器建立并存储上述第二合约的合约版本信息与第二合约的合约地址的映射关系后,预设的版本控制合约可以同时保存两个版本的合
约的合约版本信息与合约地址的映射关系。
[0099] 表1
[0100] 版本合约信息 合约地址66‑01‑01 0xABCD
66‑01‑02 0xJKLM
[0101] 这样,根据具体情况,可以利用相应合约的合约版本信息,通过上述版本控制合约获取对应合约的合约地址;进而可以根据合约地址获取对应的合约代码。
[0102] S203:第二服务器调用预设的版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取所述第二合约。
[0103] 在本实施例中,在确定要对之前的第一合约进行升级的情况下,可以调用预设的版本控制合约的合约升级接口,基于预设的版本控制合约所保存的第二合约的合约版本信
息与第二合约的合约地址的映射关系,利用第二合约的合约版本信息检索到第二合约的合
约地址;再根据第二合约的合约地址获取更新版本的第二合约。
[0104] S204:第二服务器调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二合约的合
约地址。
[0105] 在本实施例中,上述实例化后的第二合约具体可以理解为一种基于第二合约的合约代码经过运行部署等实例化处理后,能够被合约调用方直接调用的合约。
[0106] 在本实施例中,具体实施,第二服务器可以调用预设的版本控制合约的部署接口将所获取的第二合约的合约代码部署到实例合约中进行实例化处理,得到实例化后的第二
合约。同时,还会得到关于上述实例化后的第二合约的新的合约地址。例如,上述实例化后
的第二合约的合约地址可以表示为:0xPQRS。
[0107] 在本实施例中,具体实施时,第二服务器还可以调用预设的实例合约中的合约地址升级接口将实例化后的第二合约的合约地址升级到上述新的合约地址,例如,0xPQRS。
[0108] S205:第二服务器调用预设的注册合约的注册更新接口,基于实例化后的第一合约的合约标识,对实例化后的第二合约进行更新注册;并建立实例化后的第一合约的合约
标识与实例化后的第二合约的合约地址的映射关系。
[0109] 在本实施例中,上述合约标识具体可以理解为一种用于指示所发布的供合约调用方使用的实例化后的合约的标识信息。上述合约标识具体可以是一种用于区分其他合约类
型,或者其他主版本类型的实例化后合约的字符串。
[0110] 在本实施例中,上述合约标识具体与某一合约类型的某一主版本类型对应。可以理解为:不同子版本的实例化后的合约,如果合约类型、主版本类型都相同,则所对应的合
约标识相同。
[0111] 例如,对应于A类型一类主版本的合约标识可以表示为“11”,对应于B类型一类主版本的合约标识可以表示为“21”,对应于B类型二类主板本的合约标识可以表示为“22”等。
[0112] 又例如,在本实施例中,实例化后的第一合约的合约标识可以表示为“01”。相应的,更新版本的实例化后的第二合约的合约标识也表示为“01”。
[0113] 这样可以使用唯一的合约标识来指示同一类型主版本的不同子版本的实例化后的合约,从而可以方便后续合约调用方法高效地获取并调用更新版本的实例化后的合约,
降低了合约调用方一侧的操作复杂度。
[0114] 在本实施例中,具体实施时,第二服务器可以调用预设的注册合约的注册更新接口,利用之前使用的旧版本的实例化后的第一合约的合约标识作为更新版本的实例化后的
第二合约的合约标识,对上述实例化后的第二合约进行更新注册。同时,在预设的注册合约
中建立并存储实例化后的第一合约的合约标识与实例化后的第二合约的合约地址的映射
关系。
[0115] 具体可以参阅图3所示。通过上述方式,预设的注册合约中保存的映射关系由原来的实例化后的第一合约的合约标识与实例化后的第一合约的合约地址的映射关系,变为了
当前的实例化后的第一合约的合约标识与实例化后的第二合约的合约地址的映射关系。
[0116] 通过上述实施例,第一服务器可以生成并提供的关于第一合约的更新版本的第二合约;第二服务器可以通过实例化和更新注册处理,发布上述使用之前发布的实例化后的
第一合约的合约标识的实例化后的第二合约。
[0117] S206:第三服务器通过预设的注册合约,调用实例化后的第二合约。
[0118] 在一个实施例中,具体实施时,第三服务器可以调用预设的注册合约的注册地址获取接口,基于实例化后的第一合约的合约标识与实例化后的第二合约的合约地址的映射
关系,利用之前所使用的实例化后的第一合约的合约标识,通过预设的注册合约获取实例
化后的第二合约的合约地址。进一步,第三服务器可以根据所述实例化后的第二合约的合
约地址,通过实例合约调用实例化后的第二合约,以代替实例化后的第一合约,进行具体的
目标数据处理。
[0119] 在本实施例中,可以预先在包含有布设于合约管理方一侧的第一服务器、布设于合约发布方一侧的第二服务器和布设于合约调用方一侧的第三服务器的数据处理系统中
部署预设的版本控制合约、预设的实例合约和预设的注册合约,进而可以基于上述数据处
理系统,通过引入并利用预设的版本控制合约、预设的实例合约、预设的注册合约,可以将
数据处理系统中的关于智能合约的升级操作和发布操作等数据处理进行解耦,从而可以灵
活、高效地对数据处理系统中的智能合约进行诸如发布、升级等相关的数据处理。
[0120] 在一个实施例中,上述第三服务器通过预设的注册合约,调用实例化后的第二合约,具体实施时,可以包括以下内容:第三服务器调用预设的注册合约的注册地址获取接
口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约地址;第三服务
器根据所述实例化后的第二合约的合约地址,通过实例合约调用实例化后的第二合约,以
代替实例化后的第一合约。
[0121] 在一个实施例中,第三服务器根据所述实例化后的第二合约的合约地址,调用实例化后的第二合约,具体实施时,可以包括以下内容:第三服务器根据所述实例化后的第二
合约的合约地址,调用实例化后的第二合约,并基于所述实例化后的第二合约进行目标数
据处理。
[0122] 在一个实施例中,所述目标数据处理具体可以包括:基于UTXO(Unspent Transaction Outputs,未使用交易输出)智能合约的交易数据处理。相应的,上述实例化后
的第二合约具体可以理解为更新版本的实例化后的UTXO智能合约。
[0123] 在一个实施例中,第三服务器具体实施时,可以及时地通过预设的注册合约和预设的实例合约,调用更新版本的实例化后的UTXO智能合约,并在交易平台部署运行该更新
版本的实例化后的UTXO智能合约。
[0124] 进而可以使得该交易平台上的存在交易需求的用户终端可以基于上述更新版本的实例化后的UTXO智能合约,在没有第三方参与的情况下,基于UTXO模型,利用主链账户下
的多个子账户的票据数据来高效、安全地进行相关的交易数据的处理。
[0125] 其中,上述交易数据具体可以包括存入数字资产数据、提取数字资产数据、转账数字资产数据等等。
[0126] 在一个实施例中,在第一服务器生成关于第一合约的更新版本之前,所述方法具体实施时,还可以包括以下内容:
[0127] S1:第一服务器生成第一合约;
[0128] S2:第一服务器调用预设的版本控制合约的创建接口创建第一合约,以确定第一合约的合约版本信息;并对第一合约进行注册,建立第一合约的合约版本信息与第一合约
的合约地址的映射关系;
[0129] S3:第二服务器调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第一合约进行实例化处理,得到实例化后的第一合约,以及实例化后的第一合约的合约
地址;
[0130] S4:第二服务器调用预设的注册合约的注册接口对所述实例化后的第一合约进行注册,以确定实例化后的第一合约的合约标识,并建立实例化后的第一合约的合约标识与
实例化后的第一合约的合约地址的映射关系。
[0131] 在本实施例中,上述第一合约,区别于更新版本的第二合约,具体可以理解为数据处理系统中之前没有发布过的某种新的合约类型或新的主版本类型的合约。
[0132] 在本实施例中,第一服务器在调用预设的版本控制合约的创建接口创建第一合约,以确定第一合约的合约版本信息;并对第一合约进行注册时,可以将第一合约的合约代
码的存储位置,例如,0xABCD作为第一合约的合约地址。
[0133] 在本实施例中,第二服务器调用预设的注册合约的注册接口对所述实例化后的第一合约进行注册时,可以根据第一合约的合约类型和第一合约的主版本类型,结合预设的
标识规则,确定出与第一合约对应的合约标识。例如,可以确定出实例化后的第一合约的合
约标识为“01”。
[0134] 在本实施例中,第二服务器在通过预设的实例合约对所述第一合约进行实例化处理后,可以将所得到的实例化后的第一合约的存储位置,例如,0xEFGH作为实例化后的第一
合约的合约地址。
[0135] 通过上述实施例,第一服务器可以生成并提供的新的合约类型或新的主版本类型的第一合约;第二服务器可以通过实例化和注册处理,发布上述实例化后的第一合约。
[0136] 在一个实施例中,在建立实例化后的第一合约的合约标识与实例化后的第一合约的合约地址的映射关系之后,所述方法具体实施时,还可以包括:第三服务器通过预设的注
册合约,调用实例化后的第一合约。
[0137] 在本实施例中,具体实施,第二服务器可以先向第三服务器提供实例化后的第一合约的合约标识。当然,也可以是第三服务器主动查询得到上述实例化后的第一合约的合
约标识。
[0138] 进一步,第三服务器可以调用预设的注册合约的注册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第一合约的合约地址。
[0139] 接着,第三服务器可以根据所述实例化后的第一合约的合约地址,通过实例合约调用实例化后的第一合约;并利用上述第一合约进行具体的目标数据处理。
[0140] 在一个实施例中,所述第一合约的合约版本信息具体可以包括:用于指示第一合约的合约类型的第一字符串、用于指示第一合约的主版本的第二字符串、用于指示第一合
约的子版本号的第三字符串。
[0141] 在一个实施例中,在第一服务器建立第二合约的合约版本信息与第二合约的合约地址的映射关系之后,所述方法还包括:第二服务器间隔预设的时间间隔,检索预设的版本
控制合约中的合约版本信息;第二服务器在检测到第二合约的版本信息,并确定第二合约
的版本信息中的第一字符串、第二字符串与第一合约的版本信息相同,且所述第二合约的
合约版本信息中的第三字符串与所述第一合约的版本信息不同的情况下,触发调用预设的
版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映
射关系,获取所述第二合约。
[0142] 在本实施例中,具体检索时,第二服务器可以优先针对预设的版本控制合约的合约版本信息中的第三字符串进行检索,以检测是否出现携带有不同的第三字符串的合约版
本信息(例如,上述第二合约的合约版本信息),从而可以确定是否存在待升级更新的合约。
[0143] 在确定存在上述携带有不同的第三字符串的合约版本信息的情况下,可以判断当前需要对某个已经发布的合约(例如,第一合约)进行版本的更新升级。
[0144] 在一个实施例中,在第二服务器在获取所述第二合约之后,所述方法具体实施时,还可以包括:第二服务器对所述第二合约进行审核,得到审核结果;并根据所述审核结果,
确定是否升级第一合约;第二服务器在确定升级第一合约的情况下,触发调用预设的版本
控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理。
[0145] 在本实施例中,具体实施时,第二服务器可以获取并综合版本管理方和合约调用方法反馈的信息,审核是否需要该合约进行版本更新升级,得到对应的审核结果。
[0146] 在根据上述审核结果,确定当前需要更新升级的情况下,可以按照上述方式触发对已发布合约进行版本的更新升级。
[0147] 相反,在根据上述审核结果,确定当前不需要更新升级的情况下,可以暂时目标触发进行合约版本的更新升级。而是间隔一定的时间间隔后,再次获取并综合版本管理方和
合约调用方法反馈的信息,重新审核是否需要该合约进行版本更新升级。
[0148] 由上可见,本说明书实施例提供的基于智能合约的数据处理方法,基于该方法,可以预先在包含有布设于合约管理方一侧的第一服务器、布设于合约发布方一侧的第二服务
器和布设于合约调用方一侧的第三服务器的数据处理系统中部署预设的版本控制合约、预
设的实例合约和预设的注册合约,当第一服务器生成针对第一合约的更新版本的第二合约
时,可以调用预设的版本控制合约,基于第一合约的合约版本信息对第二合约进行更新注
册;第二服务器可以调用预设的版本控制合约,获取第一服务器注册的第二合约,并调用预
设的实例合约对第二合约进行实例化处理,得到实例化后的第二合约和实例化后的第二合
约的合约地址;第二服务器进而可以调用预设的注册合约,基于原有的实例化后的第一合
约的合约标识,对实例化后的第二合约进行更新注册;第三服务器可以通过上述预设的注
册合约,直接调用实例化后的第二合约。通过引入并利用预设的版本控制合约、预设的实例
合约、预设的注册合约,可以将数据处理系统中的关于智能合约的升级操作和发布操作等
数据处理进行解耦,从而可以灵活、高效地对数据处理系统中的智能合约进行诸如发布、升
级等相关的数据处理。基于该方法,还通过调用预设的注册合约的注册更新接口,利用之前
使用的实例化后的旧版本合约的合约标识,与实例化后的新版本合约的合约地址建立映射
关系,从而可以使得合约调用方可以无感知地便捷地使用之前使用的实例化后的旧版本合
约的合约标识来调用新版本的合约,提高了用户使用体验。
[0149] 本说明书实施例还提供了一种基于智能合约的数据处理方法,该方法具体应用于布设于合约管理方一侧的第一服务器。该方法具体实施时,可以包括以下内容:
[0150] S1:生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布的智能合约;
[0151] S2:调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的合约版本信息与第二合约的合约地址的
映射关系。
[0152] 本说明书实施例还提供了一种基于智能合约的数据处理方法,该方法具体应用于布设于合约发布方一侧的第二服务器。该方法具体实施时,可以包括以下内容:
[0153] S1:调用预设的版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取所述第二合约;
[0154] S2:调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二合约的合约地址;
[0155] S3:调用预设的注册合约的注册更新接口,基于实例化后的第一合约的合约标识,对实例化后的第二合约进行更新注册;并建立实例化后的第一合约的合约标识与实例化后
的第二合约的合约地址的映射关系。
[0156] 本说明书实施例还提供了一种基于智能合约的数据处理方法,该方法具体应用于布设于合约调用方一侧的第三服务器。该方法具体实施时,可以包括以下内容:
[0157] S1:调用预设的注册合约的注册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约地址;
[0158] S2:根据所述实例化后的第二合约的合约地址,通过实例合约调用实例化后的第二合约,以代替实例化后的第一合约。
[0159] 由上可见,本说明书实施例提供的基于智能合约的数据处理方法,通过引入并利用预设的版本控制合约、预设的实例合约、预设的注册合约,可以将数据处理系统中的关于
智能合约的升级操作和发布操作等数据处理进行解耦,从而可以灵活、高效地对数据处理
系统中的智能合约进行诸如发布、升级等相关的数据处理,解决了基于现有方法在升级发
布更新版本合约时,处理过程复杂、处理效率低,且不够灵活的技术问题。
[0160] 本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:生成关于第一合约的更新
版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布
的智能合约;调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信
息,对第二合约进行更新注册;并建立第二合约的合约版本信息与第二合约的合约地址的
映射关系。
[0161] 为了能够更加准确地完成上述指令,参阅图4,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口401、处理器402以及存储器403,上述结构
通过内部线缆相连,以便各个结构可以进行具体的数据交互。
[0162] 其中,所述处理器402,具体可以用于生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布的智能合约。
[0163] 所述网络通信端口401,具体可以用于调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的合约版
本信息与第二合约的合约地址的映射关系。
[0164] 所述存储器403,具体可以用于存储相应的指令程序。
[0165] 在本实施例中,所述网络通信端口401可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信
的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。
此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动
网络通信芯片,如GSM、CDMA等;其还可以为WiFi芯片;其还可以为蓝牙芯片。
[0166] 在本实施例中,所述处理器402可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软
件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific 
Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并
不作限定。
[0167] 在本实施例中,所述存储器403可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也
叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡
等。
[0168] 本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:调用预设的版本控制合约
的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取
所述第二合约;调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合
约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二合约的合约地址;调用
预设的注册合约的注册更新接口,基于实例化后的第一合约的合约标识,对实例化后的第
二合约进行更新注册;并建立实例化后的第一合约的合约标识与实例化后的第二合约的合
约地址的映射关系。
[0169] 本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:调用预设的注册合约的注
册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约
地址;根据所述实例化后的第二合约的合约地址,通过实例合约调用实例化后的第二合约,
以代替实例化后的第一合约。
[0170] 本说明书实施例还提供了一种基于上述基于智能合约的数据处理方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时
实现:第一服务器生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第
一服务器预先生成并在数据处理系统中发布的智能合约;第一服务器调用预设的版本控制
合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建
立第二合约的合约版本信息与第二合约的合约地址的映射关系;第二服务器调用预设的版
本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射
关系,获取所述第二合约;第二服务器调用预设的版本控制合约的部署接口,通过预设的实
例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第二
合约的合约地址;第二服务器调用预设的注册合约的注册更新接口,基于实例化后的第一
合约的合约标识,对实例化后的第二合约进行更新注册;并建立实例化后的第一合约的合
约标识与实例化后的第二合约的合约地址的映射关系;第三服务器通过预设的注册合约,
调用实例化后的第二合约。
[0171] 在本实施例中,上述存储介质包括但不限于随机存取存储器(Random Access Memory,RAM)、只读存储器(Read‑Only Memory,ROM)、缓存(Cache)、硬盘(Hard Disk 
Drive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通
信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
[0172] 在本实施例中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
[0173] 参在软件层面上,本说明书实施例还提供了一种基于智能合约的数据处理装置,该装置具体可以包括以下的结构模块:
[0174] 生成模块,具体可以用于生成关于第一合约的更新版本,作为第二合约;其中,所述第一合约为第一服务器预先生成并在数据处理系统中发布的智能合约;
[0175] 调用模块,具体可以用于调用预设的版本控制合约的版本更新接口,基于所述第一合约的合约版本信息,对第二合约进行更新注册;并建立第二合约的合约版本信息与第
二合约的合约地址的映射关系。
[0176] 需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分
为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件
和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以
上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划
分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另
一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直
接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,
机械或其它的形式。
[0177] 本说明书实施例还提供了一种基于智能合约的数据处理装置,该装置具体可以包括以下的结构模块:
[0178] 第一调用模块,具体可以用于调用预设的版本控制合约的合约升级接口,根据第二合约的合约版本信息与第二合约的合约地址的映射关系,获取所述第二合约;
[0179] 第二调用模块,具体可以用于调用预设的版本控制合约的部署接口,通过预设的实例合约对所述第二合约进行实例化处理,得到实例化后的第二合约,以及实例化后的第
二合约的合约地址;
[0180] 第三调用模块,具体可以用于调用预设的注册合约的注册更新接口,基于实例化后的第一合约的合约标识,对实例化后的第二合约进行更新注册;并建立实例化后的第一
合约的合约标识与实例化后的第二合约的合约地址的映射关系。
[0181] 本说明书实施例还提供了一种基于智能合约的数据处理装置,该装置具体可以包括以下的结构模块:
[0182] 第一调用模块,具体可以用于调用预设的注册合约的注册地址获取接口,根据实例化后的第一合约的合约标识,获取实例化后的第二合约的合约地址;
[0183] 第二调用模块,具体可以用于根据所述实例化后的第二合约的合约地址,通过实例合约调用实例化后的第二合约,以代替实例化后的第一合约。
[0184] 由上可见,本说明书实施例提供的基于智能合约的数据处理装置,能够在升级、发布更新版本的第二合约的过程中,通过解耦升级操作和发布操作,灵活、高效地对数据处理
系统中的智能合约进行诸如发布、升级等相关的数据处理。
[0185] 在一个具体场景示例中,可以应用本说明书提供的基于智能合约的数据处理对合约进行版本控制和更新升级。具体实施过程,可以参阅以下内容执行。
[0186] 在本场景示例中,将具体的版本控制与升级的数据处理拆分成两步,从而将发布升级版本合约,与具体升级操作解耦开。其中,发布升级合约与升级合约可以是两个项目方
或组织。两者直接并不存在相互约束关系。同时针对升级后地址的变更,可以采用唯一ID
(例如,合约标识)与地址进行映射,便于合约调用方能够找到并调用升级后的合约。
[0187] 可以参阅图5所示,存在3种角色,其中,Caller合约的调用方使用者(对应第三服务器),调用已发布的合约;VersionManager(对应第一服务器),将新版本合约发布到
VersionControllerContract(对应预设的版本控制合约);Author(对应第二服务器),为合
约InstanceContract(对应预设的实例合约)的创建者。上述三种角色相互独立。
[0188] VersionManager所发布的合约版本可以先通过Author进行审核,审核通过后,Author可以通过具体要求来判断是否进行升级。每次升级后都会在RegistryContract(对
应预设的注册合约)进行合约地址进行更新,以方便Caller能够找到正确的合约地址。上述
过程可以解耦各个参与者,使版本控制与合约升级能足够灵活。
[0189] 结合图5所示,具体的,Caller为合约调用方;VersionManager为版本管理者,负责对底层合约模块的版本管理;Author为合约发布者。
[0190] 上述RegistryContract为注册合约,每次合约升级后的新地址都注册到该合约,调用方通过改合约利用指定标识获取最新地址。上述VersionControllerContract为版本
控制合约,用于记录各个升级版本,并提供升级的接口对指定合约进行升级。上述
InstanceContract为合约实例,为合约调用方真正调用的合约。
[0191] 具体的,RegistryContract可以提供3个合约接口包括:Registry(id,address)(对应注册接口)、GetRegistryAddress(id)(对应注册地址获取接口)和UpdateRegistry
(id,address)(对应注册更新接口)。
[0192] 其中,Registry(id,address):将一个id与合约地址进行映射,id在注册合约是唯一的;GetRegistryAddress(id):根据指定id获得映射的合约地址;UpdateRegistry(id,
address):更新指定id映射的合约地址。
[0193] 具体的,VersionControllerContract可以提供4个接口包括:Create(version,address)(对应创建接口)、UpdateVersion(version,address)(对应版本更新接口)、
Deploy(version)(对应部署接口)、UpgradeContract(version,address)(对应合约升级接
口)。
[0194] 其中,Create(version,address):创建指定版本对应的合约模板地址绑定,version由类型(对应第一字符串)+主版本(对应第二字符串)+小版本(对应第三字符串)组
成;UpdateVersion(version,address):更新合约版本对应的合约地址;Deploy(version):
部署指定版本的合约,产生新的合约地址(例如,实例化后的合约的合约地址);
UpgradeContract(version,address):更新指定合约地址的合约到指定版本。
[0195] InstanceContract可以提供可被升级的接口。其中,Upgrade(address):升级到指定合约地址。
[0196] 具体实施时,可以包括以下步骤。
[0197] S1:VersionManager注册合约版本。
[0198] 具体的,VersionManager调用VersionControllerContract的Create接口将模板合约进行注册,如version(对应合约版本信息)确定为:66‑01‑01,标识出合约类型为66,主
版本为01,小版本(对应子版本号)为01,address(合约地址)为:0xABCD。进而可以在
VersionControllerContract存储以下注册数据。
[0199]Version Address
66‑01‑01 0xABCD
[0200] S2:Author发布合约。
[0201] Author具体发布合约时,Author可以调用VersionControllerContract合约的Deploy接口部署InstanceContract,其中,VersionControllerContract可以根据传入的
66‑01‑01找到指定版本合约模板地址,创建新的合约(address):0xEFGH(实例化后的合约
的合约地址)。
[0202] S3:Author将合约地址发布到注册表。
[0203] 具体的,Author调用注册合约Registry接口进行注册,例如,id为ID‑01,address为0xEFGH,Registry合约存储注册数据。
[0204]ID Address
ID‑01 0xEFGH
[0205] S4:Caller调用InstanceContract。
[0206] Caller首先调用RegistryContract的GetRegistryAddress接口,传入ID‑01获取合约地址0xEFGH,再根据该地址去调用InstanceContract实例化后的合约。
[0207] S5:VersionManager发布升级合约。
[0208] 具体的,VersionManager可以调用UpdateVersion进行新版本的注册,例如version为:66‑01‑02,address为:0xJKLM。相应的,在VersionControllerContract中会存
储如下的注册数据。
[0209] Version Address66‑01‑01 0xABCD
66‑01‑02 0xJKLM
[0210] S6:Author进行合约升级。
[0211] 具体的,Author可以调用VersionControllerContract的UpgradeContract进行合约升级,创建新的InstanceContract,其中,参数version为:66‑01‑02,address为:0xEFGH,
所产生新的合约地址为:0xPQRS。
[0212] S7:Author将合约地址更新到注册合约中。
[0213] 具体的,Author可以调用注册表合约UpdateRegistry接口进行注册,id为:ID‑01,address为:0xPQRS,从而可以使得Registry合约存储如下的注册数据。
[0214]ID Address
ID‑01 0xPQRS
[0215] S8:Caller调用InstanceContract。
[0216] 具体的,可以调用RegistryContract的GetRegistryAddress接口,传入ID‑01获取合约地址0xPQRS,再根据该地址调用相应的InstanceContract的实例化后的合约使用。
[0217] 通过上述场景示例,验证了本说明书提供的方法适用于涉及区块链的智能合约发布、升级,例如,可以高效、灵活地实现去中心化交易所的交易数据处理,或者DeFi项目相关
数据处理等。
[0218] 虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步
骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,
可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程
处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在
涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些
要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设
备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品
或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任
何特定的顺序。
[0219] 本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程
逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种
硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或
者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件
部件内的结构。
[0220] 本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、
组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环
境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模
块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0221] 通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本
质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/
RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,
服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
[0222] 本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于
众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备
或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设
备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0223] 虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本
说明书的精神。