CN112734431B - 查询Fabric区块链账本数据的方法和装置 - Google Patents
查询Fabric区块链账本数据的方法和装置 Download PDFInfo
- Publication number
- CN112734431B CN112734431B CN202110340135.2A CN202110340135A CN112734431B CN 112734431 B CN112734431 B CN 112734431B CN 202110340135 A CN202110340135 A CN 202110340135A CN 112734431 B CN112734431 B CN 112734431B
- Authority
- CN
- China
- Prior art keywords
- tee
- query
- node
- transaction
- ledger data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Abstract
本说明书实施例提供了一种查询Fabric区块链账本数据的方法和装置,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述方法由客户端节点执行,包括:向所述背书节点发送交易提案,所述交易提案用于请求查询第一账本数据;从所述背书节点接收对所述交易提案的预执行结果及TEE签名,其中,所述预执行结果中包括对所述第一账本数据的查询结果。
Description
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种查询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中的①、②、③三个计算步骤。首先,在第①步骤,如图中标注了①的箭头所示,验证区块0中各个交易的执行状态。具体是,按照区块0中的各个交易的顺序分别验证各个交易的读写集是否能成功执行。基于各个交易的排序,有可能前序交易的执行改变了某个参数的值,从而使得后续交易的读写失败,在该情况下,后续交易未能成功执行,该对等节点在验证时就将该后续交易标记为“0”,以指示该交易未能成功执行。如果交易的读写不与前序交易的读写冲突,可以成功执行,该对等节点就将该交易标记为“1”,以指示该交易成功执行。
在完成第①步骤,即,验证了区块0中各个交易的执行状态之后,基于由区块0中的各个交易的执行确定的各个参数(即世界状态),如图中的以②标注的箭头所示,执行第②步骤。在该第②步骤中,对等节点基于当前的世界状态顺序验证区块1中各个交易是否能成功执行,并以“0”或“1”对各个交易分别进行标记(如以②标注的箭头指向的区块1中所示)。
之后,在完成第②步骤之后,类似地,如图中的以③标注的箭头所示,执行第③步骤。在该第③步骤中,对等节点基于当前的世界状态顺序验证区块2中各个交易是否能成功执行,并对各个交易分别进行标记(如以③标注的箭头指向的区块2中所示),直到执行到用户需要查询的区块2中的目标交易。
通常,用户对Fabric区块链的查询需求是低频需求,因此,在获取目标交易的执行状态之后,为了不占用机器资源,用户设备中通常删除对等节点配置,从而,当用户再次需要查询Fabric区块链的账本数据时,仍需要再次执行上述整个过程。
因此,需要一种更有效的查询Fabric区块链中账本数据的方案。
发明内容
本说明书实施例旨在提供一种更有效的查询Fabric区块链账本数据的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述方法由客户端节点执行,包括:
向所述背书节点发送交易提案,所述交易提案用于请求查询第一账本数据;
从所述背书节点接收对所述交易提案的预执行结果及TEE签名,其中,所述预执行结果中包括对所述第一账本数据的查询结果。
在一种实施方式中,所述方法还包括:在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,对所述TEE签名进行验证。
在一种实施方式中,所述方法还包括:
在向所述背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询;
确定所述用户是否具有对所述第一账本数据的查询权限;
所述向所述背书节点发送交易提案包括,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述背书节点发送交易提案。
在一种实施方式中,所述方法还包括:
在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,将所述预执行结果及TEE签名发送给所述用户设备。
在一种实施方式中,所述第一账本数据为区块数据或交易数据。
本说明书另一方面提供一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述方法由所述背书节点执行,包括:
从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
通过TEE预执行所述交易提案,以获取对所述交易提案的预执行结果,其中,所述预执行结果中包括对所述第一账本数据的查询结果;
通过TEE对所述预执行结果签名;
将所述预执行结果及所述签名发送给所述客户端节点。
在一种实施方式中,通过TEE预执行所述交易提案包括,通过TEE确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,在确定所述发起账户具有查询权限的情况中,通过TEE从本地读取所述查询结果。
在一种实施方式中,通过TEE预执行所述交易提案包括,通过TEE从本地读取所述查询结果,通过TEE对所述查询结果进行验证。
本说明书另一方面提供一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述装置部署于客户端节点,包括:
第一发送单元,配置为,向所述背书节点发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元,配置为,从所述背书节点接收对所述交易提案的预执行结果及TEE签名,其中,所述预执行结果中包括对所述第一账本数据的查询结果。
在一种实施方式中,所述装置还包括:验证单元,配置为,在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,对所述TEE签名进行验证。
在一种实施方式中,所述装置还包括:
第二接收单元,配置为,在向所述背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询;
确定单元,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
所述第一发送单元还配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述背书节点发送交易提案。
在一种实施方式中,所述装置还包括:
第二发送单元,配置为,在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,将所述预执行结果及TEE签名发送给所述用户设备。
本说明书另一方面提供一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述装置部署于所述背书节点,包括:
接收单元,配置为,从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
预执行单元,配置为,通过TEE预执行所述交易提案,以获取对所述交易提案的预执行结果,其中,所述预执行结果中包括对所述第一账本数据的查询结果;
签名单元,配置为,通过TEE对所述预执行结果签名;
发送单元,配置为,将所述预执行结果及所述签名发送给所述客户端节点。
在一种实施方式中,所述预执行单元包括,确定子单元,配置为,通过TEE确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,第一读取子单元,配置为,在确定所述发起账户具有查询权限的情况中,从本地读取所述查询结果。
在一种实施方式中,所述预执行单元包括,第二读取子单元,配置为,通过TEE从本地读取所述查询结果,验证子单元,配置为,通过TEE对所述查询结果进行验证。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的Fabric区块链查询方案,查询发起方可快速高效地获取链上账本数据并可验证该账本数据的真实性,而无需运行独立的对等节点以及等待对等节点同步验证多个区块,大大节省了查询时间;查询发起方只需要获取目标区块或交易的数据授权即可进行所述查询,而不需要获取全量账本授权;另外,通过在Fabric区块链中使用TEE节点作为背书节点,可通过该TEE硬件和硬件中的算法来保证该TEE节点的查询结果的真实性,而不需要同时通过多个背书节点进行账本数据查询、并基于多个背书节点的查询结果的一致性来确定查询结果的真实性。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示意示出新启动的对等节点的查询操作过程;
图2示出根据本说明书实施例的Fabric区块链查询系统的示意图;
图3示出根据本说明书实施例的一种查询Fabric区块链账本数据的方法流程图;
图4示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图;
图5示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置500;
图6示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置600。
具体实施方式
下面将结合附图描述本说明书实施例。
图2示出根据本说明书实施例的Fabric区块链查询系统的示意图。如图2中所示,所述查询系统中包括用户设备21、管理设备22和Fabric区块链23。其中,用户设备21可以为Fabric区块链的链下设备,其可以为Fabric区块链的使用用户的设备,其它区块链的节点设备、或者用于在多个区块链之间中转消息的中继器的设备等等,在此不作限定。管理设备22向用户设备21提供对Fabric区块链的账本数据的查询服务。管理设备22本身是Fabric区块链的具有账本数据查询权限的客户端节点。Fabric区块链23在图2中示意示出为包括对等节点1-4。其中,节点2为Fabric区块链23中的背书节点,其中包括可信执行环境(TrustedExecution Environment,TEE)。所述TEE例如可以为通过SGX、Trust Zone等技术生成的可信执行环境。
用户设备21在通过管理设备22查询区块链23账本数据之前,可首先对节点2中的TEE进行验证。具体是,用户设备21可通过管理设备22的中转向TEE发送验证请求。TEE在接收所述验证请求之后,基于其内部机制生成认证信息,并将该认证信息及TEE的硬件公钥经管理设备22的中转发送给用户设备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被授权的权限。
在进行上述准备工作之后,用户1可通过用户设备21向管理设备22发送查询请求,以用于查询例如区块n中的交易m及交易m的执行状态。管理设备22在接收到该查询请求之后,首先确定用户1是否具备对交易m的查询权限。在基于本地的记录确定用户1具有对交易m的查询权限之后,向节点2发送交易提案(例如交易A提案)用于对区块n中的交易m进行查询。节点2在接收到交易A提案之后,通过TEE在其本地的账本数据中查询到区块n中的交易m的交易数据和该交易m的执行状态作为查询结果,基于该查询结果生成交易A的预执行结果,通过TEE私钥对交易A的预执行结果进行签名,并将交易A的预执行结果及其TEE签名发送给管理设备22。管理设备22在接收到所述预执行结果和TEE签名之后,将该预执行结果和TEE签名提供给用户设备21。用户设备21在接收到预执行结果和TEE签名之后,可使用预先获取的TEE公钥验证所述TEE签名,从而验证所述预执行结果的真实性,在验证通过的情况中,用户设备21可从预执行结果中获取真实查询结果。
下面将对上述区块链账本数据查询过程进行详细描述。
图3示出根据本说明书实施例的一种查询Fabric区块链账本数据的方法流程图。如图3中所示,所述方法由图2中的用户设备21、管理设备22和节点2共同执行,其中用户设备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向节点2发送交易提案。
所述交易提案(例如上述交易A提案)用于调用节点的qscc系统链码,以查询指定账本数据,例如查询区块n中的交易m。
在步骤S308,节点2通过TEE获取查询结果。
节点2在从管理设备22接收到上述交易提案之后,通过TEE对该交易A进行预执行,所述预执行即执行交易A,但是并不将获取的交易执行结果存入本地账本中。具体是,TEE根据交易A的交易内容执行qscc系统链码,在本地账本中读取区块n中的交易m及交易m的执行状态(即,是否成功执行)作为查询结果,这里,节点2已经在之前对区块n的提交时验证了区块n中每个交易的执行状态并记录了所述执行状态,即,节点2中记录的账本数据如图1中最下部的各个区块所示包括区块中各个交易的执行状态。因此,TEE可从本地直接读取交易m的执行状态,而不需要如图1中所示从创世块开始执行每个区块中的每个交易直到交易m,从而大大节省了查询时间。
在一种实施方式中,为了保证区块的真实性,节点2可在每次提交区块时还基于完整性校验机制进行操作,例如,节点2中的TEE可使用TEE私钥对该区块进行签名,并将区块及其TEE签名一起存入账本中。因此,TEE在获取上述查询结果的同时还获取区块n的数据及其TEE签名。可以理解,所述完整性校验机制不限于对每个区块进行签名,还可以通过其它方式来保证数据完整性,例如,TEE可对每个交易的读写集及其执行状态进行签名,以保证每个交易的数据完整性。
在步骤S310,节点2通过TEE验证查询结果。
TEE在获取区块n及其TEE签名之后,使用TEE公钥对该TEE签名进行验证,以确保所获取的区块n为未经篡改的真实数据,从而可保证其中的交易m及其状态的真实性。可以理解,在其它形式的完整性交易机制中,TEE中可相应对查询结果进行验证,例如,节点2中在每次提交区块时在账本中存入对每个交易的签名,则TEE可对之前存入的交易m的TEE签名进行验证,以验证查询到的交易m的数据完整性。
在步骤S312,生成对交易A的预执行结果及其TEE签名。
TEE在进行上述验证过程之后,如果确定上述查询结果为真实的查询结果,则将该真实的查询结果记录到对交易A的预执行的读写集中,从而生成交易A的预执行读写集。之后,TEE使用自身的硬件私钥对该读写集进行签名,具体是,TEE计算该读写集的哈希值,并使用自身的硬件私钥对该读写集进行加密,从而获取对该读写集的签名(即数字签名)。TEE在进行签名之后将所述读写集及其TEE签名输出给节点2。
在步骤S314,节点2将所述预执行结果及其TEE签名返回给管理设备22。
在步骤S316,管理设备22将所述预执行结果及其TEE签名返回给用户设备21。
在步骤S318,用户设备21验证所述TEE签名。
用户设备21在从管理设备22接收到所述预执行结果及其TEE签名之后,使用预先获取的TEE公钥对所述TEE签名进行验证。具体是,用户设备21使用TEE公钥对TEE签名进行解密,计算预执行结果的哈希值,并比较解密获取的数据与所述哈希值是否一致,如果一致,则对TEE签名的验证通过。在验证通过之后,可确认该预执行结果确实是通过TEE生成的预执行结果,从而可确认其中包括的查询数据为真实查询数据。
在步骤S320,从所述预执行结果中获取真实查询数据。
具体是,用户设备21可基于预执行结果中的读写集的预定数据格式,从其中的读集合中找到在预执行交易A时所读取的第一账本数据,并且由于本说明书实施例提供的TEE硬件和该TEE硬件执行的算法,可保证该第一账本数据为真实账本数据。
图4示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图。
图4所示方法与图3所示方法不同在于,用户设备21可以不通过管理设备22,而是直接通过向Fabric区块链的对等节点发送交易提案,从而获取账本数据。在执行该方法之前,用户1可以以账户1向节点2申请账本数据查询权限,节点2在对账户1授权账本数据查询权限之后,可在TEE中进行记录。并且用户设备21可通过向节点2发送TEE验证请求对TEE进行验证、并预先获取TEE的公钥。
在进行上述准备工作之后,首先,在步骤S402,用户设备21向节点2发送交易提案,该交易提案用于调用该通道中提供的账本数据查询链码。该查询链码中调用节点2中的qscc系统链码,以查询指定账本数据,例如查询区块n中的交易m。用户设备21例如通过用户1的账户1发送所述交易提案。
在步骤S404,节点2检查账户1的查询权限。
节点2在接收到上述交易提案之后,预执行所述交易提案,即预执行所述账本数据查询链码。在该预执行过程中,节点2根据账本数据查询链码的代码首先检查账户1的查询权限。如上文所述的准备过程,节点2对账户1授权查询权限,会在TEE中进行记录,例如,TEE中记录了账户1具有对交易m的查询权限。从而,TEE可以读取账户1的查询权限,以检查账户1是否具有对交易m的查询权限。
在步骤S406,节点2通过TEE获取查询结果。
接着上文中TEE对账本数据查询链码的预执行过程,如果TEE确定账户1具有对交易m的查询权限,则根据账本数据查询链码中对qscc系统链码的调用,执行qscc系统链码,从而从本地账本中读取交易m的交易内容及执行状态作为查询结果,另外,与上文类似地,还读取区块n及其TEE签名。
步骤S408-S416可参考上文对步骤S310-S320的描述,在此不再赘述。
图5示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置500,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述装置部署于客户端节点,包括:
第一发送单元51,配置为,向所述背书节点发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元52,配置为,从所述背书节点接收对所述交易提案的预执行结果及TEE签名,其中,所述预执行结果中包括对所述第一账本数据的查询结果。
在一种实施方式中,所述装置500还包括:验证单元53,配置为,在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,对所述TEE签名进行验证。
在一种实施方式中,所述装置500还包括:
第二接收单元54,配置为,在向所述背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询;
确定单元55,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
所述第一发送单元51还配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述背书节点发送交易提案。
在一种实施方式中,所述装置500还包括:
第二发送单元56,配置为,在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,将所述预执行结果及TEE签名发送给所述用户设备。
图6示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置600,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述装置部署于所述背书节点,包括:
接收单元61,配置为,从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
预执行单元62,配置为,通过TEE预执行所述交易提案,以获取对所述交易提案的预执行结果,其中,所述预执行结果中包括对所述第一账本数据的查询结果;
签名单元63,配置为,通过TEE对所述预执行结果签名;
发送单元64,配置为,将所述预执行结果及所述签名发送给所述客户端节点。
在一种实施方式中,所述预执行单元62包括,确定子单元621,配置为,通过TEE确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,第一读取子单元622,配置为,在确定所述发起账户具有查询权限的情况中,从本地读取所述查询结果。
在一种实施方式中,所述预执行单元62包括,第二读取子单元623,配置为,通过TEE从本地读取所述查询结果,验证子单元624,配置为,对所述查询结果进行验证。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的Fabric区块链查询方案,查询发起方可快速高效地获取链上账本数据并可验证该账本数据的真实性,而无需运行独立的对等节点以及等待对等节点同步验证多个区块,大大节省了查询时间;查询发起方只需要获取目标区块或交易的数据授权即可进行所述查询,而不需要获取全量账本授权;另外,通过在Fabric区块链中使用TEE节点作为背书节点,可通过该TEE硬件和硬件中的算法来保证该TEE节点的查询结果的真实性,而不需要同时通过多个背书节点进行账本数据查询、并基于多个背书节点的查询结果的一致性来确定查询结果的真实性。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述方法由客户端节点执行,包括:
从用户的用户设备接收对第一账本数据的查询,其中,所述用户不具有全量账本数据的查询权限;
确定所述用户是否具有对所述第一账本数据的查询权限;
在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述背书节点发送交易提案,所述交易提案用于请求查询第一账本数据;
从所述背书节点接收对所述交易提案的预执行结果及TEE签名,其中,所述预执行结果中包括对所述第一账本数据的查询结果。
2.根据权利要求1所述的方法,还包括:在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,对所述TEE签名进行验证。
3.根据权利要求1所述的方法,还包括:
在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,将所述预执行结果及TEE签名发送给所述用户设备。
4.根据权利要求1所述的方法,其中,所述第一账本数据为区块数据或交易数据。
5.一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述方法由所述背书节点执行,包括:
从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
通过TEE预执行所述交易提案,以获取对所述交易提案的预执行结果,其中,所述预执行结果中包括对所述第一账本数据的查询结果;所述通过TEE预执行所述交易提案包括,通过TEE确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,在确定所述发起账户具有对所述第一账本数据的查询权限的情况中,通过TEE从本地读取所述查询结果,其中,所述发起账户不具有全量账本数据的查询权限;
通过TEE对所述预执行结果签名;
将所述预执行结果及所述签名发送给所述客户端节点。
6.根据权利要求5所述的方法,其中,通过TEE预执行所述交易提案包括,通过TEE从本地读取所述查询结果,通过TEE对所述查询结果进行验证。
7.一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述装置部署于客户端节点,包括:
第二接收单元,配置为,从用户的用户设备接收对第一账本数据的查询,其中,所述用户不具有全量账本数据的查询权限;
确定单元,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
第一发送单元,配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述背书节点发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元,配置为,从所述背书节点接收对所述交易提案的预执行结果及TEE签名,其中,所述预执行结果中包括对所述第一账本数据的查询结果。
8.根据权利要求7所述的装置,还包括:验证单元,配置为,在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,对所述TEE签名进行验证。
9.根据权利要求7所述的装置,还包括:
第二发送单元,配置为,在从所述背书节点接收对所述交易提案的预执行结果及TEE签名之后,将所述预执行结果及TEE签名发送给所述用户设备。
10.根据权利要求7所述的装置,其中,所述第一账本数据为区块数据或交易数据。
11.一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和背书节点,所述背书节点中包括TEE,所述装置部署于所述背书节点,包括:
接收单元,配置为,从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
预执行单元,配置为,通过TEE预执行所述交易提案,以获取对所述交易提案的预执行结果,其中,所述预执行结果中包括对所述第一账本数据的查询结果;所述预执行单元包括,确定子单元,配置为,通过TEE确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,第一读取子单元,配置为,在确定所述发起账户具有对所述第一账本数据的查询权限的情况中,通过TEE从本地读取所述查询结果,其中,所述发起账户不具有全量账本数据的查询权限;
签名单元,配置为,通过TEE对所述预执行结果签名;
发送单元,配置为,将所述预执行结果及所述签名发送给所述客户端节点。
12.根据权利要求11所述的装置,其中,所述预执行单元包括,第二读取子单元,配置为,通过TEE从本地读取所述查询结果,验证子单元,配置为,通过TEE对所述查询结果进行验证。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-6中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-6中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110340135.2A CN112734431B (zh) | 2021-03-30 | 2021-03-30 | 查询Fabric区块链账本数据的方法和装置 |
PCT/CN2022/081734 WO2022206437A1 (zh) | 2021-03-30 | 2022-03-18 | 查询Fabric区块链账本数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110340135.2A CN112734431B (zh) | 2021-03-30 | 2021-03-30 | 查询Fabric区块链账本数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112734431A CN112734431A (zh) | 2021-04-30 |
CN112734431B true CN112734431B (zh) | 2021-06-25 |
Family
ID=75596197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110340135.2A Active CN112734431B (zh) | 2021-03-30 | 2021-03-30 | 查询Fabric区块链账本数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112734431B (zh) |
WO (1) | WO2022206437A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732801B (zh) * | 2021-03-30 | 2021-08-20 | 支付宝(杭州)信息技术有限公司 | 查询Fabric区块链账本数据的方法和装置 |
CN112734431B (zh) * | 2021-03-30 | 2021-06-25 | 支付宝(杭州)信息技术有限公司 | 查询Fabric区块链账本数据的方法和装置 |
CN115001719B (zh) * | 2022-08-04 | 2023-01-03 | 树根格致科技(湖南)有限公司 | 隐私数据处理系统、方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110266659A (zh) * | 2019-05-31 | 2019-09-20 | 联想(北京)有限公司 | 一种数据处理方法和设备 |
CN110933108A (zh) * | 2019-09-26 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 |
CN111565204A (zh) * | 2020-07-16 | 2020-08-21 | 百度在线网络技术(北京)有限公司 | 区块链运行方法、装置、设备及存储介质 |
CN111629039A (zh) * | 2020-05-20 | 2020-09-04 | 中国银联股份有限公司 | 一种区块链共识方法及客户端、背书节点、排序节点 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241590A (zh) * | 2018-11-29 | 2020-06-05 | 华为技术有限公司 | 一种数据库系统、节点和方法 |
CN111614464B (zh) * | 2019-01-31 | 2023-09-29 | 创新先进技术有限公司 | 区块链中安全更新密钥的方法及节点、存储介质 |
CN111475829A (zh) * | 2019-11-08 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 基于区块链账户的隐私数据查询方法及装置 |
CN112734431B (zh) * | 2021-03-30 | 2021-06-25 | 支付宝(杭州)信息技术有限公司 | 查询Fabric区块链账本数据的方法和装置 |
-
2021
- 2021-03-30 CN CN202110340135.2A patent/CN112734431B/zh active Active
-
2022
- 2022-03-18 WO PCT/CN2022/081734 patent/WO2022206437A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110266659A (zh) * | 2019-05-31 | 2019-09-20 | 联想(北京)有限公司 | 一种数据处理方法和设备 |
CN110933108A (zh) * | 2019-09-26 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 |
CN111629039A (zh) * | 2020-05-20 | 2020-09-04 | 中国银联股份有限公司 | 一种区块链共识方法及客户端、背书节点、排序节点 |
CN111565204A (zh) * | 2020-07-16 | 2020-08-21 | 百度在线网络技术(北京)有限公司 | 区块链运行方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022206437A1 (zh) | 2022-10-06 |
CN112734431A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112734431B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN108111314B (zh) | 数字证书的生成和校验方法及设备 | |
WO2018177093A1 (zh) | 区块链处理方法、记账节点、验证节点及存储介质 | |
US8006084B2 (en) | Apparatus and method for managing plurality of certificates | |
CN108769230B (zh) | 交易数据存储方法、装置、服务器及存储介质 | |
CN105701372A (zh) | 一种区块链身份构建及验证方法 | |
CN112737782B (zh) | 提供跨链消息的方法和装置 | |
CN110942302A (zh) | 一种区块链凭证撤销、验证方法、签发节点、验证节点 | |
WO2022206431A1 (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN111314172A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN111401904B (zh) | 联盟链中的共识方法和系统 | |
CN113536284A (zh) | 一种数字证书的验证方法、装置、设备和存储介质 | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN113420277B (zh) | 基于智能合约的数字身份管理和验证方法 | |
CN115664655A (zh) | 一种tee可信认证方法、装置、设备及介质 | |
CN112732801B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN110958598B (zh) | 一种移动终端和sim卡的绑定认证方法和装置 | |
CN110910110A (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN111737766B (zh) | 一种在区块链中判断数字证书签名数据合法性的方法 | |
CN109981650B (zh) | 区块链中通证的转移方法及系统 | |
CN109063461B (zh) | 一种第三方免密登录方法及系统 | |
CN106161037A (zh) | 数字签名方法及装置 | |
CN109698750A (zh) | 区块链的区块生成方法、装置、设备及可读存储介质 | |
CN113472544B (zh) | 一种数字身份验证方法、装置、计算机设备和存储介质 | |
CN115426106A (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 |