掌桥专利:专业的专利平台
掌桥专利
首页

处理数据的方法及装置

文献发布时间:2024-04-18 19:57:31


处理数据的方法及装置

技术领域

本公开涉及互联网技术领域以及计算机数据处理领域,并且更具体地,涉及一种处理数据的方法、一种业务实体、一种可信执行环境中的虚拟机、一种用户终端、一种接入上层链的验证实体、一种处理数据的装置、计算机可读存储介质以及计算机程序产品。

背景技术

随着互联网技术的不断发展,人们的生活已经与互联网密不可分。区块链系统作为一种分布式系统,以其去中心化的特点被广泛应用在互联网交易、票据存储等领域。

区块链系统需要处理的数据量往往是巨大的,从而导致区块链系统常常出现容量不足的情况,导致区块链系统的可扩展性不强。因此需要对区块链系统进行进一步改进。

发明内容

为了解决上述问题,本公开提供了一种处理数据的方法、一种业务实体、一种可信执行环境中的虚拟机、一种用户终端、一种接入上层链的验证实体、一种处理数据的装置、计算机可读存储介质以及计算机程序产品。

根据本公开实施例的一个方面,提供了一种处理数据的方法,所述方法包括:由业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,基于所述至少一个交易对应的交易信息生成所述至少一个交易对应的交易数据,并将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机;由所述可信执行环境中的虚拟机对所述至少一个交易对应的交易数据进行处理以获取所述至少一个交易对应的处理数据,并将所述至少一个交易对应的处理数据发送至搭载上层链的节点;以及由所述搭载上层链的节点存储所述至少一个交易对应的处理数据,并由接入所述上层链的验证实体对所述至少一个交易对应的处理数据进行验证。

根据本公开实施例的一个方面,提供了一种由业务实体执行的方法,所述方法包括:由所述业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,基于所述至少一个交易对应的交易信息,确定所述至少一个交易发生前的默克尔树和所述至少一个交易发生后的默克尔树,其中,所述默克尔树用于记录下层链中存储的区块的状态;基于至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树的根、所述至少一个交易发生后的默克尔树的根,生成所述至少一个交易对应的交易数据;以及将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机,以对所述至少一个交易进行验证。

根据本公开实施例的一个方面,提供了一种由可信执行环境中的虚拟机执行的方法,所述可信执行环境中的虚拟机被部署于保护区程序内,所述方法包括:从业务实体接收至少一个交易对应的交易数据,所述至少一个交易对应的交易数据包括至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树、所述至少一个交易发生后的默克尔树;基于所述至少一个交易的交易信息,生成默克尔树,并基于所述默克尔数据生成第一认证响应,其中,所述至少一个交易中的每个交易的哈希值为所述默克尔树的叶子节点;基于所述至少一个交易的交易信息对所述至少一个交易发生前的默克尔树进行更新,以确定更新后的默克尔树的根是否等于所述至少一个交易发生后的默克尔树的根;响应于更新后的默克尔树的根等于所述至少一个交易发生后的默克尔树的根,生成第二认证响应或第三认证响应,所述第二认证响应包括所述至少一个交易发生前的默克尔树的根以及所述保护区程序的度量值,所述第三认证响应包括所述至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;基于所述第一认证响应、第二认证响应和第三认证响应中的一项或多项,生成所述至少一个交易对应的处理数据。

根据本公开实施例的一个方面,提供了一种由用户终端执行的方法,所述方法包括:由用户终端从业务实体获取至少一个交易中的交易相关的第一数据,所述第一数据包括所述至少一个交易中的交易在业务实体处的默克尔树中的路径;所述用户终端从用户终端本地获取所述至少一个交易中的交易相关的第二数据,所述第二数据包括所述至少一个交易中的交易;基于所述第一数据和所述第二数据,生成验证请求;以及向接入上层链的验证实体发送验证请求以验证所述至少一个交易中的交易。

根据本公开实施例的一个方面,提供了一种由接入上层链的验证实体执行的方法,所述方法包括:从搭载上层链的节点获取第二认证响应或第三认证响应,所述第二认证响应包括至少一个交易发生前的默克尔树的根以及保护区程序的度量值,所述第三认证响应包括至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;将所述第二认证响应或第三认证响应中的所述保护区程序的度量值与存储于所述验证实体的保护区程序的度量值进行比较,以确定针对所述保护区程序的度量值的验证结果;将所述第二认证响应或第三认证响应发送至可信远程实体进行验证,并从所述可信远程实体接收针对所述第二认证响应或第三认证响应的应答,并基于所述应答确定针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,以及基于所述针对所述保护区程序的度量值的验证结果以及所述针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,确定所述至少一个交易的真实性。

根据本公开实施例的一个方面,提供了一种业务实体,所述业务实体包括一个或多个处理器,所述一个或多个处理器被配置为:由业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,基于所述至少一个交易对应的交易信息,确定所述至少一个交易发生前的默克尔树和所述至少一个交易发生后的默克尔树,其中,所述默克尔树用于记录下层链中存储的区块的状态;基于至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树、所述至少一个交易发生后的默克尔树,生成所述至少一个交易对应的交易数据;以及将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机,以对所述至少一个交易进行验证。

根据本公开实施例的一个方面,提供了一种可信执行环境中的虚拟机,所述可信执行环境中的虚拟机被部署于保护区程序内,所述虚拟机被配置为:从业务实体接收所述至少一个交易对应的交易数据,所述至少一个交易对应的交易数据包括至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树、所述至少一个交易发生后的默克尔树;基于所述至少一个交易的交易信息,生成默克尔树,并基于所述默克尔数据生成第一认证响应,其中,所述至少一个交易中的每个交易的哈希值为所述默克尔树的叶子节点;基于所述至少一个交易的交易信息对所述至少一个交易发生前的默克尔树进行更新,以确定更新后的默克尔树的根是否等于所述至少一个交易发生后的默克尔树的根;响应于更新后的默克尔树的根等于所述至少一个交易发生后的默克尔树的根,生成第二认证响应或第三认证响应,所述第二认证响应包括所述至少一个交易发生前的默克尔树的根以及所述保护区程序的度量值,所述第三认证响应包括所述至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;基于所述第一认证响应、第二认证响应和第三认证响应中的一项或多项,生成所述至少一个交易对应的处理数据。

根据本公开实施例的一个方面,提供了一种用户终端,所述用户终端包括一个或多个处理器,所述一个或多个处理器被配置为:由用户终端从业务实体获取至少一个交易中的交易相关的第一数据,所述第一数据包括所述至少一个交易中的交易在业务实体处的默克尔树中的路径;所述用户终端从用户终端本地获取所述至少一个交易中的交易相关的第二数据,所述第二数据包括所述至少一个交易中的交易;基于所述第一数据和所述第二数据,生成验证请求;以及向接入上层链的验证实体发送验证请求以验证所述至少一个交易中的交易。

根据本公开实施例的一个方面,提供了一种接入上层链的验证实体,所述验证实体包括一个或多个处理器,所述一个或多个处理器被配置为:从搭载上层链的节点获取第二认证响应或第三认证响应,所述第二认证响应包括至少一个交易发生前的默克尔树的根以及保护区程序的度量值,所述第三认证响应包括至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;将所述第二认证响应或第三认证响应中的所述保护区程序的度量值与存储于所述验证实体的保护区程序的度量值进行比较,以确定针对所述保护区程序的度量值的验证结果;将所述第二认证响应或第三认证响应发送至可信远程实体进行验证,并从所述可信远程实体接收针对所述第二认证响应或第三认证响应的应答,并基于所述应答确定针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,以及基于所述针对所述保护区程序的度量值的验证结果以及所述针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,确定所述至少一个交易的真实性。

根据本公开实施例的一个方面,提供了一种处理数据的装置,包括:一个或多个处理器;以及一个或多个存储器,其中所述存储器中存储有计算机可读代码,所述计算机可读代码在由所述一个或多个处理器运行时,使得所述处理数据的装置作为业务实体、可信执行环境中的虚拟机、搭载上层链的节点、或接入所述上层链的验证实体中的任意一项与其他处理数据的装置一起执行如上述的方法。

根据本公开实施例的另一方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令在被处理器执行时,使得所述处理数据的装置作为业务实体、可信执行环境中的虚拟机、搭载上层链的节点、或接入所述上层链的验证实体中的任意一项与其他处理数据的装置一起执行如本公开上述各个方面中任一项所述的方法。

根据本公开实施例的另一方面,提供了一种计算机程序产品,其包括计算机可读指令,所述计算机可读指令在被处理器执行时,使得所述处理数据的装置作为业务实体、可信执行环境中的虚拟机、搭载上层链的节点、或接入所述上层链的验证实体中的任意一项与其他处理数据的装置一起执行如本公开上述各个方面中任一项所述的方法。

本公开上述各个方面实现了一种基于可信执行环境的二层链方案,该方案能够在应用层验证而非上层链上验证打包的交易,从而显著地降低验证时间。该方案不限制下层链使用的智能合约虚拟机,从而通用性和兼容性较高。此外,该方案通过在可信执行环境中处理复杂交易,解决了需要硬件电路来验证交易的二层链方案仅能处理部分简单交易的问题。

附图说明

通过结合附图对本公开实施例进行更详细的描述,本公开实施例的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1示出了根据本公开实施例的分布式系统的示意图。

图2示出了根据本公开实施例的上层链和下层链的区块结构的示意图。

图3示出了根据本公开实施例的处理数据的方法的可选流程图。

图4示出了根据本公开实施例的处理数据的方法的示意图。

图5示出了根据本公开实施例的处理数据的方法的又一示意图。

图6示出了根据本公开实施例的业务实体从搭载下层链的节点接收交易数据前后,内置的默克尔树的变化示意图。

图7示出了根据本公开实施例的可信执行环境中的虚拟机在部署阶段和运行阶段的示意流程图。

图8示出了根据本公开实施例的搭载上层链的节点以及接入所述上层链的验证实体对至少一个交易对应的数据进行验证的示意图。

图9示出了根据本公开实施例的用户终端在验证交易时从业务实体中获取的数据的示意图。

图10示出了根据本公开实施例的电子设备的示意图。

图11示出了根据本公开实施例的示例性计算设备的架构的示意图。

图12示出了根据本公开实施例的存储介质的示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

本公开的实施例涉及云计算技术。云计算(cloud computing)是一种计算模式,它将计算任务分布(例如,计算多种方案中的每种方案的用户偏好)在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。

现有的区块链系统的实现相对比较复杂,往往需要较长的验证时间或者复杂的验证电路,难以符合工业界的要求,因此需要对区块链系统进行进一步改进。为此,本公开提供了一种处理数据的方法、一种业务实体、一种可信执行环境中的虚拟机、一种用户终端、一种接入上层链的验证实体、一种处理数据的装置、计算机可读存储介质以及计算机程序产品。

首先参照图1描述根据本公开实施例的处理数据的方法以及相应的装置等的应用场景。图1示出了根据本公开实施例的分布式系统100的示意图。图2示出了根据本公开实施例的上层链和下层链的区块结构的示意图。

本公开实施例涉及的分布式系统100可以是基于二层链架构的方案的,以对单条链进行扩容。后文中,为了避免混淆,将使用上层链代表二层链的第一层,使用下层链代表二层链的第二层。

如图1所示,基于二层链架构的分布式系统100包括上下两层,每层均包括多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端),这些节点均通过网络通信的形式连接。其中,上层中的节点均可以搭载上层链,下层中的节点均可以搭载下层链。上层链仅存储下层链交易的关键信息,因此减少了上层链需要存储的数据。而下层链存储交易的具体数据、交易的状态信息与交易的执行结果。下层链可以存储大量的数据,从而增加了区块链系统的容量。在基于二层链架构的分布式系统100中,上层链的可信度优于下层链,然而容量往往小于下层链。下层链是上层链的扩展,用于扩展上层链的容量。用户终端位于下层中。然而,用户终端往往仅信任上层链,因此用户终端往往希望上层链对其在下层中进行的交易进行验证和背书。

上层链和下层链均可以是区块链。区块链是包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。参见图2,图2是本公开实施例提供的上层链和下层链中的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。

不论是搭载上层链的节点还是搭载下层链的节点都可能涉及路由功能,其用于支持节点之间的通信。通过路由功能,图1中的各个节点在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链网络内的共享数据。

不论是搭载上层链的节点还是搭载下层链的节点都可能涉及共识功能,其用于执行共识算法。例如,当区块链网络中的任意节点接收到输入信息时,区块链网络中的其它节点便根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储,使得上层区块链网络中全部节点上存储的数据均一致并且下层区块链网络中全部节点上存储的数据也一致。

不论是搭载上层链的节点还是搭载下层链的节点都可能涉及智能合约功能,其负责合约的注册发行以及合约触发和合约执行。开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能。

作为一个示例,假设用户在某个电商平台(也位于下层中)发起了一笔转账交易,以购买某个产品。用户可能不信任搭载下层链的节点出具的背书,而仅信任搭载上层链的节点出具的背书。利用图1和图2中的分布式系统的二层链结构和区块结构,搭载上层链的节点能够通过与用户直接或间接的交互,向用户提供其交易的有效的证明。

进一步地,为了节省搭载上层链的节点的计算资源并提高图1中的分布式系统100的可扩展性,本公开的各个方面在下层中还部署了可信执行环境中的虚拟机,由此提供一种基于可信执行环境与Rollup技术的二层链方案。之后将参考图3至图12详细描述该可信执行环境中的虚拟机,本公开在此不再赘述。

由此,任何区块链均可以通过本公开的实施例提供的方式,以下层链的形式接入上层链。上层链可以在较小的计算量的情况下见证下层链的全部或部分数据,以使得被见证的下层链数据将具备与上层链等同的不可篡改性与安全性。此外,本公开的各个方面还允许下层链主动选择需要被上层链见证的数据。

例如,本公开实施例提供了一种处理数据的方法,所述方法包括:由业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,并将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机;由所述可信执行环境中的虚拟机对所述至少一个交易对应的交易数据进行处理以获取所述至少一个交易对应的处理数据,并将所述至少一个交易对应的处理数据发送至搭载上层链的节点;以及由所述搭载上层链的节点存储所述至少一个交易对应的处理数据,并由接入所述上层链的验证实体对所述至少一个交易对应的处理数据进行验证。

本公开的各个方面至少具有以下优势:①本公开的区块链系统可以在下层链验证打包的交易而无需在上层链上验证打包的交易,从而使得交易验证时间显著减小;②本公开的区块链系统不限制下层链使用的智能合约虚拟机,兼容性显著增加;③本公开的区块链系统可以处理复杂的交易,而不需要在电路层面上进行改进,显著提高适用性。

下面参照图3至图12详细描述本公开的各个方面。本领域技术人员应当理解本公开并不以此为限。

首先参考图3至图4描述根据本公开实施例的处理数据的方法30。其中,图3示出了根据本公开实施例的处理数据的方法30的可选流程图。图4示出了根据本公开实施例的处理数据的方法30的示意图。

执行本公开实施例的处理数据的方法30的装置可以是任意的分布式系统。分布式系统的示例可以是参考图4详述的区块链系统,其包括参考图1和图2详述的区块链系统中的全部或部分组件。如图4所示,该区块链系统至少可以被分为上下两层。其中,上层可以包括验证实体和搭载上层链的节点。搭载上层链的节点可能已经部署有用于见证下层链的智能合约。这里的“见证”是指:上层链确认下层链的数据可被使用并且下层链的数据是真实的。当然本公开并不以此为限。下层则可以包括用户终端、业务实体、可信执行环境中的虚拟机和搭载下层链的节点。搭载下层链的节点可能已经部署有与业务相关的智能合约。本领域技术人员应当理解任意计算设备或由分布式计算设备组成的系统都能够执行本公开实施例的方法30。

如图3和图4所示,方法30包括操作S301至S303,并可选地包括操作S304。

在操作S301中,由业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,基于所述至少一个交易对应的交易信息生成所述至少一个交易对应的交易数据,并将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机。

例如,业务实体是处理业务相关的交易数据的业务提供方。作为一个示例,该业务实体示例可以是电商平台的转账系统,其可以被配置为处理海量客户的转账请求,并通过与搭载下层链的节点接入,以使得搭载下层链的节点能够以智能合约的方式处理各个转账交易。如上提及的,作为一个示例,智能合约可以是一种特殊协议,在区块链内制定合约时使用,当中内含了代码函数,亦能与其他合约进行交互、做决策、存储资料及发送交易等功能。智能合约还提供验证及执行合约内所订立的条件。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追溯且不可逆转。更进步一地,该业务实体还可以与上层链的各个节点接入,以使得上层链能够保证各个转账交易的安全性、有效性和可用性。当然本公开并不以此为限。

例如,下层链可以是联盟链。联盟链是有准入机制的区块链,其可以搭载在共识节点或其他节点(例如,业务节点)上。下层链上的智能合约都需要所有搭载下层链的共识节点执行,若执行结果一致,则共识节点可以达成共识。业务节点一般不执行智能合约,但是会从共识节点获取智能合约的执行结果。作为一个示例,假设业务实体是电商平台的转账系统,搭载下层链的节点上可能存放有多个区块,这些区块构成下层链,并且每个区块中存放有各个用户的转账记录。

正如上所述,下层链上的数据有可能是不可信的,需要进一步的验证。在搭载下层链的节点上存储有一个多个交易的交易信息的情况下,业务实体将从搭载下层链的节点(既可以是共识节点也可以是业务节点)获取这些交易的交易信息,然后将这些交易信息发往可信执行环境中的虚拟机进行验证或进一步处理。

值得注意的是,可信执行环境是指一种基于硬件的隐私计算方案。可信执行环境可由终端设备上处理器、安全存储器、可信用户接口界面(Trusted User Interface,TUI)、可信操作系统(Trusted Operating System,TOS)和可信应用(Trusted Application,TA)等可信软硬件资源组成,这些装置共同构造了一个安全的运行环境,保证其内部加载的程序和数据在机密性与完整性上得到保护。TEE将系统的硬件资源与软件资源划分成两个执行环境——可信部分与不可信部分。不可信部分又称为富执行环境(Rich ExecutionEnvironment,REE)。这两个环境是隔离的,TEE能够访问REE可以访问的资源,而除非有TEE的明确授权,否则TEE上的可信资源只允许其他可信资源访问。

例如,在本公开的一些实施例中,上述的可信执行环境均能够采用非对称加密的方式生成用于识别可信执行环境的身份的公私密钥对。在芯片生产时,可信执行环境的私钥被写入芯片中。除了可信执行环境以外,没有任何节点能够获知该私钥。而可信执行环境的公钥则是公开的。任意通过该芯片对应的公钥加密后的文件,只有在该芯片中利用该私钥才能被解密。需要说明的是,各个芯片中的私钥是唯一且不可篡改的。这样,在TEE里可以更安全地存储和处理交易相关的交易数据。

例如,可信执行环境中的虚拟机是一种创建于可信执行环境中的、充当虚拟计算机系统的虚拟环境。在一些示例中,可信执行环境中的虚拟机甚至可以模拟出整套硬件,包括CPU、内存、网络接口和存储器。当然本公开并不以此为限。

在操作S302中,由所述可信执行环境中的虚拟机对所述至少一个交易对应的交易数据进行处理以获取所述至少一个交易对应的处理数据,并将所述至少一个交易对应的处理数据发送至搭载上层链的节点。

例如,所述可信执行环境中的虚拟机可以用于执行机密计算。机密计算是指通过在基于硬件的受信任执行环境(TEE)中执行计算来保护使用中的数据。TEE是强制仅执行已授权代码的环境。TEE外部的任何代码都无法读取或篡改该环境中的任何数据。作为一个示例,所述可信执行环境中的虚拟机上可以部署有保护区(Enclave)程序,其受到可信执行环境的硬件的保护。保护区程序中可以存储数据,存储的数据由可信执行环境硬件密钥的私钥加密。

可选地,可信执行环境中的虚拟机能够对所述至少一个交易对应的交易数据进行处理以获取所述至少一个交易对应的处理数据。例如,可信执行环境中的虚拟机可以对所述至少一个交易进行验证,以确定所述至少一个交易是否是合法有效的。此时,所述至少一个交易对应的处理数据可以是所述至少一个交易的合法性或有效性。又例如,可信执行环境中的虚拟机可以执行所述至少一个交易,以确定所述至少一个交易的执行结果。此时,所述至少一个交易对应的处理数据可以是所述至少一个交易的执行结果。再例如,可信执行环境中的虚拟机可以对所述至少一个交易的交易状态进行更新,此时,所述至少一个交易对应的处理数据可以是所述至少一个交易的更新后的交易状态。当然本公开并不以此为限。

由于可信执行环境中的虚拟机已经能够在可信执行环境中实现对于下层链上的交易数据的处理,并且该处理的过程是受到可信执行环境的严格保护的,因此,上层中的各个组件将无需再次执行逐笔交易的一一验证(例如逐一执行交易并得到交易的处理数据),而仅需验证所述至少一个交易对应的处理数据即可,大大减少了上层中各个组件的计算量。

然而,如图4所示,由于可信执行环境中的虚拟机是部署在下层中的,用户可能不信任下层链上的数据,但往往信任上层链上的数据。为便于用户能够直接通过上层链验证其交易并且上层链能够确认下层链上的数据的可用性和真实性,可信执行环境中的虚拟机完成对所述至少一个交易对应的交易数据的处理之后,可信执行环境中的虚拟机还可以将向搭载上层链的节点发送所述至少一个交易对应的处理数据,以使得搭载上层链的节点能够对所述至少一个交易对应的处理数据进行进一步见证。

在操作S303中,由所述搭载上层链的节点存储所述至少一个交易对应的处理数据,并由接入所述上层链的验证实体对所述至少一个交易对应的处理数据进行验证。

作为一个示例,上层链可以是联盟链也可以是公链。如上所述,联盟链是一类有准入规则的区块链,与公链相比具有性能更高的优势。但是,联盟链上的数据在“联盟之外”很难得到认可,这导致了联盟链上数据的可信度远远不如公链。这妨碍了联盟链上数据的可用性,甚至可能造成了数据孤岛。因此,将联盟链作为下层链,并将另一条联盟链或公链作为上层链可以大幅增强下层链上数据的可信度、可用性。当然,本公开对此不进行限制。

例如,以上层链是与下层链不同的联盟链或公链为例,所述搭载上层链的节点被部署有智能合约,所述智能合约用于见证所述下层链上的数据。上层链上的智能合约都需要所有搭载上层链的共识节点执行,若执行结果一致,则共识节点可以达成共识并将达成共识的交易存储至上层链上的区块,由此完成对于下层链上的数据的见证过程。

例如,所述验证实体(validator)可以是能够接入所述上层链的任意计算设备,只要其能够对所述至少一个交易对应的处理数据进行验证即可。验证实体又称为验证者,其既可以是上层链提议新区块的实体,或者是那些确认/证明其他验证者所提议的区块的实体。本公开对此不进行限制。

可选地,每个区块的验证者都可以从验证者集合中选择出来的。在一些上层链的设计中,所有验证者都可能需要在上层链中进行登记才能成为验证者。这些登记后的验证者将组成验证者集合。可以通过随机数发生器随机选择用于所述至少一个交易对应的处理数据的验证者。这些被选中的验证者将组成一个委员会(committee)。在某个时隙(slot)中,委员会中的部分验证者将负责对某个状态进行证明。当经过一个或多个时隙之后,所有随机被选中的验证者都获得了机会对提议进行证明。之后将详细描述验证实体对所述至少一个交易对应的处理数据进行验证的示例,本公开在此不再赘述。

然后,方法30还可选地包括操作S304。在操作S304中,用户终端从所述业务实体获取所述至少一个交易中的交易相关的数据,并向所述验证实体发送验证请求以验证所述至少一个交易中的交易。

如图4所示,在“二层链”架构中,用户终端位于下层中。然而,用户终端往往仅信任上层链,因此用户终端往往希望上层链对其通过业务实体进行的交易进行验证和背书。作为一个示例,假设用户在某个电商平台(也即业务实体)发起了一笔转账交易,以购买某个产品。业务实体、可信执行环境中的虚拟机、搭载上层链的节点以及验证实体通过操作S301至操作S303将该笔转账交易进行了处理、存储和验证。此时,用户可能希望能够验证该笔转账交易是否是有效的和/或合法的。此时,用户终端将从所述业务实体获取与该转账交易有关的第一数据,并结合用户终端本地的与该转账交易有关的第二数据,生成验证请求。用户终端将向所述验证实体发送该验证请求,以验证该转账交易的有效性和合法性。之后将详细描述用户终端通过与上层链进行交互以验证交易的示例,本公开在此不再赘述。

值得注意的是,所述至少一个交易中的交易也可以不是用户终端发起的交易。例如,在另一个示例中,假设用户A在某个电商平台(也即业务实体)发起了一笔转账交易,以购买某个产品。而用户B也有可能希望确定该转账交易的合法性。此时用户B也可以按照上述操作,使得其的用户终端从所述业务实体获取该交易相关的数据,并向所述验证实体发送验证请求以验证所该交易。本公开对此不进行限制。

由此,在本公开实施例中,针对现有的二层链方案中的缺陷,提出了一种基于可信执行环境与Rollup技术的二层链方案,任何区块链均可以通过这种方式,以下层链的形式接入上层链。上层链可以见证下层链的全部或部分数据,被见证的下层链数据将具备与上层链等同的不可篡改性与安全性。此外,本公开的各个方面还允许下层链主动选择需要被上层链见证的数据。

接下来,参考图5至图9进一步描述上述各个计算设备执行操作S301至操作S304的一些示例性的可选细节。其中,图5示出了根据本公开实施例的处理数据的方法30的又一示意图。图6示出了根据本公开实施例的业务实体从搭载下层链的节点接收交易数据前后,内置的默克尔树的变化示意图。图7示出了根据本公开实施例的可信执行环境中的虚拟机在部署阶段和运行阶段的示意流程图。图8示出了根据本公开实施例的搭载上层链的节点以及接入所述上层链的验证实体对至少一个交易对应的数据进行验证的示意图。图9示出了根据本公开实施例的用户终端在验证交易时从业务实体中获取的数据的示意图。

如图5所示的区块链系统包括参考图4详述的区块链系统中的全部或部分组件。图5中的区块链系统也可以被分为两层,上层和下层。可选地,如图5所示的区块链系统也用于执行方法30。

可选地,图5中的上层包括验证实体和上层链共识网络,其中,上层链共识网络中的每个节点均为搭载上层链的节点。搭载上层链的节点可能已经部署有用于见证下层链的智能合约。该验证实体和搭载上层链的节点与图4中详细描述的验证实体和搭载上层链的节点相同或相似。

可选地,图5中的下层则包括用户终端、下层链共识网络、业务处理装置、可信执行环境中的网关(TEE Proxy)、可信执行环境中的虚拟机(TEE虚拟机)。其中,下层链共识网络中的每个节点均为搭载下层链的节点。搭载下层链的节点可能已经部署有与业务相关的智能合约。可选地,业务处理装置和可信执行环境中的网关可以共同组成图4中的业务实体。该用户终端、可信执行环境中的虚拟机和搭载下层链的节点与图4中详细描述的用户终端、可信执行环境中的虚拟机和搭载下层链的节点相同或相似。

首先结合图5和图6进一步介绍本公开的各项实施例涉及的用户终端和业务实体。

如上所述,业务实体可选地包括业务处理装置和可信执行环境中的网关。可选地,业务处理装置可以被配置为处理至少一个交易对应的交易数据,例如,任意与业务有关的交易数据。而可信执行环境中的网关则可以被配置为接收、发送和转发经所述业务处理装置处理后的至少一个交易对应的交易数据等等。例如,业务处理装置可以与使用该业务的用户终端进行交互。例如,业务处理装置可以处理来自使用该业务的用户终端的交易请求,并向该用户终端反馈响应。业务处理装置还可以与下层链共识节点进行交互,以使得下层链上的相应节点能够以智能合约的形式执行业务相关交易。业务处理装置还可以与可信执行环境中的网关进行交互,以使得可信执行环境中的网关能够获取业务相关的交易数据和存储业务相关的交易数据,并能够接收、发送和转发这些业务相关的交易数据。例如,可信执行环境中的网关可以与所述业务处理装置以及可信执行环境中的虚拟机交互,以将所述至少一个交易对应的交易数据发送至所述可信执行环境中的虚拟机。当然,本公开并不以此为限。

作为一个业务处理装置与使用该业务的用户终端进行交互的示例,如图5所示,在操作S301之前,方法30还可能包括操作S501和操作S502。在操作S501中,用户终端向业务实体发送交易请求,该交易请求包括与业务相关的交易的信息。当然,本公开并不以此为限。

作为一个业务处理装置与下层链共识节点进行交互的示例,如图5所示,在操作S501之后,业务处理装置还可以执行操作S502。在操作S502中,业务实体将该交易请求对应的该与业务相关的交易的信息封装成一笔交易,并将该交易上传至下层链,以使得下层链上的智能合约能够执行该笔交易。接着,下层链共识网络中部署有与该业务相关的智能合约的节点将针对该交易执行智能合约,并反馈该交易的交易数据。或者,在一些情况下,部署有与该业务相关的智能合约的节点还可以将该交易与其它交易打包成一笔批量交易,并反馈该批量交易的交易数据。在一些示例中,部署有与该业务相关的智能合约的节点在执行交易后,会计算“写集合”并将“写集合”回填入交易的结构体内。“写集合”不参与交易哈希的计算,一笔交易的“写集合”记录了该交易所有落盘操作。通过写集合,业务节点或共识节点可以在不执行交易的前提下,快速更新链上状态。这里所述的“落盘操作”也即写入下层链的共识节点中搭载区块中的操作,其指示下层链中的各个共识节点均对该操作达成了共识。当然本公开并不以此为限。

然后,业务实体可以执行操作S301中的子操作S3011至子操作S3013。在子操作S3011中,业务实体(也即业务处理装置)可以从搭载下层链的节点接收至少一个交易对应的交易信息。可选地,搭载下层链的节点可以将多个交易对应的交易信息批量打包,以使得业务实体能够接收批量交易对应的交易信息。可选地,在操作S3012之后,业务实体还将向用户终端返回该封装后的交易的交易结构以及交易哈希。当然,本公开并不以此为限。

如图6所示,业务处理装置可以在本地维护一个状态树。状态树是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的业务标签集合。状态树是由n(n>0)个有限节点组成一个具有层次关系的集合。参考图6,状态树看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。状态树具有以下的特点:①每个节点都只有有限个子节点或无子节点;②没有父节点的节点称为根节点;③每一个非根节点有且只有一个父节点;④除了根节点外,每个子节点可以分为多个不相交的子树;⑤状态树里没有环路(cycle)。当然也可以在可信执行环境中的网关中维护该状态树,本公开并不以此为限。

可选地,如图6所示,该状态树可以是一颗默克尔(merkle)树,其用于记录下层链中存储的区块的状态。默克尔树又称为哈希树,其中每个叶子节点都存储有数据块的加密哈希值,而每个非叶子节点(又称为分支或内部节点)都存储有其孩子节点中存储的数据的加密哈希值。默克尔树允许对大型数据结构的内容进行有效和安全的验证。默克尔树是哈希列表和哈希链的一个概括。如果要证明一个叶子节点是一个给定的二进制默克尔树的一部分,仅需要计算与默克尔树中叶子节点数量的对数成正比的哈希数,其所需的计算量远远小于哈希列表。在本公开的一些示例中,默克尔树的根(又称为默克尔(merkle)根)包括该默克尔树中的各个叶子节点的摘要。因此,该默克尔树的根可以被看作是一个承诺,其叶子节点可以被公开并被证明是原始承诺的一部分。当然,本公开并不以此为限。

作为一个示例,在业务处理装置接收到该批量交易对应的交易信息之前,该默克尔树中的各个节点的值如其左图所示。假设部署有与该业务相关的智能合约的节点执行了一笔交易将变量b的值设置为5并将变量d的值存储为4。例如,该笔交易的伪代码可以是“set b=5;save d=4”。接着,该下层链共识网络中部署有与该业务相关的智能合约的节点可以将该笔交易与其它交易一起打包以生成交易数据,并将该交易数据上传至业务处理装置。在业务处理装置接收到该批量交易对应的交易数据之后,该默克尔树中的各个节点的值如其右图所示。在该右图中,以黑底白字的方块示出了该默克尔树中的叶子节点和非叶子节点的变动情况。

作为一个业务处理装置与可信执行环境中的网关交互的示例,如图5所示,在完成子操作S3011后(也即完成其默克尔树的更新之后),业务实体(也即业务处理装置)可以执行子操作S3012以与可信执行环境中的网关进行交互。可选地,在一些示例中,业务处理装置可以在收集n笔交易(n为大于零的整数且可以由业务处理装置预定义)后,将至少一个交易对应的交易数据发送至可信执行环境中的网关。

此时,所述至少一个交易对应的交易数据包括所述至少一个交易发生前的默克尔树、所述至少一个交易发生后的默克尔树以及所述至少一个交易的交易信息。具体地,这三者可以为n笔交易发生前的默克尔树(例如图6中的左图)、n笔交易发生后的默克尔树(例如图6中的右图)、n笔交易的交易信息。其中,交易信息包括使得智能合约能够执行该笔交易的所有信息。可选地,在另一些示例中,业务处理装置可以直接将该批量交易对应的交易数据发送至可信执行环境中的网关。此时,所述至少一个交易对应的交易数据包括该批量交易发生前的默克尔树、该批量交易发生后的默克尔树、该批量交易中的每个交易的交易信息。可选地,在另一些示例中,业务处理装置还可以直接将操作S501和S502中的交易对应的交易数据发送至可信执行环境中的网关。此时,所述至少一个交易对应的交易数据包括用户终端发出的交易请求对应的交易发生前的默克尔树、该用户终端对应的交易发生后的默克尔树、该用户终端发出的交易请求对应的交易信息。本公开对此不进行限制。

作为一个可信执行环境中的网关与可信执行环境中的虚拟机交互的示例,在操作S3013中,业务实体(也即可信执行环境中的网关)可以将所述至少一个交易对应的交易数据转发至所述可信执行环境中的虚拟机。例如,所述至少一个交易对应的交易数据可选地包括n笔交易发生前的默克尔树(例如图6中的左图)、n笔交易发生后的默克尔树(例如图6中的右图)、n笔交易的交易信息。例如,所述至少一个交易对应的交易数据可选地包括该批量交易对应的交易数据。本公开对此不进行限制。

如图5所示,可信执行环境中的网关可选地包括侦听装置和本地存储装置。其中,侦听装置用于侦听是否有新的交易数据需要转发至可信执行环境中的虚拟机。而本地存储装置则用于存储中间产生的相关数据。值得注意的是,该侦听装置和本地存储装置均可以位于可信执行环境中,其内部加载的程序和数据在机密性与完整性上均能得到可信执行环境的保护。

接着结合图5和图7进一步描述各项实施例涉及的可信执行环境中的虚拟机。可选地,可信执行环境中的虚拟机(也即TEE虚拟机)可以由第三方或业务方开发,负责验证交易、执行交易并更新交易相关状态。该虚拟机运行在可信执行环境下,其内存被硬件的保护、存储的数据被硬件密钥保护。外部的应用程序无法读到可信执行环境中的虚拟机运行时的内存和存储的数据。如上所述,所述可信执行环境中的虚拟机可以部署于保护区(Enclave)程序内,以使得虚拟机受到可信执行环境的硬件的保护。保护区程序创建了一个保护区,在该保护区内可以存储数据,存储的数据由可信执行环境硬件密钥的私钥加密。因此,部署于该保护区内的虚拟机将不会遭受系统或者物理层面的攻击。

可选地,可信执行环境中的虚拟机在部署阶段,将与可信远程实体进行远程证明,以确保该虚拟机中的所有运算均是在可信执行环境内执行的。通过远程证明流程,虚拟机中的保护区程序可以向可信远程实体明它是可信的,并与该可信远程实体建立经过身份验证的通信通道。作为远程证明的一部分,虚拟机中的保护区程序可以向可信远程实体证明以下信息中的一项或多项:虚拟机的身份、虚拟机未被篡改、虚拟机在可信执行环境中运行、虚拟机中处理的数据均使用可信执行环境的硬件密钥进行加密等等。

更进一步地,在所述可信执行环境中的虚拟机通过远程证明之后,可信执行环境中的虚拟机将接收到来自可信远程实体的认证响应,该认证响应又叫做保护区认证响应(enclave quote)。该认证响应中包括保护区的许多关键信息。举例来说,这些关键信息包括:保护区程序的度量值、保护区程序发布者信息、挑战值等。其中,保护区程序的度量值是指每个保护区程序独一无二的值,其可以通过程序的二进制文件与程序的初始化数据计算得出。对程序的任何更改都会导致度量值发生变化。认证响应是一种特定数据结构的信息,挑战值是该数据结构中的一个字段。挑战值由挑战者指定,被挑战者需要生成包含挑战值的应答。认证响应quote可以被标识为挑战值的函数,例如Quote(msg)可以用来表示挑战值为msg的quote。具体来说,在可信执行环境中的虚拟机发起远程证明时,作为挑战者的可信执行环境中的虚拟机将挑战值放入远程证明请求中,作为被挑战者的可信远程实体将生成包含该挑战值的应答作为认证响应。

在可信执行环境中的虚拟机的部署过程中,该保护区程序的度量值将被上传到上层链共识网络和下层链共识网络中,以向图5所示的区块链系统证明其的真实性、合法性和有效性。具体地,如果两组数据具有相同度量值,那么说明二者必然采用了相同的执行逻辑。因此,根据该保护区程序的度量值,上层链的共识网络将确认可信执行环境中的虚拟机未被窜改,并且必然能够按照诚实的逻辑执行并验证交易。

经部署后的虚拟机将能够与可信执行环境中的网关进行交互。具体地,如图5和图7所示,在运行阶段,该可信执行环境中的虚拟机可能在上述描述的操作S3013中接收到所述至少一个交易对应的交易数据,然后在操作S302中对所述至少一个交易对应的交易数据进行处理以获取所述至少一个交易对应的处理数据,并在操作S302的子操作S3021中将所述至少一个交易对应的处理数据发送至可信执行环境中的网关,以使得该可信执行环境中的网关能在操作S302的子操作S3022中将所述至少一个交易对应的处理数据发送至搭载上层链的节点。当然,在另一些实施例中,该可信执行环境中的虚拟机还可以直接将所述至少一个交易对应的处理数据发送至搭载上层链的节点。本公开并不以此为限。

如图5所示,经部署后的虚拟机可选地具有三个主要的功能:签名验证、交易执行、以及(交易)状态更新。其中,签名验证功能是指经部署后的虚拟机能够对交易的签名进行验证。具体来说,每笔交易或每批交易的数据结构体中都可能包括该笔交易或该批交易对应的签名,其用于证明该每笔交易或每批交易的所有权、有效性和完整性。经部署后的虚拟机通过对签名的验证,可以证明该笔交易或该批交易的交易双方均为正确的交易并且交易数据并未被篡改过。交易执行功能是指经部署后的虚拟机能够直接执行交易。该交易执行功能类似于下层链上的智能合约执行交易的方式。如果下层链上的智能合约对于交易的运行结果是正确的,那么经部署后的虚拟机执行交易将得到与智能合约相同的交易执行结果。(交易)状态更新功能是指将当前虚拟机中的各个交易的状态根据上述交易的执行结果进行更新。如果把区块链系统作为一个状态机,则每次交易意味着一次状态改变;生成的区块,就是参与者对其中交易导致状态改变结果的共识。在下层链的交易结果得到验证之后,虚拟机可以通过交易状态的更新使得虚拟机中记录的下层链的状态与下层链的实际状态一致。

接着参考图7,其示出了可信执行环境中的虚拟机实现上述三个功能的具体示例。图7示出了操作S302中所述可信执行环境中的虚拟机对所述至少一个交易对应的交易数据进行处理以获取所述至少一个交易对应的处理数据的一个具体示例,在该示例中,所述可信执行环境中的虚拟机基于所述至少一个交易的交易信息,生成默克尔树,并基于所述默克尔数据生成第一认证响应,其中,所述至少一个交易中的每个交易的哈希值为该默克尔树的叶子节点;然后,基于所述至少一个交易的交易信息对所述至少一个交易发生前的默克尔树进行更新,以确定更新后的默克尔树的根是否等于所述至少一个交易发生后的默克尔树的根;接着,响应于更新后的默克尔树的根等于所述至少一个交易发生后的默克尔树的根,生成第二认证响应或第三认证响应,所述第二认证响应包括所述至少一个交易发生前的默克尔树的根以及所述保护区程序的度量值,所述第三认证响应包括所述至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;之后,基于所述第一认证响应、第二认证响应和第三认证响应中的一项或多项,生成所述至少一个交易对应的处理数据。

假设可信执行环境中的虚拟机在操作S3013中接收到了n笔交易对应的交易数据,且这n笔交易的交易数据包括这n笔交易的交易信息、n笔交易发生前的默克尔树和n笔交易发生后的默克尔树。

可信执行环境中的虚拟机首先用n笔交易对应的哈希值构造一颗默克尔树。其中,每个交易的哈希值为该默克尔树的叶子节点,非叶子节点则存储其孩子节点中存储的值对应的哈希值。每笔交易的哈希值是该笔交易的概括,其可以用于验证该笔交易。因此,该默克尔树的根可以包括这n笔交易的摘要。可信执行环境中的虚拟机可以利用该默克尔树生成第一认证响应,该第一认证响应包括上述由n笔交易对应的哈希值构造的默克尔树。

之后,可信执行环境中的虚拟机将对这n笔交易的签名进行一一验证,以确认这n笔交易的信息均是正确的、合法的、可用的。在验证通过之后,可信执行环境中的虚拟机可以利用n笔交易发生前的默克尔树的根生成第二认证响应。该第二认证响应可以被表示为Quote(merkle_tx_tree_root),也即第二认证响应可以被表述为以n笔交易发生前的默克尔树的根为挑战值的认证响应。具体地,第二认证响应可以包括该保护区程序的度量值、n笔交易发生前的默克尔树的根中的一项或多项。此外,可选地,第二认证响应还可以包括远程验证所需的信息。远程验证所需的信息包括可信执行环境的硬件密钥对度量值和n笔交易发生前的默克尔树的根的签名等等,本公开并不以此为限。

随后可信执行环境中的虚拟机将顺序地执行这n笔交易,并且随着交易的执行,对n笔交易发生前的默克尔树进行逐步更新,直至这n笔交易执行完成。可信执行环境中的虚拟机将进一步验证更新完成后的默克尔树的根是否与接收到的n笔交易发生后的默克尔树的根一致。如果经过验证,二者一致的话,则可信执行环境中的虚拟机将生成第三认证响应。该第三认证响应可以被表示为quote(merkle_root_after_tx),也即第三认证响应可以被表述为以n笔交易发生后的默克尔树的根为挑战值的认证响应。具体地,第三认证响应可以包括该保护区程序的度量值和/或n笔交易发生后的默克尔树的根中的一项或多项。此外,可选地,第三认证响应还可以包括远程验证所需的信息。远程验证所需的信息包括可信执行环境的硬件密钥对度量值和n笔交易发生后的默克尔树的根的签名等等,本公开并不以此为限。

值得注意的是,上述的第一认证响应、第二认证响应、第三认证响应的中的一项或多项的组合均可以作为操作S302中涉及的所述至少一个交易对应的处理数据的示例。当然,本领域技术人员应当理解本公开并不以此为限。

可选地,在上述的三个过程中的全部或部分过程完成之后,在子操作S3021中,可信执行环境中的虚拟机将向可信执行环境中的网关发送所述至少一个交易对应的处理数据,以经由所述可信执行环境中的网关向搭载上层链的节点发送所述至少一个交易对应的处理数据。

可选地,在子操作S3022中,如果所述可信执行环境中的网关接收到第一认证响应,所述可信执行环境中的网关可以将第一认证响应中的由n笔交易对应的哈希值构造的默克尔树存储在本地存储装置中。如果所述可信执行环境中的网关还接收到第二认证响应和/或第三认证响应,所述可信执行环境中的网关可以根据业务需求,将由n笔交易对应的哈希值构造的默克尔树、第二认证响应、第三认证响应中的一项或多项打包成一笔交易上传到上层链。在一些示例中,这笔交易也可以作为所述至少一个交易对应的处理数据的示例。其中,由n笔交易对应的哈希值构造的默克尔树用于后续用户终端的验证,而第二认证响应和第三认证响应则用于验证节点对于这n笔交易的验证。

接着结合图5和图8进一步描述各项实施例涉及的搭载上层链的节点和验证节点。

如图5所示,上层链上的智能合约可以从可信执行环境中的网关接收到一笔交易,该交易可能包括由n笔交易对应的哈希值构造的默克尔树、第二认证响应、第三认证响应中的一项或多项。接着,上层链中的智能合约可以执行从可信执行环境中的网关接收到的该笔交易。例如,上层链中的共识节点可以通过运行智能合约,以存储由n笔交易对应的哈希值构造的默克尔树、第二认证响应、第三认证响应中的一项或多项。又例如,上层链中的共识节点可以通过运行智能合约,以验证是否能够通过由n笔交易对应的哈希值构造的默克尔树以及第二认证响应中的n笔交易发生前的默克尔树的根计算得到第三认证响应中的n笔交易发生后的默克尔树的根。再例如,上层链中的共识节点可以通过运行智能合约,以请求接入上层链的验证实体对该笔交易进行验证。本公开并不以此为限。

如图5所示,接入上层链的验证实体可以从搭载上层链的节点中直接获取到上述交易以对该交易进行验证。参考图8,验证实体也可以采用从可信远程实体获取远程证明的形式来对该交易进行验证,这一过程又称为远程验证。例如,上述的操作S303还可以包括:由所述接入所述上层链的验证实体将所述第二认证响应或第三认证响应发送至可信远程实体进行验证,从所述可信远程实体接收针对所述第二认证响应或第三认证响应的应答,并基于所述应答确定针对所述至少一个交易发生前的默克尔树的根以及所述至少一个交易发生后的默克尔树的根的验证结果。

具体地,接入所述上层链的验证实体可以直接将第二认证响应Quote(merkle_tx_tree_root)和/或第三认证响应Quote(merkle_root_after_tx)发往可信远程实体进行验证。可信远程实体在接收到第二认证响应和/或第三认证响应之后,可以对第二认证响应和/或第三认证响应进行解析,以获取远程验证所需的信息以及挑战值。可信远程实体在验证了远程验证所需的信息之后,将对挑战值(也即n笔交易发生前的默克尔树的根和/或n笔交易发生后的默克尔树的根)进行应答(例如返回n笔交易发生前的默克尔树的根和/或n笔交易发生后的默克尔树的根),以指示针对n笔交易发生前的默克尔树的根和/或n笔交易发生后的默克尔树的根的验证是否通过。

更进一步地,验证实体可以验证第二认证响应Quote(merkle_tx_tree_root)和第三认证响应Quote(merkle_root_after_tx)中的度量值是否与可信执行环境中的虚拟机在部署阶段上传到上层链中的度量值一致。如果一致,则针对度量值的验证通过。当然本公开并不以此为限。

可选地,验证实体还可以再次验证可信远程实体反馈的n笔交易发生前的默克尔树的根和/或n笔交易发生后的默克尔树的根是否与第二认证响应和第三认证响应中的n笔交易发生前的默克尔树的根和/或n笔交易发生后的默克尔树的根一致。从而验证实体能够进一步确认二者的真实性和可用性。

可选地,验证实体还可以验证第二认证响应中的n笔交易发生前的默克尔树的根是否与可信执行环境中的网关上传的上一批n笔交易“n笔交易发送后的默克尔树根”一致。当然本公开并不以此为限。

可选地,在上层,还可以有多个验证实体执行上述流程。本公开对此不进行限制。

接着结合图5和图9进一步描述各项实施例涉及的位于下层的用户通过上层链验证、使用数据的流程。

如上所述,如图4和图5所示,在“二层链”架构中,用户终端位于下层中。然而,用户往往仅信任上层链,因此用户往往希望上层链对其通过业务实体进行的交易进行验证和背书。

以下详细描述操作S304的一个示例。在该示例中,所述由用户终端从所述业务实体获取所述至少一个交易中的交易相关的数据包括:由用户终端从所述业务实体获取所述至少一个交易中的交易相关的第一数据,所述第一数据包括所述至少一个交易中的交易在业务实体处的默克尔树中的路径。所述向所述验证实体发送验证请求以验证所述至少一个交易中的交易包括:所述用户终端从用户终端本地获取所述至少一个交易中的交易相关的第二数据,所述第二数据包括所述至少一个交易中的交易;基于所述第一数据和所述第二数据,生成所述验证请求;以及向所述验证实体发送验证请求以验证所述至少一个交易中的交易。当然,本公开并不以此为限。

作为一个示例,假设用户在某个电商平台(也即业务实体)发起了一笔转账交易,以用1元购买某个产品a。该转账交易可以被表示为a=1。假设业务实体、可信执行环境中的虚拟机、搭载上层链的节点以及验证实体通过操作S301至操作S303将该笔转账交易作为业务平台的第3笔交易进行了处理、存储和验证。此时,业务处理装置中存储的默克尔树如图9的左图所示。然后,业务实体、可信执行环境中的虚拟机、搭载上层链的节点以及验证实体继续处理第4笔交易和第5笔交易。并在第4交易中将变量b的值设置为5,在第5笔交易中将变量d的值存储为4。

此时,用户可能希望能够通过上层的验证实体来验证第3笔转账交易是否是有效的和/或合法的。此时,用户将控制用户终端向业务处理装置获取与第3笔交易相关的数据。与第3笔交易相关的数据可以是值a=1在业务处理装置的当前的状态树中的路径。该路径又叫做值a=1的默克尔路径。值a=1的默克尔路径在图9的右图中以黑底白字的方块示出,其包括两个哈希值H1和H2。根据值a=1、哈希值H1和H2,可以求解出第5笔交易之后的默克尔树的根。

然后,用户将控制用户终端将值a=1和值a=1的默克尔路径(也即哈希值H1和H2)封装至验证请求,并将该验证请求发往上层中的验证节点进行验证。此时验证节点将基于值a=1和值a=1的默克尔路径计算出的默克尔根的值。该计算过程可以被简述如下,首先通过对值a=1进行哈希运算就可以求解出存储值a=1的叶子节点的父节点中存储的哈希值。根据该存储值a=1的叶子节点的父节点中存储的哈希值和哈希值H1就可以根据哈希运算求解得到默克尔根的左孩子节点中存储的哈希值。默克尔根的左孩子节点中存储的哈希值与哈希值H2求解得到默克尔根的值。以上过程仅为示例,本公开并不以此为限。验证节点将验证求解得到的默克尔根的值与其本地存储的默克尔树的根是否相同。如果二者相同,验证节点即可将值a=1上传到上层链中的智能合约中,以记录该值已经被验证并且该值的正确性可以由该验证节点背书。上层链的智能合约即可向用户终端给出证明,该证明指示该笔交易的正确性已经被验证,并且得到了验证节点的背书。

为了增加下层链数据在上层链的可信度,用户终端还可以找多个验证节点对该值做背书。当然本公开并不以此为限。

由此,本公开的各个方面设计了一种基于可信执行环境与Rollup技术的二层链方案,任何区块链均可以通过这种方式,以下层链的形式接入上层链。上层链可以见证下层链的全部或部分数据,被见证的下层链数据将具备与上层链等同的不可篡改性与安全性。此外,本公开的各个方面还允许下层链主动选择需要被上层链见证的数据。

本公开的各个方面至少具有以下优势:①本公开的区块链系统可以在下层链验证打包的交易而无需在上层链上验证打包的交易,从而使得交易验证时间显著减小;②本公开的区块链系统不限制下层链使用的智能合约虚拟机,兼容性显著增加;③本公开的区块链系统可以处理复杂的交易,而不需要在电路层面上进行改进,从而提高了区块链系统的适用性。

以上已经进一步详述各个组件的实施方式,据此,根据本公开实施例该提供了以下各个方面,

根据本公开实施例的一个方面,提供了一种业务实体,所述业务实体包括一个或多个处理器,所述一个或多个处理器被配置为:由业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,基于所述至少一个交易对应的交易信息,确定所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根,其中,所述默克尔树用于记录下层链中存储的区块的状态;基于至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树的根、所述至少一个交易发生后的默克尔树的根,生成所述至少一个交易对应的交易数据;以及将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机,以对所述至少一个交易进行验证。

根据本公开实施例的一个方面,还提供了一种处理数据方法,包括:由业务实体从搭载下层链的节点接收至少一个交易对应的交易信息,基于所述至少一个交易对应的交易信息,确定所述至少一个交易发生前的默克尔树和所述至少一个交易发生后的默克尔树,其中,所述默克尔树用于记录下层链中存储的区块的状态;基于至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树的根、所述至少一个交易发生后的默克尔树的根,生成所述至少一个交易对应的交易数据;以及将所述至少一个交易对应的交易数据发送至可信执行环境中的虚拟机,以对所述至少一个交易进行验证。

根据本公开实施例的一个方面,提供了一种可信执行环境中的虚拟机,所述可信执行环境中的虚拟机被部署于保护区程序内,所述虚拟机被配置为:从业务实体接收所述至少一个交易对应的交易数据,所述至少一个交易对应的交易数据包括至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树、所述至少一个交易发生后的默克尔树;基于所述至少一个交易的交易信息,生成默克尔树,并基于所述默克尔数据生成第一认证响应,其中,所述至少一个交易中的每个交易的哈希值为所述默克尔树的叶子节点;基于所述至少一个交易的交易信息对所述至少一个交易发生前的默克尔树进行更新,以确定更新后的默克尔树的根是否等于所述至少一个交易发生后的默克尔树的根;响应于更新后的默克尔树的根等于所述至少一个交易发生后的默克尔树的根,生成第二认证响应或第三认证响应,所述第二认证响应包括所述至少一个交易发生前的默克尔树的根以及所述保护区程序的度量值,所述第三认证响应包括所述至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;基于所述第一认证响应、第二认证响应和第三认证响应中的一项或多项,生成所述至少一个交易对应的处理数据。

根据本公开实施例的一个方面,还提供了一种处理数据方法,包括:从业务实体接收所述至少一个交易对应的交易数据,所述至少一个交易对应的交易数据包括至少一个交易对应的交易信息、所述至少一个交易发生前的默克尔树、所述至少一个交易发生后的默克尔树;基于所述至少一个交易的交易信息,生成默克尔树,并基于所述默克尔数据生成第一认证响应,其中,所述至少一个交易中的每个交易的哈希值为所述默克尔树的叶子节点;基于所述至少一个交易的交易信息对所述至少一个交易发生前的默克尔树进行更新,以确定更新后的默克尔树的根是否等于所述至少一个交易发生后的默克尔树的根;响应于更新后的默克尔树的根等于所述至少一个交易发生后的默克尔树的根,生成第二认证响应或第三认证响应,所述第二认证响应包括所述至少一个交易发生前的默克尔树的根以及所述保护区程序的度量值,所述第三认证响应包括所述至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;基于所述第一认证响应、第二认证响应和第三认证响应中的一项或多项,生成所述至少一个交易对应的处理数据。

根据本公开实施例的一个方面,提供了一种用户终端,所述用户终端包括一个或多个处理器,所述一个或多个处理器被配置为:由用户终端从业务实体获取至少一个交易中的交易相关的第一数据,所述第一数据包括所述至少一个交易中的交易在业务实体处的默克尔树中的路径;所述用户终端从用户终端本地获取所述至少一个交易中的交易相关的第二数据,所述第二数据包括所述至少一个交易中的交易;基于所述第一数据和所述第二数据,生成验证请求;以及向接入上层链的验证实体发送验证请求以验证所述至少一个交易中的交易。

根据本公开实施例的一个方面,还提供了一种处理数据方法,包括:由用户终端从业务实体获取至少一个交易中的交易相关的第一数据,所述第一数据包括所述至少一个交易中的交易在业务实体处的默克尔树中的路径;所述用户终端从用户终端本地获取所述至少一个交易中的交易相关的第二数据,所述第二数据包括所述至少一个交易中的交易;基于所述第一数据和所述第二数据,生成验证请求;以及向接入上层链的验证实体发送验证请求以验证所述至少一个交易中的交易。

根据本公开实施例的一个方面,提供了一种接入上层链的验证实体,所述验证实体包括一个或多个处理器,所述一个或多个处理器被配置为:从搭载上层链的节点获取第二认证响应或第三认证响应,所述第二认证响应包括至少一个交易发生前的默克尔树的根以及保护区程序的度量值,所述第三认证响应包括至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;将所述第二认证响应或第三认证响应中的所述保护区程序的度量值与存储于所述验证实体的保护区程序的度量值进行比较,以确定针对所述保护区程序的度量值的验证结果;将所述第二认证响应或第三认证响应发送至可信远程实体进行验证,并从所述可信远程实体接收针对所述第二认证响应或第三认证响应的应答,并基于所述应答确定针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,以及基于所述针对所述保护区程序的度量值的验证结果以及所述针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,确定所述至少一个交易的真实性。

根据本公开实施例的一个方面,还提供了一种处理数据方法,包括:从搭载上层链的节点获取第二认证响应或第三认证响应,所述第二认证响应包括至少一个交易发生前的默克尔树的根以及保护区程序的度量值,所述第三认证响应包括至少一个交易发生后的默克尔树的根以及所述保护区程序的度量值;将所述第二认证响应或第三认证响应中的所述保护区程序的度量值与存储于所述验证实体的保护区程序的度量值进行比较,以确定针对所述保护区程序的度量值的验证结果;将所述第二认证响应或第三认证响应发送至可信远程实体进行验证,并从所述可信远程实体接收针对所述第二认证响应或第三认证响应的应答,并基于所述应答确定针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,以及基于所述针对所述保护区程序的度量值的验证结果以及所述针对所述至少一个交易发生前的默克尔树的根和所述至少一个交易发生后的默克尔树的根的验证结果,确定所述至少一个交易的真实性。

根据本公开的又一方面,还提供了一种处理数据的装置,用于实施根据本公开实施例的方法。图10示出了根据本公开实施例的电子设备2000的示意图。

如图10所示,所述电子设备2000可以包括一个或多个处理器2010,和一个或多个存储器2020。其中,所述存储器2020中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器2010运行时,可以执行如上所述的方法。

本公开实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、操作及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或ARM架构的。

一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。

例如,根据本公开实施例的方法或装置也可以借助于图11所示的计算设备3000的架构来实现。如图11所示,计算设备3000可以包括总线3010、一个或多个CPU 3020、只读存储器(ROM)3030、随机存取存储器(RAM)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如ROM 3030或硬盘3070可以存储本公开提供的方法的处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。计算设备3000还可以包括用户界面3080。当然,图11所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图11示出的计算设备中的一个或多个组件。

根据本公开的又一方面,还提供了一种计算机可读存储介质。图12示出了根据本公开的存储介质4000的示意图。

如图12示,所述计算机存储介质4020上存储有计算机可读指令4010。当所述计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的根据本公开实施例的方法。本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DR RAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

本公开实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的方法。

需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。

在上面详细描述的本公开的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本公开的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本公开的范围内。

相关技术
  • 一种数据处理方法、装置和用于数据处理的装置
  • 一种数据处理方法、装置和用于数据处理的装置
  • 一种数据处理方法、装置和用于数据处理的装置
  • 一种数据处理方法、装置和用于数据处理的装置
  • 话音数据处理方法以及支持该话音数据处理方法的电子装置
  • 数据处理设备、数据处理方法、程序转换处理设备和程序转换处理方法、程序转换处理设备、数据处理设备、程序转换处理方法和数据处理方法、数据处理设备、数据处理方法、程序分析处理设备和程序分析处理方法、数据处理设备、历史保存设备、数据处理方法和程序、以及编译处理设备
  • 数据处理装置、数据处理方法、数据处理程序、数据提取装置、数据提取方法和数据提取程序
技术分类

06120116458937