CN112732799B - 查询Fabric区块链账本数据的方法和装置 - Google Patents
查询Fabric区块链账本数据的方法和装置 Download PDFInfo
- Publication number
- CN112732799B CN112732799B CN202110339686.7A CN202110339686A CN112732799B CN 112732799 B CN112732799 B CN 112732799B CN 202110339686 A CN202110339686 A CN 202110339686A CN 112732799 B CN112732799 B CN 112732799B
- Authority
- CN
- China
- Prior art keywords
- query
- node
- transaction
- endorsement
- 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
- 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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Marketing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Signal Processing (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种查询Fabric区块链账本数据的方法和装置,所述Fabric区块链中预设有至少一个背书节点,所述方法由链下设备执行,包括:向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;从所述至少一个背书节点分别接收查询结果,以获取所述第一账本数据。
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区块链中包括客户端节点和至少一个背书节点,所述方法由客户端节点执行,包括:
向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
从所述至少一个背书节点分别接收查询结果,以获取所述第一账本数据。
在一种实施方式中,从所述至少一个背书节点分别接收查询结果包括,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及各个背书节点对所述预执行结果的签名,其中,所述预执行结果中包括所述查询结果,所述方法还包括:对各个背书节点的签名进行验证。
在一种实施方式中,所述方法还包括:
在向所述至少一个背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询请求;
确定所述用户是否具有对所述第一账本数据的查询权限;
所述向所述至少一个背书节点分别发送交易提案包括,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案。
在一种实施方式中,所述Fabric区块链中包括至少两个背书节点,所述方法还包括,从所述至少一个背书节点分别接收查询结果之后,基于预定背书策略确定各个查询结果的真实性。
在一种实施方式中,基于预定背书策略确定各个查询结果的真实性包括,在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
在一种实施方式中,所述方法还包括:
在确定所述至少两个查询结果中包括真实查询结果的情况中,将所述真实查询结果及相应的背书节点的签名发送给所述用户设备。
在一种实施方式中,所述方法还包括:
在确定所述至少两个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,将所述真实查询结果及所述第一签名发送给所述用户设备。
在一种实施方式中,所述第一账本数据为区块数据或交易数据。
本说明书另一方面提供一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述方法由背书节点执行,包括:
从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
预执行所述交易提案,以获取所述查询结果;
将所述查询结果发送给所述客户端节点。
在一种实施方式中,预执行所述交易提案包括,确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,在确定所述发起账户具有查询权限的情况中,从本地读取所述查询结果。
本说明书另一方面提供一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述装置部署于客户端节点,包括:
第一发送单元,配置为,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元,配置为,从所述至少一个背书节点分别接收查询结果,以获取所述第一账本数据。
在一种实施方式中,所述第一接收单元还配置为,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及各个背书节点对所述预执行结果的签名,其中,所述预执行结果中包括所述查询结果,所述装置还包括:验证单元,配置为,对各个背书节点的签名进行验证。
在一种实施方式中,所述装置还包括:
第二接收单元,配置为,在向所述至少一个背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询请求;
第一确定单元,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
所述第一发送单元还配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案。
在一种实施方式中,所述Fabric区块链中包括至少两个背书节点,所述装置还包括,第二确定单元,配置为,从所述至少一个背书节点分别接收查询结果之后,基于预定背书策略确定各个查询结果的真实性。
在一种实施方式中,所述第二确定单元还配置为,在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
在一种实施方式中,所述装置还包括:
第二发送单元,配置为,在确定所述至少两个查询结果中包括真实查询结果的情况中,将所述真实查询结果及相应的背书节点的签名发送给所述用户设备。
在一种实施方式中,所述装置还包括:
签名单元,配置为,在确定所述至少两个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,第三发送单元,配置为,将所述真实查询结果及所述第一签名发送给所述用户设备。
本说明书另一方面提供一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述装置部署于背书节点,包括:
接收单元,配置为,从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
预执行单元,配置为,预执行所述交易提案,以获取所述查询结果;
发送单元,配置为,将所述查询结果发送给所述客户端节点。
在一种实施方式中,所述预执行单元包括,确定子单元,配置为,确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,读取子单元,配置为,在确定所述发起账户具有查询权限的情况中,从本地读取所述查询结果。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的Fabric区块链查询方案,查询发起方可快速高效地获取链上账本数据并可验证该账本数据的真实性,而无需运行独立的对等节点以及等待对等节点同步验证多个区块,大大节省了查询时间,另外,查询发起方只需要获取目标区块或交易的数据授权即可进行所述查询,而不需要获取全量账本授权。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示意示出新启动的对等节点的查询操作过程;
图2示出根据本说明书实施例的Fabric区块链查询系统的示意图;
图3示出根据本说明书实施例的一种查询Fabric区块链账本数据的方法流程图;
图4示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图;
图5示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图;
图6示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置600;
图7示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置700。
具体实施方式
下面将结合附图描述本说明书实施例。
图2示出根据本说明书实施例的Fabric区块链查询系统的示意图。如图2中所示,所述查询系统中包括用户设备21、管理设备22和Fabric区块链23。其中,用户设备21可以为Fabric区块链的链下设备,其可以为Fabric区块链的使用用户的设备,其它区块链的节点设备、或者用于在多个区块链之间中转消息的中继器的设备等等,在此不作限定。管理设备22向用户设备21提供对Fabric区块链的账本数据的查询服务。管理设备22本身是Fabric区块链的具有账本数据查询权限的客户端节点。Fabric区块链23在图2中示意示出为包括对等节点1-4。
在执行本说明书实施例提供的方法之前,管理设备22从Fabric区块链23的多个对等节点中选取一个或多个对等节点作为背书节点,例如选择节点1、节点2和节点3作为背书节点。管理设备22在进行该选择之后分别通知节点1、节点2和节点3,从而使得节点1-节点3分别开启背书节点权限。同时,管理设备22记录节点1-节点3的连接信息和公钥信息。用户设备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的查询权限之后,向预先确定的背书节点(节点1-节点3)发送交易提案(例如交易A提案)用于对区块n中的交易m进行查询。节点1-节点3在接收到交易A提案之后,分别在其本地的账本数据中查询到区块n中的交易m的交易数据和该交易m的执行状态作为查询结果,基于该查询结果生成交易A的预执行结果,对交易A的预执行结果进行签名,并将交易A的预执行结果及其签名发送给管理设备22。管理设备22在接收到节点1-节点3对交易A的预执行结果和签名之后,基于预定背书策略确定各个查询结果中的真实数据,并将该真实数据提供给用户设备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,但是并不将获取的交易执行结果存入本地账本中。具体是,节点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验证查询结果。
管理设备22在从节点1-3分别接收到各个读写集及其签名之后,首先使用预先记录的节点1-3各自的公钥对各个签名进行验证。
在签名验证通过之后,管理设备22还基于预设的背书策略来验证各个读写集中包括的查询结果是否为交易m的真实数据。在一种实施方式中,管理设备22中可预设一致性阈值,该一致性阈值用于限定多个查询结果中的最少相同查询结果个数,从而通过该一致性阈值来确定查询结果的真实性。例如,所述一致性阈值可设定为2/3,即,对于3个查询结果,如果其中至少2个查询结果是相同的,则可确定该2个查询结果为真实查询结果,如果该3个查询结果中相同查询结果的总数小于2个(即3个查询结果互不相同),则可确定该3个查询都不是真实的。
在一种实施方式中,管理设备22可基于各个背书节点的可信程度来确定背书策略,例如,节点1的可信程度较高,可设定,只要节点1与任一另一个节点的查询结果相同,则可认为节点1的查询结果是真实的,节点2的可信程度较低,则可以设定,仅在节点2与节点1、节点3的查询结果都相同的情况中,才可以认为节点2的查询结果是真实的。
在步骤S314,管理设备22将账本数据返回给用户设备21。
管理设备22在确定查询结果1-查询结果3中的真实查询结果之后,即交易m的交易内容和交易m的执行状态,将该真实查询结果返回给用户设备21。
在一种实施方式中,管理设备22例如确定查询结果1和查询结果3都为真实查询结果,即,查询结果1与查询结果3是相同的,从而,管理设备22可将该真实查询结果和节点1和节点3的任一个对所述真实查询结果的签名发送给用户设备21,从而用户设备21可通过验证查询结果的签名确定查询结果数据是否未经篡改。
在一种实施方式中,管理设备在确定真实查询结果之后,可使用自己的私钥对该真实查询结果进行签名,并将真实查询结果及管理设备的签名发送给用户设备21,从而用户设备21可通过使用预先存储的管理设备22的公钥验证管理设备的签名,以确保查询结果的真实性。
图4示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图。
图4所示方法与图3所示方法不同在于,用户设备21可以不通过管理设备22,而是直接通过向Fabric区块链的对等节点发送交易提案,从而获取账本数据。在执行该方法之前,Fabric区块链中将节点1-节点3设定为背书节点,用户1可以以账户1在各个背书节点(例如节点1-节点3)申请账本数据查询权限,并且用户设备21可预先获取各个背书节点的连接方式和公钥。
在进行上述准备工作之后,首先,在步骤S402,用户设备21向节点1-节点3分别发送交易提案,该交易提案用于调用该通道中提供的账本数据查询链码。该查询链码中调用背书节点中的qscc系统链码,以查询指定账本数据,例如查询区块n中的交易m。用户设备21例如通过用户1的账户1发送所述交易提案。
在步骤S404,节点1-节点3分别检查账户1的查询权限。
节点1-节点3在接收到上述交易提案之后,预执行所述交易提案,即预执行所述账本数据查询链码。以节点1为例,在该预执行过程中,节点1根据账本数据查询链码的代码首先检查账户1的查询权限。如上文所述的准备过程,各个节点对账户1授权查询权限,会在本地进行记录,例如,节点1-3中分别记录了账户1具有对交易m的查询权限。从而,节点1可在本地读取账户1的查询权限,以检查账户1是否具有对交易m的查询权限。
如果节点1确定账户1不具有对交易m的查询权限,则对账本数据查询链码的预执行结束,并返回“查询失败”,从而节点1对上述交易的预执行结束,并将该预执行结果及对其的签名发送给用户设备21。
在步骤S406,节点1、节点2和节点3分别获取查询结果。
接着上文中节点1对账本数据查询链码的预执行过程,如果节点1确定账户1具有对交易m的查询权限,则根据账本数据查询链码中对qscc系统链码的调用,执行qscc系统链码,从而从本地账本中读取交易m的交易内容及执行状态作为查询结果1,在该预执行过程的读写集中记录该查询结果1,并对该预执行过程中的读写集进行签名。
节点2和节点3分别与节点1类似地获取查询结果2和查询结果3。
在步骤S408,节点1-节点3分别将其查询结果返回给用户设备21。
也就是说,节点1-节点3分别将其预执行所述交易获取的读写集以及相应的签名返回给用户设备21,其中,各个读写集中分别包括查询结果1-查询结果3。
在步骤S410,用户设备21验证查询结果。
该验证过程可上文中对步骤S312的描述,在此不再赘述。
图5示出根据本说明书另一实施例的一种查询Fabric区块链账本数据的方法流程图。图5所示方法与图3所示方法不同在于,在图5所示方法中,管理设备22只将交易提案发送给一个对等节点(即节点1),在该情况中,管理设备22认为节点1为可信节点,因此,直接将从节点1接收的查询结果认为是真实的,而不需要如图所示方法那样,从多个节点接收到多个查询结果,并对多个查询结果进行一致性验证。
在图5中,步骤S502-步骤S510和步骤S514可参考上文对步骤S302-步骤S310和步骤S314的描述,在此不再详述。
在步骤S512中,管理设备22验证由节点1发送的查询结果。
具体是,与上文描述类似地,管理设备22在从节点1接收到对所述交易提案的预执行读写集和节点1对所述读写集的签名之后,使用节点1的公钥对所述签名进行验证,在验证通过之后,可确定所述查询结果为真实的。
图6示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置600,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述装置部署于客户端节点,包括:
第一发送单元61,配置为,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
第一接收单元62,配置为,从所述至少一个背书节点分别接收查询结果,以获取所述第一账本数据。
在一种实施方式中,所述第一接收单元62还配置为,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及各个背书节点对所述预执行结果的签名,其中,所述预执行结果中包括所述查询结果,所述装置600还包括:验证单元63,配置为,对各个背书节点的签名进行验证。
在一种实施方式中,所述装置600还包括:
第二接收单元64,配置为,在向所述至少一个背书节点分别发送交易提案之前,从用户的用户设备接收对所述第一账本数据的查询请求;
第一确定单元65,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
所述第一发送单元还配置为,在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送所述交易提案。
在一种实施方式中,所述Fabric区块链中包括至少两个背书节点,所述装置600还包括,第二确定单元66,配置为,从所述至少一个背书节点分别接收查询结果之后,基于预定背书策略确定各个查询结果的真实性。
在一种实施方式中,所述第二确定单元66还配置为,在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
在一种实施方式中,所述装置600还包括:
第二发送单元67,配置为,在确定所述至少两个查询结果中包括真实查询结果的情况中,将所述真实查询结果及相应的背书节点的签名发送给所述用户设备。
在一种实施方式中,所述装置600还包括:
签名单元68,配置为,在确定所述至少两个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,第三发送单元69,配置为,将所述真实查询结果及所述第一签名发送给所述用户设备。
图7示出根据本说明书实施例的一种查询Fabric区块链账本数据的装置700,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述装置部署于背书节点,包括:
接收单元71,配置为,从客户端节点接收交易提案,所述交易提案用于请求查询第一账本数据;
预执行单元72,配置为,预执行所述交易提案,以获取所述查询结果;
发送单元73,配置为,将所述查询结果发送给所述客户端节点。
在一种实施方式中,所述预执行单元72包括,确定子单元721,配置为,确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,读取子单元722,配置为,在确定所述发起账户具有查询权限的情况中,从本地读取所述查询结果。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的Fabric区块链查询方案,查询发起方可快速高效地获取链上账本数据并可验证该账本数据的真实性,而无需运行独立的对等节点以及等待对等节点同步验证多个区块,大大节省了查询时间,另外,查询发起方只需要获取目标区块或交易的数据授权即可进行所述查询,而不需要获取全量账本授权。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述方法由客户端节点执行,包括:
从用户的用户设备接收对第一账本数据的查询请求,其中,所述用户不具有全量账本数据的查询权限;
确定所述用户是否具有对所述第一账本数据的查询权限;
在确定所述用户具有对所述第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
从所述至少一个背书节点分别接收查询结果,以获取所述第一账本数据;
向所述用户设备返回所述第一账本数据。
2.根据权利要求1所述的方法,其中,从所述至少一个背书节点分别接收查询结果包括,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及各个背书节点对所述预执行结果的签名,其中,所述预执行结果中包括所述查询结果,所述方法还包括:对各个背书节点的签名进行验证。
3.根据权利要求1所述的方法,其中,所述Fabric区块链中包括至少两个背书节点,所述方法还包括,从所述至少一个背书节点分别接收查询结果之后,基于预定背书策略确定各个查询结果的真实性。
4.根据权利要求3所述的方法,其中,基于预定背书策略确定各个查询结果的真实性包括,在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
5.根据权利要求4中任一项所述的方法,还包括:
在确定所述至少两个查询结果中包括真实查询结果的情况中,将所述真实查询结果及相应的背书节点的签名发送给所述用户设备。
6.根据权利要求4中任一项所述的方法,还包括:
在确定所述至少两个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,将所述真实查询结果及所述第一签名发送给所述用户设备。
7.根据权利要求1所述的方法,其中,所述第一账本数据为区块数据或交易数据。
8.一种查询Fabric区块链账本数据的方法,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述方法由背书节点执行,包括:
从用户设备接收交易提案,所述交易提案用于请求查询第一账本数据;
确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,其中,所述发起账户不具有全量账本数据的查询权限;
在确定所述发起账户具有查询权限的情况中,预执行所述交易提案,以获取查询结果;
将所述查询结果发送给所述用户设备。
9.一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述装置部署于客户端节点,包括:
第一接收单元,配置为,从用户的用户设备接收对第一账本数据的查询请求,其中,所述用户不具有全量账本数据的查询权限;
第一确定单元,配置为,确定所述用户是否具有对所述第一账本数据的查询权限;
第一发送单元,配置为,在确定所述用户具有对第一账本数据的查询权限的情况下,向所述至少一个背书节点分别发送交易提案,所述交易提案用于请求查询第一账本数据;
第二接收单元,配置为,从所述至少一个背书节点分别接收查询结果,以获取所述第一账本数据;
返回单元,配置为,向所述用户设备返回所述第一账本数据。
10.根据权利要求9所述的装置,其中,所述第二接收单元还配置为,从所述至少一个背书节点分别接收对所述交易提案的预执行结果及各个背书节点对所述预执行结果的签名,其中,所述预执行结果中包括所述查询结果,所述装置还包括:验证单元,配置为,对各个背书节点的签名进行验证。
11.根据权利要求9所述的装置,其中,所述Fabric区块链中包括至少两个背书节点,所述装置还包括,第二确定单元,配置为,从所述至少一个背书节点分别接收查询结果之后,基于预定背书策略确定各个查询结果的真实性。
12.根据权利要求11所述的装置,其中,所述第二确定单元还配置为,在从所述至少两个背书节点接收的至少两个查询结果中确定相同查询结果的个数,从而确定各个查询结果的真实性。
13.根据权利要求12中任一项所述的装置,还包括:
第二发送单元,配置为,在确定所述至少两个查询结果中包括真实查询结果的情况中,将所述真实查询结果及相应的背书节点的签名发送给所述用户设备。
14.根据权利要求12中任一项所述的装置,还包括:
签名单元,配置为,在确定所述至少两个查询结果中包括真实查询结果的情况中,对所述真实查询结果进行签名以获取第一签名,第三发送单元,配置为,将所述真实查询结果及所述第一签名发送给所述用户设备。
15.根据权利要求9所述的装置,其中,所述第一账本数据为区块数据或交易数据。
16.一种查询Fabric区块链账本数据的装置,所述Fabric区块链中包括客户端节点和至少一个背书节点,所述装置部署于背书节点,包括:
接收单元,配置为,从用户设备接收交易提案,所述交易提案用于请求查询第一账本数据;
确定单元,配置为,确定所述交易提案的发起账户是否具有对所述第一账本数据的查询权限,其中,所述发起账户不具有全量账本数据的查询权限;
预执行单元,配置为,在确定所述发起账户具有查询权限的情况中,预执行所述交易提案,以获取所述查询结果;
发送单元,配置为,将所述查询结果发送给所述用户设备。
17.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-8中任一项的所述的方法。
18.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-8中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339686.7A CN112732799B (zh) | 2021-03-30 | 2021-03-30 | 查询Fabric区块链账本数据的方法和装置 |
PCT/CN2022/081706 WO2022206431A1 (zh) | 2021-03-30 | 2022-03-18 | 查询Fabric区块链账本数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339686.7A CN112732799B (zh) | 2021-03-30 | 2021-03-30 | 查询Fabric区块链账本数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732799A CN112732799A (zh) | 2021-04-30 |
CN112732799B true CN112732799B (zh) | 2021-11-02 |
Family
ID=75596192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110339686.7A Active CN112732799B (zh) | 2021-03-30 | 2021-03-30 | 查询Fabric区块链账本数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112732799B (zh) |
WO (1) | WO2022206431A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732799B (zh) * | 2021-03-30 | 2021-11-02 | 支付宝(杭州)信息技术有限公司 | 查询Fabric区块链账本数据的方法和装置 |
CN112732801B (zh) * | 2021-03-30 | 2021-08-20 | 支付宝(杭州)信息技术有限公司 | 查询Fabric区块链账本数据的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110233868A (zh) * | 2019-04-20 | 2019-09-13 | 北京工业大学 | 一种基于Fabric的边缘计算数据安全与隐私保护方法 |
CN110399373A (zh) * | 2019-06-26 | 2019-11-01 | 杭州慧牧科技有限公司 | 一种区块链账本存储系统、存储查询方法及删除方法 |
CN110933108A (zh) * | 2019-09-26 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 |
CN111629039A (zh) * | 2020-05-20 | 2020-09-04 | 中国银联股份有限公司 | 一种区块链共识方法及客户端、背书节点、排序节点 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874492B (zh) * | 2018-08-29 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、计算设备及系统 |
US11341121B2 (en) * | 2019-01-22 | 2022-05-24 | International Business Machines Corporation | Peer partitioning |
CN110266659B (zh) * | 2019-05-31 | 2020-09-25 | 联想(北京)有限公司 | 一种数据处理方法和设备 |
CN110599069B (zh) * | 2019-09-29 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 基于区块链网络的应用评价方法及装置 |
CN112732799B (zh) * | 2021-03-30 | 2021-11-02 | 支付宝(杭州)信息技术有限公司 | 查询Fabric区块链账本数据的方法和装置 |
-
2021
- 2021-03-30 CN CN202110339686.7A patent/CN112732799B/zh active Active
-
2022
- 2022-03-18 WO PCT/CN2022/081706 patent/WO2022206431A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110233868A (zh) * | 2019-04-20 | 2019-09-13 | 北京工业大学 | 一种基于Fabric的边缘计算数据安全与隐私保护方法 |
CN110399373A (zh) * | 2019-06-26 | 2019-11-01 | 杭州慧牧科技有限公司 | 一种区块链账本存储系统、存储查询方法及删除方法 |
CN110933108A (zh) * | 2019-09-26 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 |
CN111629039A (zh) * | 2020-05-20 | 2020-09-04 | 中国银联股份有限公司 | 一种区块链共识方法及客户端、背书节点、排序节点 |
Also Published As
Publication number | Publication date |
---|---|
WO2022206431A1 (zh) | 2022-10-06 |
CN112732799A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112734431B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN110990408B (zh) | 基于区块链的业务信息协同方法、业务系统及联盟链 | |
CN109257427B (zh) | 一种基于区块链的业务处理方法及系统 | |
CN106453415B (zh) | 基于区块链的设备认证方法、认证服务器及用户设备 | |
CN109471865B (zh) | 一种离线数据管理方法、系统、服务器及存储介质 | |
CN112732799B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN110035059B (zh) | 一种区块链的构建方法与装置 | |
CN108769230B (zh) | 交易数据存储方法、装置、服务器及存储介质 | |
CN109981279B (zh) | 一种区块链系统、通信方法、装置、设备及介质 | |
CN110557420B (zh) | 一种独立子链的运行方法及系统 | |
CN105376220A (zh) | 一种业务实现方法、系统以及服务器 | |
CN111401904B (zh) | 联盟链中的共识方法和系统 | |
CN112737782B (zh) | 提供跨链消息的方法和装置 | |
EP4032228A1 (en) | Methods and devices for automated digital certificate verification | |
CN109302370A (zh) | 一种客户端验证方法、终端和服务器 | |
CN113141340B (zh) | 多节点认证方法及装置 | |
CN111260470A (zh) | 一种混合区块链架构系统及处理方法 | |
CN109245897A (zh) | 一种基于非交互的零知识证明的节点认证方法和装置 | |
CN112734410B (zh) | 一种在Fabric区块链中预执行链码的方法和装置 | |
CN112732801B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN103559430B (zh) | 基于安卓系统的应用账号管理方法和装置 | |
CN112950180A (zh) | 一种基于联盟链的通证方法、系统、电子设备及存储介质 | |
CN107451800A (zh) | 一种虚拟资源转移方法及装置,电子设备 | |
CN115412253B (zh) | 基于区块链技术的数字证书制备方法 | |
CN111292088A (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 |