区块链的智能合约执行方法及装置和电子设备.pdf
《区块链的智能合约执行方法及装置和电子设备.pdf》由会员分享,可在线阅读,更多相关《区块链的智能合约执行方法及装置和电子设备.pdf(21页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910095127.9 (22)申请日 2019.01.31 (71)申请人 阿里巴巴集团控股有限公司 地址 英属开曼群岛大开曼资本大厦一座四 层847号邮箱 (72)发明人 冯志远李艳鹏程龙 (74)专利代理机构 北京博思佳知识产权代理有 限公司 11415 代理人 林祥 (51)Int.Cl. G06Q 40/04(2012.01) G06F 21/64(2013.01) (54)发明名称 区块链的智能合约执行方法及装置和电子 设备 (57)摘要 本说明书实施例提供一种。
2、区块链的智能合 约执行方法及装置和电子设备, 所述区块链对接 有可信第三方, 所述可信第三方中部署有执行智 能合约的合约引擎, 所述方法包括: 区块链中的 节点设备接收客户端发起的用于调用目标智能 合约的目标交易; 响应于所述目标交易, 从所述 区块链的分布式数据库中获取所述目标智能合 约的合约源码; 将所述合约源码发送给所述可信 第三方, 以使所述可信第三方的合约引擎执行所 述合约源码, 并向所述节点设备返回执行结果。 权利要求书3页 说明书14页 附图3页 CN 110060155 A 2019.07.26 CN 110060155 A 1.一种区块链的智能合约执行方法, 所述区块链对接有。
3、可信第三方, 所述可信第三方 中部署有执行智能合约的合约引擎, 所述方法包括: 区块链中的节点设备接收客户端发起的用于调用目标智能合约的目标交易; 响应于所述目标交易, 从所述区块链的分布式数据库中获取所述目标智能合约的合约 源码; 将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引擎执行所述合 约源码, 并向所述节点设备返回执行结果。 2.根据权利要求1所述的方法, 所述目标交易包括所述目标智能合约名称; 以及, 所述 目标智能合约中被调用的目标函数名称; 所述从所述区块链的分布式数据库中获取所述目标智能合约的合约源码, 具体包括: 基于所述目标交易包含的目标智能合约名称, 从。
4、所述区块链的分布式数据库中获取该 目标智能合约名称对应的合约源码; 基于所述目标智能合约中被调用的目标函数名称, 从所获取的合约源码获取该目标函 数名称对应的合约源码。 3.根据权利要求1所述的方法, 所述交易包含有输入参数; 所述将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引擎执行所 述合约源码, 包括: 将所述合约源码以及所述输入参数发送给所述可信第三方, 以使所述可信第三方向所 述节点设备获取与所述输入参数对应的输入数据, 将所述输入数据加载到所述合约源码, 并执行所述合约源码。 4.根据权利要求3所述的方法, 所述区块链对接有作为校验方的另一可信第三方; 所述方法还包。
5、括: 将所述执行结果发送给所述另一可信第三方, 以由所述另一可信第三方的合约引擎, 针对所述执行结果进行校验; 如果所述执行结果校验通过, 将所述执行结果发布至所述区块链中的所有节点设备进 行共识处理, 并在共识通过后, 将所述执行结果存储至所述区块链。 5.根据权利要求4所述的方法, 所述执行结果为所述可信第三方基于所述合约源码的 执行结果生成的结果集; 其中, 所述结果集包括执行合约源码过程中产生的读写集和执行 合约源码后得到的执行结果; 针对所述执行结果的校验过程, 包括: 所述另一可信第三方的合约引擎从所述读写集中读取输入数据, 将读取到的输入数据 加载到所述合约源码, 并模拟执行所述。
6、合约源码; 确定模拟执行所述合约源码产生的执行结果, 与所述结果集中的执行结果是否一致; 如果是, 确定所述执行结果校验通过。 6.根据权利要求4所述的方法, 所述执行结果为所述可信第三方基于所述合约源码的 执行结果生成的结果集; 其中, 所述结果集包括执行合约源码过程中产生的读写集和执行 合约源码后得到的执行结果; 针对所述执行结果的校验过程, 包括: 所述另一可信第三方的合约引擎从所述读写集中读取输入数据, 将读取到的输入数据 权利要求书 1/3 页 2 CN 110060155 A 2 加载到所述合约源码, 并模拟执行所述合约源码; 确定模拟执行所述合约源码产生的读写集, 与所述结果集中。
7、的读写集是否一致; 如果是, 确定所述执行结果校验通过。 7.根据权利要求1所述的方法, 所述区块链为联盟链。 8.一种区块链的智能合约执行方法, 所述区块链对接有可信第三方, 所述可信第三方 中部署有执行智能合约的合约引擎, 所述方法包括: 所述可信第三方的合约引擎接收所述区块链中的节点设备发送的合约源码; 其中, 所 述节点设备为所述区块链中响应客户端发起的用于调用目标智能合约的目标交易请求的 节点, 所述合约源码为所述目标智能合约的合约源码; 执行所述合约源码并向所述节点设备, 并向所述节点设备返回执行结果。 9.根据权利要求8所述的方法, 所述交易包含有输入参数; 所述接收所述区块链中。
8、的节点设备发送的合约源码, 具体包括: 接收所述区块链中的节点设备发送的合约源码以及所述输入参数; 所述执行所述合约源码, 具体包括: 向所述节点设备获取与所述输入参数对应的输入数据, 将所述输入数据加载到所述合 约源码, 并执行所述合约源码。 10.根据权利要求8所述的方法, 所述方法还包括: 在接收到所述节点设备发送的针对其它可信第三方的合约引擎的结果集进行的校验 请求时, 对所述结果集进行校验; 其中, 所述结果集包括执行合约源码过程中产生的读写集 和执行合约源码后得到的执行结果; 如果所述结果集校验通过, 将所述结果集中的执行结果发布至所述区块链中的所有节 点设备进行共识处理, 并在共。
9、识通过后, 将所述结果集中的执行结果存储至所述区块链。 11.根据权利要求10所述的方法, 针对所述第二执行结果的校验过程, 包括: 从所述读写集中读取输入数据, 将读取到的输入数据加载到所述合约源码, 并模拟执 行所述合约源码; 确定模拟执行所述合约源码产生的执行结果, 与所述结果集中的执行结果是否一致; 如果是, 确定所述执行结果校验通过。 12.根据权利要求10所述的方法, 针对所述第二执行结果的校验过程, 包括: 从所述读写集中读取输入数据, 将读取到的输入数据加载到所述合约源码, 并模拟执 行所述合约源码; 确定模拟执行所述合约源码产生的读写集, 与所述结果集中的读写集是否一致; 如。
10、果是, 确定所述执行结果校验通过。 13.根据权利要求8所述的方法, 所述区块链为联盟链。 14.一种区块链的智能合约执行装置, 所述区块链对接有可信第三方, 所述可信第三方 中部署有执行智能合约的合约引擎, 所述装置包括: 接收单元, 区块链中的节点设备接收客户端发起的用于调用目标智能合约的目标交 易; 响应单元, 响应于所述目标交易, 从所述区块链的分布式数据库中获取所述目标智能 合约的合约源码; 权利要求书 2/3 页 3 CN 110060155 A 3 执行单元, 将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引擎 执行所述合约源码, 并向所述节点设备返回执行结果。 。
11、15.一种区块链的智能合约执行装置, 所述区块链对接有可信第三方, 所述可信第三方 中部署有执行智能合约的合约引擎, 所述方法包括: 接收单元, 所述可信第三方的合约引擎接收所述区块链中的节点设备发送的合约源 码; 其中, 所述节点设备为所述区块链中响应客户端发起的用于调用目标智能合约的目标 交易请求的节点, 所述合约源码为所述目标智能合约的合约源码; 执行单元, 执行所述合约源码并向所述节点设备, 并向所述节点设备返回执行结果。 16.一种电子设备, 包括: 处理器; 用于存储处理器可执行指令的存储器; 其中, 所述处理器被配置为上述权利要求1-13中任一项所述的方法。 权利要求书 3/3 。
12、页 4 CN 110060155 A 4 区块链的智能合约执行方法及装置和电子设备 技术领域 0001 本说明书实施例涉及区块链技术领域, 尤其涉及一种区块链的智能合约执行方法 及装置和电子设备。 背景技术 0002 区块链技术, 也被称之为分布式账本技术, 是一种由若干台计算设备共同参与 “记 账” , 共同维护一份完整的分布式数据库的新兴技术。 由于区块链技术具有去中心化、 公开 透明、 每台计算设备可以参与数据库记录、 并且各计算设备之间可以快速的进行数据同步 的特性, 使得区块链技术在众多的领域中广泛的进行应用。 发明内容 0003 本说明书实施例提供的一种区块链的智能合约执行方法及装。
13、置和电子设备: 0004 根据本说明书实施例的第一方面, 提供一种区块链的智能合约执行方法, 所述区 块链对接有可信第三方, 所述可信第三方中部署有执行智能合约的合约引擎, 所述方法包 括: 0005 区块链中的节点设备接收客户端发起的用于调用目标智能合约的目标交易; 0006 响应于所述目标交易, 从所述区块链的分布式数据库中获取所述目标智能合约的 合约源码; 0007 将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引擎执行所 述合约源码, 并向所述节点设备返回执行结果。 0008 可选的, 所述目标交易包括所述目标智能合约名称; 以及, 所述目标智能合约中被 调用的目标函数。
14、名称; 0009 所述从所述区块链的分布式数据库中获取所述目标智能合约的合约源码, 具体包 括: 0010 基于所述目标交易包含的目标智能合约名称, 从所述区块链的分布式数据库中获 取该目标智能合约名称对应的合约源码; 0011 基于所述目标智能合约中被调用的目标函数名称, 从所获取的合约源码获取该目 标函数名称对应的合约源码。 0012 可选的, 所述交易包含有输入参数; 0013 所述将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引擎执 行所述合约源码, 包括: 0014 将所述合约源码以及所述输入参数发送给所述可信第三方, 以使所述可信第三方 向所述节点设备获取与所述输入。
15、参数对应的输入数据, 将所述输入数据加载到所述合约源 码, 并执行所述合约源码。 0015 可选的, 所述区块链对接有作为校验方的另一可信第三方; 0016 所述方法还包括: 说明书 1/14 页 5 CN 110060155 A 5 0017 将所述执行结果发送给所述另一可信第三方, 以由所述另一可信第三方的合约引 擎, 针对所述执行结果进行校验; 0018 如果所述执行结果校验通过, 将所述执行结果发布至所述区块链中的所有节点设 备进行共识处理, 并在共识通过后, 将所述执行结果存储至所述区块链。 0019 可选的, 所述执行结果为所述可信第三方基于所述合约源码的执行结果生成的结 果集; 。
16、其中, 所述结果集包括执行合约源码过程中产生的读写集和执行合约源码后得到的 执行结果; 0020 针对所述执行结果的校验过程, 包括: 0021 所述另一可信第三方的合约引擎从所述读写集中读取输入数据, 将读取到的输入 数据加载到所述合约源码, 并模拟执行所述合约源码; 0022 确定模拟执行所述合约源码产生的执行结果, 与所述结果集中的执行结果是否一 致; 0023 如果是, 确定所述执行结果校验通过。 0024 可选的, 所述执行结果为所述可信第三方基于所述合约源码的执行结果生成的结 果集; 其中, 所述结果集包括执行合约源码过程中产生的读写集和执行合约源码后得到的 执行结果; 0025 。
17、针对所述执行结果的校验过程, 包括: 0026 所述另一可信第三方的合约引擎从所述读写集中读取输入数据, 将读取到的输入 数据加载到所述合约源码, 并模拟执行所述合约源码; 0027 确定模拟执行所述合约源码产生的读写集, 与所述结果集中的读写集是否一致; 0028 如果是, 确定所述执行结果校验通过。 0029 可选的, 所述区块链为联盟链。 0030 根据本说明书实施例的第二方面, 提供一种区块链的智能合约执行方法, 所述区 块链对接有可信第三方, 所述可信第三方中部署有执行智能合约的合约引擎, 所述方法包 括: 0031 所述可信第三方的合约引擎接收所述区块链中的节点设备发送的合约源码;。
18、 其 中, 所述节点设备为所述区块链中响应客户端发起的用于调用目标智能合约的目标交易请 求的节点, 所述合约源码为所述目标智能合约的合约源码; 0032 执行所述合约源码并向所述节点设备, 并向所述节点设备返回执行结果。 0033 可选的, 所述交易包含有输入参数; 0034 所述接收所述区块链中的节点设备发送的合约源码, 具体包括: 0035 接收所述区块链中的节点设备发送的合约源码以及所述输入参数; 0036 所述执行所述合约源码, 具体包括: 0037 向所述节点设备获取与所述输入参数对应的输入数据, 将所述输入数据加载到所 述合约源码, 并执行所述合约源码。 0038 可选的, 所述方。
19、法还包括: 0039 在接收到所述节点设备发送的针对其它可信第三方的合约引擎的结果集进行的 校验请求时, 对所述结果集进行校验; 其中, 所述结果集包括执行合约源码过程中产生的读 写集和执行合约源码后得到的执行结果; 说明书 2/14 页 6 CN 110060155 A 6 0040 如果所述结果集校验通过, 将所述结果集中的执行结果发布至所述区块链中的所 有节点设备进行共识处理, 并在共识通过后, 将所述结果集中的执行结果存储至所述区块 链。 0041 可选的, 针对所述第二执行结果的校验过程, 包括: 0042 从所述读写集中读取输入数据, 将读取到的输入数据加载到所述合约源码, 并模 。
20、拟执行所述合约源码; 0043 确定模拟执行所述合约源码产生的执行结果, 与所述结果集中的执行结果是否一 致; 0044 如果是, 确定所述执行结果校验通过。 0045 可选的, 针对所述第二执行结果的校验过程, 包括: 0046 从所述读写集中读取输入数据, 将读取到的输入数据加载到所述合约源码, 并模 拟执行所述合约源码; 0047 确定模拟执行所述合约源码产生的读写集, 与所述结果集中的读写集是否一致; 0048 如果是, 确定所述执行结果校验通过。 0049 可选的, 所述区块链为联盟链。 0050 根据本说明书实施例的第三方面, 提供一种区块链的智能合约执行装置, 所述区 块链对接有。
21、可信第三方, 所述可信第三方中部署有执行智能合约的合约引擎, 所述装置包 括: 0051 接收单元, 区块链中的节点设备接收客户端发起的用于调用目标智能合约的目标 交易; 0052 响应单元, 响应于所述目标交易, 从所述区块链的分布式数据库中获取所述目标 智能合约的合约源码; 0053 执行单元, 将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约 引擎执行所述合约源码, 并向所述节点设备返回执行结果。 0054 根据本说明书实施例的第四方面, 提供一种区块链的智能合约执行装置, 所述区 块链对接有可信第三方, 所述可信第三方中部署有执行智能合约的合约引擎, 所述方法包 括: 0。
22、055 接收单元, 所述可信第三方的合约引擎接收所述区块链中的节点设备发送的合约 源码; 其中, 所述节点设备为所述区块链中响应客户端发起的用于调用目标智能合约的目 标交易请求的节点, 所述合约源码为所述目标智能合约的合约源码; 0056 执行单元, 执行所述合约源码并向所述节点设备, 并向所述节点设备返回执行结 果。 0057 根据本说明书实施例的第五方面, 提供一种电子设备, 包括: 0058 处理器; 0059 用于存储处理器可执行指令的存储器; 0060 其中, 所述处理器被配置为上述任一项区块链的智能合约执行方法。 0061 本说明书实施例, 提供了一种区块链的智能合约执行方案, 将。
23、智能合约与区块链 节点解耦合, 区块链中节点设备不再存储智能合约也不负责智能合约的运行, 而是由区块 链对接的可信第三方中部署的合约引擎负责运行智能合约; 如此, 当区块链中响应客户端 说明书 3/14 页 7 CN 110060155 A 7 发起交易的节点设备需要执行相关业务逻辑时, 可以通过调用可信第三方的合约引擎, 由 合约引擎运行相关的智能合约从而得到执行结果。 一方面, 通过将智能合约与节点设备解 绑, 从而将智能合约分离出来由合约引擎运行, 简化了节点设备功能从而降低了对节点设 备性能的要求(比如, 性能不高的设备也可以作为节点设备接入区块链)。 另一方面, 区块链 中节点设备间。
24、进行共识时, 不再依赖智能合约进行共识, 而是将结果集同世界状态比较就 可以实现共识, 无需每个节点设备参与智能合约运算, 大大提升了共识效率。 再一方面, 区 块链对接的可信第三方作为专用于运行智能合约的节点, 可以预先设置强大的存储和计算 能力, 以此部署大量的智能合约, 并且智能合约的业务逻辑可以设计的较为复杂, 以应对计 算量较大、 业务复杂度较高的业务需求。 附图说明 0062 图1是本说明书一实施例提供的区块链的智能合约执行方法的流程图; 0063 图2是本说明书一实施例提供的区块链系统的架构示意图; 0064 图3是本说明书一实施例提供的区块链的智能合约执行方法的流程图; 006。
25、5 图4是本说明书一实施例提供的区块链的智能合约执行装置的硬件结构图; 0066 图5是本说明书一实施例提供的区块链的智能合约执行装置的模块示意图; 0067 图6是本说明书一实施例提供的区块链的智能合约执行装置的模块示意图。 具体实施方式 0068 这里将详细地对示例性实施例进行说明, 其示例表示在附图中。 下面的描述涉及 附图时, 除非另有表示, 不同附图中的相同数字表示相同或相似的要素。 以下示例性实施例 中所描述的实施方式并不代表与本说明书相一致的所有实施方式。 相反, 它们仅是与如所 附权利要求书中所详述的、 本说明书的一些方面相一致的装置和方法的例子。 0069 在本说明书使用的术。
26、语是仅仅出于描述特定实施例的目的, 而非旨在限制本说明 书。 在本说明书和所附权利要求书中所使用的单数形式的 “一种” 、“所述” 和 “该” 也旨在包 括多数形式, 除非上下文清楚地表示其他含义。 还应当理解, 本文中使用的术语 “和/或” 是 指并包含一个或多个相关联的列出项目的任何或所有可能组合。 0070 应当理解, 尽管在本说明书可能采用术语第一、 第二、 第三等来描述各种信息, 但 这些信息不应限于这些术语。 这些术语仅用来将同一类型的信息彼此区分开。 例如, 在不脱 离本说明书范围的情况下, 第一信息也可以被称为第二信息, 类似地, 第二信息也可以被称 为第一信息。 取决于语境,。
27、 如在此所使用的词语 “如果” 可以被解释成为 “在时” 或 “当时” 或 “响应于确定” 。 0071 智能合约(Smart contract)是一种旨在应用在可以部署在区块链上的以信息化 方式传播、 验证或执行合同的计算机协议。 通过在智能合约中声明业务逻辑可以实现执行 相应操作。 智能合约允许在没有第三方的情况下进行可信交易。 这些交易可追踪且不可逆 转。 智能合约能够提供优于传统合同方法的安全, 并减少与合同相关的其他交易成本。 0072 首先, 介绍传统区块链中智能合约的部署方式。 传统智能合约是直接部署在区块 链中节点设备上, 并在节点设备执行交易请求时, 直接运行本地部署的相应智。
28、能合约。 对于 需要行共识的情况, 同样将执行结果抛出由区块链中所有节点设备进行共识, 每个节点设 说明书 4/14 页 8 CN 110060155 A 8 备都需要运行本地部署的用于共识的智能合约。 可见, 一方面, 传统智能合约与节点设备之 间是强耦合的, 每个节点设备都需要部署智能合约并需要运行智能合约, 对于节点设备来 说无疑增加了许多负担(节点设备需要具备一定的计算能力); 另一方面, 在节点设备间共 识时, 每个节点设备均需要重新执行一次智能合约判断执行结果是否正确, 导致共识效率 不高; 再一方面, 由于节点设备存储、 计算能力有限, 相应就限制了智能合约的数量以及复 杂程度,。
29、 传统智能合约无法执行计算量、 复杂度较大的业务逻辑。 0073 本说明书提出了一种区块链的智能合约执行方案, 通过对传统智能合约进行优 化, 可以提升包括区块链中节点设备的性能和效率, 节点设备间进行共识的效率, 以及智能 合约执行的效率等, 从而提升区块链整体性能。 0074 在本说明实现方式中, 将智能合约与区块链节点解耦合, 区块链中节点设备不再 存储智能合约也不负责智能合约的运行, 而是由区块链对接的可信第三方中部署的合约引 擎负责运行智能合约; 如此, 当区块链中响应客户端发起交易的节点设备需要执行相关业 务逻辑时, 可以通过调用可信第三方的合约引擎, 由合约引擎运行相关的智能合约。
30、从而得 到执行结果。 一方面, 通过将智能合约与节点设备解绑, 从而将智能合约分离出来由合约引 擎运行, 简化了节点设备功能从而降低了对节点设备性能的要求(比如, 性能不高的设备也 可以作为节点设备接入区块链)。 另一方面, 区块链中节点设备间进行共识时, 不再依赖智 能合约进行共识, 而是将结果集同世界状态比较就可以实现共识, 无需每个节点设备参与 智能合约运算, 大大提升了共识效率。 再一方面, 区块链对接的可信第三方作为专用于运行 智能合约的节点, 可以预先设置强大的存储和计算能力, 以此部署大量的智能合约, 并且智 能合约的业务逻辑可以设计的较为复杂, 以应对计算量较大、 业务复杂度较。
31、高的业务需求。 0075 在本说明书所描述的区块链, 具体可以包括私有链、 共有链以及联盟链等, 在本说 明书中不进行特别限定。 0076 例如, 在一个场景中, 上述区块链具体可以是由总部机构、 分支机构、 代理机构、 节 点设备等作为联盟成员组成的一个联盟链; 该联盟链的运营方可以依托于该联盟链, 来部 署相应的业务; 而以上所描述的作为联盟成员的总部机构、 分支机构、 代理机构都可以作为 上述业务的一个业务节点。 各个业务节点可以将自身所产生或者接收到的与执行结果以交 易的形式在联盟链中进行发布, 并在该交易经过联盟链中的共识节点的共识处理之后, 在 联盟链中的分布式数据库进行存储, 完。
32、成上述交易信息的 “上链” 存证。 0077 其中, 需要说明的是, 在本说明书中所描述的交易(Transaction), 是指通过区块 链的客户端创建, 并需要最终发布至区块链的分布式数据库中的一笔数据。 0078 区块链中的交易, 通常存在狭义的交易以及广义的交易之分。 狭义的交易是指用 户向区块链发布的一笔价值转移; 例如, 在传统的比特币区块链网络中, 交易可以是用户在 区块链中发起的一笔转账。 而广义的交易是指用户向区块链发布的一笔具有业务意图的业 务数据; 例如, 运营方可以基于实际的业务需求搭建一个联盟链, 依托于联盟链部署一些与 价值转移无关的其它类型的在线业务(比如, 宽泛的。
33、可以分为查询业务、 调用业务等), 而在 这类联盟链中, 交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务 请求。 0079 上述客户端, 可以包括任意类型的以区块链中存储的底层业务数据作为数据支 撑, 来实现特定的业务功能的上层应用。 说明书 5/14 页 9 CN 110060155 A 9 0080 请参考图1, 图1为本说明书一实施例提供的区块链的智能合约执行方法的流程 图, 所述区块链对接有可信第三方, 所述可信第三方中部署有执行智能合约的合约引擎, 所 述方法可以包括以下步骤: 0081 步骤110: 区块链中的节点设备接收客户端发起的用于调用目标智能合约的目标 交。
34、易; 0082 步骤120: 响应于所述目标交易, 从所述区块链的分布式数据库中获取所述目标智 能合约的合约源码; 0083 步骤130: 将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引 擎执行所述合约源码, 并向所述节点设备返回执行结果。 0084 以下结合图2所示的区块链系统的示意图为例加以说明: 0085 客户端向区块链发起一笔目标交易, 经由SDK调用智能合约函数, SDK将该目标交 易发送到区块链的一个节点设备上, 该节点设备可以称为调用节点; 所述目标交易可以携 带有相关的执行参数, 例如可以包括合约名称、 调用函数名、 输入参数、 交易ID、 时间戳等。 008。
35、6 如前所述, 本说明书中节点设备不负责智能合约运行; 因此, 调用节点在接收到客 户端发起的目标交易后, 需要调用可信第三方的合约引擎来执行相应智能合约的业务逻 辑。 0087 其中, 该调用节点首先需要获取供合约引擎执行相应智能合约的合约源码: 0088 在一实施例中, 所述目标交易包括所述目标智能合约名称; 以及, 所述目标智能合 约中被调用的目标函数名称; 0089 所述从所述区块链的分布式数据库中获取所述目标智能合约的合约源码, 具体包 括: 0090 基于所述目标交易包含的目标智能合约名称, 从所述区块链的分布式数据库中获 取该目标智能合约名称对应的合约源码; 0091 基于所述目。
36、标智能合约中被调用的目标函数名称, 从所获取的合约源码获取该目 标函数名称对应的合约源码。 0092 也就是说, 基于所述目标智能合约名称和目标调用函数名称, 节点设备就可以从 所述区块链的分布式数据库中获取所述目标智能合约所需的合约源码。 0093 其中, 所述合约源码是由一个个函数构成的, 每个函数具有一定的逻辑功能, 可以 在合约引擎中执行相应逻辑; 通过目标调用函数名称可以确定相应的函数, 以保证确定合 约源码包含的函数与目标调用函数一致。 0094 该实施例中, 对于可信第三方的合约引擎来说, 为了避免合约引擎作恶, 智能合约 的合约源码是存放在区块链的分布式数据库中的; 当需要使用。
37、智能合约时, 调用节点首先 从分布式数据库中获取相应的合约源码, 然后再将合约源码发送给可信第三方的合约引 擎; 如此, 每次合约引擎执行的智能合约都是临时由调用节点提供的。 0095 在一实施例中, 所述目标交易还包含有输入参数; 0096 所述将所述合约源码发送给所述可信第三方, 以使所述可信第三方的合约引擎执 行所述合约源码, 包括: 0097 将所述合约源码以及所述输入参数发送给所述可信第三方, 以使所述可信第三方 向所述节点设备获取与所述输入参数对应的输入数据, 将所述输入数据加载到所述合约源 说明书 6/14 页 10 CN 110060155 A 10 码, 并执行所述合约源码。。
38、 0098 在实际应用中, 有的业务类型可以不需要传输数据, 则节点设备无需传输输入参 数(或者, 输入参数可以为空), 合约引擎也无需向节点设备获取输入数据。 0099 对于有些复杂业务, 需要用到输入数据, 则需要用户在发起交易时提交输入参数。 0100 如图2所示, 节点设备在调用合约引擎时, 需要提供了合约源码和输入参数。 此时, 合约引擎可以根据该输入参数从节点设备处获取输入数据。 其中, 所述输入参数可以是由 客户端(即用户)提供的, 所述输入数据可以是执行智能合约所需的其它数据。 0101 以下举例说明输入参数和输入数据的区别: 0102 假设客户端发送的交易请求是, 令a+1。。
39、 则字段a和加1即为输入参数, 而a当前的值 即为输入数据。 在实际运算a+1时, 首先需要获取a的原始值(输入数据), 然后在原始值基础 上加1才能得到执行结果。 0103 由于区块链具有不可篡改的特性, 以及节点设备存储有全量账本(即数据), 因此 合约引擎可以向节点设备获取该节点设备本地存储的输入参数相关的输入数据。 0104 合约引擎可以注入合约源码, 在获取到输入数据后, 将所述输入数据加载到所述 合约源码, 并执行所述合约源码得到执行结果。 0105 需要说明的是, 合约引擎在执行合约源码过程中还会产生读写集。 所述读写集可 以包括执行合约源码时需要的输入数据, 和输入数据对应的输。
40、出数据。 对于复杂的合约源 码, 输入数据和输出数据可以包含多组, 即读写集是合约源码执行过程中所需的所有输入 数据和对应的输出数据, 构成的数据集合, 可以真实反映合约源码的整个执行计算过程。 请 参考后续表1或表2所示的示例。 0106 在一实施例中, 所述执行结果为所述可信第三方基于所述合约源码的执行结果生 成的结果集; 其中, 所述结果集包括执行合约源码过程中产生的读写集和执行合约源码后 得到的执行结果。 0107 其中, 合约引擎可以将输入参数、 合约源码(或者合约源码hash)、 读写集和执行结 果打包为结果集, 并为所述结果集添加本合约引擎的签名; 将所述签名后的结果集作为执 行。
41、结果返回给所述节点设备。 0108 相应地, 节点设备接收所述合约引擎返回的结果集; 其中, 所述结果集为所述合约 引擎将所述输入参数、 合约源码(或者合约源码hash)、 读写集和执行结果打包后添加本合 约引擎的签名的集合。 0109 该实施例中, 合约引擎需要为结果集添加签名, 以保证智能合约执行的有效性。 对 于没有签名的结果集, 节点设备是不予确认的, 视为无效。 0110 值得一提的是, 合约源码hash是指基于合约源码得到的hash值; 所述合约源码 hash可以用于校验合约引擎调用的合约源码是否存在篡改。 举例说明, 假设节点设备提供 的合约源码为A,正确的hash为(A)has。
42、h; 那么节点设备或者其他节点只需要将目标智能合 约的合约源码的hash值与结果集中合约源码hash值比对, 就可以判断合约引擎是否篡改了 合约源码。 假设合约引擎擅自篡改了合约源码, 假设篡改后的合约源码为A+1; 那么返回的 合约源码hash就变为(A+1)hash, 显然与原始合约源码的(A)hash不一致。 0111 在一实施例中, 所述区块链对接有作为校验方的另一可信第三方; 0112 所述方法还包括: 说明书 7/14 页 11 CN 110060155 A 11 0113 将所述执行结果发送给所述另一可信第三方, 以由所述另一可信第三方的合约引 擎, 针对所述执行结果进行校验; 。
43、0114 如果所述执行结果校验通过, 将所述执行结果发布至所述区块链中的所有节点设 备进行共识处理, 并在共识通过后, 将所述执行结果存储至所述区块链。 0115 为了便于区分, 以下将另一可信第三方的合约引擎简称为第二合约引擎, 并将前 述运行智能合约的合约引擎简称为第一合约引擎。 0116 如图2所示, 节点设备可以通过第二合约引擎对第一合约引擎的执行结果进行检 验。 0117 在一实施例中, 针对所述执行结果的校验过程, 包括: 0118 所述第二合约引擎从所述读写集中读取输入数据, 将读取到的输入数据加载到所 述合约源码, 并模拟执行所述合约源码; 0119 确定模拟执行所述合约源码产。
44、生的执行结果, 与所述结果集中的执行结果是否一 致; 0120 如果是, 确定所述执行结果校验通过。 0121 还可以为第一合约引擎的结果集添加该第二合约引擎的签名。 0122 在一实施例中, 针对所述执行结果的校验过程, 包括: 0123 针对所述执行结果的校验过程, 包括: 0124 所述另一可信第三方的合约引擎从所述读写集中读取输入数据, 将读取到的输入 数据加载到所述合约源码, 并模拟执行所述合约源码; 0125 确定模拟执行所述合约源码产生的读写集, 与所述结果集中的读写集是否一致; 0126 如果是, 确定所述执行结果校验通过。 0127 还可以为第一合约引擎的结果集添加该第二合约。
45、引擎的签名。 0128 举例说明, 针对a+2, a+2; 相应地读写集如下表1所示: 0129 读写 a0a2 a2a4 0130 上述表1的含义, 首先计算a+2; 产生第一次的读数据a0, 运行a+1后, 产生第一次 的写数据a2; 然后计算a+2; 产生第二次的读数据a2, 运行a+2, 产生第二次的写数据a 4。 0131 如果第一合约引擎作恶篡改了计算过程, 将a+2, a+2; 篡改为a+1, a+3; 那么读写集 如下表2所示: 0132 读写 a0a1 a1a4 0133 假设表2为第一合约引擎返回的结果集中的读写集, 表1为第二合约引擎模拟合约 源码运行后得到的读写集; 比。
46、对表1和表2就可以确定表1存在问题, 说明第一合约引擎存在 篡改。 说明书 8/14 页 12 CN 110060155 A 12 0134 而如果仅通过比对执行结果, 则表1和表2的执行结果均为4, 容易造成误判。 0135 通过第二合约引擎判断第一合约引擎返回的读写集是否真实有效, 如前所述读写 集包括一系列的输入和输出, 从读写集中读取输入数据模拟执行得到输出数据后, 逐个确 认得到的输出数据是否跟读写集一致(即整个过程各个环节的运算算结果都符合预期); 如 果全部一致, 证明读写集有效, 没有被人篡改, 此时才会进一步将最终的执行结果, 与结果 集中的结果进行匹配。 如此校验过程可以避。
47、免第一合约引擎作弊。 0136 以下介绍本说明书中节点设备间共识的机制: 0137 如前所述如果所述执行结果校验通过, 节点设备需要将所述执行结果发布至所述 区块链中的所有节点设备进行共识处理, 并在共识通过后, 将所述执行结果存储至所述区 块链。 0138 这里的共识过程, 可以为: 0139 首先将执行结果在本地的状态数据库保存(更新自己的世界状态)。 在对智能合约 的执行结果进行共识时, 可以将收到的其它节点设备发送的执行结果与本地的状态数据库 中的执行结果进行比较, 来对执行结果进行共识。 0140 如果所有节点设备返回的执行结果, 或者大多数节点设备返回的执行结果, 与自 己的世界状。
48、态中的执行结果一致, 则共识通过。 0141 在一可选的实施例中, 除了保存执行结果还可以保存读写集: 0142 首先将返回的读写集在本地的状态数据库保存(更新自己的世界状态)。 在对智能 合约的执行结果进行共识时, 可以将收到的其它节点设备发送的读写集与本地的状态数据 库中的读写集进行比较, 来对执行结果进行共识。 0143 如果所有节点设备返回的读写集, 或者大多数节点设备返回的读写集, 与自己的 世界状态中的读写集一致, 则共识通过。 0144 该实施例, 在区块链中节点设备间进行共识时, 不再需要重新执行智能合约, 对智 能合约的执行结果进行共识校验, 而是直接将结果集同世界状态进行比。
49、较就可以完成对智 能合约的执行结果的共识; 因此可以大大提升共识效率。 0145 请参考图2, 图2为本说明书一实施例提供的区块链的智能合约执行方法的流程 图, 所述区块链对接有可信第三方, 所述可信第三方中部署有执行智能合约的合约引擎, 所 述方法可以应用于合约引擎, 所述方法可以包括以下步骤: 0146 步骤210: 所述可信第三方的合约引擎接收所述区块链中的节点设备发送的合约 源码; 其中, 所述节点设备为所述区块链中响应客户端发起的用于调用目标智能合约的目 标交易请求的节点, 所述合约源码为所述目标智能合约的合约源码; 0147 步骤220: 执行所述合约源码并向所述节点设备, 并向所。
50、述节点设备返回执行结 果。 0148 该实施例是以合约引擎为执行主体进行描述的, 相关的节点设备可以参考前述图 1所示实施例, 在该实施例不再进行赘述。 0149 在一实施例中, 所述交易包含有输入参数; 0150 所述接收所述区块链中的节点设备发送的合约源码, 具体包括: 0151 接收所述区块链中的节点设备发送的合约源码以及所述输入参数; 0152 所述执行所述合约源码, 具体包括: 说明书 9/14 页 13 CN 110060155 A 13 0153 向所述节点设备获取与所述输入参数对应的输入数据, 将所述输入数据加载到所 述合约源码, 并执行所述合约源码。 0154 在一实施例中,。
- 内容关键字: 区块 智能 合约 执行 方法 装置 电子设备
便于维修的反冲洗过滤器.pdf
农机动力飞轮加工用抛光装置.pdf
用于茶叶外包装的标签打印装置.pdf
双核心密码工程实验箱.pdf
对虾养殖水体温度和盐度的自动调控装置.pdf
塑料模具脱壳机.pdf
ALC轻质墙体板分离工具.pdf
可调泡径的人字板机构.pdf
化妆品包装瓶点喷式喷涂装置.pdf
用于载人观光潜水器的连接结构.pdf
铝粉生产用雾化系统.pdf
固体磷酸催化剂均化器搅拌机构.pdf
日光温室多功能智能一体机.pdf
球形黑体辐射源.pdf
建筑施工用安全防护围挡.pdf
便携式可伸缩绝缘烟感温感检测装置.pdf
给排水系统图生成方法、装置、设备及存储介质.pdf
管道缺陷修补装置.pdf
西林瓶高速分装称量抽真空一体机.pdf
飞行物识别方法、系统、智能终端及计算机可读存储介质.pdf
易维护的包装机械密封防护构型.pdf
红外卫星遥感影像薄云去除方法、装置及介质.pdf
半球谐振陀螺仪的正交漂移误差检测方法.pdf
二级差动环形压控振荡器及射频芯片模组.pdf
角膜移植术后防止植片移位的头部固定枕.pdf
便携式桥梁检测设备.pdf
视频采集设备的检测方法、装置、设备及介质.pdf
晶圆背面清洗方法和装置.pdf
碳化硼结合金刚石复合超硬防弹陶瓷的制备方法.pdf
水处理用加药方法及其设备.pdf
基于感应辅热与磁流体冷却的杆件在轨成形机构与方法.pdf
龙门加工中心滑块润滑装置.pdf
一种海洋养殖喂料装置.pdf
一种芦笋复合谷物发酵型功能饮料的制备方法.pdf
护理消毒器.pdf
一种一体化灌溉系统.pdf
一种能够防治牛胃肠炎的闽南牛专用饲料添加剂及其制备方法.pdf
医疗用装置.pdf
通轴式联合整地机.pdf
一种保养粮食的防霉防腐除氧剂.pdf
女性生殖系统上皮细胞采样器.pdf
内循环净化式监控宠物窝.pdf
蜂箱巢门.pdf
一种多功能园林锄头.pdf
神经内科组合式检查器.pdf
一种盐碱地土壤改良用施肥装置.pdf
一种天然苹果香精及其制备方法.pdf
一种网箱残饵收集设备.pdf
一种金针菇乳酸菌饮料及其制备方法.pdf
浅感觉检查器.pdf
止痛祛湿茶冲剂的制备方法.pdf