CN113505138A - 区块链系统中状态证明及执行区块的方法及装置 - Google Patents
区块链系统中状态证明及执行区块的方法及装置 Download PDFInfo
- Publication number
- CN113505138A CN113505138A CN202111040896.2A CN202111040896A CN113505138A CN 113505138 A CN113505138 A CN 113505138A CN 202111040896 A CN202111040896 A CN 202111040896A CN 113505138 A CN113505138 A CN 113505138A
- Authority
- CN
- China
- Prior art keywords
- block
- state
- target
- verified
- 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.)
- Granted
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供一种区块链系统中状态证明及执行区块方法及装置,根据该方法,由于区块链可以包括存储历史状态数据的第一状态数据库,在第一状态数据库中可以直接以键‑值的形式存储区块链中已执行完成的区块中所涉及的各个参数的各个历史写入状态,及各个历史写入状态各自对应的版本号。因此,在读取或写入参数的状态时,IO操作的次数仅为一次,同时,还能实现快速查询历史状态。并且,对查询的结果进行存在性证明,从而避免了恶意的区块链节点篡改数据或者故意返回错误的查询结果的情况。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,特别涉及一种区块链系统中状态证明及执行区块的方法及装置。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
目前来说,以太坊区块链将世界状态以树的形式进行存储。虽然可以实现历史状态的查询,但读取或写入状态时,需要多次IO操作。而Hyperledger Fabric区块链(简称Fabric区块链)仅维护最新的世界状态,历史状态则被存入区块数据库中。
发明内容
本说明书一个或多个实施例提供一种区块链系统中状态证明及执行区块的方法及装置。
根据第一方面,提供一种区块链系统中的状态证明方法,所述方法包括::
区块链节点针对目标参数在目标区块的目标状态,确定待验证区块;
所述区块链节点基于第一状态数据库中所述待验证区块的状态更新数据,获取所述目标状态的证明数据,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
所述区块链节点将所述证明数据发送给所述区块链的链下设备;
所述链下设备获取所述待验证区块的区块头中包括的状态哈希根;所述状态哈希根基于所述待验证区块的状态更新数据得到;
所述链下设备基于所述证明数据和所述状态哈希根,对所述目标状态进行验证。
根据第二方面,提供一种区块链系统中的状态证明方法,由区块链节点执行,所述方法包括:
针对目标参数在目标区块的目标状态,确定待验证区块;
基于第一状态数据库中所述待验证区块的状态更新数据,获取所述目标状态的证明数据,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
将所述证明数据发送给所述区块链的链下设备,以使所述链下设备基于所述证明数据和所述待验证区块的区块头中包括的状态哈希根对所述目标状态进行验证;所述状态哈希根基于所述待验证区块的状态更新数据得到。
根据第三方面,提供一种区块链系统中的状态证明方法,由链下设备执行,所述方法包括:
从区块链节点接收目标状态的证明数据,所述目标状态为所述区块链节点提供的目标参数在目标区块的状态,所述证明数据基于待验证区块的状态更新数据获取,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
获取所述待验证区块的区块头中包括的状态哈希根;所述状态哈希根基于所述待验证区块的状态更新数据得到;
基于所述证明数据和所述状态哈希根,对所述目标状态进行验证。
根据第四方面,提供一种在区块链系统中执行区块的方法,所述方法由区块链节点执行,所述区块链节点存储第一状态数据库,所述方法包括:
执行区块,获取所述区块的状态更新数据;所述状态更新数据包括在所述区块写入的各个参数各自对应的写入状态和版本号;
将所述状态更新数据以及所述区块的区块标识关联地存入所述第一状态数据库;
利用预设的哈希算法对所述状态更新数据进行计算,得到状态哈希根;
将所述状态哈希根写入所述区块的区块头。
根据第五方面,提供一种区块链系统中的状态证明装置,部署于区块链节点,所述装置包括:
确定模块,用于针对目标参数在目标区块的目标状态,确定待验证区块;
获取模块,用于基于所述第一状态数据库中所述待验证区块的状态更新数据,获取所述目标状态的证明数据,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
发送模块,用于将所述证明数据发送给所述区块链的链下设备,以使所述链下设备基于所述证明数据和所述待验证区块的区块头中包括的状态哈希根对所述目标状态进行验证;所述状态哈希根基于所述待验证区块的状态更新数据得到。
根据第六方面,提供一种区块链系统中的状态证明装置,部署于链下设备,所述装置包括:
第一接收模块,用于从区块链节点接收目标状态的证明数据;所述目标状态为所述区块链节点提供的目标参数在目标区块的状态;所述证明数据基于待验证区块的状态更新数据获取;所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
获取模块,用于获取所述待验证区块的区块头中包括的状态哈希根;所述状态哈希根基于所述待验证区块的状态更新数据得到;
第一验证模块,用于基于所述证明数据和所述状态哈希根对所述目标状态进行验证。
根据第七方面,提供一种在区块链系统中执行区块的装置,所述装置部署于区块链节点,所述区块链节点存储第一状态数据库,所述装置包括:
获取模块,用于执行区块,获取所述区块的状态更新数据;所述状态更新数据包括在所述区块写入的各个参数各自对应的写入状态和版本号;
存储模块,用于将所述状态更新数据以及所述区块的区块标识关联地存入所述第一状态数据库;
计算模块,用于利用预设的哈希算法对所述状态更新数据进行计算得到状态哈希根;
写入模块,用于将所述状态哈希根写入所述区块的区块头。
根据第八方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面或第二方面或第三方面或第四方面中任一项所述的方法。
根据第九方面,提供一种及计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面或第二方面或第三方面或第四方面中任一项所述的方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书的实施例提供的区块链系统中状态证明及执行区块的方法和装置,在执行区块后,获取在该区块写入的各个参数各自对应的写入状态和版本号,作为该区块的状态更新数据,将该状态更新数据以及该区块的区块标识关联地存入第一状态数据库,使得该第一状态数据库存储写入的各个参数的历史状态数据。由于无需通过树结构来存储世界状态,因此,在读取参数的状态时,IO操作的次数也仅为一次(读取从树根到叶子节点的每一层,都需要一次磁盘IO操作)。在写入参数的状态时,也无需计算存储世界状态的树的树根,IO操作的次数也仅为一次。并且,本实施例通过利用预设哈希算法对该状态更新数据进行计算,得到状态哈希根,将该状态哈希根写入该区块的区块头。在状态证明的时候,将待证明的数据所需的验证数据找到,基于验证数据计算待验证哈希根,并将待验证哈希根与区块头里面的状态哈希根进行比较,从而验证待证明的数据是否为正确的数据。综上所述,本实施例的方案在读取或写入参数的状态时,IO操作的次数仅为一次,同时,还能快速地查询历史状态,并能够对查询的结果进行存在性证明,从而避免了恶意的区块链节点篡改数据或者故意返回错误的查询结果的情况。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本说明书根据一示例性实施例示出的一种区块链系统的架构图;
图2是本说明书根据一示例性实施例示出的一种在区块链系统中执行交易的方法的流程图;
图3a是本说明书根据一示例性实施例示出的一种初始的第一状态数据库和初始的第二状态数据库的示意图;
图3b是本说明书根据一示例性实施例示出的一种更新后的第一状态数据库和第二状态数据库的示意图;
图3c是本说明书根据一示例性实施例示出的一种第一状态数据库和第二状态数据库的示意图;
图4a是本说明书根据一示例性实施例示出的一种区块链系统中状态证明方法的流程图;
图4b是本说明书根据一示例性实施例示出的一种默克尔树的示意图;
图5是本说明书根据一示例性实施例示出的另一种区块链系统中状态证明方法的流程图;
图6是本说明书根据一示例性实施例示出的一种在区块链系统中执行区块的装置的框图;
图7是本说明书根据一示例性实施例示出的一种区块链系统中状态证明装置的框图;
图8本说明书根据一示例性实施例示出的另一种区块链系统中状态证明装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在已有的区块链技术中,由于世界状态的存储方式还不够完善,使得读取或写入状态时减少IO操作的次数和实现历史状态的查询两方面难以兼顾。例如,以太坊区块链将世界状态以树的形式进行存储。虽然可以实现历史状态的查询,但由于读取或写入状态时,从树的树根到叶子节点的每一层,都需要一次IO操作。因此,无法降低读取或写入状态时IO操作的次数。而Hyperledger Fabric区块链(简称Fabric区块链)仅维护最新的世界状态,历史状态则被存入区块数据库中。因此,虽然在读取或写入最新的状态时,IO操作的次数仅为一次,但无法快速地查询历史状态,并且不能快速提供状态的存在性证明。
在本说明书实施例提供的方案中,区块链可以包括存储历史状态数据的第一状态数据库,在第一状态数据库中可以直接以键-值的形式存储区块链中已执行完成的区块中所涉及的各个参数的各个历史写入状态,及各个历史写入状态各自对应的版本号。因此,在读取或写入参数的状态时,IO操作的次数仅为一次,同时,还能快速地查询历史状态。并且,对查询的结果进行存在性证明,从而避免了恶意的区块链节点篡改数据或者故意返回错误的查询结果的情况。
如图1所示,是根据一示例性实施例示出的一种区块链系统的架构图。
在图1示出的架构图中,节点1~节点6均为区块链系统中的区块链节点。可以理解,图1仅是示例性的示出6个区块链节点,实际上区块链系统中可以包括任意数目的区块链节点。
在区块链系统中,至少有一个区块链节点可以和链下设备(安装有客户端的设备,或者其它区块链系统的节点等)对接,接收链下设备发送的状态查询请求,该状态查询请求用于请求查询指定参数在指定历史区块的历史状态。该区块链节点可以先查询到该历史状态,并将该历史状态返回给链下设备。为了证明返回给链下设备的历史状态是正确的查询结果,该区块链节点可以进一步基于上述查询的情况,向链下设备提供针对上述历史状态的存在性证明。
如图2所示,图2是根据一示例性实施例示出的一种在区块链系统中执行区块的方法的流程图,该方法可以由区块链节点执行。该区块链节点可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。该方法包括以下步骤:
在步骤202中,执行区块,获取区块的状态更新数据。
在本实施例中,该区块为区块链系统中的任意一个区块,该区块的状态更新数据包括在该区块写入的各个参数的标识(即参数的键),各个参数各自对应的写入状态和版本号。需要说明的是,如果一个参数在该区块中被更新多次,就将最后一次更新对应的状态作为该参数在该区块的写入状态。例如,在该区块中涉及写入参数k的交易包括交易a和交易b,且交易a在交易b之前执行。那么,将执行完成交易b之后,参数k的写入状态作为参数k在该区块的写入状态。
在本实施例中,任一参数的写入状态对应的版本号可以表示在区块链中对该参数的写入次数。在一个区块中所涉及的任一写入的参数,无论在该区块中更新几次,均仅在区块链中写入一次。例如,区块1中所涉及的写入的参数k,若在区块1中更新一次,则在区块链中对参数k写入一次,若在区块1中更新三次,也在区块链中对参数k写入一次。
在步骤204中,将上述状态更新数据以及该区块的区块标识关联地存入第一状态数据库。
在本实施例中,区块链节点存储有第一状态数据库,该第一状态数据库可以用于记录在区块写入的各个参数的历史状态数据。可以将上述状态更新数据以及该区块的区块标识关联地存入该第一状态数据库。其中,可以将能够表示该区块的区块高度的标识作为该区块的区块标识,可以理解,本实施例对区块标识的具体形式方面不限定。
在本实施例中,可以先按照区块的先后顺序,存储各个区块各自的状态更新数据(同一个区块的状态更新数据存储在一起),得到状态更新列表。可选地,为了便于从第一状态数据库查找数据,还可以再分别记录各个写入参数的版本号和区块标识的映射关系,以及各条记录在状态更新列表中的位置索引(参见图3c)。
可选地,区块链还可以进一步包括第二状态数据库,该第二状态数据库可以用于存储写入的各个参数的最新状态数据,以便于执行交易时查找参数的最新状态数据。可以利用该状态更新数据更新第二状态数据库中各个参数的写入状态,使得第二状态数据库包括各个参数最新的状态。在本实施例中,还可以利用该状态更新数据更新第二状态数据库中各个参数的写入状态,使得第二状态数据库包括各个参数最新的状态。
在步骤206中,利用预设哈希算法对该状态更新数据进行计算,得到状态哈希根。
在本实施例中,可以利用预设的哈希算法对该状态更新数据进行计算,得到状态哈希根。例如,可以将该状态更新数据中各个参数的数据的哈希值作为默克尔树的叶子节点,按照预设的排列顺序计算默克尔树的树根,将默克尔树的树根对应的哈希值作为状态哈希根。可以理解,还可以按照其它的方式对该状态更新数据中各个参数的数据计算哈希,得到状态哈希根,本实施例对此方面不限定。其中,任一参数的数据可以至少包括该参数的标识,该参数的写入状态和版本号。
在步骤208中,将该状态哈希根写入该区块的区块头。
在本实施例中,可以将该状态哈希根写入该区块的区块头,从而防止第一状态数据库中的数据被篡改。
对于本实施例,为了便于理解,下面提供一个执行区块的具体应用实例:首先,区块链系统中的节点执行区块1(创世区块之后的区块),其中,执行区块1涉及的写入参数包括k1和k2,k1和k2各自对应的写入状态(执行完成区块1的最终写入状态)分别为d11和d21,针对d11和d21设定版本号均为v1。在执行完成区块1之后,可以得到区块1的状态更新数据,区块1的状态更新数据包括写入参数k1的写入状态d11、版本号v1和区块标识b0,以及写入参数k2的写入状态d21、版本号v1和区块标识b0(可以利用区块高度作为区块标识)。如图3a所示,可以基于区块1的状态更新数据,生成初始的第一状态数据库和初始的第二状态数据库。具体地,在第一状态数据库中,可以按照区块标识分别记录各个区块与各自的状态更新数据的映射关系,得到状态更新列表。可选地,还可以按照写入参数分别记录各个写入参数的版本号和区块标识的映射关系,以及各条记录在状态更新列表中的位置索引。
另外,利用指定的哈希算法对区块1的状态更新数据进行哈希计算,得到状态更新哈希值。例如,可以将区块1的状态更新数据中k1v1d11和k2v1d21的哈希值分别作为默克尔树的两个叶子节点,计算该默克尔树的树根,将该树根对应的哈希值作为状态哈希根。可以将区块1对应的状态哈希根写入区块1的区块头中,以便用于对区块1涉及的各个写入参数各自对应的写入状态进行验证。
接着,执行区块1的下一个区块(区块2),其中,执行区块2涉及的写入参数包括k1和k3,k1和k3各自对应的写入状态分别为d12和d31,针对d12和d31设定版本号分别为v2和v1(一个参数的状态写入一次,版本号增加一)。在执行完成区块2之后,可以得到区块2的状态更新数据,区块2的状态更新数据包括写入参数k1的写入状态d12、版本号v2和区块标识b1,以及写入参数k3的写入状态d31、版本号v1和区块标识b1。如图3b所示,可以基于区块2的状态更新数据,更新第一状态数据库和第二状态数据库。其中,可以直接将区块2的状态更新数据添加到第一状态数据库中,并利用区块2的状态更新数据中所涉及的各个写入参数的最新的写入状态,更新第二状态数据库中的写入状态数据,使得第二状态数据库包括各个参数各自对应的最新写入状态。并且,利用指定的哈希算法对区块2的状态更新数据进行哈希计算,得到区块2对应的状态哈希根,并将区块2对应的状态哈希根写入区块2的区块头中。
以此类推,其它区块执行完成之后,可以利用相同的方式更新第一状态数据库和第二状态数据库,得到状态哈希根,并将状态哈希根写入区块头中。
本实施例并不限于上述的应用实例,还可以应用到其他实例中。本说明书的上述实施例提供的在区块链系统中执行区块的方法,在执行区块后,获取在该区块写入的各个参数各自对应的写入状态和版本号,作为该区块的状态更新数据,将该状态更新数据以及该区块的区块标识关联地存入第一状态数据库,使得该第一状态数据库存储写入的各个参数的历史状态数据。由于无需通过树结构来存储世界状态,因此,在读取参数的状态时,IO操作的次数也仅为一次(读取从树根到叶子节点的每一层,都需要一次磁盘IO操作)。在写入参数的状态时,也无需计算存储世界状态的树的树根,IO操作的次数也仅为一次。并且,本实施例通过利用预设哈希算法对该状态更新数据进行计算,得到状态哈希根,将该状态哈希根写入该区块的区块头。在状态证明的时候,将待证明的数据所需的验证数据找到,基于验证数据计算待验证哈希根,并将待验证哈希根与区块头里面的状态哈希根进行比较,从而验证待证明的数据是否为正确的数据。综上所述,本实施例的方案在读取或写入参数的状态时,IO操作的次数仅为一次,同时,还能快速地查询历史状态,并能够对查询的结果进行存在性证明,从而避免了恶意的区块链节点篡改数据或者故意返回错误的查询结果的情况。
如图4a所示,图4a根据一示例性实施例示出的一种区块链系统中状态证明方法的流程图,该方法由区块链节点执行。该区块链的节点可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。该方法包括以下步骤:
在步骤402中,针对目标参数在目标区块的目标状态,确定待验证区块。
在本实施例中,该区块链节点存储有第一状态数据库,该第一状态数据库包括至少一个区块各自的状态更新数据,任一区块的状态更新数据包括在该区块写入的各个参数的标识,各个参数各自对应的写入状态和版本号。可以通过图2的实施例提供的执行区块的方式创建并更新该第一状态数据库。
在本实施例中,可以先从第一状态数据库查找目标参数在目标区块的目标状态,然后,可以基于查找的结果,确定待验证区块。其中,目标参数为待查询的参数,目标区块为已执行完成的历史区块。
参照图2提供的执行区块的应用实例,下面提供一个查找目标参数在目标区块的目标状态的应用实例:例如,当执行到区块20时,区块链系统中的节点A接收到链下设备查询历史状态的请求,并要求给出历史状态的存在性证明。该请求指示查询参数k1、k2、k3和k4分别在区块10的状态。具体来说,查询参数k1、k2、k3和k4分别在区块10的状态的过程如下:
如图3c所示,为执行到区块20时第一状态数据库和第二状态数据库存储的数据。可以从第二状态数据库读取参数k1、k2、k3和k4各自对应的最新版本号,分别为v9、v3、v5和v1。再基于参数k1、k2、k3和k4各自对应的最新版本号,分别查询参数k1、k2、k3和k4分别在区块10的状态。
针对参数k1,首先,可以从第一状态数据库中获取参数k1的数据(图3c中虚线框中的数据)。然后,基于参数k1对应的最新版本号v9,利用二分查找算法,从参数k1的数据中查找参数k1在区块10的状态,这样可以避免遍历数据,提高查询效率。例如,由于参数k1对应的最新版本号为v9(即第9次更新),版本号从v1-v9之间的中值为v5,因此,可以先查询到参数k1的版本号为v5时所对应的区块标识为b6,即该区块为区块6,在区块10之前。可以再选择版本号从v5-v9之间的中值v7,查询参数k1的版本号为v7时所对应的区块标识。以此类推,直至查找到参数k1在区块10的版本号为v8。然后,通过位置索引找到参数k1在区块10的状态为d18。节点A可以将v8d18作为查询结果返回给链下设备。
针对参数k2,可以从第一状态数据库中获取参数k2的数据,然后,基于参数k2对应的最新版本号v3,利用二分查找算法,从参数k2的数据中查找参数k2在区块10的状态。由于从参数k2的数据中未查找到区块10的标识b10,但查找到参数k2的最新版本号v3所对应的区块标识为b9,区块标识为b9的区块9在区块10之前。由此可知,区块10之前,在区块9对参数k2进行最新的写入更新。所以,参数k2在区块10的状态与参数k2在区块9的写入状态一致,可以将参数k2在区块9的写入状态作为参数k2在区块10的状态。具体地,可以通过位置索引找到参数k2在区块9的状态为d23。区块链系统中的节点A可以将v3d23作为查询结果返回给链下设备。
针对参数k3,可以从第一状态数据库中获取参数k3的数据,然后,基于参数k3对应的最新版本号v5,利用二分查找算法,从参数k3的数据中查找参数k3在区块10的状态。由于从参数k3的数据中未查找到区块10的标识b10,但查找到参数k3的版本号为v3时所对应的区块标识为b6,版本号为v4时所对应的区块标识为b12,由此可知,在区块6对参数k3进行写入更新后,下一次对参数k3的写入更新是在区块12。所以,参数k3在区块10的状态与参数k3在区块6的写入状态一致,可以将参数k3在区块6的写入状态作为参数k3在区块10的状态。具体地,可以通过位置索引找到参数k3在区块6的状态为d33。区块链系统中的节点A可以将v3d33作为查询结果返回给链下设备。
针对参数k4,可以从第一状态数据库中获取参数k4的数据,然后,基于参数k4对应的最新版本号v1,从参数k4的数据中查找参数k4在区块10的状态。由于从参数k4的数据中未查找到区块10的标识b10,但查找到参数k4的版本号为v1时所对应的区块标识为b11,由此可知,在区块10之后的区块11上首次写入参数k4。所以,参数k4在区块10的状态不存在。区块链中的节点A可以将空值作为查询结果返回给链下设备。
在本实施例中,在查找目标参数在目标区块的目标状态之后,可以进一步确定待验证区块,具体可以包括:子步骤412,在基于该第一状态数据库确定存在目标状态的情况下,至少将写入目标状态的第一区块确定为待验证区块;以及子步骤414,在基于该第一状态数据库确定不存在目标状态的情况下,将写入目标参数的首个写入状态的第二区块确定为待验证区块。
其中,在子步骤412中,在基于该第一状态数据库确定存在目标状态的情况下,确定写入目标状态的第一区块。该第一区块可以是目标区块之前的区块,也可以是目标区块。若确定第一区块为目标区块,则将第一区块确定为待验证区块。若确定第一区块在目标区块之前,且在目标区块之后未对目标参数的状态进行更新,则将第一区块确定为待验证区块。若确定第一区块在目标区块之前,且在目标区块之后的第三区块对目标参数的状态进行更新,将第一区块和第三区块确定为待验证区块。
其中,在子步骤414中,在基于该第一状态数据库确定不存在目标状态的情况下,确定写入目标参数的首个写入状态的第二区块,第二区块的状态更新数据中目标参数对应的版本号为首个版本号。然后,将第二区块作为待验证区块。
在步骤404中,基于第一状态数据库中待验证区块的状态更新数据,获取目标状态的证明数据。
在本实施例中,待验证区块的状态更新数据包括在待验证区块写入的各个参数各自对应的写入状态和版本号。其中,待验证区块可以有一个,也可以有两个,可以从第一状态数据库中获取每个待验证区块的状态更新数据,然后,基于每个待验证区块的状态更新数据,生成目标状态的证明数据,并将该证明数据发送给需要对目标状态进行验证的链下设备。链下设备可以基于每个待验证区块的区块头中包括的状态哈希根对目标状态进行验证。
具体来说,在一种实现方式中,可以直接将待验证区块的状态更新数据,作为目标状态的证明数据。在另一种实现方式中,还可以对每个待验证区块的状态更新数据进行处理,将处理后的数据作为目标状态的证明数据。例如,如图4b所示,A、B、C、D为待验证区块的状态更新数据,可以将A、B、C、D的哈希值作为默克尔树的叶子节点,计算默克尔树的树根。假设待验证区块为目标区块,查询结果包括A,则可以计算Hash(B)=hb和Hash(hc+hd)=hcd,并将hb和hcd作为证明数据。
可选的,在基于第一状态数据库确定存在目标状态的情况下,若确定第一区块在目标区块之前,且在目标区块之后未对目标参数的状态进行更新,则区块链节点可以指示区块链系统中除该区块链节点以外的其它区块链节点,针对目标状态提供带签名的证明数据。
具体来说,参照上面提供的查找目标状态的应用实例,下面提供一个获取证明数据的应用实例:
针对参数k1,由于在区块10写入了状态d18(即区块10对参数k1的状态进行了更新),因此,节点A可以将区块10作为待验证区块。获取待验证区块的状态更新数据,并基于该状态更新数据获取用于计算默克尔树根哈希的数据,从而得到针对查询结果v8d18的证明数据。其中,证明数据可以包括第一部分和第二部分,第一部分用于指示待验证区块的区块标识,第二部分用于计算待验证区块对应的待验证哈希根。例如,上述针对查询结果v8d18的证明数据的第一部分可以包括区块标识b10,第二部分可以包括k5v2d52的哈希值(也可以是k5v2d52等)。
针对参数k2,由于在区块9写入了状态d23,并且之后未对该状态进行更新(即区块9对参数k2的状态进行了更新),因此,节点A可以将区块9作为待验证区块。获取待验证区块的状态更新数据,基于该状态更新数据获取用于计算默克尔树根哈希的数据,从而得到针对查询结果v3d23的证明数据。例如,该证明数据的第一部分可以包括区块9的区块标识b9,第二部分可以包括k1v7d17的哈希值(也可以是k1v7d17等)。
针对参数k3,由于在区块6写入了状态d33,并且之后在区块12又对该状态进行了更新(即在区块10之前,区块6对参数k3的状态进行了更新,在区块10之后,在区块12对参数k3的状态进行了下一次更新),因此,节点A可以将区块6和区块12作为待验证的区块。获取待验证区块的状态更新数据,并基于该状态更新数据获取用于计算默克尔树根哈希的数据,从而得到针对查询结果v3d33的证明数据。例如,该证明数据的第一部分可以包括区块6和区块12分别对应的区块标识b6和b12,以及参数k3在区块6和区块12中分别对应的版本号v3和v4。第二部分可以包括区块6和区块12分别对应的用于计算默克尔树根哈希的数据。其中,区块6对应的用于计算默克尔树根哈希的数据可以包括k1v5d15,k2v2d22,和k6v1d61的哈希值,区块12对应的用于计算默克尔树根哈希的数据可以包括k3v4d34和k6v2d62的哈希值。
针对参数k4,由于写入目标参数的首个写入状态的区块为区块11(即针对目标参数,区块11对应的版本号为v1),则可以将区块11确定为待验证区块。节点A可以获取区块11的状态更新数据,并基于该状态更新数据获取用于计算默克尔树根哈希的数据,从而得到针对查询结果为空值的证明数据。例如,该证明数据的第一部分可以包括区块11的区块标识b11,以及参数k4在区块11中的版本号v1。第二部分可以包括k5v3d53的哈希值和d41。
在步骤406中,将证明数据发送给区块链的链下设备。
在本实施例中,区块链节点可以将证明数据发送给区块链的链下设备。以使链下设备基于证明数据和待验证区块的区块头中包括的状态哈希根对目标状态进行验证,该状态哈希根基于待验证区块的状态更新数据得到。
本说明书的上述实施例提供的区块链系统中状态证明方法,通过针对目标参数在目标区块的目标状态,确定待验证区块,并基于第一状态数据库中待验证区块的状态更新数据,提供目标状态的查询结果的证明数据。由于区块链可以包括存储历史状态数据的第一状态数据库,在第一状态数据库中可以直接存储区块链中已执行完成的区块中所涉及的各个参数的各个历史写入状态,及各个历史写入状态各自对应的版本号。并在各个区块的区块头中存储有基于该区块的状态更新数据得到的状态哈希根。因此,在读取或写入参数的状态时,IO操作的次数仅为一次,同时,还能实现历史状态的快速查询,并能够对查询的结果进行存在性证明,从而避免了恶意的区块链节点篡改数据或者故意返回错误的查询结果的情况。
如图5所示,图5根据一示例性实施例示出的一种区块链系统中状态证明方法的流程图,该方法由链下设备执行。该链下设备可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。该方法包括以下步骤:
在步骤502中,从区块链节点接收目标状态的证明数据。
在本实施例中,该目标状态为区块链节点提供的目标参数在目标区块的状态,该证明数据基于待验证区块的状态更新数据获取,该状态更新数据包括在该待验证区块写入的各个参数各自对应的写入状态和版本号。可以通过图4a的实施例提供的区块链系统中状态证明方法获取证明数据。
在步骤504中,获取待验证区块的区块头中包括的状态哈希根。
在本实施例中,链下设备可以从区块链系统查询并获取待验证区块的区块头中包括的状态哈希根,该状态哈希根为预先基于待验证区块的状态更新数据得到。具体来说,在一种实现方式中,链下设备可以直接通过查询区块数据的方式从区块链系统获取待验证区块的区块头中包括的状态哈希根。在另一种实现方式中,链下设备还可以从预先存储在本地的区块数据中获取待验证区块的区块头中包括的状态哈希根。可以理解,本实施例对获取该状态哈希根的具体方式方面不限定。
在步骤506中,基于上述证明数据和上述状态哈希根,对目标状态进行验证。
在本实施例中,在目标状态为非空值,且基于证明数据确定待验证区块的个数为一个的情况下,若确定待验证区块不在目标区块之后,则利用状态哈希根,对由证明数据及目标状态计算得到的待验证哈希根进行验证。若确定待验证区块在目标区块之后,则确定验证失败。
具体来说,如果链下设备得到的目标状态为非空值,并且,基于证明数据确定待验证区块的个数为一个的情况下,可以根据证明数据中待验证区块的信息,确定待验证区块与目标区块的关系。若待验证区块在目标区块之后,则说明区块链节点提供的目标状态有误或者证明数据有误,因此,确定验证失败。若待验证区块在目标区块之前,或者待验证区块为目标区块,则可以基于证明数据及目标状态,计算得到的待验证哈希根,并将待验证哈希根与状态哈希根进行比较。如果待验证哈希根与状态哈希根不同,则确定验证失败,说明区块链节点提供的目标状态有误或者证明数据有误。如果待验证哈希根与状态哈希根相同,则确定验证通过,说明区块链节点提供的目标状态正确。
在本实施例中,在目标状态为非空值,且基于证明数据确定待验证区块的个数为两个的情况下,若确定目标区块在两个待验证区块之间,并且两个待验证区块分别写入的目标参数的写入状态所对应的版本号相差1,则利用状态哈希根,对由证明数据及目标状态计算得到的待验证哈希根进行验证。若确定目标区块不在两个待验证区块之间,和/或两个待验证区块分别写入的目标参数的写入状态所对应的版本号相差不为1,则确定验证失败。
具体来说,如果链下设备得到的目标状态为非空值,并且,基于证明数据确定待验证区块的个数为两个的情况下,可以根据证明数据中待验证区块的信息,确定待验证区块与目标区块的关系,以及确定该两个待验证区块分别写入的目标参数的写入状态所对应的版本号之差。若两个待验证区块都在目标区块之前或之后,和/或版本号相差不是1,则说明区块链节点提供的目标状态有误或者证明数据有误,因此,确定验证失败。若目标区块在两个待验证区块之间,并且版本号相差1,则可以基于证明数据及目标状态,计算得到的待验证哈希根,并将待验证哈希根与状态哈希根进行比较。如果待验证哈希根与状态哈希根不同,则确定验证失败,说明区块链节点提供的目标状态有误或者证明数据有误。如果待验证哈希根与状态哈希根相同,则确定验证通过,说明区块链节点提供的目标状态正确。
在本实施例中,在目标状态为空值的情况下,若确定待验证区块在目标区块之后,且待验证区块写入的目标参数的写入状态所对应的版本号是1,则利用状态哈希根,对由证明数据计算得到的待验证哈希根进行验证。若确定待验证区块不在目标区块之后,和/或待验证区块写入的目标参数的写入状态所对应的版本号不是1,则确定验证失败。
具体来说,如果链下设备得到的目标状态为空值,可以根据证明数据中待验证区块的信息,确定待验证区块与目标区块的关系,以及确定该待验证区块写入的目标参数的写入状态所对应的版本号。若待验证区块不在目标区块之前,和/或版本号不是1,则说明区块链节点提供的目标状态有误或者证明数据有误,因此,确定验证失败。若待验证区块在目标区块之后,并且版本号是1,则可以基于证明数据计算待验证哈希根,并将待验证哈希根与状态哈希根进行比较。如果待验证哈希根与状态哈希根不同,则确定验证失败,说明区块链节点提供的目标状态有误或者证明数据有误。如果待验证哈希根与状态哈希根相同,则确定验证通过,说明区块链节点提供的目标状态正确。
可选地,在目标状态为非空值,且基于证明数据确定待验证区块的个数为一个,待验证区块在目标区块之前的情况下,链下设备还可以接收区块链系统中其它区块链节点提供的针对目标状态的带签名的证明数据,并利用带签名的证明数据对目标状态进行验证。如果全部或者预设数量的带签名的证明数据对目标状态进行验证均通过,则确定验证通过,说明区块链节点提供的目标状态正确。
具体来说,参照图4a实施例提供的获取证明数据的应用实例,下面提供一个对目标状态进行验证的应用实例:
针对参数k1,链下设备接收到对参数k1的查询结果v8d18及证明数据,由于查询结果指示存在k1在区块10的状态,所以,链下设备可以基于证明数据的第一部分确定待验证区块的个数,以及区块10和待验证区块的关系。从而确定是否需要进一步基于证明数据的第二部分进行验证。
具体来说,链下设备可以从证明数据的第一部分获取待验证区块的区块标识b10,从而确定待验证区块为区块10。因此,可以进一步从区块链中查询区块10的区块头中记录的状态哈希根。并从证明数据的第二部分获取k5v2d52的哈希值,然后,将查询结果k1v8d18和k5v2d52的哈希值作为默克尔树的两个叶子节点,计算根哈希。如果该根哈希与区块10的区块头中记录的状态哈希根相同,则说明节点A向链下设备返回的针对参数k1的查询结果v8d18是正确的。
针对参数k2,链下设备接收到对参数k2的查询结果v3d23及证明数据,由于查询结果指示存在k2在区块10的状态,所以,链下设备可以基于证明数据的第一部分确定待验证区块的个数,以及区块10和待验证区块的关系。从而确定是否需要进一步基于证明数据的第二部分进行验证。
由于此种情况,仅靠节点A提供的证明数据还并不足以证明查询结果的正确性,因此,节点A可以向区块链系统的其它多个节点发送联合验证的指示信息,以指示其它多个节点向链下设备提供携带各自签名的证明数据。该证明数据可以是用于证明参数k2的最新版本号为v3的证明数据,也可以是用于证明参数k2在区块10的状态为d23的证明数据等等。
具体来说,链下设备可以从证明数据的第一部分获取待验证区块的区块标识b9,从而确定待验证区块(区块9)在区块10之前。可以进一步从区块链中查询待验证区块9的区块头中记录的状态哈希根。并且,从证明数据的第二部分获取k1v7d17的哈希值,然后,将查询结果k2v3d23和k1v7d17的哈希值作为默克尔树的两个叶子节点,计算根哈希。如果该根哈希与区块9的区块头中记录的状态哈希根相同,则进一步获取区块链的其它多个节点发来的携带各自签名的证明数据。如果这些证明数据一致,并且能证明参数k2的最新版本号为v3,或者能证明参数k2在区块10的状态为d23等,则说明节点A向链下设备返回的查询结果v3d23是正确的。
针对参数k3,链下设备接收到对参数k3的查询结果v3d33及证明数据,由于查询结果指示存在k1在区块10的状态,所以,链下设备可以基于证明数据的第一部分确定待验证区块的个数,区块10和待验证区块的关系,以及参数k3在待验证区块中对应的版本号。从而确定是否需要进一步基于证明数据的第二部分进行验证。
具体来说,链下设备可以从证明数据的第一部分获取待验证区块的区块标识b6和b12,并确定待查询的区块10在待验证区块6和区块12之间。从第一部分获取参数k3在区块6和区块12中分别对应的版本号v3和v4,并确定这两个版本号相差为1。则可以进一步从区块链中分别查询区块6和区块12的区块头中记录的状态哈希根。然后,从证明数据的第二部分获取区块6和区块12分别对应的用于计算默克尔树根哈希的验证数据。基于查询结果k3v3d33和区块6对应的验证数据,计算第一根哈希。基于区块12对应的验证数据,计算第二根哈希。如果第一根哈希与区块6的区块头中记录的状态哈希根相同,第二根哈希与区块12的区块头中记录的状态哈希根相同,则说明节点A向链下设备返回的查询结果v3d33是正确的。
针对参数k4,链下设备接收到对参数k4的查询结果为空值及证明数据之后,由于查询结果指示不存在k4在区块10的状态,所以,可以基于证明数据的第一部分判断区块10是否在待验证区块之前,以及参数k4在待验证区块中的版本号是否是v1。如果区块10在待验证区块之前,并且参数k4在待验证区块中的版本号是v1,则可以进一步基于证明数据的第二部分进行验证。
具体来说,链下设备可以从证明数据的第一部分获取待验证区块的区块标识b11,并确定区块10在待验证区块11之后。从第一部分获取参数k4在区块11中对应的版本号v1。则可以进一步从区块链中查询区块11的区块头中记录的状态哈希根。然后,从证明数据的第二部分获取k5v3d53的哈希值和d41。将k5v3d53和k4v1d41的哈希值作为默克尔树的两个叶子节点,计算该默克尔树的根哈希。如果该根哈希与区块11的区块头中记录的状态哈希根相同,则说明节点A向链下设备返回的查询结果为空值是正确的。
为了便于理解,下面在上述应用实例的基础上,举例说明在节点A作恶情况下,无法向链下设备提供支持错误查询结果的状态证明。
在一种情况中,查询参数k2在区块10的状态,正确的查询结果应该是区块9对应的v3d23,但节点A将区块6对应的v2d22作为查询结果,返回给链下设备。同时,将区块6的区块标识b6以及基于区块6的状态更新数据得到的用于计算默克尔树根哈希的数据返回给链下设备。那么,虽然链下设备无法根据节点A返回的数据证明查询结果是错误的,但是,链下设备可以从区块链的其他节点获取携带节点签名的证明数据,这些证明数据或者可以证明参数k2当前的最新版本号是v3,从而指示上述查询结果是错误的。或者可以证明参数k2在区块10的状态值是d23,从而指示上述查询结果是错误的等等。因此,在这种情况下,节点A无法向链下设备提供支持错误查询结果的状态证明。
在另一种情况中,查询参数k3在区块10的状态,正确的查询结果应该是区块6对应的v3d33,但节点A将区块3对应的v2d32作为查询结果,返回给链下设备。同时,将区块3和区块6作为待验证区块,将区块标识b3和b6,版本号v2和v3以及基于区块3和区块6的状态更新数据得到的用于计算默克尔树根哈希的数据返回给链下设备。那么,由于有两个待验证区块,链下设备首先判断待查询的区块10是否在两个待验证区块之间,显然,区块10不在区块3和区块6之间。而如果节点A将区块3和区块12作为待验证区块,将区块标识b3和b12,版本号v2和v4以及基于区块3和区块6的状态更新数据得到的用于计算默克尔树根哈希的数据返回给链下设备。虽然,区块10不在区块3和区块12之间,但版本号v2和v4之间相差2。因此,在这种情况下,节点A也无法向链下设备提供支持错误查询结果的状态证明。
在又一种情况中,查询参数k4在区块10的状态,正确的查询结果应该是空值,但节点A将区块11对应的v1d41作为查询结果,返回给链下设备。同时,将区块11作为待验证区块,将区块标识b11,版本号v1以及基于区块11的状态更新数据得到的用于计算默克尔树根哈希的数据返回给链下设备。那么,由于有一个待验证区块,并且,查询结果不是空值,链下设备首先判断待查询的区块10是否是待验证区块,或者是否在待验证区块之后,显然,区块10在待验证区块11之前。因此,在这种情况下,节点A还是无法向链下设备提供支持错误查询结果的状态证明。
可以理解,除了上述列举的情况,节点作恶的情况还有很多种,在此不再赘述。
本说明书的上述实施例提供的区块链系统中状态证明方法,通过获取待验证区块的区块头中包括的状态哈希根,基于证明数据和该状态哈希根,对目标状态进行验证。由于区块链可以包括存储历史状态数据的第一状态数据库,在第一状态数据库中可以直接存储区块链中已执行完成的区块中所涉及的各个参数的各个历史写入状态,及各个历史写入状态各自对应的版本号。并在各个区块的区块头中存储有基于该区块的状态更新数据得到的状态哈希根。因此,在读取或写入参数的状态时,IO操作的次数仅为一次,同时,还能实现快速查询历史状态,并能够对查询的结果进行状态证明,从而避免了恶意的区块链节点篡改数据或者故意返回错误的查询结果的情况。
应当注意,尽管在上述的实施例中,以特定顺序描述了本说明书实施例的方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
与前述区块链系统中状态证明及执行区块方法实施例相对应,本说明书还提供了区块链系统中状态证明及执行区块装置的实施例。
如图6所示,图6是本说明书根据一示例性实施例示出的一种区块链系统中的状态证明装置框图,该装置部署于区块链节点,该装置可以包括:确定模块601,获取模块602和发送模块603。
其中,确定模块601,用于针对目标参数在目标区块的目标状态确定待验证区块。
获取模块602,用于基于该第一状态数据库中待验证区块的状态更新数据,获取目标状态的证明数据,该状态更新数据包括在待验证区块写入的各个参数各自对应的写入状态和版本号。
发送模块603,用于将证明数据发送给区块链的链下设备,以使链下设备基于证明数据和待验证区块的区块头中包括的状态哈希根对目标状态进行验证,该状态哈希根基于待验证区块的状态更新数据得到。
在一些实施方式中,确定模块601包括:第一确定子模块(图中未示出)。
其中,第一确定子模块,用于在基于该第一状态数据库确定存在目标状态的情况下,至少将写入目标状态的第一区块确定为待验证区块。
在另一些实施方式中,确定模块601还包括:第二确定子模块(图中未示出)。
其中,第二确定子模块,用于在基于该第一状态数据库确定不存在目标状态的情况下,将写入目标参数的首个写入状态的第二区块确定为待验证区块。
在另一些实施方式中,第一确定子模块被配置用于:若确定第一区块为目标区块,或者,若确定第一区块在目标区块之前,且在目标区块之后未对目标参数的状态进行更新,则将第一区块确定为待验证区块。若确定第一区块在目标区块之前,且在目标区块之后的第三区块对目标参数的状态进行更新,将第一区块和第三区块确定为待验证区块。
在另一些实施方式中,若确定第一区块在目标区块之前,且在目标区块之后未对目标参数的状态进行更新,该装置还可以包括:指示模块(图中未示出)。
其中,指示模块,用于指示区块链系统中除区块链节点以外的其它区块链节点,针对目标状态的提供带签名的证明数据。
应当理解,上述装置可以预先设置在区块链节点中,也可以通过下载等方式而加载到区块链节点中。上述装置中的相应模块可以与区块链节点中的模块相互配合以实现区块链系统中的状态证明方案。
如图7所示,图7是本说明书根据一示例性实施例示出的一种区块链系统中的状态证明装置框图,该装置部署于链下设备,该装置可以包括:第一接收模块701,获取模块702和第一验证模块703。
其中,第一接收模块701,用于从区块链节点接收目标状态的证明数据,该目标状态为区块链节点提供的目标参数在目标区块的状态,该证明数据基于待验证区块的状态更新数据获取,该状态更新数据包括在该待验证区块写入的各个参数各自对应的写入状态和版本号。
获取模块702,用于获取待验证区块的区块头中包括的状态哈希根,该状态哈希根基于待验证区块的状态更新数据得到。
第一验证模块703,用于基于证明数据和状态哈希根,对目标状态进行验证。
在一些实施方式中,第一验证模块703被配置用于:
在目标状态为非空值,且基于证明数据确定待验证区块的个数为一个的情况下,若确定待验证区块不在目标区块之后,则利用所述状态哈希根,对由证明数据及目标状态计算得到的待验证哈希根进行验证。若确定待验证区块在目标区块之后,则确定验证失败。
在另一些实施方式中,第一验证模块703还被配置用于:
在目标状态为非空值,且基于证明数据确定待验证区块的个数为两个的情况下,若确定目标区块在两个待验证区块之间,并且两个待验证区块分别写入的目标参数的写入状态所对应的版本号相差1,则利用状态哈希根,对由证明数据及目标状态计算得到的待验证哈希根进行验证。若确定目标区块不在两个待验证区块之间,和/或两个待验证区块分别写入的目标参数的写入状态所对应的版本号相差不为1,则确定验证失败。
在另一些实施方式中,第一验证模块703还被配置用于:
在目标状态为空值的情况下,若确定待验证区块在目标区块之后,且待验证区块写入的目标参数的写入状态所对应的版本号是1,则利用状态哈希根,对由证明数据计算得到的待验证哈希根进行验证。若确定待验证区块不在目标区块之后,和/或待验证区块写入的目标参数的写入状态所对应的版本号不是1,则确定验证失败。
在另一些实施方式中,在目标状态为非空值,且基于证明数据确定待验证区块的个数为一个,待验证区块在目标区块之前的情况下,该装置可以还包括:第二接收模块和第二验证模块(图中未示出)。
第二接收模块,用于接收区块链系统中除区块链节点以外的其它区块链节点提供的针对目标状态带签名的证明数据。
第二验证模块,用于利用带签名的证明数据对目标状态进行验证。
应当理解,上述装置可以预先设置在链下设备中,也可以通过下载等方式而加载到链下设备中。上述装置中的相应模块可以与链下设备中的模块相互配合以实现区块链系统中的状态证明方案。
如图8所示,图8是本说明书根据一示例性实施例示出的一种在区块链系统中执行区块的装置框图,该装置部署于区块链节点,该装置可以包括:获取模块801,存储模块802,计算模块803和写入模块804。
其中,获取模块801,用于执行区块,获取该区块的状态更新数据,该状态更新数据包括在该区块写入的各个参数各自对应的写入状态和版本号。
存储模块802,用于将该状态更新数据以及该区块的区块标识关联地存入第一状态数据库。
计算模块803,用于利用预设的哈希算法对该状态更新数据进行计算得到状态哈希根。
写入模块804,用于将该状态哈希根写入该区块的区块头。
应当理解,上述装置可以预先设置在区块链节点中,也可以通过下载等方式而加载到区块链节点中。上述装置中的相应模块可以与区块链节点中的模块相互配合以实现在区块链系统中执行区块的方案。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书一个或多个实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书一个或多个实施例还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图3至图5任一实施例提供的区块链系统中状态证明及执行区块方法。
本说明书一个或多个实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述图3至图5任一实施例提供的区块链系统中状态证明及执行区块方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (25)
1.一种区块链系统中的状态证明方法,所述方法包括:
区块链节点针对目标参数在目标区块的目标状态,确定待验证区块;
所述区块链节点基于第一状态数据库中所述待验证区块的状态更新数据,获取所述目标状态的证明数据,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
所述区块链节点将所述证明数据发送给所述区块链的链下设备;
所述链下设备获取所述待验证区块的区块头中包括的状态哈希根;所述状态哈希根基于所述待验证区块的状态更新数据得到;
所述链下设备基于所述证明数据和所述状态哈希根,对所述目标状态进行验证。
2.一种区块链系统中的状态证明方法,由区块链节点执行,所述方法包括:
针对目标参数在目标区块的目标状态,确定待验证区块;
基于第一状态数据库中所述待验证区块的状态更新数据,获取所述目标状态的证明数据,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
将所述证明数据发送给所述区块链的链下设备,以使所述链下设备基于所述证明数据和所述待验证区块的区块头中包括的状态哈希根对所述目标状态进行验证;所述状态哈希根基于所述待验证区块的状态更新数据得到。
3.根据权利要求2所述的方法,其中,所述针对目标参数在目标区块的目标状态,确定待验证区块,包括:
在基于所述第一状态数据库确定存在所述目标状态的情况下,至少将写入所述目标状态的第一区块确定为待验证区块。
4.根据权利要求3所述的方法,其中,所述针对目标参数在目标区块的目标状态,确定待验证区块,还包括:
在基于所述第一状态数据库确定不存在所述目标状态的情况下,将写入所述目标参数的首个写入状态的第二区块确定为待验证区块。
5.根据权利要求3所述的方法,其中,所述至少将写入所述目标状态的第一区块确定为待验证区块,包括:
若确定所述第一区块为所述目标区块,或者,若确定所述第一区块在所述目标区块之前,且在所述目标区块之后未对所述目标参数的状态进行更新,则将所述第一区块确定为待验证区块;
若确定所述第一区块在所述目标区块之前,且在所述目标区块之后的第三区块对所述目标参数的状态进行更新,将所述第一区块和所述第三区块确定为待验证区块。
6.根据权利要求5所述的方法,其中,若确定所述第一区块在所述目标区块之前,且在所述目标区块之后未对所述目标参数的状态进行更新,所述方法还包括:
指示所述区块链系统中除所述区块链节点以外的其它区块链节点,针对所述目标状态提供带签名的证明数据。
7.一种区块链系统中的状态证明方法,由链下设备执行,所述方法包括:
从区块链节点接收目标状态的证明数据,所述目标状态为所述区块链节点提供的目标参数在目标区块的状态,所述证明数据基于待验证区块的状态更新数据获取,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
获取所述待验证区块的区块头中包括的状态哈希根;所述状态哈希根基于所述待验证区块的状态更新数据得到;
基于所述证明数据和所述状态哈希根,对所述目标状态进行验证。
8.根据权利要求7所述的方法,其中,所述基于所述证明数据和所述状态哈希根,对所述目标状态进行验证,包括:
在所述目标状态为非空值,且基于所述证明数据确定所述待验证区块的个数为一个的情况下,若确定所述待验证区块不在所述目标区块之后,则利用所述状态哈希根,对由所述证明数据及所述目标状态计算得到的待验证哈希根进行验证;
若确定所述待验证区块在所述目标区块之后,则确定所述验证失败。
9.根据权利要求8所述的方法,其中,所述基于所述证明数据和所述状态哈希根,对所述目标状态进行验证,还包括:
在所述目标状态为非空值,且基于所述证明数据确定所述待验证区块的个数为两个的情况下,若确定所述目标区块在两个所述待验证区块之间,并且两个所述待验证区块分别写入的所述目标参数的写入状态所对应的版本号相差1,则利用所述状态哈希根,对由所述证明数据及所述目标状态计算得到的待验证哈希根进行验证;
若确定所述目标区块不在两个所述待验证区块之间,和/或两个所述待验证区块分别写入的所述目标参数的写入状态所对应的版本号相差不为1,则确定所述验证失败。
10.根据权利要求8所述的方法,其中,所述基于所述证明数据和所述状态哈希根,对所述目标状态进行验证,还包括:
在所述目标状态为空值的情况下,若确定所述待验证区块在所述目标区块之后,且所述待验证区块写入的所述目标参数的写入状态所对应的版本号是1,则利用所述状态哈希根,对由所述证明数据计算得到的待验证哈希根进行验证;
若确定所述待验证区块不在所述目标区块之后,和/或所述待验证区块写入的所述目标参数的写入状态所对应的版本号不是1,则确定所述验证失败。
11.根据权利要求8所述的方法,其中,在所述目标状态为非空值,且基于所述证明数据确定所述待验证区块的个数为一个,所述待验证区块在所述目标区块之前的情况下,还包括:
接收所述区块链系统中除所述区块链节点以外的其它区块链节点提供的针对所述目标状态带签名的证明数据;
利用所述带签名的证明数据对所述目标状态进行验证。
12.一种在区块链系统中执行区块的方法,所述方法由区块链节点执行,所述区块链节点存储第一状态数据库,所述方法包括:
执行区块,获取所述区块的状态更新数据;所述状态更新数据包括在所述区块写入的各个参数各自对应的写入状态和版本号;
将所述状态更新数据以及所述区块的区块标识关联地存入所述第一状态数据库;
利用预设的哈希算法对所述状态更新数据进行计算,得到状态哈希根;
将所述状态哈希根写入所述区块的区块头。
13.一种区块链系统中的状态证明装置,部署于区块链节点,所述装置包括:
确定模块,用于针对目标参数在目标区块的目标状态,确定待验证区块;
获取模块,用于基于第一状态数据库中所述待验证区块的状态更新数据,获取所述目标状态的证明数据,所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
发送模块,用于将所述证明数据发送给所述区块链的链下设备,以使所述链下设备基于所述证明数据和所述待验证区块的区块头中包括的状态哈希根对所述目标状态进行验证;所述状态哈希根基于所述待验证区块的状态更新数据得到。
14.根据权利要求13所述的装置,其中,所述确定模块包括:
第一确定子模块,用于在基于所述第一状态数据库确定存在所述目标状态的情况下,至少将写入所述目标状态的第一区块确定为待验证区块。
15.根据权利要求14所述的装置,其中,所述确定模块还包括:
第二确定子模块,用于在基于所述第一状态数据库确定不存在所述目标状态的情况下,将写入所述目标参数的首个写入状态的第二区块确定为待验证区块。
16.根据权利要求14所述的装置,其中,所述第一确定子模块被配置用于:
若确定所述第一区块为所述目标区块,或者,若确定所述第一区块在所述目标区块之前,且在所述目标区块之后未对所述目标参数的状态进行更新,则将所述第一区块确定为待验证区块;
若确定所述第一区块在所述目标区块之前,且在所述目标区块之后的第三区块对所述目标参数的状态进行更新,将所述第一区块和所述第三区块确定为待验证区块。
17.根据权利要求16所述的装置,其中,若确定所述第一区块在所述目标区块之前,且在所述目标区块之后未对所述目标参数的状态进行更新,所述装置还包括:
指示模块,用于指示所述区块链系统中除所述区块链节点以外的其它区块链节点,针对所述目标状态提供带签名的证明数据。
18.一种区块链系统中的状态证明装置,部署于链下设备,所述装置包括:
第一接收模块,用于从区块链节点接收目标状态的证明数据;所述目标状态为所述区块链节点提供的目标参数在目标区块的状态;所述证明数据基于待验证区块的状态更新数据获取;所述状态更新数据包括在所述待验证区块写入的各个参数各自对应的写入状态和版本号;
获取模块,用于获取所述待验证区块的区块头中包括的状态哈希根;所述状态哈希根基于所述待验证区块的状态更新数据得到;
第一验证模块,用于基于所述证明数据和所述状态哈希根对所述目标状态进行验证。
19.根据权利要求18所述的装置,其中,所述第一验证模块被配置用于:
在所述目标状态为非空值,且基于所述证明数据确定所述待验证区块的个数为一个的情况下,若确定所述待验证区块不在所述目标区块之后,则利用所述状态哈希根,对由所述证明数据及所述目标状态计算得到的待验证哈希根进行验证;
若确定所述待验证区块在所述目标区块之后,则确定所述验证失败。
20.根据权利要求19所述的装置,其中,所述第一验证模块还被配置用于:
在所述目标状态为非空值,且基于所述证明数据确定所述待验证区块的个数为两个的情况下,若确定所述目标区块在两个所述待验证区块之间,并且两个所述待验证区块分别写入的所述目标参数的写入状态所对应的版本号相差1,则利用所述状态哈希根,对由所述证明数据及所述目标状态计算得到的待验证哈希根进行验证;
若确定所述目标区块不在两个所述待验证区块之间,和/或两个所述待验证区块分别写入的所述目标参数的写入状态所对应的版本号相差不为1,则确定所述验证失败。
21.根据权利要求19所述的装置,其中,所述第一验证模块还被配置用于:
在所述目标状态为空值的情况下,若确定所述待验证区块在所述目标区块之后,且所述待验证区块写入的所述目标参数的写入状态所对应的版本号是1,则利用所述状态哈希根,对由所述证明数据计算得到的待验证哈希根进行验证;
若确定所述待验证区块不在所述目标区块之后,和/或所述待验证区块写入的所述目标参数的写入状态所对应的版本号不是1,则确定所述验证失败。
22.根据权利要求19所述的装置,其中,在所述目标状态为非空值,且基于所述证明数据确定所述待验证区块的个数为一个,所述待验证区块在所述目标区块之前的情况下,还包括:
第二接收模块,用于接收所述区块链系统中除所述区块链节点以外的其它区块链节点提供的针对所述目标状态带签名的证明数据;
第二验证模块,用于利用所述带签名的证明数据对所述目标状态进行验证。
23.一种在区块链系统中执行区块的装置,所述装置部署于区块链节点,所述区块链节点存储第一状态数据库,所述装置包括:
获取模块,用于执行区块,获取所述区块的状态更新数据;所述状态更新数据包括在所述区块写入的各个参数各自对应的写入状态和版本号;
存储模块,用于将所述状态更新数据以及所述区块的区块标识关联地存入所述第一状态数据库;
计算模块,用于利用预设的哈希算法对所述状态更新数据进行计算得到状态哈希根;
写入模块,用于将所述状态哈希根写入所述区块的区块头。
24.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令所述计算机执行权利要求1-12中任一项所述的方法。
25.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-12中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111040896.2A CN113505138B (zh) | 2021-09-06 | 2021-09-06 | 区块链系统中状态证明及执行区块的方法及装置 |
PCT/CN2022/103670 WO2023029731A1 (zh) | 2021-09-06 | 2022-07-04 | 区块链系统中状态证明及执行区块的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111040896.2A CN113505138B (zh) | 2021-09-06 | 2021-09-06 | 区块链系统中状态证明及执行区块的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113505138A true CN113505138A (zh) | 2021-10-15 |
CN113505138B CN113505138B (zh) | 2021-12-21 |
Family
ID=78016805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111040896.2A Active CN113505138B (zh) | 2021-09-06 | 2021-09-06 | 区块链系统中状态证明及执行区块的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113505138B (zh) |
WO (1) | WO2023029731A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003972A (zh) * | 2021-12-30 | 2022-02-01 | 北京连琪科技有限公司 | 生成区块状态承诺和证明及验证区块状态证明的方法 |
WO2023029731A1 (zh) * | 2021-09-06 | 2023-03-09 | 支付宝(杭州)信息技术有限公司 | 区块链系统中状态证明及执行区块的方法及装置 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108921556A (zh) * | 2018-07-02 | 2018-11-30 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
CN108985772A (zh) * | 2018-07-02 | 2018-12-11 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
CN109977274A (zh) * | 2019-03-31 | 2019-07-05 | 杭州复杂美科技有限公司 | 一种数据查询和验证方法、系统、设备及存储介质 |
CN110060064A (zh) * | 2019-04-26 | 2019-07-26 | 深圳市网心科技有限公司 | 一种交易信息验证方法及相关装置 |
US20190244195A1 (en) * | 2018-11-07 | 2019-08-08 | Alibaba Group Holding Limited | Blockchain system supporting public and private transactions under account models |
WO2019179540A2 (en) * | 2019-07-11 | 2019-09-26 | Alibaba Group Holding Limited | Shared blockchain data storage |
CN110471923A (zh) * | 2019-08-12 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种区块链交易记录的处理方法及装置 |
CN110602148A (zh) * | 2019-10-10 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
CN111045892A (zh) * | 2019-12-11 | 2020-04-21 | 北京菲林方德科技有限公司 | 一种智能合约执行的过程状态检测方法及装置 |
CN111177225A (zh) * | 2020-01-02 | 2020-05-19 | 支付宝(杭州)信息技术有限公司 | 账户状态存在性证明方法及装置和状态查询方法及装置 |
CN111488608A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数据验证方法及装置 |
CN111796845A (zh) * | 2020-07-03 | 2020-10-20 | 杭州复杂美科技有限公司 | 数据库升级方法、状态数据查询方法、设备和存储介质 |
CN112967065A (zh) * | 2021-05-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种交易验证方法、装置、设备及存储介质 |
CN112988818A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113255011A (zh) * | 2021-05-25 | 2021-08-13 | 平安科技(深圳)有限公司 | 区块链状态映射方法、系统、计算机设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10972254B2 (en) * | 2017-07-28 | 2021-04-06 | Upheaval LLC | Blockchain content reconstitution facilitation systems and methods |
CN113505138B (zh) * | 2021-09-06 | 2021-12-21 | 支付宝(杭州)信息技术有限公司 | 区块链系统中状态证明及执行区块的方法及装置 |
-
2021
- 2021-09-06 CN CN202111040896.2A patent/CN113505138B/zh active Active
-
2022
- 2022-07-04 WO PCT/CN2022/103670 patent/WO2023029731A1/zh active Application Filing
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108921556A (zh) * | 2018-07-02 | 2018-11-30 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
CN108985772A (zh) * | 2018-07-02 | 2018-12-11 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
US20190244195A1 (en) * | 2018-11-07 | 2019-08-08 | Alibaba Group Holding Limited | Blockchain system supporting public and private transactions under account models |
CN109977274A (zh) * | 2019-03-31 | 2019-07-05 | 杭州复杂美科技有限公司 | 一种数据查询和验证方法、系统、设备及存储介质 |
CN110060064A (zh) * | 2019-04-26 | 2019-07-26 | 深圳市网心科技有限公司 | 一种交易信息验证方法及相关装置 |
WO2019179540A2 (en) * | 2019-07-11 | 2019-09-26 | Alibaba Group Holding Limited | Shared blockchain data storage |
CN110471923A (zh) * | 2019-08-12 | 2019-11-19 | 深圳前海微众银行股份有限公司 | 一种区块链交易记录的处理方法及装置 |
CN110602148A (zh) * | 2019-10-10 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
CN111045892A (zh) * | 2019-12-11 | 2020-04-21 | 北京菲林方德科技有限公司 | 一种智能合约执行的过程状态检测方法及装置 |
CN111177225A (zh) * | 2020-01-02 | 2020-05-19 | 支付宝(杭州)信息技术有限公司 | 账户状态存在性证明方法及装置和状态查询方法及装置 |
CN111488608A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数据验证方法及装置 |
CN111796845A (zh) * | 2020-07-03 | 2020-10-20 | 杭州复杂美科技有限公司 | 数据库升级方法、状态数据查询方法、设备和存储介质 |
CN112988818A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112967065A (zh) * | 2021-05-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种交易验证方法、装置、设备及存储介质 |
CN113255011A (zh) * | 2021-05-25 | 2021-08-13 | 平安科技(深圳)有限公司 | 区块链状态映射方法、系统、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
韦涛等: "基于区块链的用能数据完整性保护框架", 《电力自动化设备》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023029731A1 (zh) * | 2021-09-06 | 2023-03-09 | 支付宝(杭州)信息技术有限公司 | 区块链系统中状态证明及执行区块的方法及装置 |
CN114003972A (zh) * | 2021-12-30 | 2022-02-01 | 北京连琪科技有限公司 | 生成区块状态承诺和证明及验证区块状态证明的方法 |
CN114691687A (zh) * | 2021-12-30 | 2022-07-01 | 北京连琪科技有限公司 | 验证区块状态证明的方法 |
CN114691686A (zh) * | 2021-12-30 | 2022-07-01 | 北京连琪科技有限公司 | 生成区块状态承诺的方法 |
CN114880320A (zh) * | 2021-12-30 | 2022-08-09 | 北京连琪科技有限公司 | 生成区块状态证明的方法 |
CN114691687B (zh) * | 2021-12-30 | 2022-12-06 | 北京连琪科技有限公司 | 验证区块状态证明的方法 |
CN114880320B (zh) * | 2021-12-30 | 2023-02-17 | 北京连琪科技有限公司 | 生成区块状态证明的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2023029731A1 (zh) | 2023-03-09 |
CN113505138B (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3678346B1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
JP7199775B2 (ja) | スマートコントラクトに基づくデータ処理方法、データ処理装置、ノード機器、及びコンピュータプログラム | |
CN113505138B (zh) | 区块链系统中状态证明及执行区块的方法及装置 | |
US20190245680A1 (en) | Blockchain based secure naming and update verification | |
CN109542888B (zh) | 区块链的数据修改和同步方法、装置、设备及存储介质 | |
US9934229B2 (en) | Telemetry file hash and conflict detection | |
CN111415161A (zh) | 基于区块链的数据验证方法、装置及计算机可读存储介质 | |
CN111177225B (zh) | 账户状态存在性证明方法及装置和状态查询方法及装置 | |
CN110209675A (zh) | 在区块链上的信用数据查询方法及其装置 | |
CN113950679A (zh) | 使用预言机共识来验证测量数据集 | |
CN109101232B (zh) | 一种产品开发的方法、装置、计算机设备及存储介质 | |
CN111444204B (zh) | 一种同步处理方法、装置、设备及介质 | |
CN112579591A (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN111444206B (zh) | 一种同步处理方法、装置、设备及介质 | |
CN112015826B (zh) | 基于区块链的智能合约安全性检测方法及相关设备 | |
CN116094849B (zh) | 应用访问鉴权方法、装置、计算机设备和存储介质 | |
CN113743949B (zh) | 在区块链中执行交易的方法、区块链、主节点和从节点 | |
CN111339089B (zh) | 一种应用于区块链的数据存储与获取方法及装置 | |
CN113672514A (zh) | 测试方法、装置、服务器及存储介质 | |
CN113434603A (zh) | 一种基于可信账本数据库的数据存储方法、装置及系统 | |
CN113468224A (zh) | 在区块链中存储及查询状态数据、执行交易的方法及装置 | |
CN108880823A (zh) | 一种生成快速导航的区块链的方法及系统 | |
US20230239153A1 (en) | System and method for digital proof generation | |
CN112738141B (zh) | 基于责备机制的状态验证方法、系统、p2p网络 | |
CN115705344A (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 |