在区块链网络中执行事务的方法和装置制造方法及图纸

技术编号:21552372 阅读:40 留言:0更新日期:2019-07-07 00:21
本公开的实施例涉及在区块链网络中执行事务的方法和装置。该方法包括:从客户端接收事务请求,事务请求是向多个背书节点发送的,与应用智能合约相关联并且涉及对外部数据源的访问;模拟执行应用智能合约;在模拟执行应用智能合约的过程中执行系统智能合约,以生成事务的第一模拟执行结果,其包括:向区块链网络外部的代理节点发送访问请求,从代理节点接收请求结果以及对请求结果的签名,根据请求结果以及签名来更新第一模拟执行结果的读集合;将第一模拟执行结果返回至客户端。本公开的实施例提供了在区块链中支持多个背书节点访问同一外部数据源的方案,使得能够通过在多个背书节点处产生的与外部数据源相关的读集合的一致性来确保事务的执行。

Method and Device for Transaction in Block Chain Networks

【技术实现步骤摘要】
在区块链网络中执行事务的方法和装置
概括地说,本公开的实施例涉及信息
,更具体地说,涉及在区块链网络中执行事务的方法、装置及计算机可读存储介质。
技术介绍
区块链是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。区块链具有去中心化、反篡改、数据一致性存储、过程透明可追踪等技术优势,其被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景。智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,其能够表现为在区块链上准确运行的计算机程序。用户通过使用智能合约进行事务、共享数据、建立信任,并由区块链技术的特性而保障数据的存储、读取以及执行整个过程透明可跟踪、不可篡改。在区块链中,一种方式是通过调用智能合约来完成区块链事务。在一些情况下,智能合约的执行会依赖于区块链外部的数据源。在这种情况下,现有的方案是智能合约直接调用预言机(Oracle)服务,预言机服务从真实世界中获取数据,然后返回结果给智能合约。然而,在例如事务需要多个参与方背书来执行的场景中,当多个背书节点同时访问同一个外部数据源时,无法确保各自返回一致的结果,导致该事务因无法通过一致性验证而失败。因此,需要一种改进的在区块链网络中执行事务的方法。
技术实现思路
总体上,本公开的实施例提供了在区块链网络中执行事务的方法、装置及计算机可读存储介质以至少部分地解决现有技术的上述及其它潜在问题。在本公开的实施例的第一方面,提供了一种用于在区块链网络中执行事务的方法,所述方法包括:从客户端接收事务请求,所述事务请求是由所述客户端向所述区块链网络的多个背书节点发送的,所述事务请求与应用智能合约相关联并且所述事务请求涉及对位于所述区块链网络外部的数据源的访问;模拟执行所述应用智能合约;将所述第一模拟执行结果返回至所述客户端;其中,所述在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果包括以下子步骤:向位于所述区块链网络外部的代理节点发送访问请求;从所述代理节点接收对应于所述访问请求的请求结果以及所述代理节点对所述请求结果的签名,所述请求结果是经所述代理节点证明来自所述数据源的;以及根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合。在本公开的实施例的第二方面,提供了一种用于在区块链网络中执行事务的装置,所述装置包括:处理器;以及存储器,其用于存储指令,当所述指令被执行时使得所述处理器执行以下步骤:从客户端接收事务请求,所述事务请求是由所述客户端向区块链网络的多个背书节点发送的,所述事务请求与应用智能合约相关联并且所述事务请求涉及对位于所述区块链网络外部的数据源的访问;模拟执行所述应用智能合约;在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果;将所述第一模拟执行结果返回至所述客户端;其中,所述在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果包括以下子步骤:向位于所述区块链网络外部的代理节点发送访问请求;从所述代理节点接收对应于所述访问请求的请求结果以及所述代理节点对所述请求结果的签名,所述请求结果是经所述代理节点证明来自所述数据源的;以及根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合。在本公开的实施例的第三方面,提供了一种用于在区块链网络中执行事务的方法,所述方法包括:在位于区块链网络外部的代理节点处,分别从所述区块链网络的多个背书节点接收对访问位于所述区块链网络外部的数据源的多个访问请求,所述多个访问请求对应于在所述多个背书节点处接收的相同事务请求;所述代理节点通过位于所述区块链网络外部的预言机服务获得对应于所述多个访问请求的请求结果和由所述预言机服务生成的证明信息;使用所述证明信息来验证所述请求结果是否可信地来自所述数据源;在验证为可信的情况下,使用所述代理节点的私钥来生成对所述请求结果的签名;将所述请求结果以及所述代理节点对所述请求结果的签名返回至所述多个背书节点以用于更新分别与所述相同事务请求相对应的多个模拟执行结果的读集合。在本公开的实施例的第四方面,提供了一种用于在区块链网络中执行事务的装置,所述装置包括:处理器;以及存储器,其用于存储指令,当所述指令被执行时使得所述处理器执行以下步骤:在位于区块链网络外部的代理节点处,分别从所述区块链网络的多个背书节点接收对访问位于所述区块链网络外部的数据源的多个访问请求,所述多个访问请求对应于在所述多个背书节点处接收的相同事务请求;所述代理节点通过位于所述区块链网络外部的预言机服务获得对应于所述多个访问请求的请求结果和由所述预言机服务生成的证明信息;使用所述证明信息来验证所述请求结果是否可信地来自所述数据源;在验证为可信的情况下,使用所述代理节点的私钥来生成对所述请求结果的签名;将所述请求结果以及所述代理节点对所述请求结果的签名返回至所述多个背书节点以用于更新分别与所述相同事务请求相对应的多个模拟执行结果的读集合。在本公开的实施例的第五方面,提供了一种计算机可读存储介质。该计算机可读存储介质包括计算机可执行指令,所述计算机可执行指令在装置中运行时使得所述装置执行根据本公开的实施例的第一和第三方面描述的方法。本公开的实施例提供了在区块链中支持多个背书节点访问同一链外数据源的方案,使得能够通过在多个背书节点处产生的与外部数据源相关的读集合的一致性来确保事务的执行。附图说明结合附图并参考以下详细描述,本公开各实施例的上述和其它特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了包括区块链网络和客户端的示例性环境100的示意图,可以在该示例性环境100中实现根据本公开的实施例的方法;图2示出了根据本公开的实施例的示例性区块链节点200的示意图;图3示出了根据本公开实施例的在区块链网络中执行事务的示例性方法300的流程图;图4示出了根据本公开实施例的在区块链网络中执行事务的示例性方法400的流程图;图5示出了根据本公开实施例的在区块链网络中执行事务的示例性装置500的示意图;图6示出了根据本公开的实施例的在区块链网络中执行事务的方法的一个具体示例600;以及图7示出了根据图6的具体示例600的示例性执行过程700。具体实施方式现将结合附图对本公开的实施例进行具体的描述。应当注意的是,附图中对相似的部件或者功能组件可能使用同样的数字标示。所附附图仅仅旨在说明本公开的实施例。本领域的技术人员可以在不偏离本公开精神和保护范围的基础上从下述描述得到替代的实施方式。如本文中所述,术语“包括”及其各种变体可以被理解为开放式术语,其意味着“包括但不限于”。术语“基于”可以被理解为“至少部分地基于”。术语“一个实施例”可以被理解为“至少一个实施例”。术语“另一实施例”可以被理解为“至少一个其它实施例”。本文使用词语“示例性”表示“充当示例、实例或举例说明”。本文中被描述为“示例性”的任何实施例都并非必然解释为对于其它实施例而言是优选的或有优势的。为了便于描述,下面对本公开中出现的一些术语进行说明,应当理解,本申请所使用的术语应解释为具有与其在本文档来自技高网...

【技术保护点】
1.一种用于在区块链网络中执行事务的方法,其特征在于,所述方法包括:从客户端接收事务请求,所述事务请求是由所述客户端向所述区块链网络的多个背书节点发送的,所述事务请求与应用智能合约相关联并且所述事务请求涉及对位于所述区块链网络外部的数据源的访问;模拟执行所述应用智能合约;在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果;将所述第一模拟执行结果返回至所述客户端;其中,所述在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果包括以下子步骤:向位于所述区块链网络外部的代理节点发送访问请求;从所述代理节点接收对应于所述访问请求的请求结果以及所述代理节点对所述请求结果的签名,所述请求结果是经所述代理节点证明来自所述数据源的;以及根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合。

【技术特征摘要】
1.一种用于在区块链网络中执行事务的方法,其特征在于,所述方法包括:从客户端接收事务请求,所述事务请求是由所述客户端向所述区块链网络的多个背书节点发送的,所述事务请求与应用智能合约相关联并且所述事务请求涉及对位于所述区块链网络外部的数据源的访问;模拟执行所述应用智能合约;在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果;将所述第一模拟执行结果返回至所述客户端;其中,所述在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果包括以下子步骤:向位于所述区块链网络外部的代理节点发送访问请求;从所述代理节点接收对应于所述访问请求的请求结果以及所述代理节点对所述请求结果的签名,所述请求结果是经所述代理节点证明来自所述数据源的;以及根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合。2.根据权利要求1所述的方法,其特征在于,所述访问请求包括请求标识信息、所述数据源的访问地址以及背书策略,其中,所述请求标识信息用于标识所述访问请求并被记录在通道账本中。3.根据权利要求1所述的方法,其特征在于,根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合包括:生成记录,所述记录的类型为链外类型,其中,所述记录包括以下各项:所述请求标识信息、所述数据源的访问地址、所述请求结果、所述代理节点对所述请求结果的签名;以及将所述记录写入所述第一模拟执行结果的读集合。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收包括所述事务的区块,所述事务包括分别来自所述多个背书节点的、对应于所述事务请求的多个模拟执行结果;验证所述事务中的多个读集合,所述多个读集合分别与所述多个模拟执行结果相对应;在验证通过的情况下,根据所述事务中的多个写集合来更新世界状态,所述多个写集合分别与所述多个模拟执行结果相对应。5.一种用于在区块链网络中执行事务的装置,其特征在于,所述装置包括:处理器;以及存储器,其用于存储指令,当所述指令被执行时使得所述处理器执行以下步骤:从客户端接收事务请求,所述事务请求是由所述客户端向所述区块链网络的多个背书节点发送的,所述事务请求与应用智能合约相关联并且所述事务请求涉及对位于所述区块链网络外部的数据源的访问;模拟执行所述应用智能合约;在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果;将所述第一模拟执行结果返回至所述客户端;其中,所述在模拟执行所述应用智能合约的过程中执行系统智能合约,以生成所述事务的第一模拟执行结果包括以下子步骤:向位于所述区块链网络外部的代理节点发送访问请求;从所述代理节点接收对应于所述访问请求的请求结果以及所述代理节点对所述请求结果的签名,所述请求结果是经所述代理节点证明来自所述数据源的;以及根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合。6.根据权利要求5所述的装置,其特征在于,所述访问请求包括请求标识信息、所述数据源的访问地址以及背书策略,其中,所述请求标识信息用于标识所述访问请求并被记录在通道账本中。7.根据权利要求5所述的装置,其特征在于,根据所述请求结果以及所述代理节点对所述请求结果的签名来更新所述第一模拟执行结果的读集合包括:生成记录,所述记录的...

【专利技术属性】
技术研发人员:刘辉
申请(专利权)人:上海点融信息科技有限责任公司
类型:发明
国别省市:上海,31

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

1