CN112732801B - 查询Fabric区块链账本数据的方法和装置 - Google Patents

查询Fabric区块链账本数据的方法和装置 Download PDF

Info

Publication number
CN112732801B
CN112732801B CN202110340134.8A CN202110340134A CN112732801B CN 112732801 B CN112732801 B CN 112732801B CN 202110340134 A CN202110340134 A CN 202110340134A CN 112732801 B CN112732801 B CN 112732801B
Authority
CN
China
Prior art keywords
tee
query
node
transaction
query result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110340134.8A
Other languages
English (en)
Other versions
CN112732801A (zh
Inventor
余逸荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd, Ant Blockchain Technology Shanghai Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110340134.8A priority Critical patent/CN112732801B/zh
Publication of CN112732801A publication Critical patent/CN112732801A/zh
Application granted granted Critical
Publication of CN112732801B publication Critical patent/CN112732801B/zh
Priority to PCT/CN2022/081713 priority patent/WO2022206432A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Development Economics (AREA)
  • Databases & Information Systems (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供了一种查询Fabric区块链账本数据的方法和装置,所述方法由Fabric区块链中的客户端节点执行,包括:向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;从所述至少一个背书节点分别接收对所述交易提案的预执行结果及相应的背书节点对所述预执行结果的签名,其中,各个预执行结果中包括相应的背书节点的查询结果;将各个预执行结果及相应的签名提供给TEE;通过所述TEE确定各个查询结果的真实性。

Description

查询Fabric区块链账本数据的方法和装置
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种查询Fabric区块链账本数据的方法和装置。
背景技术
Hyperledger Fabric区块链(下文简称为Fabric区块链)是一种面向企业的联盟链。Fabric区块链中包括以下多种类型的节点:客户端节点、对等(Peer)节点、排序(orderer)节点等等。所述对等节点中又包括背书(Endorsor)节点、管理(Anchor)节点、提交(Committer)节点等。Fabric区块链中包括多个通道(channel),每个通道具有自身封闭的账本数据和链码(chaincode),所述链码即为Fabric区块链中的智能合约。对等节点可选择加入哪些通道,其在经过通道中已有的对等节点的身份验证之后可加入该通道。客户端节点可向Fabirc区块链中的某个通道发起交易提案,从而,客户端节点向该通道中的至少两个背书节点发送交易提案。通道中的背书节点具有交易提案系统接口,从而背书节点可通过调用该系统接口对从客户端节点接收的交易提案进行预执行并进行数字签名,并在预执行之后将执行结果和数字签名返回给所述客户端节点。所述客户端节点在从各个背书节点接收到交易预执行结果和签名之后,将其发送给排序节点。排序节点用于对交易进行排序、并将经排序的交易按照固定的时间间隔打包成区块发送给管理节点。管理节点收到区块之后将区块广播给每个提交节点。提交节点收到区块之后验证区块中每个交易的执行状态,在区块的每个交易中标记其执行状态,然后将区块加入本节点的账本数据中(即,提交区块)。其中,每个对等节点都是提交节点,即,每个对等节点本地都包括通道的账本数据。
对等节点具有系统自带的查询链码(Query System Chaincode,qscc),当对等节点需要查询账本数据时,可通过调用该qscc系统链码,查询本地账本数据,所述账本数据包括交易数据、区块数据等。
然而,当链下用户希望查询通道中的目标账本数据时,所述目标账本数据例如为交易,链下用户通常希望获取该交易的交易内容及该交易的执行状态。现有的方法是,用户获取Fabric区块链的全量账本数据的访问授权,启动一个对等节点,以该对等节点加入所述通道,同步通道中的账本数据。图1示意示出新启动的对等节点的查询操作过程。图1中最上层的三个方框表示该对等节点初始获取的账本数据中的多个区块,这里示意示出区块0-区块2,其中区块0表示创世块,区块0、区块1和区块2是顺序相连的。每个区块中包括顺序排列的多个交易(如每个方框中的页面所示),每个交易中记录有该交易在预执行时获取的读写集。所述读写集即为背书节点在预执行交易时获取的预执行结果,所述预执行结果中包括对区块链中各个参数的读取操作的集合、以及对区块链中各个参数的写操作集合。该多个交易并不是都成功执行,但是在初始获取的账本数据中并不包括各个交易的执行状态。
由于通道中的账本数据中的各个区块中的交易需要基于前序区块确定的世界状态来确定是否能够成功执行,因此,该对等节点在同步所述通道中的账本数据之后,需要执行从创世块开始到目标账本数据所在区块的全部区块中的交易,才可以获取目标交易的执行状态,该执行过程的耗时与目标区块或交易所在区块链高度(即区块编号)线性相关,即,目标区块的高度越高,耗时越多。如图1中所示,假设用户希望查询区块2中的某个交易,其需要通过对等节点执行图1中的①、②、③三个计算步骤。首先,在第①步骤,如图1中标注了①的箭头所示,验证区块0中各个交易的执行状态。具体是,按照区块0中的各个交易的顺序分别验证各个交易的读写集是否能成功执行。基于各个交易的排序,有可能前序交易的执行改变了某个参数的值,从而使得后续交易的读写失败,在该情况下,后续交易未能成功执行,该对等节点在验证时就将该后续交易标记为“0”,以指示该交易未能成功执行。如果交易的读写不与前序交易的读写冲突,可以成功执行,该对等节点就将该交易标记为“1”,以指示该交易成功执行。
在完成第①步骤,即,验证了区块0中各个交易的执行状态之后,基于由区块0中的各个交易的执行确定的各个参数(即世界状态),如图1中的以②标注的箭头所示,执行第②步骤。在该第②步骤中,对等节点基于当前的世界状态顺序验证区块1中各个交易是否能成功执行,并以“0”或“1”对各个交易分别进行标记(如以②标注的箭头指向的区块1中所示)。
之后,在完成第②步骤之后,类似地,如图1中的以③标注的箭头所示,执行第③步骤。在该第③步骤中,对等节点基于当前的世界状态顺序验证区块2中各个交易是否能成功执行,并对各个交易分别进行标记(如以③标注的箭头指向的区块2中所示),直到执行到用户需要查询的区块2中的目标交易。
通常,用户对Fabric区块链的查询需求是低频需求,因此,在获取目标交易的执行状态之后,为了不占用机器资源,用户设备中通常删除对等节点配置,从而,当用户再次需要查询Fabric区块链的账本数据时,仍需要再次执行上述整个过程。
因此,需要一种更有效的查询Fabric区块链中账本数据的方案。
发明内容
本说明书实施例旨在提供一种更有效的查询Fabric区块链账本数据的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述客户端节点中包括TEE,所述方法由Fabric区块链中的客户端节点执行,包括:
向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
从所述至少一个背书节点分别接收对所述交易提案的预执行结果及相应的背书节点对所述预执行结果的签名,其中,各个预执行结果中包括相应的背书节点的查询结果;
将各个预执行结果及相应的签名提供给TEE;
通过所述TEE确定各个查询结果的真实性。
在一种实施方式中,所述方法还包括:
在向所述至少一个背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询请求;
确定所述用户是否具有对所述第一账本数据的查询权限;
所述向所述至少一个背书节点分别发送交易提案包括,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案。
在一种实施方式中,所述Fabric区块链中包括至少两个背书节点,通过所述TEE确定各个查询结果的真实性包括,通过所述TEE基于预定背书策略确定各个查询结果的真实性。
在一种实施方式中,通过所述TEE确定各个查询结果的真实性包括,通过所述TEE在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
在一种实施方式中,通过所述TEE确定各个查询结果的真实性包括,通过所述TEE对所述各个查询结果对应的签名进行验证,以确定各个查询结果的真实性。
在一种实施方式中,所述方法还包括:
在通过所述TEE确定各个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,将所述真实查询结果及所述第一签名发送给所述用户设备。
在一种实施方式中,所述第一账本数据为区块数据或交易数据。
本说明书另一方面提供一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述客户端节点中包括TEE,所述装置部署于Fabric区块链中的客户端节点,包括:
第一发送单元,配置为,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元,配置为,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及相应的背书节点对所述预执行结果的签名,其中,各个预执行结果中包括相应的背书节点的查询结果;
提供单元,配置为,将各个预执行结果及相应的签名提供给TEE;
第一确定单元,配置为,通过所述TEE确定各个查询结果的真实性。
在一种实施方式中,所述装置还包括:
第二接收单元,配置为,在向所述至少一个背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询请求;
第二确定单元,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
所述第一发送单元还配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案。
在一种实施方式中,所述Fabric区块链中预设有至少两个背书节点,所述第一确定单元还配置为,通过所述TEE基于预定背书策略确定各个查询结果的真实性。
在一种实施方式中,所述第一确定单元还配置为,通过所述TEE在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
在一种实施方式中,所述第一确定单元还配置为,通过所述TEE对所述各个查询结果对应的签名进行验证,以确定各个查询结果的真实性。
在一种实施方式中,所述装置还包括:
签名单元,配置为,在通过所述TEE确定各个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,第二发送单元,配置为,将所述真实查询结果及所述第一签名发送给所述用户设备。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的Fabric区块链查询方案,查询发起方可快速高效地获取链上账本数据并可验证该账本数据的真实性,无需运行独立的对等节点以及等待对等节点同步验证多个区块,大大节省了查询时间;查询发起方只需要获取目标区块或交易的数据授权即可进行所述查询,而不需要获取全量账本授权;另外,查询发起方只需要记录管理设备中TEE的公钥,以用于对从管理设备发送的账本数据的签名进行验证,而不需要记录区块链中多个背书节点各自的公钥。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示意示出新启动的对等节点的查询操作过程;
图2示出根据本说明书实施例的Fabric区块链查询系统的示意图;
图3示出根据本说明书实施例的一种查询Fabric区块链账本数据的方法流程图;
图4示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图;
图5示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置500。
具体实施方式
下面将结合附图描述本说明书实施例。
图2示出根据本说明书实施例的Fabric区块链查询系统的示意图。如图2中所示,所述查询系统中包括用户设备21、管理设备22和Fabric区块链23。其中,用户设备21可以为Fabric区块链的链下设备,其可以为Fabric区块链的使用用户的设备,其它区块链的节点设备、或者用于在多个区块链之间中转消息的中继器的设备等等,在此不作限定。管理设备22向用户设备21提供对Fabric区块链的账本数据的查询服务。管理设备22本身是Fabric区块链的具有账本数据查询权限的客户端节点,其中包括可信执行环境(Trusted ExecutionEnvironment,TEE)。所述TEE例如可以为通过SGX、Trust Zone等技术生成的可信执行环境。Fabric区块链23在图2中示意示出为包括对等节点1-4。
在执行本说明书实施例提供的方法之前,管理设备22从Fabric区块链23的多个对等节点中选取一个或多个对等节点作为背书节点,例如选择节点1、节点2和节点3作为背书节点。管理设备22在进行该选择之后分别通知节点1、节点2和节点3,从而使得节点1-节点3分别开启背书节点权限。同时,管理设备22记录节点1-节点3的连接信息和公钥信息,并将节点1-节点3的公钥信息提供给TEE。
用户设备21在通过管理设备22查询区块链23账本数据之前,可首先对管理设备22中的TEE进行验证。具体是,用户设备21可向TEE发送验证请求。TEE在接收所述验证请求之后,基于其内部机制生成认证信息,并将该认证信息及TEE的硬件公钥发送给用户设备21。所述认证信息例如包括所述TEE的签名信息、硬件信息和软件信息等。其中,所述签名信息例如通过TEE的硬件密钥生成;所述硬件信息例如包括,各种硬件的指标,比如CPU主频,内存容量等等;所述软件信息包括各个程序的代码哈希值、代码名称、版本、运行日志等。如本领域技术人员所知,TEE可通过内存硬件执行对其中运行程序的“测量”,例如获取该程序的代码哈希值、该程序在特定执行点的内存占有的哈希值等等,并在所述认证信息中包括对所述程序的“测量”信息,由于该“测量”信息由该TEE自身实体(内存硬件)执行,而不涉及任何软件、操作系统,因此是真实可信的。用户设备21在接收到所述认证信息之后,可把所述认证信息发送给TEE的远程认证服务器,从而从所述服务器接收到对所述TEE的验证结果。所述验证结果包括所述TEE的身份验证、及对所述TEE内部执行程序的验证等等。从而,用户设备21基于该验证结果可确定TEE是可信的,TEE的处理结果是可信的。同时,用户设备21在本地保存TEE的硬件公钥,以用于后续对TEE的签名的验证。
用户设备21对应的用户(例如用户1)在进行对Fabric区块链23的账本数据(例如区块n中的交易m)的查询之前,向管理设备22申请对账本数据的查询权限,管理设备22在对用户1的申请进行验证之后,对用户1授权所述查询权限,并在本地记录对用户1的授权,例如,可记录用户1的账户标识和用户1被授权的权限。
在进行上述准备工作之后,用户1可通过用户设备21向管理设备22发送查询请求,以用于查询例如区块n中的交易m及交易m的执行状态。管理设备22在接收到该查询请求之后,首先确定用户1是否具备对交易m的查询权限。在基于本地的记录确定用户1具有对交易m的查询权限之后,向预先确定的背书节点(节点1-节点3)发送交易提案(例如交易A提案)用于对区块n中的交易m进行查询。节点1-节点3在接收到交易A提案之后,分别在其本地的账本数据中查询到区块n中的交易m的交易数据和该交易m的执行状态作为查询结果,基于该查询结果生成交易A的预执行结果,对交易A的预执行结果进行签名,并将交易A的预执行结果及其签名发送给管理设备22。管理设备22在接收到节点1-节点3对交易A的预执行结果和签名之后,通过TEE基于预定背书策略确定各个查询结果中的真实数据,由TEE对真实数据进行签名,并将该真实数据及TEE签名提供给用户设备21。
下面将对上述查询过程进行详细描述。
图3示出根据本说明书实施例的一种查询Fabric区块链账本数据的方法流程图。如图3中所示,所述方法由图2中的用户设备21、管理设备22和节点1-3共同执行,其中用户设备21例如为用户1的设备。
首先在步骤S302,用户设备21向管理设备22发送查询请求,该查询请求用于请求查询Fabric区块链中的账本数据。
如上文所述,所述账本数据可以为区块或者交易。例如,所述查询请求用于查询Fabric区块链中区块n中的交易m。所述查询请求例如由用户1使用其账户1发出。
在步骤S304,管理设备22检查账户1的查询权限。
如上文所述的准备过程,用户1预先获取管理设备22的对预定账本数据的查询权限,并且,管理设备22在本地记录了账户1对应的查询权限。例如,管理设备22中记录了账户1具有对交易m的查询权限。管理设备22在接收到上述查询请求之后,在本地读取账户1的查询权限,以检查账户1是否具有对交易m的查询权限。
在步骤S306,管理设备22向节点1、节点2和节点3分别发送交易提案。
所述交易提案(例如上述交易A提案)用于调用节点的qscc系统链码,以查询指定账本数据,例如查询区块n中的交易m。
在步骤S308,节点1、节点2和节点3分别获取查询结果。
由于节点1、节点2和节点3都是背书节点,其在接收到交易A提案之后按照背书节点的预设流程执行相同的过程,从而分别获取查询结果,例如,节点1-节点3分别获取查询结果1-查询结果3。
这里以节点1为例进行描述。节点1在从管理设备22接收到上述交易A提案之后,对该交易A进行预执行,所述预执行即执行交易A,但是并不将获取的交易执行结果存入本地账本中。具体是,节点1根据交易A的交易内容执行qscc系统链码,在本地账本中读取区块n中的交易m及交易m的执行状态(即,是否成功执行)作为查询结果1,这里,节点1已经在之前对区块n的提交时验证了区块n中每个交易的执行状态并记录了所述执行状态,即,节点1中记录的账本数据如图1中最下部的各个区块所示包括区块中各个交易的执行状态。因此,节点1可从本地直接读取交易m的执行状态,而不需要如图1中所示从创世块开始执行每个区块中的每个交易直到交易m,从而大大节省了查询时间。节点1在获取查询结果1之后,将该查询结果1记录到对交易A的预执行过程的读写集中,并在预执行结束之后对该预执行过程中产生的读写集进行签名。
在步骤S310,节点1-节点3分别将其查询结果返回给管理设备22。
也就是说,节点1-节点3分别将其预执行所述交易A获取的读写集以及相应的签名返回给管理设备22,其中,各个读写集中分别包括查询结果1-查询结果3。
在步骤S312,管理设备22通过TEE验证查询结果。
管理设备22在从节点1-3分别接收到各个读写集及其签名之后,将各个读写集及其签名提供给TEE,即作为TEE的输入数据输入给TEE。
TEE中预先存储了各个背书节点的公钥,并且,TEE中设置了通过相应的公钥对各个签名进行验签、以及对各个查询结果进行验证的程序。因此,在TEE中,首先使用预先记录的节点1-3各自的公钥对各个签名进行验证。
在签名验证通过之后,TEE还基于预设的背书策略来验证各个读写集中包括的查询结果是否为交易m的真实数据。在一种实施方式中,TEE中可预设一致性阈值,该一致性阈值用于限定多个查询结果中的最少相同查询结果个数,从而通过该一致性阈值来确定查询结果的真实性。例如,所述一致性阈值可设定为2/3,即,对于3个查询结果,如果其中至少2个查询结果是相同的,则可确定该2个查询结果为真实查询结果,如果该3个查询结果中相同查询结果的总数小于2个(即3个查询结果互不相同),则可确定该3个查询都不是真实的。
在一种实施方式中,TEE可基于各个背书节点的可信程度来确定背书策略。例如,节点1的可信程度较高,可设定,只要节点1与任一另一个节点的查询结果相同,则可认为节点1的查询结果是真实的,节点2的可信程度较低,则可以设定,仅在节点2与节点1、节点3的查询结果都相同的情况中,才可以认为节点2的查询结果是真实的。
在步骤S314,管理设备22通过TEE对真实查询结果进行签名。
TEE在进行上述验证过程之后,如果确定上述三个查询结果中包括真实的查询结果,则使用自身的硬件公钥对该真实的查询结果进行签名,具体是,TEE计算该真实查询结果的哈希值,并使用自身的硬件私钥对该哈希值进行加密,从而获取对该真实的查询结果的签名(即数字签名)。TEE在进行签名之后将真实的查询结果及所述签名输出给管理设备22。
在步骤S316,管理设备22将账本数据及TEE签名返回给用户设备21。
管理设备22在从TEE获取真实的查询结果(即包括交易m的内容和交易m的执行状态的账本数据)及其TEE签名之后,将该账本数据及其TEE签名返回给用户设备21。
在步骤S318,用户设备21对TEE签名进行验证。
用户设备21在从管理设备22接收账本数据及其TEE签名之后,使用预先获取的TEE的公钥对该TEE签名进行验证。具体是,用户设备21使用TEE公钥对TEE签名进行解密,计算账本数据的哈希值,并比较解密获取的数据与账本数据的哈希值是否一致,如果一致,则对TEE签名的验证通过。在验证通过之后,可确认该账本数据确实是通过TEE的验证所确定的真实账本数据。
图4示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图。图4所示方法与图3所示方法不同在于,在图4所示方法中,管理设备22只将交易提案发送给一个对等节点(即节点1),在该情况中,管理设备22认为节点1为可信节点,因此,直接将从节点1接收的查询结果认为是真实的,而不需要如图所示方法那样,从多个节点接收到多个查询结果,并对多个查询结果进行一致性验证。
在图4中,步骤S402-步骤S410、步骤S416和步骤S418可参考上文对步骤S302-步骤S310、步骤S316和步骤S318的描述,在此不再详述。
在步骤S412中,管理设备22通过TEE验证由节点1发送的查询结果。
具体是,与上文描述类似地,TEE在从节点1接收到对所述交易A的预执行读写集和节点1对所述读写集的签名之后,使用节点1的公钥对所述签名进行验证,在验证通过之后,可确定所述查询结果为真实的。
在步骤S414,管理设备22通过TEE对真实查询结果进行签名。
TEE在进行上述验证过程之后,如果确定所述查询结果是真实的查询结果,则使用自身的硬件公钥对该真实的查询结果进行签名。TEE在对真实查询结果进行签名之后,将真实查询数据及其签名输出给管理设备22。
图5示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置500,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述客户端节点中包括TEE,所述装置部署于Fabric区块链中的客户端节点,包括:
第一发送单元51,配置为,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元52,配置为,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及相应的背书节点对所述预执行结果的签名,其中,各个预执行结果中包括相应的背书节点的查询结果;
提供单元53,配置为,将各个预执行结果及相应的签名提供给TEE;
第一确定单元54,配置为,通过所述TEE确定各个查询结果的真实性。
在一种实施方式中,所述装置500还包括:
第二接收单元55,配置为,在向所述至少一个背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询请求;
第二确定单元56,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
所述第一发送单元51还配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案。
在一种实施方式中,所述Fabric区块链中预设有至少两个背书节点,所述第一确定单元54还配置为,通过所述TEE基于预定背书策略确定各个查询结果的真实性。
在一种实施方式中,所述第一确定单元54还配置为,通过所述TEE在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
在一种实施方式中,所述第一确定单元54还配置为,通过所述TEE对所述各个查询结果对应的签名进行验证,以确定各个查询结果的真实性。
在一种实施方式中,所述装置500还包括:
签名单元57,配置为,在通过所述TEE确定各个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,第二发送单元58,配置为,将所述真实查询结果及所述第一签名发送给所述用户设备。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的Fabric区块链查询方案,查询发起方可快速高效地获取链上账本数据并可验证该账本数据的真实性,无需运行独立的对等节点以及等待对等节点同步验证多个区块,大大节省了查询时间;查询发起方只需要获取目标区块或交易的数据授权即可进行所述查询,而不需要获取全量账本授权;另外,查询发起方只需要记录管理设备中TEE的公钥,以用于对从管理设备发送的账本数据的签名进行验证,而不需要记录区块链中多个背书节点各自的公钥。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述客户端节点中包括TEE,所述方法由客户端节点执行,包括:
从用户的用户设备接收对第一账本数据的查询请求;
确定所述用户是否具有对所述第一账本数据的查询权限,其中,所述用户不具有全量账本数据的查询权限;
向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据,其中,所述向所述至少一个背书节点分别发送交易提案包括,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案;
从所述至少一个背书节点分别接收对所述交易提案的预执行结果及相应的背书节点对所述预执行结果的签名,其中,各个预执行结果中包括相应的背书节点的查询结果;
将各个预执行结果及相应的签名提供给TEE;
通过所述TEE确定各个查询结果的真实性。
2.根据权利要求1所述的方法,其中,所述Fabric区块链中包括至少两个背书节点,通过所述TEE确定各个查询结果的真实性包括,通过所述TEE基于预定背书策略确定各个查询结果的真实性。
3.根据权利要求2所述的方法,其中,通过所述TEE确定各个查询结果的真实性包括,通过所述TEE在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
4.根据权利要求1所述的方法,其中,通过所述TEE确定各个查询结果的真实性包括,通过所述TEE对所述各个查询结果对应的签名进行验证,以确定各个查询结果的真实性。
5.根据权利要求2-4中任一项所述的方法,还包括:
在通过所述TEE确定各个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,将所述真实查询结果及所述第一签名发送给所述用户设备。
6.根据权利要求1所述的方法,其中,所述第一账本数据为区块数据或交易数据。
7.一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述客户端节点中包括TEE,所述装置部署于客户端节点,包括:
第二接收单元,配置为,从用户的用户设备接收对第一账本数据的查询请求;
第二确定单元,配置为,确定所述用户是否具有对所述第一账本数据的查询权限,其中,所述用户不具有全量账本数据的查询权限;
第一发送单元,配置为,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据,其中,所述向所述至少一个背书节点分别发送交易提案包括,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案;
第一接收单元,配置为,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及相应的背书节点对所述预执行结果的签名,其中,各个预执行结果中包括相应的背书节点的查询结果;
提供单元,配置为,将各个预执行结果及相应的签名提供给TEE;
第一确定单元,配置为,通过所述TEE确定各个查询结果的真实性。
8.根据权利要求7所述的装置,其中,所述Fabric区块链中预设有至少两个背书节点,所述第一确定单元还配置为,通过所述TEE基于预定背书策略确定各个查询结果的真实性。
9.根据权利要求8所述的装置,其中,所述第一确定单元还配置为,通过所述TEE在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
10.根据权利要求7所述的装置,其中,所述第一确定单元还配置为,通过所述TEE对所述各个查询结果对应的签名进行验证,以确定各个查询结果的真实性。
11.根据权利要求7-10中任一项所述的装置,还包括:
签名单元,配置为,在通过所述TEE确定各个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,第二发送单元,配置为,将所述真实查询结果及所述第一签名发送给所述用户设备。
12.根据权利要求7所述的装置,其中,所述第一账本数据为区块数据或交易数据。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-6中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-6中任一项所述的方法。
CN202110340134.8A 2021-03-30 2021-03-30 查询Fabric区块链账本数据的方法和装置 Active CN112732801B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110340134.8A CN112732801B (zh) 2021-03-30 2021-03-30 查询Fabric区块链账本数据的方法和装置
PCT/CN2022/081713 WO2022206432A1 (zh) 2021-03-30 2022-03-18 查询Fabric区块链账本数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110340134.8A CN112732801B (zh) 2021-03-30 2021-03-30 查询Fabric区块链账本数据的方法和装置

Publications (2)

Publication Number Publication Date
CN112732801A CN112732801A (zh) 2021-04-30
CN112732801B true CN112732801B (zh) 2021-08-20

Family

ID=75596146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110340134.8A Active CN112732801B (zh) 2021-03-30 2021-03-30 查询Fabric区块链账本数据的方法和装置

Country Status (2)

Country Link
CN (1) CN112732801B (zh)
WO (1) WO2022206432A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732801B (zh) * 2021-03-30 2021-08-20 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110266659A (zh) * 2019-05-31 2019-09-20 联想(北京)有限公司 一种数据处理方法和设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341121B2 (en) * 2019-01-22 2022-05-24 International Business Machines Corporation Peer partitioning
CN110399373B (zh) * 2019-06-26 2024-02-02 杭州慧牧科技有限公司 一种区块链账本存储系统、存储查询方法及删除方法
CN110933108B (zh) * 2019-09-26 2021-05-11 腾讯科技(深圳)有限公司 基于区块链网络的数据处理方法、装置、电子设备及存储介质
CN111242620A (zh) * 2020-01-15 2020-06-05 阳光易购(湖南)科技有限公司 区块链交易系统的数据缓存及查询方法、终端及存储介质
CN111629039B (zh) * 2020-05-20 2023-04-18 中国银联股份有限公司 一种区块链共识方法及客户端、背书节点、排序节点
CN112732801B (zh) * 2021-03-30 2021-08-20 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置
CN112732799B (zh) * 2021-03-30 2021-11-02 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置
CN112734431B (zh) * 2021-03-30 2021-06-25 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110266659A (zh) * 2019-05-31 2019-09-20 联想(北京)有限公司 一种数据处理方法和设备

Also Published As

Publication number Publication date
WO2022206432A1 (zh) 2022-10-06
CN112732801A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
CN112734431B (zh) 查询Fabric区块链账本数据的方法和装置
CN109471865B (zh) 一种离线数据管理方法、系统、服务器及存储介质
CN105701372B (zh) 一种区块链身份构建及验证方法
CN110311958B (zh) 一种区块链网络系统
CN108769230B (zh) 交易数据存储方法、装置、服务器及存储介质
WO2022206454A1 (zh) 提供跨链消息的方法和装置
EP3543891B1 (en) A computer implemented method and a system for tracking of certified documents lifecycle and computer programs thereof
CN110717764A (zh) 多账本管理方法、装置、计算机设备及存储介质
WO2022206431A1 (zh) 查询Fabric区块链账本数据的方法和装置
US20230006840A1 (en) Methods and devices for automated digital certificate verification
CN110942302A (zh) 一种区块链凭证撤销、验证方法、签发节点、验证节点
CN112235260B (zh) 一种匿名数据存证方法、装置、设备和存储介质
CN112749968B (zh) 基于区块链的业务数据记录方法及装置
CN111401904B (zh) 联盟链中的共识方法和系统
CN108540447B (zh) 一种基于区块链的证书验证方法及系统
CN112732801B (zh) 查询Fabric区块链账本数据的方法和装置
CN113420277B (zh) 基于智能合约的数字身份管理和验证方法
CN111737766B (zh) 一种在区块链中判断数字证书签名数据合法性的方法
CN115694847A (zh) 一种设备管理方法、系统以及装置
CN109063461B (zh) 一种第三方免密登录方法及系统
CN113904869B (zh) 一种区块链中恶意节点的检测方法及区块链
CN113472544B (zh) 一种数字身份验证方法、装置、计算机设备和存储介质
CN109698750A (zh) 区块链的区块生成方法、装置、设备及可读存储介质
CN115426106A (zh) 一种身份认证方法、装置、系统、电子设备及存储介质
CN106161037A (zh) 数字签名方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant