在区块链网络中的数据隔离
背景技术
分布式账本***(DLS),也可称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例(例如,加密数字货币)的情况下,DLS通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放使用DLS,并开放参与共识过程。私有区块链网络针对特定实体提供,该实体集中控制读写权限。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识过程,并包括访问控制层。
区块链网络可以包括不同类型的节点。完全参与节点(以下称为“区块链节点”)通过尝试构建和验证新交易区块以添加到区块链来参与区块链网络的共识过程。轻量级节点不参与区块链网络的共识过程,并且可能无法完全同步它们自己内部的区块链表示形式。例如,轻量级节点可能只同步区块头信息,而不是同步区块链中的特定区块的所有交易数据。
在私有或联盟区块链网络中,节点(例如轻量级节点)可能仅具有从区块链中读取特定交易的权限,例如,与轻量级节点相关联的标识参与到其中的交易。在这种情况下,轻量级节点可以向区块链节点查询特定区块,并且可以被返回该区块的已移除其无法访问交易的表示形式(例如,默克尔(Merkle)树)。以这种方式构造的Merkle树可能与表示区块中的交易的完整Merkle树不一致,这可能导致轻量级节点处由于节点不具有准确的区块表示形式而产生错误。
发明内容
本文的实施方式包括用于在区块链网络中施行数据隔离,并同时仍然为该区块链网络中的所有节点提供在该区块链中的区块的一致表示形式的计算机实施方法。更具体地,本文的实施方式涉及产生Merkle树,该Merkle树不包括与请求节点隔离的数据,但是该Merkle树仍然与表示被请求区块的完整Merkle树一致。
在一些实施方式中,操作包括:由该区块链网络中的区块链节点接收读取该区块链的特定区块的请求,其中该请求从该区块链网络的轻量级节点处被接收并且包括有轻量级节点的标识,并且该特定区块包括包含与该特定区块相关联的多个交易的原始Merkle树;由该区块链节点识别与该轻量级节点的标识相关联的权限;由该区块链节点基于包括在该区块中的该原始Merkle树生成隔离Merkle树,该隔离Merkle树仅包括该原始Merkle树中基于所识别的权限被确定为可由该轻量级节点访问的交易,其中该隔离Merkle树与该原始Merkle树一致;并且由该区块链节点向轻量级节点发送包括隔离Merkle树的响应。其他实施方式包括相关的***、装置和计算机程序,其被配置为执行编码在计算机存储设备上的方法的操作。
这些和其他实施方式可各自可选地包含以下一个或多个特征。
在一些实施方式中,基于包括在该特定区块中的该原始Merkle树生成该隔离Merkle树包括修改该原始Merkle树以产生该隔离Merkle树,包括:从该原始Merkle树中移除被确定为不可由该轻量级节点访问的所有交易;以及移除所述原始Merkle树中的所有交易已经被移除的分支,并只完整保留每个分支的根哈希值。
在一些实施方式中,如果该权限表明该轻量级节点不具有对交易的读取访问权,则确该轻量级节点不可访问该交易。
在一些情况下,该多个交易中的每个交易均包括与该交易中的一个或多个参与者相关联的一个或多个标识。
在一些实施方式中,该标识与标识类相关联,该权限与该标识类相关联,并且该区块链节点被配置为对与该标识类相关联的标识施行与该标识类相关联的权限。
在一些情况下,该标识类为监管者类,与该监管者类相关联的权限表明与该监管者类相关联的标识可访问该区块链网络中的所有交易。
在一些实施方式中,该标识类为公共类,与该公共类相关联的权限表明该标识只可访问该区块链网络中该标识作为参与者的交易。
在一些情况下,仅当基于该隔离Merkle树中的哈希值足以允许所述轻量级节点验证该隔离Merkle树中的交易时,该隔离Merkle树与该原始Merkle树一致。
本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
本文还提供了用于实施本文提供的所述方法的***。该***包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将导致所述一个或多个处理器按照本文提供的方法的实施例执行操作。
应了解,依据本文的方法可以包括本文描述的方面和特征的任意组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任意组合。
以下在附图和描述中阐述了本文的一个或多个实施例的细节。根据文和附图以及权利要求,本文的其他特征和优点将显而易见。
附图说明
图1描绘了可用于执行本文实施方式的示例环境。
图2描绘了根据本文实施方式的示例概念架构。
图3A描绘了根据本文实施方式的用于区块链中的区块的示例Merkle树。
图3B描绘了根据本文实施方式的带有包括隔离交易分支的图3A的示例Merkle树。
图3C描绘了根据本文实施方式的基于图3A中的Merkle树产生的示例隔离Merkle树。
图4描绘了可根据本文实施方式执行的示例过程。
各附图中的相同附图标记表示相同的元件。
具体实施方式
本文实施例包括一种计算机实施的方法,用于在区块链网络中施行数据隔离的,并同时仍然为区块链网络中的所有节点提供在区块链中的区块的一致表示形式。更具体地,本文的实施方式涉及产生Merkle树,该Merkle树不包括与请求节点隔离的数据,但是该Merkle树仍然与表示被请求区块的完整Merkle树一致。
在一些实施例中,操作包括:由区块链网络中的区块链节点接收读取区块链中的特定区块的请求,其中,该请求从区块链网络中的轻量级节点处接收并且包括有该轻量级节点的标识,并且该特定区块包括包含与该特定区块相关联的多个交易的原始Merkle树;由该区块链节点识别与该轻量级节点的标识相关联的权限;由该区块链节点基于包括在区块中的该原始Merkle树生成隔离Merkle树,该隔离Merkle树仅包括该原始Merkle树中基于所述识别的权限被确定为可由该轻量级节点访问的交易,其中,该隔离Merkle树与该原始Merkle树一致;并且由该区块链节点向该轻量级节点发送包括隔离Merkle树的响应。
为本文实施例提供进一步的背景,并且如上所述,分布式账本***(DLS),又可称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。虽然“区块链”一词通常与各种加密货币网络相关联,但是本文所使用的区块链一般指在不参考任何特定用例的情况下的DLS。如上所述,区块链网络可作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。
在公有区块链网络中,共识过程由共识网络的节点控制。例如,数百、数千甚至数百万个实体可以协同运作公有区块链网络,每个实体操作该公有区块链网络中的至少一个节点。因此,公有区块链网络可以被认为是关于参与实体的公有网络。在一些示例中,大多数实体(节点)必须对每个区块签名以使该区块有效,并被添加到区块链网络的区块链(分布式帐本)中。示例性公有区块链网络包括为点对点支付网络的各种加密货币网络。加密货币网络可利用分布式账本(即区块链)。如上所述,区块链一词通常用于指代分布式账本,而不特指任何特定的加密货币网络。
通常,公有区块链网络支持公开交易。公开交易为公有区块链网络内的所有节点共享,并存储在全局区块链中。全局区块链是跨所有节点复制的区块链。也就是说,所有节点相对于全局区块链处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络内实施共识协议。示例性共识协议包括但不限于在加密货币网络中实施的工作量证明(POW)。
通常,为特定实体提供私有区块链网络,该特定实体集中控制读写权限。实体控制哪些节点能够参与到区块链网络中。因此,私有区块链网络通常被称为权限网络,其限制允许谁参与网络,以及它们的参与级别(例如,仅在某些交易中)。可以使用各种类型的访问控制机制(例如,现有参与者投票添加新实体,监管机构可以控制权限)。
通常,联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识过程由授权的节点集控制,一个或多个节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是与参与实体相关的私有网络。在一些示例中,每个实体(节点)必须对每个区块签名,以使区块有效并被添加到区块链中。在一些示例中,至少实体(节点)的子集(例如,至少7个实体)必须对每个区块签名,以使区块有效并被添加到区块链中。
将参考私有区块链网络进一步详尽描述本文的实施方式,在私有区块链网络中,可以基于区块链网络的结构将特定数据与特定参与实体隔离。然而,可以预期,本文的实施方式可以在任何适当类型的区块链网络中实现。
鉴于以上背景,将进一步详尽描述本文的实施方式。更具体地,如上所述,本文的实施方式涉及生成一个Merkle树,该Merkle树不包含与请求节点隔离的数据,但仍然与表示被请求区块的完整Merkle树一致。
在一些实施方式中,轻量级节点可以从参与到网络中的区块链节点处请求特定区块。区块链节点可以确定轻量级节点没有读取区块中特定交易的权限。区块链节点可以从表示被请求区块的完整Merkle树的副本中移除这些交易,但是对于树中只包含已移除交易的任意分支仅保留根哈希值。这样做可以有效地将轻量级节点与未被授权读取的交易数据隔离,并且还可以允许向轻量级节点呈现与区块的完整Merkle树一致的区块表示形式。这可以允许轻量级节点(通过检查Merkle树中的哈希值)验证区块的完整性,即使没有访问与其隔离的交易数据的权限。
图1描绘了可用于执行本文实施例的环境100的示例。在一些示例中,示例性环境100使实体能够参与到私有区块链网络102中。示例性环境100包括计算设备106,108以及网络110。在一些示例中,网络110包括局域网(LAN)、广域网(WAN)、因特网或其组合,并且连接网络站点、用户设备(例如,计算设备)和后台***。在一些示例中,可以通过有线和/或无线通信链路来访问网络110。
在所描绘的示例中,计算***106、108可以各自包括能够作为节点参与至私有区块链网络102中的任何适当的计算***。示例性计算设备包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备以及智能电话。在一些示例中,计算***106、108承载一个或多个由计算机实施的服务,用于与私有区块链网络102进行交互。例如,计算***106可以承载第一实体(例如,用户A)的由计算机实施的、例如交易管理***的服务,第一实体使用该交易管理***管理其与一个或多个其他实体(例如,其他用户)的交易。计算***108可以承载第二实体(例如,用户B)的由计算机实施的、例如交易管理***的服务,例如,第二实体使用该交易管理***管理其与一个或多个其他实体(例如,其他用户)的交易。在图1的示例中,私有区块链网络102被表示为节点的点对点网络(Peer-to-Peer network),且计算***106、108分别提供参与私有区块链网络102的第一实体和第二实体的节点。
图2描绘了根据本文实施方式的示例性概念架构200。示例性概念架构200包括实体层202、承载服务层204以及区块链网络层206。在描绘的示例中,实体层202包括三个实体,实体_1(E1)、实体_2(E2)、实体_3(E3),每个实体拥有各自的交易管理***208。
在所描绘的示例中,承载服务层204包括用于每个交易管理***208的接口210。在一些示例中,各交易管理***208使用协议(例如,超文本传输安全协议(HTTPS))通过网络(例如,图1的网络110)与其对应的接口210通信。在一些示例中,每个接口210在相应的交易管理***208与区块链网络层206之间提供通信连接。更具体地,接口210与区块链网络层206中的区块链网络212通信。在一些示例中,接口210与区块链网络层206间的通信是利用远程过程调用(RPC)进行的。在一些示例中,接口210“承载”用于各自的交易管理***208的区块链网络节点。例如,接口210提供用于访问区块链网络212的应用编程接口(API)。
如本文所述,区块链网络212被提供作为包括多个节点214的点对点网络,所述多个节点214在区块链216中不可篡改地记录信息。尽管示意性地描绘了单个区块链216,但是在区块链网络212上提供并维护了区块链216的多个副本。例如,每个节点214存储区块链的副本。在一些实施方式中,区块链216存储与在参与私有区块链网络的两个或更多个实体之间进行的交易相关联的信息。
图3A描绘了根据本文实施方式的用于区块链中的区块310的示例Merkle树300。如图所示,Merkle树300包括区块头,该区块头包括该区块中的所有数据的哈希值,以及区块链中前一区块的哈希值和随机值。区块头还包括根哈希值,该根哈希值是Merkle树中位于其正下方的两个哈希值(325a、325b)的级联(concatenation)。
Merkle树300的叶节点包括交易305a-305d,交易305a-305d表示记录在区块链的该特定区块310中的交易。Merkle树300还包括哈希值315a-315d。这些哈希值315a-315d均是分别基于交易305a-305d的交易数据生成的哈希值。例如,可以通过提供交易305a中的数据作为用以产生哈希值315a的SHA 256哈希算法的输入来生成哈希值315a。在一些实施方式中,任何保证唯一性的哈希函数都可以用来生成哈希值315a-315d。
Merkle树300还包括哈希值325a(“哈希值01”)和哈希值325b(“哈希值23”)。哈希值325a-325b是通过级联Merkle树中在其正下方的两个哈希值生成的。例如哈希值325a(“哈希值01”)是通过级联哈希值315a(“哈希值0”)和哈希值315b(“哈希值1”)生成的。类似地,如上所述,区块头中的根哈希值是通过级联哈希值325a和哈希值325b来构造的。
在图3A中用灰色阴影显示的交易305a-305c表示请求区块310的实体(例如轻量级节点)不具有访问权限的交易。图3B描绘了示例Merkle树350,在Merkle树350中利用围绕分支的虚线框标识出Merkle树300中仅包括要与请求实体隔离的交易的分支335a、335b。
图3C描绘了根据本文实施方式的示例隔离Merkle树390,其基于图3A的Merkle树产生。如图所示,在隔离Merkle树390中,已将之前图3B中所标识的分支335a和335b移除。
在一些实施方式中,可以通过将软件算法应用于完整Merkle树(如图3A所示的树)来产生类似于示例390的隔离Merkle树。在一示例算法中,区块链节点从轻量级节点接收读取特定区块的请求。该区块链节点扫描被请求区块中的交易,并基于请求中包括的标识属性和与该标识相关联的权限来确定该轻量级节点是否具有读取每个交易的权限。
在示例算法中,区块链节点顺序地遍历扫描区块中的交易,所述交易根据定义存储在Merkle树的叶节点中。对于每个交易,如果该轻量级节点有读取该交易的权限,则该区块链节点移动至下一交易。如果该区块链节点发现轻量级节点没有读取权限的交易Tx_i,则该区块链节点继续扫描后续交易,直到再次发现该轻量级节点有读取权限的交易Tx_j为止。区块链节点随后将该轻量级节点没有读取权限的从Tx_i至Tx_(j-1)所有交易的组移除。此外,区块链节点从Merkle树中移除现在不包含交易的任意分支,并只保留该特定分支的根哈希值。如图3B和3C所示,分支移除过程应用于分支335a和335b。
继续对交易进行扫描和处理,直到处理了Merkle树中的最后一个交易为止,并获得包括该轻量级节点有读取权限的交易的Merkle树。将该隔离Merkle树返回给该轻量级节点。
图4描绘了可根据本文实施方式执行的示例过程400。在一些实施方式中,可以通过使用一个或多个计算设备执行的一个或多个计算机可执行程序来执行示例过程400。
在402,区块链节点从区块链网络的轻量级节点接收读取区块链的特定区块的请求。该请求包括轻量级节点和包含原始Merkle树的所述特定区块的标识,所述原始Merkle树包含与所述特定区块相关联的多个交易。在一些情况下,多个交易中的每个交易都包括与该交易中的一个或多个参与者相关联的一个或多个标识。方法400从402继续到404。
在404,区块链节点识别与轻量级节点的标识相关联的权限。在一些情况下,标识与标识类相关联,权限与标识类相关联,并且区块链节点被配置为对与标识类相关联的标识施行与标识类相关联的权限。在一些实施方式中,标识类为监管者类,与监管者类相关联的权限表明与监管者类相关联的标识可访问区块链网络中的所有交易。在一些情况下,标识类是公共类,并且与公共类相关联的权限表明标识只可访问区块链网络中该标识是参与者的交易。方法400从404继续到406.
在406,区块链节点基于包括在特定区块中的原始Merkle树生成隔离Merkle树。该隔离Merkle树仅包括原始Merkle树中基于所述识别的权限被确定为可由轻量级节点访问的交易。在一些实施方式中,如果权限表明轻量级节点不具有对交易的读取访问权,则确定该交易不可被该轻量级节点访问。隔离Merkle树与原始的Merkle树一致。在一些实施方式中,仅当轻量级节点基于隔离Merkle树中的哈希值足以验证隔离Merkle树中的交易时,隔离Merkle树才与原始Merkle树一致。在一些情况下,生成隔离Merkle树包括修改原始Merkle树以产生隔离Merkle树,这包括从原始Merkle树中移除被确定为不能被轻量级节点访问的所有交易,并且移除原始Merkle树的所有交易都已移除的分支、并完整保留每个分支的根哈希值。方法400从406继续到408。
在408,区块链节点向轻量级节点发送包括隔离Merkle树的响应。方法400从408停止。
本文中描述的主题、动作以及操作的实施可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施可以实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。载体可以是有形的非暂态计算机存储介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或部分是机器可读存储设备、机器可读存储基板、随机或串行访问存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多处理器或计算机。数据处理装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPU(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理***、操作***或者它们中的一个或多个的组合的代码。
计算机程序也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或演绎性语言、说明或程序性语言;它可以配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可包括由通信数据网络互联的在一个或多个位置的一台或多台计算机。
计算机程序可以但非必须对应于文件***中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件;或者多个协调文件,例如,存储一个或多个模块、子程序或代码部分的多个文件。
本文中描述的过程和逻辑流程可由一台或多台计算机执行一个或多个计算机程序进行,以进行通过对输入数据进行运算并生成输出的操作。过程和逻辑流程也可以由例如FPGA、ASIC、GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
适合于执行计算机程序的计算机可以基于通用和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可包括用于执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
通常,计算机可耦接至一个或多个非暂时性计算机可读存储介质(也可称为计算机可读存储器)。耦接至计算机的存储介质可为计算机内部组件(例如集成硬盘驱动器)或外部组件(例如通用串行总线(USB)硬盘驱动器或网络上访问的存储***)。存储介质可以是例如,磁盘、磁光盘、光盘、固态驱动器、例如云存储***的网络存储资源、或其他类型的存储介质。但是,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位***(GPS)接收器或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过向用户设备上的web浏览器发送web页面以响应从web浏览器收到的请求,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)发送文本消息或其他形式的消息并反过来接收来自用户的响应消息来与用户交互。
本文结合***、装置和计算机程序组件使用术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的***,意味着***已经在其上安装了在运行中促使该***执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
虽然本文包含许多具体实施细节,但是这些不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文多个单独实施例的上下文中描述的多个特定特征也可以在单个实施例中的组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且可以要求保护指向子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在一些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的划分不应被理解为所有实施例中都要求如此划分,而应当理解,所描述的程序组件和***通常可以一起集成在单个软件产品或者打包成多个软件产品。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。