一种智能合约的升级方法、部署方法及装置制造方法及图纸

技术编号:36947725 阅读:7 留言:0更新日期:2023-03-22 19:08
本申请公开了一种智能合约的升级方法,包括:响应于客户端发送的数据合约升级请求,为客户端提供业务合约,以使客户端在业务合约中编辑待升级内容对应的业务逻辑;响应于客户端发送的业务合约部署请求,将编辑后的业务合约部署在区块链上,并将数据合约的地址写入编辑后的所述业务合约;根据编辑后的业务合约中包含的数据合约的地址,编辑后的业务合约调用数据合约,并将在编辑后的业务合约中编辑的业务逻辑对应的映射类型变量保存至数据合约中。该方法在数据业务分离模式下,基于将数据合约中的业务数据设置为映射类型变量,使得数据合约具有固定的数据结构。因此,在智能合约升级时,不需要对数据合约进行重新部署,减少了数据迁移步骤。移步骤。移步骤。

【技术实现步骤摘要】
一种智能合约的升级方法、部署方法及装置


[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]本申请实施例还提供了一种智能合约的部署装置,所述装置包括:智能合约获取单元、权限管理合约部署单元、数据合约部署单元;第一地址写入单元、业务合约部署单元、第二地址写入单元、第三地址写入单元;<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种智能合约的升级方法,其特征在于,所述智能合约为至少包括数据合约和业务合约的合约集合,所述数据合约用于存储业务数据,所述业务合约用于存储业务逻辑,所述业务数据以映射类型变量的形式存储于所述数据合约中,所述方法应用于服务端,所述方法包括:响应于客户端发送的数据合约升级请求,为所述客户端提供所述业务合约,以使所述客户端在所述业务合约中编辑待升级内容对应的业务逻辑;响应于所述客户端发送的业务合约部署请求,将编辑后的所述业务合约部署在区块链上,并将所述数据合约的地址写入所述编辑后的所述业务合约;根据所述编辑后的所述业务合约中包含的所述数据合约的地址,所述编辑后的所述业务合约调用所述数据合约,并将在所述编辑后的所述业务合约中编辑的所述业务逻辑对应的映射类型变量保存至所述数据合约中。2.根据权利要求1所述的方法,其特征在于,所述智能合约还包括权限管理合约,所述权限管理合约用于为所述数据合约和所述业务合约提供调用权限认证。3.根据权利要求2所述的方法,其特征在于,在所述为所述客户端提供所述业务合约的步骤之前,所述方法还包括:根据所述数据合约及所述业务合约中包含的所述权限管理合约的地址,所述数据合约及所述业务合约调用所述权限管理合约,认证所述客户端是否具有调用所述数据合约及所述业务合约的调用权限;根据认证结果,确定是否为所述客户端提供所述业务合约,具体为:若所述客户端具有调用所述数据合约及所述业务合约的调用权限,则为所述客户端提供所述业务合约;若所述客户端不具有调用所述数据合约及所述业务合约的调用权限,则不为所述客户端提供所述业务合约。4.根据权利要求2所述的方法,其特征在于,在所述将编辑后的所述业务合约部署在区块链上,并将所述数据合约的地址写入所述编辑后的所述业务合约的步骤之后,所述方法还包括:获取所述编辑后的所述业务合约的地址;将所述编辑后的所述业务合约的地址写入所述权限管理合约;将所述权限管理合约的地址写入所述编辑后的所述业务合约。5.根据权利要求4所述的方法,其特征在于,在所述根据所述编辑后的所述业务合约中包含的所述数据合约的地址,所述编辑后的所述业务合约调用所述数据合约的步骤之前,所述方法还包括:调用所述权限管理合约,认证所述编辑后的所述业务合约是否具有对所述数据合约的调用权限;根据认证结果,确定所述编辑后的所述业务合约是否能够调用所述数据合约,具体为:若所述编辑后的所述业务合约具有对所述数据合约的调用权限,则能调用所述数据合约;若所述编辑后的所述业务合约不具有对所述数据合约的调用权限,则不能调用所述数据合约。
6.根据权利要求1所述的方法,其特征在于,所述映射类型变量的变量名对应于所述业务数据的数据名,所述映射类型变量的变量值对应于所述业务数据的数据值。7.根据权利要求6所述的方法,其特征在于,所述映射类型变量的变量名为字符串类型,所述映射类型变量的变量值为智能合约编程语言中的任意一种数据类型。8.一种智能合约的升级方法,其特征在于,所述智能合约为至少包括数据合约和业务合约的合约集合,所述数据合约用于存储业务数据,所述业务合约用于存储业务逻辑,所述业务数据以映射类型变量的形式存储于所述数据合约中,所述方法应用于客户端,所述方法包括:向服务端发送数据合约升级请求;接收所述服务端提供的所述业务合约;在所述业务合约中编辑待升级内容对应的业务逻辑;向所述服务端发送业务合约部署请求,以使所述服务端将编辑后的所述业务合约部署在区块链上,并根据所述编辑后的所述业务合约中包含的所述数据合约的地址,调用所述数据合约,将在所述编辑后的所述业务合约中编辑的所述业务逻辑对应的映射类型变量保存至所述数据合约中。9.根据权利要求8所述的方法,其特征在于,所述待升级内容,包括:在所述数据合约中增加第一业务数据;所述在所述业务合约中编辑待升级内容对应的业务逻辑,包括:在所述业务合约中编辑所述第一业务数据对应的映射类型变量的变量名与变量值,以使所述服务端能够根据在所述编辑后的所述业务合约中编辑的所述变量名与变量值,将所述第一业务数据以映射类型变量的形式保存至所述数据合约中。10.根据权利要求8所述的方法,其特征在于,所述待升级内容,还包括:在所述数据合约中减少第二业务数据;所述在所述业务合约中编辑待升级内容对应的业务逻辑,还包括:在所述业务合约中将所述第二业务数据对应的映射类型变量的变量值编辑为零,以使所述服务端能够根据在所述编辑后的所述业务合约中编辑的所述变量值,将所述第二业务数据从所述数据合约中删除。11.一种智能合约的部署方法,其特征在于,所述方法包括:获取包括数据合约、业务合约和权限管理合约的合约集合,所述数据合约用于存储业务数据,所述业务合约用于存储业务逻辑,所述权限管理合约用于为所述数据合约和所述业务合约提供调用权限认证;将所述权限管理合约部署在区块链上,并获取所述权限管理合约的地址;将所述数据合约部署在所述区块链上,并获取所述数据合约的地址;将所述权限管理合约的地址写入所述数据合约,...

【专利技术属性】
技术研发人员:庄虔伟顾费勇
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

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

1