一种智能合约的升级方法、装置、设备及存储介质制造方法及图纸

技术编号:36063538 阅读:19 留言:0更新日期:2022-12-24 10:29
本申请公开了一种智能合约的升级方法,该智能合约包括业务逻辑合约和代理合约,代理合约进一步分为互相解耦的转发合约和数据合约;该转发合约用于转发用户对业务逻辑合约的调用请求,数据合约用于存储业务逻辑合约被调用时生成的业务数据;解除旧业务逻辑合约与转发合约的旧调用关系,建立新业务逻辑合约与转发合约的新调用关系,并将新业务逻辑合约的数据存储地址配置为数据合约的地址,以实现将旧业务逻辑合约升级为新业务逻辑合约;在该升级的过程中,转发合约的地址对用户保持不变,以便完成旧业务逻辑合约升级为新业务逻辑合约后,以转发合约为接口向用户提供新业务逻辑合约的调用。如此,无需对用户侧进行改动,减少改动量。量。量。

【技术实现步骤摘要】
一种智能合约的升级方法、装置、设备及存储介质


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

技术介绍

[0002]智能合约(smart contract)是区块链(blockchain)技术中的一种典型应用,智能合约可以部署于区块链上,其实质上是交易双方合约的代码化实例,基于可复制的、共享的分布式账本上,并按照交易合约的规定执行交易。
[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]第三方面本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种智能合约的升级方法,其特征在于,所述智能合约包括业务逻辑合约和代理合约;所述代理合约包括互相解耦的转发合约和数据合约;所述转发合约用于转发用户对所述业务逻辑合约的调用请求,所述数据合约用于存储所述业务逻辑合约被调用时生成的业务数据;所述方法包括:接收对所述智能合约的升级请求,所述升级请求携带有旧业务逻辑合约升级后得到的新业务逻辑合约;根据所述升级请求,解除所述旧业务逻辑合约与所述转发合约的旧调用关系,建立所述新业务逻辑合约与所述转发合约的新调用关系,并将所述新业务逻辑合约的数据存储地址配置为所述数据合约的地址,以实现将所述旧业务逻辑合约升级为所述新业务逻辑合约;其中,在将所述旧业务逻辑合约升级为所述新业务逻辑合约的过程中,所述转发合约的地址对所述用户保持不变,以便完成所述旧业务逻辑合约升级为所述新业务逻辑合约后,以所述转发合约为接口向所述用户提供所述新业务逻辑合约的调用。2.根据权利要求1所述的方法,其特征在于,所述数据合约按照键值对的方式存储所述业务逻辑合约被调用时生成的业务数据。3.根据权利要求2所述的方法,其特征在于,所述业务请求包括数据存储请求,所述键值对包括主键和字段;所述方法还包括:通过所述接口接收数据存储请求,所述数据存储请求携带有主键和字段;在所述数据合约中新建所述主键与所述字段的关联关系;根据所述关联关系,将所述业务逻辑合约被调用时生成的业务数据存储到所述主键对应的字段中。4.根据权利要求3所述的方法,其特征在于,所述业务请求包括数据获取请求,所述方法还包括:通过所述接口接收数据获取请求,所述数据获取请求中携带有目标主键;在所述数据合约中查找所述目标主键对应的目标关联关系;根据所述目标关联关系,返回所述目标主键所对应的目标字段中存储的业务数据。5.根据权利要求1所述的方法,其特征在于,所述方法...

【专利技术属性】
技术研发人员:耿强乐
申请(专利权)人:上海唯链信息科技有限公司
类型:发明
国别省市:

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

1