智能合约分离方法、合约处理方法、装置、设备及介质.pdf
《智能合约分离方法、合约处理方法、装置、设备及介质.pdf》由会员分享,可在线阅读,更多相关《智能合约分离方法、合约处理方法、装置、设备及介质.pdf(17页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910965012.0 (22)申请日 2019.10.11 (71)申请人 平安壹钱包电子商务有限公司 地址 518000 广东省深圳市福田区福田街 道福华路319号兆邦基金融大厦26层 2606单元 (72)发明人 袁立威李志辉王凌斌 (74)专利代理机构 深圳众鼎专利商标代理事务 所(普通合伙) 44325 代理人 黄章辉 (51)Int.Cl. G06F 8/70(2018.01) (54)发明名称 智能合约分离方法、 合约处理方法、 装置、 设 备及介质 (57)。
2、摘要 本发明公开了一种智能合约分离方法、 合约 处理方法、 装置、 设备及介质, 所述方法包括: 获 取原始智能合约, 所述原始智能合约包括逻辑合 约和数据合约地址; 基于所述数据合约地址, 采 用地址调用的方式将所述逻辑合约按照预设的 功能类别拆分为M个子逻辑合约以及与M个所述 子逻辑合约一一对应的M类合约数据; 采用代理 调用的方式对每一所述子逻辑合约进行地址更 新, 得到M个目标子逻辑合约; 将所述M类合约数 据存储到所述M个目标子逻辑合约中, 得到目标 智能合约。 该智能合约分离方法实现了对智能合 约的数据分离, 提高了智能合约分离的效率和准 确率。 权利要求书2页 说明书9页 附图5。
3、页 CN 110955448 A 2020.04.03 CN 110955448 A 1.一种智能合约分离方法, 其特征在于, 所述智能合约分离方法包括: 获取原始智能合约, 所述原始智能合约包括逻辑合约和数据合约地址; 基于所述数据合约地址, 采用地址调用的方式将所述逻辑合约按照预设的功能类别拆 分为M个子逻辑合约以及与M个所述子逻辑合约一一对应的M类合约数据, 其中, M为大于1的 自然数; 采用代理调用的方式对每一所述子逻辑合约进行地址更新, 得到M个目标子逻辑合约; 将所述M类合约数据存储到所述M个目标子逻辑合约中, 得到目标智能合约。 2.如权利要求1所述的智能合约分离方法, 其特征。
4、在于, 所述基于所述数据合约地址, 采用地址调用的方式将所述逻辑合约按照预设的功能类别拆分为M个子逻辑合约以及与M 个所述子逻辑合约一一对应的M类合约数据, 包括: 调用所述数据合约地址对与所述数据合约对应的逻辑合约进行初始化, 确定为目标逻 辑合约; 将所述目标逻辑合约按照预设的功能类别进行拆分, 得到M个子代理逻辑合约; 针对每一所述子代理逻辑合约, 分离出所述代理逻辑合约的逻辑与数据; 将所述逻辑与数据使用Key-value形式进行保存, 其中, 所述逻辑保存为所述子逻辑合 约, 且所述数据保存为所述合约数据。 3.如权利要求1所述的智能合约分离方法, 其特征在于, 所述采用代理调用的方。
5、式对每 一所述子逻辑合约的地址进行更新, 得到M个目标子逻辑合约, 包括: 获取所述子逻辑合约的delegatecall操作码; 采用所述delegatecall操作码更新每一所述子逻辑合约的地址, 得到所述目标子逻辑 合约。 4.如权利要求1所述的智能合约分离方法, 其特征在于, 在所述将所述M个合约数据存 储到所述M个目标子逻辑合约中, 得到目标智能合约之后, 所述智能合约分离方法还包括: 对每一所述合约数据按照结构类型进行拆分, 得到子合约数据, 并对每一所述子合约 数据设置交易权限。 5.一种合约处理方法, 其特征在于, 所述合约处理方法包括: 若接收到智能合约处理请求, 则获取所述智。
6、能合约处理请求中的目标智能合约, 其中, 所述目标智能合约是采用如权利要求1-4任一项所述的智能合约分离方法得到的, 且所述 目标智能合约包括M个目标子逻辑合约和M类合约数据; 对每一所述目标子逻辑合约进行逻辑处理, 并调用每一所述合约数据进行数据处理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果; 将所述智能合约处理结果发送到以太坊上链进行反馈。 6.一种智能合约分离装置, 其特征在于, 所述智能合约分离装置包括: 原始合约获取模块, 用于获取原始智能合约, 所述原始智能合约包括逻辑合约和数据 合约地址; 合约拆分模块, 用于基于所述数据合约地址, 采用地址调用的方式将所述逻辑合约按。
7、 照预设的功能类别拆分为M个子逻辑合约以及与M个所述子逻辑合约一一对应的M类合约数 据, 其中, M为大于1的自然数; 合约更新模块, 用于采用代理调用的方式对每一所述子逻辑合约进行地址更新, 得到M 权利要求书 1/2 页 2 CN 110955448 A 2 个目标子逻辑合约; 目标合约获取模块, 用于将所述M类合约数据存储到所述M个目标子逻辑合约中, 得到 目标智能合约。 7.如权利要求6所述的智能合约分离装置, 其特征在于, 所述合约拆分模块包括: 逻辑合约获取单元, 用于调用所述数据合约地址对与所述数据合约对应的逻辑合约进 行初始化, 确定为目标逻辑合约; 逻辑合约拆分单元, 用于将。
8、所述目标逻辑合约按照预设的功能类别进行拆分, 得到M个 子代理逻辑合约; 合约分离单元, 用于针对每一所述子代理逻辑合约, 分离出所述代理逻辑合约的逻辑 与数据; 目标逻辑合约获取单元, 用于将所述逻辑与数据使用Key-value形式进行保存, 其中, 所述逻辑保存为所述子逻辑合约, 且所述数据保存为所述合约数据。 8.一种合约处理装置, 其特征在于, 所述合约处理装置包括: 合约处理请求模块, 用于若接收到智能合约处理请求, 则获取所述智能合约处理请求 中的目标智能合约, 其中, 所述目标智能合约是采用如权利要求1-4任一项所述的智能合约 分离方法得到的, 且所述目标智能合约包括M个目标子逻。
9、辑合约和M类合约数据; 合约处理模块, 用于对每一所述目标子逻辑合约进行逻辑处理, 并调用每一所述合约 数据进行数据处理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果; 合约结果反馈模块, 用于将所述智能合约处理结果发送到以太坊上链进行反馈。 9.一种计算机设备, 包括存储器、 处理器以及存储在所述存储器中并可在所述处理器 上运行的计算机程序, 其特征在于, 所述处理器执行所述计算机程序时实现如权利要求1至 4任一项所述智能合约分离方法, 或者所述处理器执行所述计算机程序时实现如权利要求5 所述的合约处理方法。 10.一种计算机可读存储介质, 所述计算机可读存储介质存储有计算机程序, 。
10、其特征在 于, 所述计算机程序被处理器执行时实现如权利要求1至4任一项所述智能合约分离方法, 或者所述处理器执行所述计算机程序时实现如权利要求5所述的合约处理方法。 权利要求书 2/2 页 3 CN 110955448 A 3 智能合约分离方法、 合约处理方法、 装置、 设备及介质 技术领域 0001 本发明涉及智能合约领域, 尤其涉及一种智能合约分离方法、 合约处理方法、 装 置、 设备及介质。 背景技术 0002 在以太坊的设计中, 智能合约部署后不能销毁, 所以智能合约部署到以太坊网络 后, 将不允许修改, 若业务需求变更或逻辑合约代码编写不严谨, 存在漏洞, 也不能在原合 约中修改后重。
11、新部署, 因为修改后的智能合约重新部署后, 以太坊虚拟机会为新的合约分 配新的合约地址, 而合约数据存放于该合约地址对应的存储空间中。 以太坊智能合约的设 计是部署后不允许修改的, 所以智能合约修改后重新部署数据便会丢失, 但是难免有业务 需求的变更。 0003 传统地, 是将数据合约和业务合约进行分离, 用业务合约去调用数据合约, 这样当 需求变更时, 只需要重新部署业务合约即可, 而在数据合约里存储的数据则不会丢失, 然 而, 这类方法在应用的数据结构需要升级时, 升级数据合约后, 逻辑合约也需要随之做出相 应的修改, 因此不便于数据合约的更新升级, 还会产生斑驳数据, 影响智能合约的处理。
12、效率 和准确性。 发明内容 0004 本发明实施例提供一种智能合约分离方法、 装置、 设备及介质, 以解决智能合约分 离效率不高且准确度低下的问题。 0005 一种智能合约分离方法, 包括: 0006 获取原始智能合约, 所述原始智能合约包括逻辑合约和数据合约地址; 0007 基于所述数据合约地址, 采用地址调用的方式将所述逻辑合约按照预设的功能类 别拆分为M个子逻辑合约以及与M个所述子逻辑合约一一对应的M类合约数据, 其中, M为大 于1的自然数; 0008 采用代理调用的方式对每一所述子逻辑合约进行地址更新, 得到M个目标子逻辑 合约; 0009 将所述M类合约数据存储到所述M个目标子逻辑。
13、合约中, 得到目标智能合约。 0010 一种智能合约分离装置, 包括: 0011 原始合约获取模块, 用于获取原始智能合约, 所述原始智能合约包括逻辑合约和 数据合约地址; 0012 合约拆分模块, 用于基于所述数据合约地址, 采用地址调用的方式将所述逻辑合 约按照预设的功能类别拆分为M个子逻辑合约以及与M个所述子逻辑合约一一对应的M类合 约数据, 其中, M为大于1的自然数; 0013 合约更新模块, 用于采用代理调用的方式对每一所述子逻辑合约进行地址更新, 得到M个目标子逻辑合约; 说明书 1/9 页 4 CN 110955448 A 4 0014 目标合约获取模块, 用于将所述M类合约数。
14、据存储到所述M个目标子逻辑合约中, 得到目标智能合约。 0015 一种合约处理方法, 包括: 0016 合约处理请求模块, 用于若接收到智能合约处理请求, 则获取所述智能合约处理 请求中的目标智能合约, 其中, 所述目标智能合约是采用上述智能合约分离方法得到的, 且 所述目标智能合约包括M个目标子逻辑合约和M类合约数据; 0017 合约处理模块, 用于对每一所述目标子逻辑合约进行逻辑处理, 并调用每一所述 合约数据进行数据处理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果; 0018 合约结果反馈模块, 用于将所述智能合约处理结果发送到以太坊上链进行反馈。 0019 若接收到智能合约处。
15、理请求, 则获取所述智能合约处理请求中的目标智能合约, 其中, 所述目标智能合约是采用上述智能合约分离方法得到的, 且所述目标智能合约包括M 个目标子逻辑合约和M类合约数据; 0020 对每一所述目标子逻辑合约进行逻辑处理, 并调用每一所述合约数据进行数据处 理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果; 0021 将所述智能合约处理结果发送到以太坊上链进行反馈。 0022 一种合约处理装置, 包括: 0023 一种计算机设备, 包括存储器、 处理器以及存储在所述存储器中并可在所述处理 器上运行的计算机程序, 所述处理器执行所述计算机程序时实现上述智能合约分离方法, 或者, 所述处。
16、理器执行所述计算机程序时实现上述合约处理方法。 0024 一种计算机可读存储介质, 所述计算机可读存储介质存储有计算机程序, 所述计 算机程序被处理器执行时实现上述智能合约分离方法, 或者, 所述处理器执行所述计算机 程序时实现上述合约处理方法。 0025 上述智能合约分离方法、 装置、 设备及介质中, 首先, 获取原始智能合约, 原始智能 合约包括逻辑合约和数据合约地址; 然后, 基于数据合约地址, 采用地址调用的方式将逻辑 合约按照预设的功能类别拆分为M个子逻辑合约以及与M个子逻辑合约一一对应的M类合约 数据, 以便提高智能合约的简洁便利性, 进而有利于后续提高对数据分离的准确度和效率; 。
17、接着, 采用代理调用的方式对每一子逻辑合约进行地址更新, 得到M个目标子逻辑合约, 有 利于保证交易的准确性和安全性, 使得智能合约在更新或者升级的情况下安全准确; 最后, 将M类合约数据存储到M个目标子逻辑合约中, 得到目标智能合约, 进一步提高了智能合约 数据分离的效率和准确率。 0026 上述合约处理方法、 装置、 设备及介质中, 首先, 若接收到智能合约处理请求, 则获 取智能合约处理请求中的目标智能合约, 其中, 目标智能合约是采用智能合约分离方法得 到的, 且目标智能合约包括M个目标子逻辑合约和M类合约数据, 从而保证了后续的智能合 约处理过程更加方便灵活; 然后, 对每一目标子逻。
18、辑合约进行逻辑处理, 并调用每一合约数 据进行数据处理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果, 提高了智能 合约处理的效率, 并且提升了智能合约处理结果的准确性; 最后, 将智能合约处理结果发送 到以太坊上链进行反馈, 提高了基于以太坊交易的效率以及安全性。 说明书 2/9 页 5 CN 110955448 A 5 附图说明 0027 为了更清楚地说明本发明实施例的技术方案, 下面将对本发明实施例的描述中所 需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施 例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可以根据这些附图 。
19、获得其他的附图。 0028 图1是本发明实施例提供的智能合约分离方法的应用环境示意图; 0029 图2是本发明实施例提供的智能合约分离方法一示例图; 0030 图3是本发明实施例提供的智能合约分离方法的另一示例图; 0031 图4是本发明实施例提供的智能合约分离方法的另一示例图; 0032 图5是本发明实施例提供的智能合约分离装置的一原理框图; 0033 图6是本发明实施例提供的智能合约分离装置的另一原理框图; 0034 图7是本发明实施例提供的合约处理方法一示例图; 0035 图8是本发明实施例提供的合约处理装置的一原理框图; 0036 图9是本发明实施例提供的计算机设备的一示意图。 具体实。
20、施方式 0037 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于本发 明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例, 都属于本发明保护的范围。 0038 本申请提供的智能合约分离方法, 可应用在如图1的应用环境中, 其中, 客户端通 过网络与服务端进行通信, 服务端接收客户端发送的原始智能合约, 该原始智能合约包括 逻辑合约和数据合约地址; 然后基于所述数据合约地址, 采用地址调用的方式将所述逻辑 合约按照预设的功能类别拆分为M个子逻辑合约以。
21、及与M个所述子逻辑合约一一对应的M类 合约数据; 接着, 采用代理调用的方式对每一所述子逻辑合约进行地址更新, 得到M个目标 子逻辑合约; 最后, 将所述M类合约数据存储到所述M个目标子逻辑合约中, 得到目标智能合 约。 其中, 客户端可以但不限于是各种个人计算机、 笔记本电脑、 智能手机、 平板电脑和便携 式可穿戴设备。 服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。 0039 在一个实施例中, 如图2所示, 以该方法应用于图1中的服务端为例进行说明, 包括 如下步骤: 0040 S10: 获取原始智能合约, 原始智能合约包括逻辑合约和数据合约地址。 0041 其中, 智能。
22、合约(Smart contract)是用于以信息化方式传播、 验证或执行合同的 计算机协议, 也即以太坊设计中的一段写在区块链上的代码。 本实施例中的原始智能合约 是指需要进行数据分离的智能合约, 也即未经处理的智能合约, 且该原始智能合约包括逻 辑合约、 数据合约和数据合约地址, 其中的逻辑合约包含有系统的业务代码和对应的数据, 用于实现以太坊智能合约中的具体业务功能要求。 数据合约地址即为数据读写接口, 用于 作为访问逻辑合约的入口。 0042 具体地, 可以通过地址实例化调用获取原始智能合约, 其具体实现过程为: 提取部 署好的智能合约的地址, 然后在本地取得智能合约的地址对应的abi编。
23、码, 通过abi编码实 说明书 3/9 页 6 CN 110955448 A 6 例化智能合约, 该实例可以使用部署时候的实例, 最后将调用地址实例化的智能合约即为 原始智能合约。 0043 S20: 基于数据合约地址, 采用地址调用的方式将逻辑合约按照预设的功能类别拆 分为M个子逻辑合约以及与M个子逻辑合约一一对应的M类合约数据, 其中, M为大于1的自然 数。 0044 其中, 预设的功能类别是指根据智能合约的应用场景预先设置的功能的类别, M为 预设的功能类别的数量, 可根据实际需要进行设定, 例如, 预设的功能有交易转账和交易额 度授权共2个业务功能类别, 则此时M2。 子逻辑合约是指。
24、拆分后的且仅有一个业务功能的 逻辑合约, 如具有交易转账业务功能的子逻辑合约。 合约数据是指子逻辑合约中存储的数 据, 且该合约数据的类别与子逻辑合约一一对应, 也即合约数据的类别数量有M类。 地址调 用的方式是指在数据合约地址中提供的数据字段的读写接口(get函数和set函数), 然后在 逻辑合约中通过数据合约地址调用相应数据的读写接口对逻辑合约中的数据进行读写操 作的方式。 本实施例中, 通过地址调用的方式对逻辑合约进行拆分处理。 具体地, 根据合约 数据地址调用逻辑合约后, 对逻辑合约中的数据按照逻辑合约预设的功能进行拆分处理, 从而可以得到M个子逻辑合约以及与每一子逻辑合约对应的M类合。
25、约数据。 可以理解地, 由 于逻辑合约中包含有数据和业务代码, 因此, 逻辑合约会随着智能合约的使用时间增长导 致逻辑合约的数据增加, 影响智能合约中数据的读写效率, 因此, 本步骤对逻辑合约进行拆 分处理, 以便提高智能合约的简洁便利性, 进而有利于后续提高对数据分离的准确度和效 率。 0045 S30: 采用代理调用的方式对每一子逻辑合约进行地址更新, 得到M个目标子逻辑 合约。 0046 其中, 代理调用的方式是一种在数据合约中定义数据字段但是不提供数据字段的 读写接口, 而是在逻辑合约中继承数据合约, 逻辑合约就可以通过合约继承关系来访问父 类数据合约中的数据, proxy合约(代理合。
26、约)也继承数据合约, 同时定义有逻辑合约的地址 变量的处理方式, 用于在逻辑合约需要更新升级时替换逻辑合约地址对逻辑合约地址进行 更新, 使得交易的可靠性和准确性得以增强。 可以理解地, 当旧合约被攻击时, 会造成用户 的资产损失, 因此, 采用代理调用的方式对每一子逻辑合约进行地址更新, 得到M个目标子 逻辑合约, 也即在无名函数(Fallback函数)中使用delegatecall函数配合定义好的逻辑合 约地址变量对逻辑合约进行代理调用, 有利于保证基于智能合约交易的准确性和安全性, 使得智能合约在更新或者升级的情况下安全准确。 0047 S40: 将M类合约数据存储到M个目标子逻辑合约中。
27、, 得到目标智能合约。 0048 其中, 目标智能合约是指对原始智能合约进行细分后的智能合约, 对原始智能合 约的结构设计进行了层次性拆分和功能细化分工, 将智能合约的控制层、 逻辑层和数据层 都隔离开来, 将合约数据存储在对应的目标子逻辑合约中, 达到各个层级之间的单独更新 升级互不影响, 使得目标智能合约更加便于维护。 0049 可以理解地, 使用代理合约作为controller层, 升级更新智能合约时, 应用中智能 合约对外的接口地址可以保持不变, 不存在新的交易请求被发送到旧合约中的风险, 保证 了交易的准确性和安全性; 数据合约与逻辑合约拆分, 更新升级逻辑合约时, 数据合约不受 影。
28、响, 新合约可以和旧逻辑合约一样很便利的访问数据合约中存储的数据, 数据合约根据 说明书 4/9 页 7 CN 110955448 A 7 数据结构设计进行拆分, 实现了类似关系型数据库中分库分表的功能, 保证了数据的读写 效率, 拆分后易于控制数据合约中的数据的修改权限, 使得数据合约中的数据不易被篡改, 当需要对应用进行数据迁移时, 拆分存储的数据也较传统智能合约更为方便, 进一步提高 了智能合约数据分离的效率和准确率。 0050 本实施例中, 首先, 获取原始智能合约, 原始智能合约包括逻辑合约和数据合约地 址; 然后, 基于数据合约地址, 采用地址调用的方式将逻辑合约按照预设的功能类别。
29、拆分为 M个子逻辑合约以及与M个子逻辑合约一一对应的M类合约数据, 以便提高智能合约的简洁 便利性, 进而有利于后续提高对数据分离的准确度和效率; 接着, 采用代理调用的方式对每 一子逻辑合约进行地址更新, 得到M个目标子逻辑合约, 有利于保证交易的准确性和安全 性, 使得智能合约在更新或者升级的情况下安全准确; 最后, 将M类合约数据存储到M个目标 子逻辑合约中, 得到目标智能合约, 进一步提高了智能合约数据分离的效率和准确率。 0051 在一实施例中, 如图3所示, 步骤S20中, 基于数据合约地址, 采用地址调用的方式 将逻辑合约按照预设的功能类别拆分为M个子逻辑合约以及与M个子逻辑合约。
30、一一对应的M 类合约数据, 具体包括如下步骤: 0052 S21: 调用数据合约地址对与数据合约对应的逻辑合约进行初始化, 确定为目标逻 辑合约。 0053 其中, 目标逻辑合约是指对于数据合约对应的逻辑合约进行初始化后的逻辑合 约。 具体地, 调用数据合约地址, 该数据合约地址变量的值即为当前使用的与数据合约对应 的逻辑合约的地址, 在逻辑合约部署后, 对应的数据合约地址地址变量将被调用相应的赋 值函数赋值为刚部署的逻辑合约的地址, 这些地址变量即为此逻辑合约中需要的数据所在 数据合约的地址, 逻辑合约部署后, 将相应的数据合约地址初始化到新的逻辑合约中, 得到 目标逻辑合约。 0054 S。
31、22: 将目标逻辑合约按照预设的功能类别进行拆分, 得到M个子代理逻辑合约。 0055 具体地, 将目标合约按照预设的功能类别分解为多个子代理逻辑合约, 该具体分 解方法与步骤S20中的拆分方法一致, 此处不再赘述。 0056 S23: 针对每一子代理逻辑合约, 分离出代理逻辑合约的逻辑与数据。 0057 具体地, 对于每一子代理逻辑合约, 由于子代理逻辑合约中既包含业务代码又有 合约数据, 因此, 将子代理逻辑合约的逻辑与数据分离开来, 分别得到代理逻辑合约的逻辑 与数据。 0058 S24: 将逻辑与数据使用Key-value形式进行保存, 其中, 逻辑保存为子逻辑合约, 且数据保存为合约。
32、数据。 0059 具体地, 分离出代理逻辑合约的逻辑与数据后, 将逻辑和数据按照Key-value形式 进行存储, 其中的逻辑保存为子逻辑合约, 其中的数据保存为合约数据, 从而保证了逻辑合 约的业务代码与数据的一一对应关系, 也便于数据与逻辑的查询操作等, 以便后续对子代 理逻辑合约进行进一步地处理。 0060 本实施例中, 首先, 调用数据合约地址对与数据合约对应的逻辑合约进行初始化, 确定为目标逻辑合约; 然后, 将目标逻辑合约按照预设的功能类别进行拆分, 得到M个子代 理逻辑合约; 接着, 针对每一子代理逻辑合约, 分离出代理逻辑合约的逻辑与数据; 最后, 将 逻辑与数据使用Key-v。
33、alue形式进行保存, 其中, 逻辑保存为子逻辑合约, 且数据保存为合 说明书 5/9 页 8 CN 110955448 A 8 约数据, 从而保证了逻辑合约的业务代码与数据的一一对应关系, 也便于数据与逻辑的查 询操作等, 以便后续对子代理逻辑合约进行进一步地处理。 0061 在一实施例中, 如图4所示, 步骤S30中, 采用代理调用的方式对每一子逻辑合约进 行地址更新, 得到M个目标子逻辑合约, 具体包括如下步骤: 0062 S31: 获取子逻辑合约的delegatecall操作码。 0063 其中, delegatecall操作码是由EVM提供的目标地址上的代码, 是在调用逻辑合约 上下。
34、文中执行的调用操作码, 用于更新智能合约中的逻辑合约。 具体地, 可以通过从子逻辑 合约的存储结构中提取子逻辑合约的delegatecall操作码。 0064 S32: 采用delegatecall操作码更新每一子逻辑合约的地址, 得到目标子逻辑合 约。 0065 具体地, 服务端使用delegatecall操作码更新每一子逻辑合约的地址, 将函数调 用请求发送给可以被更新的子逻辑合约的地址。 由于delegatecall会保持函数调用的状 态, 目标函数的逻辑是可以被更新的, 并且状态会保留在代子逻辑合约的地址中, 以供可更 新子逻辑合约的逻辑使用, 并且由于delegatecall操作码将。
35、保持每一子逻辑合约地址的调 用, 从而实现对每个子逻辑合约的更新, 得到目标子逻辑合约, 保证了目标子逻辑合约的准 确性。 0066 本实施例中, 获取子逻辑合约的delegatecall操作码; 采用delegatecall操作码 更新每一子逻辑合约的地址, 得到目标子逻辑合约, 保证了目标子逻辑合约的准确性。 0067 在一实施例中, 在步骤S40之后, 即在将M个合约数据存储到M个目标子逻辑合约 中, 得到目标智能合约之后, 该智能合约分离方法还包括: 0068 S50: 对每一合约数据按照结构类型进行拆分, 得到子合约数据, 并对每一子合约 数据设置交易权限。 0069 具体地, 数据。
36、合约进行结构性拆分即根据数据结构设计, 即将不同类别的数据分 别拆分至不同的数据合约中, 比如一个以太坊数字资产应用中的黑名单数据, 其中的数据 可以拆分为: 无限制名单、 限额交易名单、 拒绝交易名单等不同类型的数据, 然后将这些不 同的数据分别存储在不同过的数据合约中, 每个数据合约只负责一种类型数据的存储, 如 此细化拆分, 既便于数据管理和数据迁移, 也便于设置不同数据的修改权限, 从而保护数据 不易被篡改而提高数据的安全性。 0070 本实施例中, 对每一合约数据按照结构类型进行拆分, 得到子合约数据, 并对每一 子合约数据设置交易权限, 既便于数据管理和数据迁移, 也便于设置不同数。
37、据的修改权限, 从而保护数据不易被篡改而提高数据的安全性。 0071 应理解, 上述实施例中各步骤的序号的大小并不意味着执行顺序的先后, 各过程 的执行顺序应以其功能和内在逻辑确定, 而不应对本发明实施例的实施过程构成任何限 定。 0072 在一实施例中, 提供一种智能合约分离装置, 该智能合约分离装置与上述实施例 中智能合约分离方法一一对应。 如图5所示, 该智能合约分离装置包括原始合约获取模块 10、 合约拆分模块20、 合约更新模块30和目标合约获取模块40。 各功能模块详细说明如下: 0073 原始合约获取模块10, 用于获取原始智能合约, 原始智能合约包括逻辑合约和数 据合约地址; 。
38、说明书 6/9 页 9 CN 110955448 A 9 0074 合约拆分模块20, 用于基于数据合约地址, 采用地址调用的方式将逻辑合约按照 预设的功能类别拆分为M个子逻辑合约以及与M个子逻辑合约一一对应的M类合约数据, 其 中, M为大于1的自然数; 0075 合约更新模块30, 用于采用代理调用的方式对每一子逻辑合约进行地址更新, 得 到M个目标子逻辑合约; 0076 目标合约获取模块40, 用于将M类合约数据存储到M个目标子逻辑合约中, 得到目 标智能合约。 0077 优选地, 如图6所示, 合约拆分模块20包括逻辑合约获取单元21、 逻辑合约拆分单 元22、 合约分离单元23和目标。
39、逻辑合约获取单元24。 0078 逻辑合约获取单元21, 用于调用数据合约地址对与数据合约对应的逻辑合约进行 初始化, 确定为目标逻辑合约; 0079 逻辑合约拆分单元22, 用于将目标逻辑合约按照预设的功能类别进行拆分, 得到M 个子代理逻辑合约; 0080 合约分离单元23, 用于针对每一子代理逻辑合约, 分离出代理逻辑合约的逻辑与 数据; 0081 目标逻辑合约获取单元24, 用于将逻辑与数据使用Key-value形式进行保存, 其 中, 逻辑保存为子逻辑合约, 且数据保存为合约数据。 0082 优选地, 合约更新模块包括操作码获取单元和逻辑合约更新单元。 0083 操作码获取单元, 用。
40、于获取子逻辑合约的delegatecall操作码; 0084 逻辑合约更新单元, 用于采用delegatecall操作码更新每一子逻辑合约的地址, 得到目标子逻辑合约。 0085 优选地, 该智能合约分离装置还包括数据拆分模块, 用于对每一合约数据按照结 构类型进行拆分, 得到子合约数据, 并对每一子合约数据设置交易权限。 0086 在一实施例中, 提供一合约处理方法, 该合约处理方法也可以应用在如图1的应用 环境中, 其中, 客户端通过网络与服务端进行通信。 服务端若接收到客户端发送的智能合约 处理请求, 则获取智能合约处理请求中的目标智能合约, 其中, 目标智能合约是采用智能合 约分离方法。
41、得到的, 且目标智能合约包括M个目标子逻辑合约和M类合约数据; 对每一目标 子逻辑合约进行逻辑处理, 并调用每一合约数据进行数据处理, 将逻辑处理结果与数据处 理结果合并为智能合约处理结果。 其中, 客户端可以但不限于是各种个人计算机、 笔记本电 脑、 智能手机、 平板电脑和便携式可穿戴设备。 服务端可以用独立的服务器或者是多个服务 器组成的服务器集群来实现。 0087 在一个实施例中, 如图7所示, 以该方法应用于图1中的服务端为例进行说明, 包括 如下步骤: 0088 S60: 若接收到智能合约处理请求, 则获取智能合约处理请求中的目标智能合约, 其中, 目标智能合约是采用智能合约分离方法。
42、得到的, 且目标智能合约包括M个目标子逻辑 合约和M类合约数据。 0089 具体地, 当用户发出智能合约处理请求时, 如交易请求, 该智能合约处理请求智能 合约处理请求首先进入目标智能合约中的目标子逻辑合约, 通过fallback函数将智能合约 处理请求及数据传递给本次交易需要的逻辑合约地址, 即可通过该地址进行地址调用, 将 说明书 7/9 页 10 CN 110955448 A 10 交易请求及数据发送至相应的逻辑合约中。 可以理解地, 该目标子逻辑合约是通过上述实 施例中的智能合约分离方法得到的, 因此, 当智能合约处理请求在逻辑合约中进行相应的 逻辑处理后, 逻辑合约需要将本次交易中的。
43、必要数据与数据合约进行交互, 逻辑合约通过 代理调用, 将需要交互的数据发送至数据代理合约, 然后数据代理合约通过地址调用将数 据写入到数据合约中, 从而保证了后续的智能合约处理过程更加方便灵活。 0090 S70: 对每一目标子逻辑合约进行逻辑处理, 并调用每一合约数据进行数据处理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果。 0091 其中, 逻辑处理是指对交易信息进行逻辑校验, 例如, 转账功能中对转账金额数据 的处理, 判断付款方余额是否足够, 若足够则扣减付款方余额, 将转账金额增加至收款方余 额。 数据处理是指对合约数据按照交易请求中的交易需要进行的操作。 0092 可以。
44、理解地, 在步骤S60中的目标智能智能合约的数据合约与逻辑合约拆分, 更新 升级逻辑合约时, 数据合约不受影响, 新合约可以和旧逻辑合约一样很便利的访问数据合 约中存储的数据; 数据合约根据数据结构设计进行拆分, 因此, 保证了交易的准确性和安全 性; 实现了类似关系型数据库中分库分表的功能, 保证了数据的读写效率, 拆分后易于控制 数据合约中的数据的修改权限, 使得数据合约中的数据不易被篡改, 当需要对应用进行数 据迁移时, 拆分存储的数据也较传统智能合约更为方便, 提高了智能合约处理的效率, 并且 提升了智能合约处理结果的准确性。 0093 S80: 将智能合约处理结果发送到以太坊上链进行。
45、反馈。 0094 具体地, 服务端根据智能合约处理请求的需要, 调用数据合约中所需的数据的读 写接口进行数据操作, 然后将智能合约处理结果数据发送到以太坊上链完成本次交易并进 行反馈, 提高了基于以太坊交易的效率以及安全性。 0095 本实施例中, 首先, 若接收到智能合约处理请求, 则获取智能合约处理请求中的目 标智能合约, 其中, 目标智能合约是采用智能合约分离方法得到的, 且目标智能合约包括M 个目标子逻辑合约和M类合约数据, 从而保证了后续的智能合约处理过程更加方便灵活; 然 后, 对每一目标子逻辑合约进行逻辑处理, 并调用每一合约数据进行数据处理, 将逻辑处理 结果与数据处理结果合并。
46、为智能合约处理结果, 提高了智能合约处理的效率, 并且提升了 智能合约处理结果的准确性; 最后, 将智能合约处理结果发送到以太坊上链进行反馈, 提高 了基于以太坊交易的效率以及安全性。 0096 应理解, 上述实施例中各步骤的序号的大小并不意味着执行顺序的先后, 各过程 的执行顺序应以其功能和内在逻辑确定, 而不应对本发明实施例的实施过程构成任何限 定。 0097 在一实施例中, 提供一种合约处理装置, 该合约处理装置与上述实施例中合约处 理方法一一对应。 如图8所示, 该合约处理装置包括合约处理请求模块60、 合约处理模块70 和合约结果反馈模块80。 各功能模块详细说明如下: 0098 合。
47、约处理请求模块60, 用于若接收到智能合约处理请求, 则获取智能合约处理请 求中的目标智能合约, 其中, 目标智能合约是采用上述实施例中的智能合约分离方法得到 的, 且目标智能合约包括M个目标子逻辑合约和M类合约数据; 0099 合约处理模块70, 用于对每一目标子逻辑合约进行逻辑处理, 并调用每一合约数 据进行数据处理, 将逻辑处理结果与数据处理结果合并为智能合约处理结果; 说明书 8/9 页 11 CN 110955448 A 11 0100 合约结果反馈模块80, 用于将智能合约处理结果发送到以太坊上链进行反馈。 0101 关于智能合约分离装置的具体限定可以参见上文中对于智能合约分离方法。
48、的限 定, 在此不再赘述。 上述智能合约分离装置中的各个模块可全部或部分通过软件、 硬件及其 组合来实现。 上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中, 也可以 以软件形式存储于计算机设备中的存储器中, 以便于处理器调用执行以上各个模块对应的 操作。 0102 在一个实施例中, 提供了一种计算机设备, 该计算机设备可以是服务器, 其内部结 构图可以如图9所示。 该计算机设备包括通过系统总线连接的处理器、 存储器、 网络接口和 数据库。 其中, 该计算机设备的处理器用于提供计算和控制能力。 该计算机设备的存储器包 括非易失性存储介质、 内存储器。 该非易失性存储介质存储有操作系统。
49、、 计算机程序和数据 库。 该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。 该计算 机设备的数据库用于存储智能合约分离方法中所使用到的数据。 该计算机设备的网络接口 用于与外部的终端通过网络连接通信。 该计算机程序被处理器执行时以实现一种智能合约 分离方法。 0103 在一个实施例中, 提供了一种计算机设备, 包括存储器、 处理器及存储在存储器上 并可在处理器上运行的计算机程序, 处理器执行计算机程序时实现上述实施例中的智能合 约分离方法, 或者处理器执行计算机程序时实现上述实施例中的合约处理方法。 0104 在一个实施例中, 提供了一种计算机可读存储介质, 其上存储有计。
50、算机程序, 计算 机程序被处理器执行时实现上述实施例中的智能合约分离方法, 或者处理器执行所述计算 机程序时实现上述实施例中的合约处理方法。 0105 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以 通过计算机程序来指令相关的硬件来完成, 所述的计算机程序可存储于一非易失性计算机 可读取存储介质中, 该计算机程序在执行时, 可包括如上述各方法的实施例的流程。 其中, 本申请所提供的各实施例中所使用的对存储器、 存储、 数据库或其它介质的任何引用, 均可 包括非易失性和/或易失性存储器。 非易失性存储器可包括只读存储器(ROM)、 可编程ROM (PROM)、 电可编程。
- 内容关键字: 智能 合约 分离 方法 处理 装置 设备 介质
新能源汽车用直流充电座.pdf
汽车智能避碰装置.pdf
骨料分选系统.pdf
片材生产用冷却设备.pdf
排水管道定位结构.pdf
一体式地面操作控制台.pdf
调色色浆过滤装置.pdf
干式变压器线圈吊具.pdf
下肢体能训练机器人.pdf
具有振动功能的发声装置.pdf
方便调整的缝纫机卷布装置.pdf
通讯接口.pdf
挤浆机加料装置.pdf
检测光刻胶适用性的方法及装置.pdf
齿轮箱生产用滚齿装置.pdf
基于动态规划和量子退火的RNA结构预测方法及系统.pdf
基于大数据的电力数据监管系统及方法.pdf
基于UWB的音频传输方法、装置、终端及存储介质.pdf
铸造铝合金及其制备方法和应用.pdf
内置光纤电缆导体的制作方法.pdf
基于神经网络的噪声等级监测装置、监测方法及电子设备.pdf
轨道交通车辆电连接器用固定框装置.pdf
碳氮共渗的加热装置.pdf
油田隐患井报废的连续注浆封堵设备及方法.pdf
多角度辐照抗菌装置及其在制备抗菌面料中的应用.pdf
流星雨页面生成方法、装置、设备及存储介质.pdf
航路与平台之间安全距离的评估方法、电子设备.pdf
混凝土密实用混凝土振动装置.pdf
基于NS3网络仿真平台的数据链仿真方法.pdf
双重降低残碱的高镍无钴正极材料及其制备方法.pdf
PTFE膜自动缠卷设备及缠卷方法.pdf
装配式断热桥楼宇景观亮化结构及其应用.pdf
一种独蒜兰种茎的储藏方法.pdf
蚂蚁防治器.pdf
一种液压驱动摘穗装置.pdf
鱿鱼的保鲜方法.pdf
一种伸缩输液架.pdf
一种急救运输工具的固定装置.pdf
一种用于散养畜牧的滑动式送料设备.pdf
一种用于农药喷洒的农业机械装置.pdf
粉皮漏瓢.pdf
农用杀虫组合物及其应用.pdf
一种树木围栏装置.pdf
花生奶茶.pdf
一种具有可调式通风口的滇重楼育苗大棚.pdf
一种中医内科治疗肺炎的中药.pdf
可牵引式旋翼喷灌机的凸轮旋转推进装置.pdf
一种用于心率测量的信号处理方法、装置及智能手表.pdf
一种科学有效的核桃种植方法.pdf
多层支撑系统.pdf
可扩张椎间融合器.pdf