CN116661674A - 一种数据压缩方法、区块同步方法及相关设备 - Google Patents

一种数据压缩方法、区块同步方法及相关设备 Download PDF

Info

Publication number
CN116661674A
CN116661674A CN202210148072.5A CN202210148072A CN116661674A CN 116661674 A CN116661674 A CN 116661674A CN 202210148072 A CN202210148072 A CN 202210148072A CN 116661674 A CN116661674 A CN 116661674A
Authority
CN
China
Prior art keywords
transaction
interval
target
consensus node
block
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.)
Pending
Application number
CN202210148072.5A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210148072.5A priority Critical patent/CN116661674A/zh
Publication of CN116661674A publication Critical patent/CN116661674A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4014Identity check for transactions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本申请实施例公开了一种数据压缩方法、区块同步方法及相关设备,其中的方法包括:对m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;获取每个对象在目标共识节点中的区块链上第n‑1个区块中的第一状态值以及在第n+m个区块中的第二状态值,并进行根计算处理,得到目标区间对应的第一状态根和第二状态根;基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易;采用区间交易对目标共识节点中的区块链进行压缩处理。采用本申请实施例能够降低目标共识节点的存储负担。

Description

一种数据压缩方法、区块同步方法及相关设备
技术领域
本申请涉及计算机技术领域,具体涉及区块链技术领域,尤其涉及一种基于区块链网络的数据压缩方法、一种基于区块链网络的区块同步方法,一种基于区块链网络的数据压缩装置、一种区块链节点设备、一种计算机可读存储介质及一种计算机程序产品。
背景技术
随着计算机技术的快速发展,区块链技术逐渐受到用户关注,越来越多的用户或企业选择将数据存储至区块链,以防止数据被篡改。但实践发现,随着区块链上数据的逐渐增多,区块链所包含的海量历史数据需要占用大量存储空间,进而给区块链网络中的区块链节点带来了很大的存储负荷。因此,如何降低区块链节点的存储负荷,成为研究热点话题。
发明内容
本申请实施例提供一种基于区块链网络的数据压缩方法、区块同步方法及相关设备,能够实现对区块链中的交易数据进行压缩,降低区块链节点的存储负荷。
一方面,本申请实施例提供了一种基于区块链网络的数据压缩方法,区块链网络中包含一个或多个共识节点,方法由区块链网络中的目标共识节点执行,区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;该方法包括:
对m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;
获取每个对象在目标共识节点中的区块链上第n-1个区块中的第一状态值,并对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根;
获取每个对象在目标共识节点中的区块链上第n+m个区块中的第二状态值,并对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根;
基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易;
采用区间交易对目标共识节点中的区块链进行压缩处理;其中,压缩后的目标共识节点中的区块链中的目标区间中不包含交易数据,但包含区间交易。
本申请实施例中,目标共识节点中的区块链设有目标区间,目标区间包含m+1个区块,如链上的第n个区块到第n+m个区块,目标共识节点可获取m+1个区块中的交易数据对应的对象在第n-1个区块中的第一状态值,以及各个对象在第n+m个区块中的第二状态值,第一状态值可理解为对象对应的交易数据在被执行前的状态值,第二状态值可理解为对象对应的交易数据被执行后的状态值。这样根据交易数据被执行前的状态值得到目标区间的第一状态根,以及根据交易数据被执行后的第二状态值得到目标区间的第二状态根、m+1个区块中的交易数据、第一状态值和第二状态值,并采用零知识证明电路可得到目标区间的区间交易,该区间交易中包含目标区间的相关信息;最后通过在目标共识节点中的区块链中删除m+1个区块中的交易数据,并将区间交易添加至m+1个区块中的一个区块内,实现对目标区间中的交易数据的压缩处理,进而释放目标共识节点的存储空间,降低存储负荷。
另一方面,本申请实施例提供了一种基于区块链网络的区块同步方法,区块链网络中包含一个或多个共识节点,方法由区块链网络中除目标共识节点以外的第一共识节点执行;区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;该方法包括:
从区块链网络中的第二共识节点中同步区块链上的第i个区块,第二共识节点是区块链网络中除第一共识节点之外的任一共识节点,i为整数,且i∈[n,n+m];
若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易;
对区间交易进行验证,得到验证结果;
若验证结果为验证通过,则将区间交易中的交易数据的写集合更新后的状态值进行存储。
本申请实施例中,第一共识节点(即验证者)在获取到区间交易后,可从第二共识节点中的区块链上同步第n个区块到第n+m个区块之间的m+1个区块的区块头,并且跳过校验默克尔根的步骤;然后,在对区间交易验证成功后,将区间交易存储至m+1个区块中,可实现采用目标区间的区间交易替换目标区间中的所有交易数据,进而实现释放第一共识节点(或区块链网络中进行数据压缩的任一共识节点)的存储空间,降低第一共识节点的存储负荷。
另一方面,本申请实施例提供了一种基于区块链网络的数据压缩装置,区块链网络中包含一个或多个共识节点,该装置包括区块链网络中的目标共识节点,区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;该装置包括:
处理单元,用于对m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;
获取单元,用于获取每个对象在目标共识节点中的区块链上第n-1个区块中的第一状态值,并对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根;
获取单元,还用于获取每个对象在目标共识节点中的区块链上第n+m个区块中的第二状态值,并对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根;
处理单元,还用于基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易;
处理单元,还用于采用区间交易对目标共识节点中的区块链进行压缩处理;其中,压缩后的目标共识节点中的区块链中的目标区间中不包含交易数据,但包含区间交易。
在一种实现方式中,处理单元,还用于:
接收数据压缩请求,数据压缩请求中携带压缩信息;
响应于数据压缩请求,执行对m+1个区块中的交易数据进行对象提取处理,得到P个对象的步骤;
其中,数据压缩请求是由目标对象在目标共识节点中输入压缩信息之后发起的;或者,数据压缩请求是由区块链网络中除目标共识节点之外的任一共识节点发送的;
压缩信息包含:目标区间的起始区块高度n、目标区间的终止区块高度n+m、目标区间包含的交易数据的数量阈值,以及目标共识节点的节点标识。
在一种实现方式中,m+1个区块中存储有一个或多个交易数据,每个交易数据包括一个交易及交易被执行后的交易结果;P个对象中的任一个对象是指:基于一个交易数据中的交易结果需要执行写操作的数据;
处理单元,还用于:
按照m+1个区块中的一个或多个交易数据的上链时间的先后顺序,对一个或多个交易数据进行排序,得到交易序列;
按照交易序列中各个交易数据的排列顺序,对P个对象进行排序,得到对象序列,P个对象在对象序列中的排列顺序与各对象对应的交易数据在交易序列中的排列顺序一致。
在一种实现方式中,处理单元,用于对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根时,具体用于:
根据对象序列中的每个对象的第一状态值,构建目标区间的第一默克尔树,第一默克尔树中的叶子节点的排列顺序与对象序列中各个对象的排列顺序一致;
对第一默克尔树进行根哈希计算,得到第一默克尔树的第一根哈希;
将第一根哈希确定为目标区间的第一状态根。
在一种实现方式中,处理单元,用于对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根时,具体用于:
根据对象序列中的每个对象的第二状态值,构建目标区间的第二默克尔树,第二默克尔树中的叶子节点的排列顺序与对象序列中各个对象的排列顺序一致;
对第二默克尔树进行根哈希计算,得到第二默克尔树的第二根哈希;
将第二根哈希确定为目标区间的第二状态根。
在一种实现方式中,处理单元,用于基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易时,具体用于:
获取零知识证明电路,零知识证明电路是基于待证明命题转化得到的,待证明命题用于指示对区间交易的正确性进行验证;
基于m+1个区块中的交易数据构建交易集;
采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息;
基于证明信息构建目标区间的区间交易;
其中,交易集中包含的交易数据的数量等于数量阈值;若m+1个区块中的交易数据的数量等于数量阈值,则交易集包含m+1个区块中的交易数据;若m+1个区块中的交易数据的数量小于数量阈值,则交易集包含m+1个区块中的交易数据及空交易数据,且空交易数据的数量与m+1个区块中的交易数据的数量之和等于数量阈值。
在一种实现方式中,目标区间的证明信息包括:零知识证明电路的输出信息;处理单元,用于采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息时,具体用于:
根据每个对象的第一状态值构造目标区间的第一候选默克尔树,并将第一候选默克尔树的第一候选状态根,与目标区间对应的第一状态根进行比较,得到第一比较结果;
根据每个对象的第二状态值构造目标区间的第二候选默克尔树,并将第二候选默克尔树的第二候选状态根,与目标区间对应的第二状态根进行比较,得到第二比较结果;
从交易集中获取除空交易数据以外的每个交易数据的写集合所在字段,并对每个交易数据的写集合所在字段进行哈希计算,得到写集合哈希;
对交易集中除空交易数据以外的交易数据的哈希值进行哈希计算,得到交易集哈希;
其中,零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希。
在一种实现方式中,目标区间的证明信息还包括:证明字符串;处理单元,还用于:
获取密钥生成算法,并根据密钥生成算法生成证明者公共串和验证者公共串;证明者公共串是证明者所使用的密钥,证明者包括目标共识节点;验证者公共串是验证者所使用的密钥,验证者包括区块链网络中需同步目标区间中的区块的任一共识节点;
基于证明者公共串,为零知识证明电路计算得到输出信息的计算过程生成的证明字符串;证明字符串的生成表示:目标共识节点基于零知识证明电路已执行计算过程。
在一种实现方式中,处理单元,用于采用区间交易对目标共识节点中的区块链进行压缩处理时,具体用于:
对目标共识节点中的区块链包含的m+1个区块中的交易数据进行清除;以及,
将目标共识节点中的区块链包含的第i个区块中的目标交易数据替换为区间交易,i为整数,且i∈[n,n+m]。
在一种实现方式中,目标交易数据是指第i个区块中的上链时间最早的交易数据;
区块链网络中的区块链包括:联盟链或私有链中的任一种;
目标区间的区间交易包括:目标区间包含的交易数据的数量阈值、目标区间的起始区块高度n、目标区间的终止区块高度n+m、证明信息、验证者公共串、目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、目标区间的区间标识以及候选交易集哈希;候选交易集哈希是根据目标共识节点中的区块链上m+个区块中的交易数据的哈希值生成的。
本申请实施例中,目标共识节点中的区块链设有目标区间,目标区间包含m+1个区块,如链上的第n个区块到第n+m个区块,处理单元可获取m+1个区块中的交易数据对应的对象在第n-1个区块中的第一状态值,以及各个对象在第n+m个区块中的第二状态值,第一状态值可理解为对象对应的交易数据在被执行前的状态值,第二状态值可理解为对象对应的交易数据被执行后的状态值。这样根据交易数据被执行前的状态值得到目标区间的第一状态根,以及根据交易数据被执行后的第二状态值得到目标区间的第二状态根、m+1个区块中的交易数据、第一状态值和第二状态值,并采用零知识证明电路可得到目标区间的区间交易,该区间交易中包含目标区间的相关信息;最后通过在目标共识节点中的区块链中删除m+1个区块中的交易数据,并将区间交易添加至m+1个区块中的一个区块内,实现对目标区间中的交易数据的压缩处理,进而释放目标共识节点的存储空间,降低存储负荷。
另一方面,本申请实施例提出了一种基于区块链网络的区块同步装置,区块链网络中包含一个或多个共识节点,该装置包括区块链网络中除目标共识节点以外的第一共识节点;区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;该装置包括:
获取单元,用于从区块链网络中的第二共识节点中同步区块链上的第i个区块,第二共识节点是区块链网络中除第一共识节点之外的任一共识节点,i为整数,且i∈[n,n+m];
获取单元,还用于若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易;
处理单元,用于对区间交易进行验证,得到验证结果;
处理单元,还用于若验证结果为验证通过,则将区间交易中的交易数据的写集合更新后的状态值进行存储。
在一种实现方式中,区间交易包含:目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、证明信息、验证者公共串以及候选交易集哈希;证明信息中包含零知识证明电路的输出信息以及证明字符串;零知识证明电路是基于待证明命题生成的,待证明命题用于用于指示对区间交易的正确性进行验证;验证者公共串是由目标共识节点根据密钥生成算法为验证者生成的,验证者包括所述第一共识节点;候选交易集哈希是目标共识节点对m+1个区块中的交易数据的哈希值进行哈希计算得到的;
处理单元,用于对区间交易进行验证,得到验证结果时,具体用于:
根据m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息;
采用验证信息对证明信息中的零知识证明电路的输出信息进行校验;
若校验通过,则根据验证者公共串对证明信息中的证明字符串进行验证,得到验证结果。
在一种实现方式中,处理单元,用于根据m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息时,具体用于:
从区间交易中的交易数据的写集合中提取对应的P个对象,并从第一共识节点中的区块链上获取P个对象在第n-1个区块时的第三状态值;
对P个对象的第三状态值进行根计算处理,得到第一参考状态根;以及,
对区间交易中的交易数据的写集合进行预执行处理,得到更新后的P个对象的第四状态值,并对更新后的P个对象的第四状态值进行根计算处理,得到第二参考状态根;以及,
对区间交易中的交易数据的写集合所在字段进行哈希计算,得到参考写集合哈希;
其中,验证信息包括:第一参考状态根、第二参考状态根、参考写集合哈希以及候选交易集哈希。
在一种实现方式中,证明信息中的零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希;第一比较结果是目标共识节点将根据P个对象的第一状态值构造得到的第一候选默克尔树的第一候选状态根,与目标区间的第一状态根进行比较得到的,第二比较结果是目标共识节点将根据P个对象的第二状态值构造得到的第二候选默克尔树的第二候选状态根,与目标区间的第二状态根进行比较得到的;
处理单元,用于采用验证信息对证明信息中的零知识证明电路的输出信息进行校验时,具体用于:
若第一比较结果和第二比较结果均为比较成功,则将目标区间的第一状态根与第一参考状态根进行比较,得到第一参考比较结果;以及,将目标区间的第二状态根与第二参考状态根进行比较,得到第二参考比较结果;
将参考写集合哈希与零知识证明电路的输出信息中的写集合哈希进行比较,得到写集合比较结果;
将零知识证明电路的输出信息中的交易集哈希与区间交易中的候选交易集哈希进行比较,得到交易比较结果;
若第一参考比较结果、第二参考比较结果、写集合比较结果以及交易比较结果均比较成功,则确定校验通过。
在一种实现方式中,处理单元,用于若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易时,具体用于:
若第二共识节点中的区块链上的第i个区块中包含区间交易的标识,且第i个区块中不包含区间交易,则向第二共识节点发送第一获取请求,以便于第二共识节点响应于第一获取请求而返回区块链网络中存储有区间交易的任一共识节点的目标节点标识;
根据目标节点标识从目标节点标识对应的共识节点中获取区间交易;
或者,向第二共识节点发送第二获取请求,以便于第二共识节点响应于第二获取请求,从区块链网络中存储有区间交易的任一共识节点中获取并返回区间交易。
在一种实现方式中,区间交易的标识是第二共识节点对区间交易验证成功后,存储至第二共识节点中的区块链上第i个区块中的;第二共识节点对区块链网络中的区间交易进行验证包括:
获取区间交易,区间交易中包含候选交易集哈希及目标区间中的交易数据的写集合;
从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的写集合,并将从第二共识节点中的区块链中获取的交易数据的写集合,与区间交易中的交易数据的写集合进行比对,得到写集合比对结果;
从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的哈希值,并对交易数据的哈希值进行哈希计算,得到交易哈希值;
将交易哈希值与区间交易中的候选交易集哈希进行比对,得到交易哈希比对结果;
若写集合比对结果和交易哈希比对结果均为比对成功,则得到验证结果,验证结果为验证成功。
本申请实施例中,获取单元在获取到区间交易后,可从第二共识节点中的区块链上同步第n个区块到第n+m个区块之间的m+1个区块的区块头,并且跳过校验默克尔根的步骤;然后,处理单元在对区间交易验证成功后,将区间交易存储至m+1个区块中,可实现采用目标区间的区间交易替换目标区间中的所有交易数据,进而实现释放第一共识节点(或区块链网络中进行数据压缩的任一共识节点)的存储空间,降低第一共识节点的存储负荷。
另一方面,本申请提供了一种区块链节点设备,该设备包括:
处理器,用于加载并执行计算机程序;
计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,实现上述基于区块链网络的数据压缩方法以及区块同步方法。
另一方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行上述基于区块链网络的数据压缩方法以及区块同步方法。
另一方面,本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。区块链节点设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该区块链节点设备执行上述基于区块链网络的数据压缩方法以及区块同步方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a示出了本申请一个示例性实施例提供的一种区块链的结构示意图;
图1b示出了本申请一个示例性实施例提供的一种数据共享系统的结构示意图;
图1c示出了本申请一个示例性实施例提供的一种双层区块链网络的架构图;
图2示出了本申请一个示例性实施例提供的一种基于区块链网络的数据压缩方法的流程示意图;
图3示出了本申请一个示例性实施例提供的一种区块链网络中的区块链设有目标区间的示意图;
图4a示出了本申请一个示例性实施例提供的一种目标共识节点通过接收到目标对象输入的压缩信息发起数据压缩请求的示意图;
图4b示出了本申请一个示例性实施例提供的一种目标共识节点从区块链网络中的其他区块链节点处获取数据压缩请求的示意图;
图5示出了本申请一个示例性实施例提供的一种交易序列和对象序列的示意图;
图6示出了本申请一个示例性实施例提供的一种根据对象序列中的每个对象的第一状态值,构建目标区间的第一默克尔树的示意图;
图7示出了本申请一个示例性实施例提供的一种根据对象对象序列中的每个对象的第二状态值,构建目标区间的第二默克尔树的示意图;
图8示出了本申请一个示例性实施例提供的一种零知识证明电路的示意图;
图9示出了本申请一个示例性实施例提供的一种基于m+1个区块中的交易数据构建交易集的示意图;
图10示出了本申请一个示例性实施例提供的一种基于零知识证明电路得到输出信息的示意图;
图11示出了本申请一个示例性实施例提供的一种基于区间交易对区块链进行压缩处理的示意图;
图12示出了本申请一个示例性实施例提供的一种基于区块链网络的区块同步方法的流程示意图;
图13示出了本申请一个示例性实施例提供的一种第二共识节点对区间交易的共识过程的示意图;
图14a示出了本申请一个示例性实施例提供的一种获取区间交易的示意图;
图14b示出了本申请一个示例性实施例提供的一种获取区间交易的示意图;
图14c示出了本申请一个示例性实施例提供的一种获取区间交易的示意图;
图15示出了本申请一个示例性实施例提供的一种基于区块链网络的数据压缩装置的结构示意图;
图16示出了本申请一个示例性实施例提供的一种基于区块链网络的区块同步装置的结构示意图;
图17示出了本申请一个示例性实施例提供的一种区块链节点设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例涉及区块链(Block chain),区块链是区块链技术的基础,所谓区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。一种区块链的结构示意图可参见图1a,如图1a所示,区块链101由多个区块组成,区块链的第一个区块称为创世区块(可简称为创世块),创世块中包括区块头和区块体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块体中存储有输入信息;创世块的下一区块以创世块为父区块,下一区块中同样包括区块头和区块体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,区块体中存储有交易数据本身,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
区块链可由区块链网络所包含的区块链节点进行维护;其中,区块链网络可以理解为一个数据共享系统,是指用于进行区块链节点与区块链节点之间数据共享的系统,该数据共享系统的一种示例性结构可参见图1b;如图1b所示,数据共享系统中可包括多个区块链节点101,各个区块链节点101可以为接入至该区块链网络中的服务器,也可以为接入至该区块链网络中的终端(如终端中运行的客户端),这里对区块链节点101的具体形式不做限定。对于区块链网络中的每个区块链节点101,均具有与其对应的节点标识,而且区块链网络中的每个区块链节点101均可以存储有区块链网络中其它区块链节点101的节点标识,以便后续根据其它区块链节点101的节点标识,将生成的区块广播至数据共享系统中的其它区块链节点101。每个区块链节点101中可维护一个节点标识列表,将节点名称和节点标识对应存储至节点标识列表中;其中,节点标识列表可参见表1:
表1
节点名称 节点标识
节点1 117.114.151.174
节点2 117.116.189.145
节点X(X为正整数) xx.xxx.xxx.xxx
如表1所示,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其它任一种能够用于标识该节点的信息;例如,节点标识还可以是二进制序列码(如110001110),表1中仅以IP地址为例进行说明。区块链网络中的区块链节点均维护有节点标识列表,当区块链网络中的任一共识节点(如具有共识功能的区块链节点)将共识通过的区块添加该任一共识节点中的区块链上后,区块链网络中的其他节点从各自维护的节点标识列表中获取该任一共识节点的节点标识,并根据该任一共识节点的节点标识从该任一共识节点中的区块链中同步共识通过的区块,以实现对区块链网络中的数据的同步。
目前区块链主要有三大类型,分别为:公有链(Public Block Chains)、联盟链(Consortium Block Chains)和私有链(Private Block Chains)。其中,公有链可是指:区块链网络中的任何节点(如单个对象或集体对象对应的区块链节点)均可以发送交易数据且交易数据能获得有效确认的、任何节点都能参与共识过程的区块链。联盟链可是指:区块链网络中的部分节点可以参与区块共识过程,而其他节点不具有访问共识过程的区块链;例如,包含联盟链的区块链网络内部可指定多个预选的区块链节点为记账节点(如具有共识权限的区块链节点),联盟链上的每个区块均由所有预选的区块链节点共同决定(即预选的区块链节点参与共识过程),区块链网络中除预选的区块链节点以外的其他接入的区块链节点可以参与交易,但不过问共识过程。私有链可是指:区块链网络中的一个区块链节点独享写入权限(如对区块共识后上链)的区块链,即区块链网络中的一个区块链独享私有链的写入权限。
在实际应用中,不管是公有链、联盟链还是私有链上,都存储越来越多的交易数据,且区块链网络中的每个共识节点均存储区块链(如公有链、联盟链及私有链中的任一区块链),而区块链网络每秒处理交易数据的数量却是有限的,这在一定程度上降低区块链网络的共识效率,造成交易数据的吞吐量(Transaction Per Second,tps)低下,增大区块链网络中的共识节点的存储负荷。因此,如果能够对区块链上存储的交易数据进行一定的处理,以减轻共识节点的存储负担,节省共识节点的存储空间,对区块链技术的发展显得尤为重要。但经实践发现,不同类型的区块链对交易数据的处理需求并不相同。例如:考虑到尽管公有链中的历史交易数据(如已存储于公有链的已生成区块中的交易数据)已经为区块链的全节点(如维护的区块链中包含所有区块头和每个区块头对应的区块体的区块链节点)带来了很大的存储负荷,但是为了保证每一笔交易数据都是可以追溯的这一原则,公有链不具有进行链上数据处理,以降低全节点的存储负荷的动机和需求。再如:联盟链和私有链的情况,与公有链有所不同;详细地,当联盟链(或私有链)的参与方根据实际应用情况决定链上数据已“无效”后,是有做链上数据处理,以提高区块链节点的存储空间,减轻存储压力的动机和需求的。
以联盟链的业务类型为电子发票业务为例,假设联盟链中接收到的目标交易为对目标发票进行上链,那么当共识节点执行目标交易后,可存储交易数据(如目标发票的发票信息或称为发票数据)和本次交易落盘(或称为存储)的状态值。但是,电子发票业务是具有时效性的,联盟链上存储的一笔交易数据在经过足够长的时间间隔后,将成为“过期交易”,所谓“过期交易”可简单理解为不再被访问的交易数据;因此,联盟链和私有链是具有对链上数据进行处理,以降低区块链节点的存储负担的动机的。为便于阐述,后续以本申请实施例提供的区块链网络中的区块链包括:联盟链或私有链中的任一种,如以区块链为联盟链为例进行介绍,特在此说明。
下面对上述提及的区块链中的区块包含的交易数据的相关内容进行简单介绍:①每个交易数据包括一个交易及交易被执行后的交易结果。交易中包含时间戳、智能合约的合约名、方法名(如智能合约包含的方法的名称)、智能合约参数、签名等信息;交易结果中包含交易结果有关参数(如错误码等信息)和写集合,写集合中以键值对的形式存储交易的状态值。通过交易数据的写集合可实现快速更新链上状态值,这样区块链网络中具有同步交易数据的需求的区块链节点不必须执行一遍交易,只通过交易数据中的写集合就可以快速实现链上状态值的更新,在一定程度上减少工作量,提高状态值更新速率。②交易数据的状态值可理解为:交易数据对应的对象的状态值。交易数据对应的对象可是指:基于交易数据中的交易结果需要执行写操作的数据,对象的状态值可是指:交易被执行后的交易结果中需执行写操作的数据的具体更改的状态值。例如:目标交易的交易任务为从账户余额中扣除目标电子资源量,那么当该目标交易被执行后账户余额中的电子资源量发生变化,该交易数据对应的对象可是指该目标交易被执行后的账户余额,对象的状态值可是指扣除目标电子资源量后的账户余额中的剩余电子资源量。再如:目标交易的交易任务为存储发票数据,那么该目标交易对应的对象可是指该被存储的发票,对象的状态值可是指发票所包含的具体的发票信息(如开票方的信息、发票类型等);其中,当数据(如需存储的发票信息)被包含在智能合约参数里,并需要最终落盘时,由于该数据出现在交易的合约参数、交易结果的写集合以及交易落盘的状态值中,那么该数据将被重复存储三次。
基于前述给出的联盟链和私有链具有对交易数据进行处理的需求,本申请实施例提出一种基于区块链网络的数据压缩方案,具体是针对区块链网络中的联盟链(或私有链)的数据压缩方案,该方案允许区块链在交易数据对应的对象的状态值(或称为状态数据)可恢复的前提下,能够对区块链中目标区间内的交易数据进行大幅压缩,减小区块链上的存储数据量,从而降低维护区块链的共识节点的存储负荷。其中,区块链中的目标区间可包括:区块链上的起始区块高度n,到终止区块高度n+m之间的m+1个区块;n、m均为大于零的整数。
本申请实施例提供的基于区块链网络的数据压缩方案可以由区块链网络中的目标共识节点来执行;正如前述所描述的,区块链网络中的包含一个或多个共识节点,目标共识节点可是指该一个或多个共识节点中被指定进行数据压缩处理的共识节点。为便于更好地理解本申请实施例提出的数据压缩方案,下面对目标共识节点所在的区块链网络的类型进行介绍。具体的,目标共识节点可以属于单层网络(如图1b所示的单层的区块链网络)包含的一个或多个共识节点中的维护全量区块链的共识节点,或者是双层或多层网络中的任一子网络中维护全量区块链的节点,本申请实施例对目标共识节点所处的区块链网络为单层网络还是双层或多层网络不作限定,在此说明。此处的“层”是指区块链网络所包含的子网络的数量;子网络的划分可以是出于业务需求、通信连接、安全性等方面的考虑;属于同一子网络中的区块链节点之间的互相访问有共识机制保证安全,而不同子网络中的区块链节点之间的互相访问需要额外加入身份管理和/或网络控制。举例来说,当区块链被应用于一些场景中时,例如:票据业务场景,政府或者商业机构等的数据存储场景等等;在这些场景下,区块链网络中并非所有的节点都有足够的资源和必要性成为执行区块链共识的节点。而出于对数据的安全性考虑,在区块链体系中涉及重要数据时,也不适用普遍的数据对等的区块链部署方式。为了适应业务需求(如内外网,业务网,办公网分隔等),并进一步提高数据的安全性和保密性,可以采用双层链,即通过P2P(Peer to Peer,点对点)网络形成“见证子网络-共识子网络”的双层网络架构来提高数据的安全性;其中,P2P网络是一种点对点连接的网络,点对点连接的各个节点称为对等节点。P2P网络基于一类特定的网络协议,使得对等节点之间不需要一个中心节点来维护网络状态,每个节点通过和相邻节点之间的广播交互,来维护全网的节点状态及其与相邻节点的连接状态。
图1c示出了本申请一个示例性实施例提供的一种双层区块链网络的架构图;如图1c所示,该区块链网络包括见证子网络和共识子网络,本申请实施例提供的目标共识节点可以是共识子网络中的一个共识节点。其中:①见证子网络中包括业务节点。见证子网络中的业务节点主要进行业务执行(如业务节点用于查询交易是否上链),不执行记账共识,并通过身份认证的方式从共识子网络中获得区块头和/或部分授权可见的区块数据。②共识子网络是区块链网络中的核心网络,用于对区块链网络进行记账共识。共识子网络中包括一个或多个共识节点(或称为记账节点),共识节点用于对区块进行共识,以实现将区块进行上链。
进一步的,见证子网络和共识子网络可以通过二者中间的路由代理网络(或称为路由边界网络)进行交互;即路由代理网络用于对见证子网络和共识子网络进行网络隔离;路由代理网络中包含一个或多个路由代理节点(或简称为代理节点),这样可以通过路由代理节点将见证子网络中业务节点发送的数据转发给共识子网络中的共识节点,可提高共识子网络中数据的安全性。以区块链网络的业务类型为电子发票业务为例,企业通过位于见证子网络的业务节点发起开票请求,该请求通过路由代理网络从见证子网络中的业务节点透传到位于共识网络的共识节点。共识节点执行交易后,将交易数据(如发票)以及本次交易落盘的状态值(如发票的发票信息)落盘。随后共识节点将这笔交易再清分回见证子网络中的业务节点,业务节点虽然不执行交易,但依然需要存储交易数据以及本次交易落盘的状态值,即业务节点无需重新执行交易而是通过交易结果中的写集合快速更新状态值。
需要说明的是,本申请实施例运用到具体产品或技术中时,如业务节点从共识节点中同步包含交易数据的交易数据所属区块时,需要获得产生交易数据的目标对象的许可或者同意;且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,如交易数据的获取和上链需要遵循相关国家和地区的相关法律法规和标准。
值得说明的是,本申请实施例提出的基于区块链网络的数据压缩方案,在一定程度上参考了zk-rollup方案的思路,zk-rollup方案就是基于零知识证明的二层扩容方案(layer2)。zk-rollup方案的原理大致可以概括为:layer1之外进行复杂的计算与证明的生成,链上进行证明的校验并存储部分数据保证数据可用性的layer2方案。其中,以以太坊为例,以太坊公有链就是layer1,layer1的问题在于效率低下,tps(吞吐量)低;layer2方案是区块链的链下扩容方案,其目的便是将layer1的上的一些操作移动到layer2上去处理,处理完之后再返回给layer1;通过这种方式,可以实现layer1保障共识、去中心化、不可篡改,layer2保障高性能,多场景。
应当说明的是,目前的zk-rollup方案并非用于区块链中历史数据的压缩,而是被应用于提升公有链性能以及链上数据扩容。目前的zk-rollup方案应用于数据扩容的流程可简单概述为:1)在layer2中打包一批交易,制作成一个区间(batch);2)在零知识证明电路中变更世界状态(如区块链网络中每个区块链节点在同一时刻,均存储同一交易的同一状态值)、验证区间中每一笔交易的签名;3)为区间构造成一笔全新的交易,交易中包含当前世界状态、区间之后的世界状态、zk-snark证明、每一笔交易对应的一个轻量级的字段用于表示出状态的变更;4)将全新的交易上layer1链,其余节点验证全新的交易的证明信息(或称为zk-snark证明),若证明信息通过验证,则通过这笔交易包含的信息更新世界状态。通过zk-rollup方案,可以在layer2做开销较大的运算,并在layer1上上链轻量数据用于更新节点的当前状态以及一个zk-snark证明用于证明layer2层计算的存在性与正确性。
zk-rollup方案被应用于数据扩容场景和本申请实施例涉及的数据压缩场景时存在如下区别:1)根本目的有区别,zk-rollup方案被应用于数据扩容场景的目的是扩容,zk-rollup方案被应用于数据压缩场景的目的是压缩数据;2)零知识证明的应用有区别,数据扩容场景使用零知识证明是为了证明状态更新与一批交易的关联性,数据压缩场景使用零知识证明是为了证明写集合与一批交易的关联性;3)底层链可能存在的区别,zk-rollup方案被应用于数据扩容场景时,在做零知识证明需要使用世界状态,而有些区块链可能并不维护世界状态,这导致zk-rollup方案的应用场景受到局限。举例来说,zk-rollup方案主要被应用于以太坊,因此在做零知识证明时使用了以太坊的世界状态作为输入,但是在数据压缩场景中涉及的区块链(或联盟链)是不单独维护世界状态的链,这导致数据压缩场景不能直接使用zk-rollup方案实现数据压缩。因此,本申请实施例对目前的zk-rollup方案做了一定调整使其适用于数据压缩场景,从而实现将零知识证明与zk-rollup方案应用于联盟链中的历史交易数据压缩的场景中。
下面对上述zk-rollup方案所涉及的零知识证明进行介绍。具体地,本申请实施例提供基于区块链网络的数据压缩方案是基于零知识证明(zero knowledge proof,zkp)技术实现的;具体是根据零知识简洁的非交互知识论证(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge,zk-snark)技术实现的。其中,零知识证明是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤;例如,零知识证明涉及的两方可包括:证明者(如证明某个论断的正确性的对象)和验证者(如验证证明者提供的针对某个论断的证明是否正确的对象);在本申请实施例中证明者可包括用于对区块链上的目标区间内的交易数据压缩的目标共识节点,验证者可包括区块链网络中待同步目标区间中的区块的其他节点。在一次零知识证明的过程中,证明者可以在不向验证者提供任何有用的信息的前提下,和验证者进行多次数据交互,以使验证者相信某个论断的正确性。零知识简洁的非交互知识论证也是一种涉及两方或更多方的协议,该两方或更多方可对某个论断的正确性进行判断。但与零知识证明不同的是,零知识简洁的非交互知识论证是以承受一定争议性为代价,实现非交互的目标;换句话说,在一次零知识简洁的非交互知识论证的过程中,证明者和验证者之间只进行一次数据交互,来可以实现对论断的正确性的判断。
本申请实施例是以零知识简洁的非交互知识论证技术,来实现基于区块链网络的数据压缩方案的,具体是通过零知识简洁的非交互知识论证技术,使验证者在仅从目标共识节点(如证明者)中区块链上同步区间交易,就实现对目标区间内的交易数据的状态值的同步,而避免同步目标区间内所有交易数据,进而实现降低验证者的存储负担。下面结合零知识简洁的非交互知识论证的运作原理,对本申请实施例提供的数据压缩方案进行简单介绍,零知识简洁的非交互知识论证的运作原理从原理上可以分为四个步骤,包括:
1)区块链网络中的目标共识节点可以将待证明命题转化成零知识证明电路。其中,待证明命题可是指证明者和验证者之间待进行判断或验证的命题。具体地,可采用运算符对该待证明命题对应的运算逻辑进行表达,以得到该待证明命题对应的零知识证明电路。
2)证明者(如区块链网络中的目标共识节点)使用生成算法为待证明命题生成公共参数、证明者密钥及验证者密钥。其中,由于生成的证明者密钥和验证者密钥是公开的(如区块链网络中的任一节点均可以获取),因此本申请实施例将证明者密钥称为证明者公共串,将验证者密钥称为验证者公共串,后续对这两种称呼不作限定,在此说明。公共参数是采用生成算法随机生成且不可泄露的字符串,该公共参数对证明过程的安全性具有重要影响。
3)证明者通过证明者密钥及零知识证明电路(即待证明命题转化成的R1CS电路),为目标共识节点中的区块链上的目标区间生成证明信息。
4)验证者(如区块链网络中新加入的共识节点)采用验证者密钥对目标共识节点生成的证明信息进行验证;当对证明信息验证成功时,验证者确定证明者提供的数据是有效的,如区块链网络中新加入的共识节点确定从目标共识节点的区块链中同步的区间交易是正确的或存在的;反之,当对证明信息验证失败时,验证者确定证明者提供的数据是无效的,如区块链网络中新加入的共识节点确定从目标共识节点的区块链中同步的区间交易是不正确的或不存在的。所谓区间交易是“正确的”,即区间交易的正确性,可是指:区间交易所包含的内容是合法的;所谓区间交易是“存在的”,即区间交易的存在性,可是指:区间交易不是凭空得到的,而是目标共识节点基于目标共识节点中的区块链上的目标区间的交易数据生成的。
步骤2)-4)中,零知识简洁的非交互知识论证所包含的生成算法可包括:密钥生成算法、证明者算法和验证者算法。其中:密钥生成算法可以基于公共参数生成证明者密钥和验证者密钥;证明者算法可基于证明者密钥为待证明的命题生成证明信息;验证者算法可基于验证者密钥对证明者生成的证明信息进行验证,得到验证结果,该验证结果也可以称为电路检查结果。
需要说明的是,上述只是对零知识简洁的非交互知识论证的运作原理的简单介绍;在实际应用场景中,零知识简洁的非交互知识论证的运作原理还包括其他内容。例如,针对零知识简洁的非交互知识论证所包含的三种算法的相关介绍,上述只是给出示例性的说明;以密钥生成算法生成密钥的过程来说,密钥生成算法基于公共参数生成证明者密钥和验证者密钥的过程中,除涉及公共参数,还涉及生成密钥的程序等信息;本申请实施例在此不作详细描述。
基于上述描述的基于区块链网络的数据压缩方案,本申请实施例提出更为详细的基于区块链网络的数据压缩方法,下面将结合附图对本申请实施例提出的数据压缩方法进行详细介绍。
图2示出了本申请一个示例性实施例提供的一种基于区块链网络的数据压缩方法的流程示意图;该数据压缩方法可以由区块链网络中的目标共识节点来执行,该数据压缩方法可包括但不限于步骤S201-S205:
S201:对m+1个区块中的交易数据进行对象提取处理,得到P个对象。
正如前述所描述的,区块链网络中的包含一个或多个共识节点,区块链网络中的各个共识节点共同维护一条区块链;具体是各个共识节点各自存储有区块链网络中的区块链,当任一共识节点中的区块链上新增区块时,区块链网络中的其他共识节点可根据该任一共识节点的节点标识,从该任一共识节点中的区块链上同步该新增区块,实现区块链网络中数据的分布式存储。
其中,区块链网络中的区块链上设有目标区间,该目标区间包含m+1个区块,该m+1个区块可包括:区块链网络中的区块链上第n个区块到第n+m个区块,n、m均为大于零的整数;也就是说,区块链上设置的目标区间包含:第n个区块到第n+m个区块之间的m+1个区块。一种区块链网络中的区块链设有目标区间的示例性示意图可参见图3,如图3所示,目标共识节点中的区块链上包含区块高度为0的创世区块、链接于创世区块之后的区块高度为1的区块1、链接于区块1之后的区块高度为2的区块2、…;假设n=2,m=3,那么确定区块链上的第2个区块到第2+3个区块之间的4个区块组成目标区间,即区块链上的目标区间为第2个区块到第5个区块。
进一步的,目标区间包含的m+1个区块中存储有一个或多个交易数据,每个交易数据包含一个交易及该交易被执行后的交易结果;交易被执行后的交易结果中包含该交易的写集合,写集合中包括以键值对形式存储交易对应的对象的状态值。当对m+1个区块中的交易数据进行对象提取处理后,可提取到m+1个区块中的每个区块所包含的交易数据对应的对象;在本申请实施例中为便于阐述,以m+1个区块中的交易数据对应有P个对象为例进行说明,P为正整数;P个对象中的任一个对象是指:基于一个交易数据中的交易结果需要执行写操作的数据。需要说明的是,交易数据对应的对象的状态值的更为详细的介绍,可参见前述实施例相关描述,在此不作赘述。
基于上述对区块链网络中的区块链上设置的目标区间的相关介绍,当目标共识节点接收到数据压缩请求时,可执行对目标共识节点中的区块链上目标区间的m+1个区块中的交易数据进行对象提取处理,得到m+1个区块中各个区块包含的交易数据所对应的P个对象的步骤。其中,目标共识节点对m+1个区块中的交易数据进行对象提取处理,得到P个对象的具体实现过程可包括:先从m+1个区块中的每个区块中提取出交易数据,交易数据包含交易和交易被执行后的交易结果,交易结果中包含交易对应的对象和对象的状态值;然后,再从提取出的交易数据中提取每个交易数据所涉及的对象,进而得到m+1个区块对应的P个对象。
应当说明的是,目标共识节点接收到的数据压缩请求可以是目标共识节点根据目标对象在目标共识节点中输入压缩信息之后发起的,也可以是由区块链网络中除目标共识节点之外的任一共识节点发送或转发的。下面结合附图分别对上述给出的两种目标共识节点获取数据压缩请求的实现过程进行介绍,其中:
1)目标共识节点接收到的数据压缩请求是目标共识节点根据目标对象在目标共识节点中输入压缩信息之后发起的。一种示例性的目标共识节点通过接收到目标对象输入的压缩信息发起数据压缩请求的示意图可参见图4a,如图4a所示,目标共识节点为终端时,该终端包含的显示屏(或称为终端屏幕、显示屏幕等)中可输出信息获取界面,这样使用该终端的使用者(即前述提及的目标对象)可通过该信息获取界面输入压缩信息;相应的,终端检测到在信息获取界面中输入的压缩信息后,可基于该输入的压缩信息发起数据压缩请求。
2)目标共识节点接收到的数据压缩请求是由区块链网络中除目标共识节点之外的任一共识节点发送的。一种示例性的目标共识节点从区块链网络中的其他区块链节点处获取数据压缩请求的示意图可参见图4b,如图4b所示,区块链网络为包含见证子网络和共识子网络的双层网络,那么目标共识节点接收到的数据压缩请求可以是由共识子网络中的除目标共识节点以外的任一共识节点发送的或转发的(或是由见证子网络中的业务节点发送,并通过路由代理网络转发的)。更为详细的,该任一共识节点可能是基于目标对象在该任一共识节点中输入压缩信息后产生的数据压缩请求,或者,该任一共识节点可能是从区块链网络(如共识子网络或见证子网络)中的其他区块链节点(如共识节点或业务节点)处获取到的该数据压缩请求。
举例来说,见证子网络中包含业务节点401,如果该业务节点401接收到目标对象输入的压缩信息,那么该业务节点401基于压缩信息生成数据压缩请求;并将数据压缩请求经由路由代理网络中的路由节点转发至共识子网络中。需注意的是,业务节点401在发送数据压缩请求时,可指定将数据压缩请求发送至共识子网络中的任一个或多个共识节点,如指定将数据压缩请求发送至共识子网络中的共识节点402,然后再有共识节点402根据压缩信息中的目标共识节点的节点标识,将数据压缩请求转发至目标共识节点(如目标共识节点为共识节点403)。当然,业务节点401还可以直接将数据压缩请求经由路由代理网络发送至目标共识节点,本申请实施例对业务节点发送数据压缩请求的具体实施方式不作限定。
正如前述所描述的,目标共识节点接收的数据压缩请求中携带压缩信息;压缩信息包含:目标区间的起始区块高度n、目标区间的终止区块高度n+m、目标区间包含的交易数据的数量阈值(或称为batch_size),以及目标共识节点的节点标识。其中,目标区间的起始区块高度n是目标区间包含的第一个区块的区块高度。目标区间的终止区块高度n+m是目标区间包含的最后一个区块的区块高度。目标区间包含的交易数据的数量阈值是指:为目标区间设置的交易数据的总数量,如数量阈值为30个,表示目标区间包含的交易数据的总数量为30个。这样目标共识节点响应于数据压缩请求,可根据数据压缩请求所携带的压缩信息,快速确定出目标共识节点中的区块链上的目标区间。
S202:获取每个对象在目标共识节点中的区块链上第n-1个区块中的第一状态值,并对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根。
需要说明的是,考虑到欲通过对区块链上的目标区间的交易数据进行压缩,来实现释放目标共识节点的存储空间;本申请实施例支持根据区块链上的待压缩区间(即目标区间)中的交易数据,在被执行前的第一状态值和被执行后的第二状态值来生成新的区间交易,并采用新的区间交易代替目标区间中的交易数据,进而实现对目标区间内的交易数据的压缩,降低目标共识节点的存储负荷。基于上述描述的数据压缩思路,目标共识节点响应于接收到的数据压缩请求后,可在目标共识节点中的区块链上确定出目标区间,并从目标区间中提取出P个对象。然后,可获取P个对象对应的交易数据在被执行前的第一状态值,该第一状态值存储于目标共识节点中的区块链上位于目标区间之前且相邻的第n-1个区块中。换句话说,获取P个对象中的每个对象在目标共识节点中的区块链上的第n-1个区块中的第一状态值,任一对象在第n-1个区块中的第一状态值用于指示:该任一对象对应的交易数据在被执行前的状态值。然后再执行后续步骤,以实现生成新的区间交易。
具体实现中,从目标共识节点中的区块链上的第n-1个区块中,提取到P个对象中每个对象的第一状态值后,可根据每个对象的第一状态值构建目标区间的第一默克尔树,并对第一默克尔树进行根哈希计算,得到第一默克尔树的第一根哈希,再将该第一根哈希确定为目标区间的第一状态根(pre-state-root)。特别需要说明的是,在本申请实施例中会涉及多次构建默克尔树,为确保每次构建的默克尔树的一致性,上述实现过程中根据每个对象的第一状态值构建目标区间的第一默克尔树的更详细过程可包括:根据对象序列中的每个对象的第一状态值,来构建目标区间的第一默克尔树。其中,对象序列中包含按照交易序列中各个交易数据的排列顺序,按序排列的P个对象;交易序列中包含按照排序规则进行排序的m+1个区块中的交易数据。其中,排序规则可包括:若同一区块中包含至少两个交易数据,则根据该至少两个交易数据的上链时间的先后顺序对该至少两个交易数据进行排序;若存在多个区块,则按照区块之间的链接顺序,对各个区块对应的交易数据进行排序,进而得到交易序列。
下面结合图5对根据P个对象确定对象序列的过程进行介绍,其中:首先,从目标共识节点中的区块链上的目标区间中提取出每个区块包含的交易数据,如目标区间中的第n个区块中包含交易数据1及交易数据2,且交易数据1的上链时间早于交易数据2的上链时间,第n+1个区间中包含交易数据3;然后,按照前述提及的排序规则,对m+1个区块中的一个或多个交易数据进行排序,得到交易序列,如交易序列可表示为:交易数据1→交易数据2→交易数据3→…→交易数据P。再按照交易序列中各个交易数据的排列顺序,对从各个交易数据提取到的P个对象进行排序,得到对象序列,如交易数据1对应对象1、交易数据2对应对象2、交易数据3对应对象3、…,那么按照交易序列构建得到的对象序列可表示为:对象1→对象2→对象3→…→对象P。根据上述给出的示例性的对象序列和交易序列不难看出,对象序列中的P个对象在对象序列中的排列顺序,与各个对象对应的交易数据在交易序列中的排列顺序一致。
进一步的,根据对象序列中的每个对象的第一状态值,构建目标区间的第一默克尔树的示例性过程可参见图6;如图6所示,从目标共识节点中的区块链上目标区间中的交易数据中提取到P个对象后,可按照交易序列中各个交易数据的排列顺序,对P个对象进行排列得到对象序列,采用该对象序列中的各个对象作为构建的第一默克尔树的叶子节点;即:根据对象序列中的每个对象构建的第一默克尔树中的叶子节点的排列顺序,与对象序列中各个对象的排列顺序是一致的。然后,基于对象序列中各个对象在第n-1个区间中的第一状态值作为构建的第一默克尔树的中间节点,并对各个对象的第一状态值进行哈希计算,得到每个对象对应的哈希值;最后,对各个对象的哈希值进行根哈希计算,得到第一默克尔树的第一根哈希。其中,本申请实施例对用于对第一状态值进行哈希运算,以及用于对各个对象的哈希值进行根哈希运算的哈希算法的类型不作限定;例如,哈希算法可包括但不限于:MD4(Message Digest4)算法、MD5(Message Digest5)算法、SHA1(Secure HashAlgorithm1)算法等等,本申请实施例对具体采用哪种哈希算法不作限定。
S203:获取每个对象在目标共识节点中的区块链上第n+m个区块中的第二状态值,并对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根。
具体实现中,目标共识节点响应于接收到的数据压缩请求后,可在目标共识节点中的区块链上确定出目标区间,并从目标区间中提取出P个对象。然后,可获取P个对象对应的交易数据在被执行后的第二状态值,该第二状态值存储于目标区间中的最后一个区块(即第n+m个区块)中。换句话说,获取P个对象中的每个对象在目标共识节点中的区块链上的第n+m个区块中的第二状态值(post-state-root),任一对象在第n+m个区块中的第二状态值用于指示:该任一对象对应的交易数据在被执行后的状态值。然后再执行后续步骤,以实现生成新的区间交易。
与步骤S202描述的根据对象序列中的各个对象的第一状态值构建目标区间的第一默克尔树的具体实施过程类似;目标共识节点在获取到P个对象中的每个对象在第n+m个区块中的第二状态值后,可根据对象序列中的每个对象的第二状态值,构建目标区间的第二默克尔树,第二默克尔树中的叶子节点的排列顺序与对象序列中的各个对象的排列顺序一致;再对第二默克尔树进行根哈希计算,得到第二默克尔树的第二根哈希;最后将第二根哈希确定为目标区间的第二状态根。根据对象对象序列中的每个对象的第二状态值,构建目标区间的第二默克尔树的示例性过程可参见图7,其中,第二默克尔树的具体构建过程可参见图6所示具体构建过程的相关描述,在此不作赘述。
S204:基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易。
基于前述步骤得到目标区间中的m+1个区块中的交易数据、交易数据涉及的每个对象的第一状态值及第二状态值、根据状态值为目标区间生成的第一状态根及第二状态根后,可调用零知识证明电路进行运算处理,得到目标区间的区间交易。其中,区间交易中不包含m+1个区块中的每个区块的交易数据,而包含目标区间的相关信息;基于这些相关信息能够恢复出m+1个区块中任一区块包含的交易数据的状态值,这使得通过区间交易大幅降低目标共识节点的存储负荷的情况下,还能够保证根据压缩后的区间交易能够恢复目标共识节点中的区块链在任意时刻的状态值。
具体生成目标区间的区间交易的实现过程可包括如下步骤s11-s14,其中:
s11:获取零知识证明电路。正如前述所描述的,零知识证明电路是基于待证明命题生成的;零知识证明电路中写入了对为目标区间生成证明信息的运算逻辑和对目标区间生成的区间交易进行验证的运算逻辑;基于此,零知识证明电路可称为算数电路(Rank OneConstrain System,R1CS)。一种示例性的零知识证明电路的结构可参见图8,该零知识电路是由一些加法门、乘法门以及一些常数门组成的,如图8所示的零知识证明电路包括两个乘法门和一个加法门;假设零知识证明电路的输入信息为a、b、c,采用零知识证明电路包含的加法门可对a、b进行相加得到a+b,采用乘法门对b、c进行相乘得到b*c;然后,采用乘法门对a+b以及b*c进行相乘,得到零知识证明电路的输出信息(a+b)*b*c。应当说明的是,一些常见的计算逻辑,如计算表达式、计算哈希值等均可以表示为零知识证明电路。
在实际应用中,对待证明命题进行初始化就可得到零知识证明电路;当将输入信息输入至零知识证明电路后,可按照零知识证明电路包含的各个门按序执行运算,得到零知识证明电路的输出信息;该零知识证明电路的输出信息可简单理解为对待证明命题进行求解得到的答案。其中,待证明命题可以是由开发对象或业务对象根据实际业务需求设置的。
还需说明的是,本申请实施例在基于零知识简洁的非交互知识论证技术,初始化得到零知识证明电路后,还可获取零知识简洁的非交互知识论证技术的密钥生成算法,并根据该密钥生成算法为证明者生成证明者公共串以及为验证者生成验证者公共串;其中,证明者公共串是证明者所使用的密钥,证明者包括目标共识节点,验证者公共串是验证者所使用的密钥,验证者包括区块链网络中需同步目标区间中的区块的任一共识节点。进一步的,还将生成的验证者公共串存储至区块链中,以实现对该验证者公共串的上链,这样可确保验证者公共串的安全性。并且,将初始化得到的零知识证明电路以及证明者公共串在链下公开,如将零知识证明电路和证明者公共串放到某个网站页面中,这样区块链网络中的任一具有获取零知识证明电路和/或证明者公共串权限和需求的共识节点(如目标共识节点),可以通过该网站页面的链接地址(如网站地址)打开该网站页面,以获取到零知识证明电路和/或证明者公共串。
s12:基于m+1个区块中的交易数据构建交易集。考虑到在创建零知识证明电路时已设置好输入的交易数据的数量阈值,即输入零知识证明电路的交易数据的数量是固化的;因此,在m+1个区块中的交易数据的总数量小于数量阈值时,需要采用空交易数据进行补齐,以实现输入零知识证明电路的交易集中包含的交易数据的总数量为数量阈值。具体地,对m+1个区块中的交易数据进行统计,得到m+1个区块中的交易数据的数量;若所述m+1个区块中的交易数据的数量等于数量阈值,则交易集包含m+1个区块中的交易数据;若m+1个区块中的交易数据的数量小于数量阈值,则获取目标数量的空交易数据,并将目标数量的空交易数据添加至交易集中,此时交易集包含m+1个区块中的交易数据及空交易数据,且空交易数据的数量(即目标数量)与m+1个区块中的交易数据的数量之和等于数量阈值。上述提及的空交易数据可是指采用默认格式表示的交易,该空交易数据中不包含交易数据。
一种示例性的基于m+1个区块中的交易数据构建交易集的示意图可参见图9,如图9所示,假设目标共识节点中的区块链上的目标区间包含的交易数据为:交易数据1、交易数据2、交易数据3、…、交易数据X,X为大于3的整数;若X小于为目标区间设置的数量阈值,那么可将数量阈值与X相减,得到差值Y,表示需采用Y个空交易数据对交易集进行补位,则获取Y个空交易数据,并将Y个空交易数据添加至交易集,得到包含的交易数据的数量为数量阈值的交易集。
s13:采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息。基于前述描述可知,零知识证明电路是基于待证明命题生成的,该零知识证明电路中写入了生成证明信息的运算逻辑;因此,将每个对象的第一状态值和第二状态值、目标区间对应的的第一状态根及第二状态根、交易集输入至零知识证明电路后,就可以直接基于零知识证明电路的输出信息生成目标区间的证明信息。
目标区间的证明信息可包括:目标区间对应的零知识证明电路的输出信息,以及证明字符串(或称为zk-snark)。其中:①目标区间对应的零知识证明电路的输出信息包括:零知识证明电路基于输入信息中的每个对象的第一状态值生成的第一候选状态根,与目标共识节点生成的目标区间对应的第一状态根之间的第一比较结果、零知识证明电路基于输入信息中的每个对象的第二状态值生成的第二候选状态根,与目标共识节点生成的目标区间对应的第二状态根之间的第二比较结果、零知识证明电路基于交易集中的各个交易数据的写集合所在字段计算得到的写集合哈希,以及零知识证明电路基于交易集中除空交易数据以外的所有交易数据的哈希值计算得到的交易集哈希。②证明字符串是基于证明者公共串为零知识证明电路计算得到输出信息的计算过程生成的;也就是说,证明字符串可是指证明者为零知识证明电路的计算过程生成的,该证明字符串的生成可用于表示:证明者(如目标共识节点)基于零知识证明电路已执行计算过程。其中,该证明字符串可以是由多个字符组成的字符串,字符可包括但不限于:英文字符(即字母)、数字和标点符号(如逗号“,”、句号“。”、方括号“【】”)等。
本申请实施例中,对目标区间的证明信息中的证明字符串的生成过程可参见上述描述的相关内容;下面结合图10,重点给出零知识证明电路对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,得到零知识证明电路的输出信息的计算过程;该计算过程可大致包括步骤1-步骤4,本申请实施例对步骤1-步骤5之间的执行先后顺序不作限定,在此说明;如图10所示:
步骤1:将每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集输入至零知识证明电路。其中,每个对象的第一状态值及第二状态值,以及交易集均是零知识证明电路的不公开输入,所谓不公开输入可简单理解为只有验证者可访问的输入信息,这能够有效保证输入的对象的第一状态值和第二状态值的保密性。目标区间对应的第一状态根和第二状态根是零知识证明电路的公开输入;与不公开输入相反的,所谓公开输入可是指区块链网络中任一具有获取需求的区块链节点均可以访问(或获取)的输入信息。
步骤2:零知识证明电路根据输入信息中的每个对象的第一状态值(或称为pre-state)构建目标区间的第一候选默克尔树,并计算第一候选默克尔树的第一候选状态根,再将第一候选状态根与输入信息中包含的目标区间对应的第一状态根进行比较,得到第一比较结果。其中,若第一比较结果为比较成功,确定对目标区间的第一状态根校验成功,表示目标共识节点生成的目标区间对应的第一状态根,与零知识证明电路生成的目标区间对应的第一候选状态根是相同的,即证明者生成的目标区间对应的第一状态根是正确的。反之,若第一比较结果为比较失败,确定对目标区间对应的第一状态根校验失败,表示目标共识节点生成的目标区间对应的第一状态根,与零知识证明电路生成的目标区间对应的第一候选状态根不同,即证明者生成的目标区间对应的第一状态根是错误的。另外,基于上述实现过程比较得到的第一比较结果作为零知识证明电路的可公开输出,即该第一比较结果可以被区块链网络中的任一区块链节点访问。
步骤3:零知识证明电路根据输入信息中的每个对象的第二状态值(或称为post-state)构建目标区间的第二候选默克尔树,并计算第二候选默克尔树的第二候选状态根,再将第二候选状态根与输入信息中包含的目标区间对应的第二状态根进行比较,得到第二比较结果。其中,若第二比较结果为比较成功,确定对目标区间的第二状态根校验成功,表示目标共识节点生成的目标区间对应的第二状态根,与零知识证明电路生成的目标区间对应的第二候选状态根是相同的,即证明者生成的目标区间对应的第二状态根是正确的。反之,若第二比较结果为比较失败,确定对目标区间对应的第二状态根校验失败,表示目标共识节点生成的目标区间对应的第二状态根,与零知识证明电路生成的目标区间对应的第二候选状态根不同,即证明者生成的目标区间对应的第二状态根是错误的。另外,基于上述实现过程比较得到的第二比较结果作为零知识证明电路的可公开输出,即该第二比较结果可以被区块链网络中的任一区块链节点访问。
步骤4:零知识证明电路从输入信息的交易集中获取除空交易数据以外的每个交易数据的写集合所在字段,任一交易数据的写集合所在字段位于交易数据包含的交易结果中;然后,对每个交易数据的写集合所在字段进行哈希计算,得到写集合哈希;其中,交易数据的写集合所在字段可是指一段用于表示交易数据的写集合的字符串。例如:交易集中的交易数据1的写集合所在字段表示为:RwSet1、交易数据2的写集合所在字段表示为:RwSet2、交易数据3的写集合所在字段表示为:RwSet3;那么采用哈希算法对每个交易数据的写集合所在字段进行哈希计算,得到的写集合哈希可表示为:hash(RwSet1|RwSet2|RwSet3|…)。需要说明的是,哈希算法可参见前述相关描述,在此不作赘述。另外,基于上述实现过程写集合哈希是作为零知识证明电路的可公开输出,即该写集合哈希可以被区块链网络中的任一区块链节点访问。
步骤5:零知识证明电路从输入信息中的交易集中获取除空交易数据以外的每个交易数据的哈希值,然后采用哈希算法对交易集中除空交易数据以外的交易数据的哈希值进行哈希计算,得到交易集哈希。正如前述所描述的,哈希算法可包括MD5等算法,本申请实施例对具体采用哪种哈希算法不作限定,在此说明。另外,计算得到的交易集哈希是作为零知识证明电路的可公开输出,即该写集合哈希可以被区块链网络中的任一区块链节点访问。
综上所述,基于上述步骤1-步骤5所示的具体实施过程,可得到零知识证明电路的输出信息,然后基于零知识证明电路的输出信息和证明者采用证明者公共串为零知识证明电路的计算过程生成的证明字符串,可构成目标区间的证明信息。
s14:基于证明信息构建目标区间的区间交易。
基于证明信息构建的目标区间的区间交易中可包括:目标区间包含的交易数据的数量阈值、目标区间的起始区块高度n、目标区间的终止区块高度n+m、证明信息、验证者公共串、目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、目标区间的区间标识以及候选交易集哈希等。其中:①目标区间包含的交易数据的数量阈值、目标区间的起始区块高度n、目标区间的终止区块高度n+m的获取过程可参见前述步骤S201所示的具体实施过程的相关描述,在此不作赘述。②目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合,可以从目标共识节点中的区块链所包含的区块中获取,具体获取过程不作限定。③目标区间的区间标识可用于唯一标识目标共识节点中的区块链上的目标区间,也就是说,根据该区间标识可以快速定位到目标共识节点中的区块链上的目标区间的区间范围。④候选交易集哈希是由目标共识节点,根据目标共识节点中的区块链上m+1个区块中的交易数据的哈希值生成的;也就是说,目标共识节点可从其存储的区块链上的m+1个区块中获取每个交易数据的哈希值,然后采用哈希算法对每个交易数据的哈希值再求哈希,得到候选交易集哈希;其中,哈希算法的相关介绍可参见步骤S202所示的相关描述,在此不作赘述。⑤验证者公共串是如前述所提及的采用密钥生成算法生成的。⑥证明信息是由目标共识节点采用零知识证明电路为目标区间生成的。
需要说明的是,上述给出的区间交易所包含的信息的具体生成过程可参见前述相关描述,在此不作赘述。
S205:采用区间交易对目标共识节点中的区块链进行压缩处理。
具体实现中,可对目标共识节点中的区块链包含的m+1个区块中的交易数据进行清除,清除后的m+1个区块的区块体中不包含交易数据,在一定程度上释放目标共识节点的存储空间;然后,将目标共识节点中的区块链包含的第i个区块中的目标交易数据替换为目标区间的区间交易,i为整数,且i∈[n,n+m];也就是说,可以将生成的目标区间的区间交易存储至目标区间中的任一个区块(如第i个区块)内,具体可采用该区间交易替换该任一个区块中的目标交易数据进行存储;这样相当于采用占用存储空间较小的区间交易,替换目标区间中占用存储空间交易的海量交易数据,进而降低目标共识节点的存储负担。基于前述描述可知,目标区间中的每个区块包含的交易数据均为清除,因此,采用区间交易替换第i个区块中的目标交易数据可是指:将区间交易存储到该第i个区块中目标交易数据所在的存储空间(或称为存储位置)处;进一步的,考虑到第i个区块中的区块体中的交易数据均被清除,那么第i个区块中的目标交易数据可是指第i个区块中上链时间最早的交易数据。
下面结合图11,并以第i个区块为目标区间包含的第一个区块(即第n个区块),且目标交易数据为第i个区块中的第一个交易为例,给出采用区间交易对目标共识节点中的区块链进行压缩处理的示意图;如图11所示,假设目标区间包含区块链上的第n个区块到第n+m个区块;其中,第n个区块的区块体中包含交易数据1、交易数据2及交易数据3,第n+1个区块的区块体中包含交易数据4、…、第n+m个区块中包含交易数据5及交易数据6,那么在得到目标区间的区间交易后,先将第n个区块到第n+m个区块中的每个区块中的交易数据进行删除(或清除),然后采用区间交易替换第n个区块中的第一交易(如交易数据1),具体是将区间交易放置于第n个区块中的第一交易所处的存储位置,得到压缩处理后的目标共识节点中的区块链。通过上述压缩处理方式,可实现采用占用存储空间较小的区间交易,替换目标区间中占用存储空间交易的海量交易数据,大幅降低区块链网络中的目标共识节点存储的负荷。并且压缩处理后的区块链中包含区间交易,且区间交易中包含每个交易数据的写集合,这保证了能够根据压缩后的数据恢复出区块链任意时刻的状态值,如要恢复目标区间中第n+3个区块中的交易数据的状态值,则可以该交易数据对应的对象在第n+3个区块之前的各个区块中的写集合所包含的状态值,恢复出该交易数据对应的对象在第n+3个区块中的状态值。
本申请实施例中,目标共识节点中的区块链设有目标区间,目标区间包含m+1个区块,如链上的第n个区块到第n+m个区块,目标共识节点可获取m+1个区块中的交易数据对应的对象在第n-1个区块中的第一状态值,以及各个对象在第n+m个区块中的第二状态值,第一状态值可理解为对象对应的交易数据在被执行前的状态值,第二状态值可理解为对象对应的交易数据被执行后的状态值。这样根据交易数据被执行前的状态值得到目标区间的第一状态根,以及根据交易数据被执行后的第二状态值得到目标区间的第二状态根、m+1个区块中的交易数据、第一状态值和第二状态值,并采用零知识证明电路可得到目标区间的区间交易,该区间交易中包含目标区间的相关信息;最后通过在目标共识节点中的区块链中删除m+1个区块中的交易数据,并将区间交易添加至m+1个区块中的一个区块内,实现对目标区间中的交易数据的压缩处理。通过上述涉及的数据压缩方案在大幅降低目标共识节点的存储负荷的情况下,还同时保证了:1)能够根据压缩后的数据恢复出区块链任意时刻的状态值,2)可以证明生成的目标区间的区间交易是根据压缩前的目标区间所包含的交易数据压缩而来的,证明了区间交易的存在性,即区间交易与目标区间中的交易数据之间是具有关联性,3)还可以证明目标区间的区间交易是被正确的压缩的,而非篡改得到的。
上述图2所示实施例主要阐述了区块链网络中的目标共识节点(如证明者),基于零知识证明对目标共识节点中的区块链进行压缩处理的实现过程,下面结合图12来对验证者(如第一共识节点)对零知识证明电路进行验证的实现过程进行详细阐述。图12示出了本申请一个示例性实施例提供的一种基于区块链网络的区块同步方法的流程示意图;该区块同步方法可以由区块链网络中除目标共识节点以外的第一共识节点来执行,该区块同步方法可包括但不限于步骤S1201-S1204:
S1201:从区块链网络中的第二共识节点中同步区块链上的第i个区块。
应当理解的是,当区块链网络中的存储新加入的共识节点时,该共识节点需要从区块链网络中的区块链的创世区块开始,按照区块链上各个区块的链接顺序依次同步区块链上的各个区块,以实现区块链网络中的数据的分布式存储。若区块链网络中的第一共识节点正在执行区块同步的操作,那么该第一共识节点可以从第二共识节点中的区块链上的同步创世区块、第1个区块、…、第i个区块,以实现数据分布式存储。其中,第一共识节点可以是新加入区块链网络中的共识节点,或是区块链网络中原本存在的、且还未同步到第i个区块的共识节点。第二共识节点是区块链网络中除第一共识节点之外的任一共识节点,如第二共识节点为图2所示实施例中的提到的目标共识节点。所谓第一共识节点从第二共识节点中同步区块链上的第i个区块的过程,可理解为:第一共识节点基于待同步的第i个区块的区块高度i向第二共识节点发送区块同步请求,第二共识节点响应于该区块同步请求,将第i个区块发送至第一共识节点,具体是将第i个区块的区块头和区块体发送至第一共识节点。
S1202:若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易。
在第一共识节点从第二共识节点中的区块链上同步第i个区块时,第一共识节点获取到第i个区块的区块头和区块体;若发现第i个区块的区块体中包含区间交易的标识,则确定区块链网络中的区块链进行了数据压缩处理,那么执行根据区间交易的标识获取区间交易的步骤。
值得说明的是,本申请实施例中的目标共识节点在为目标区间生成区间交易后,目标共识节点所在的区块链网络中的其他具有共识权限的共识节点(如第二共识节点)需对该区间交易进行共识,并在共识成功后区块链网络中的其他共识节点才存储区间交易的标识,以及根据自身的数据压缩需求决定是否存储区间交易;换句话说,区间交易的标识是在第二共识节点(或区块链网络中的其他共识节点)对区间交易验证成功后,存储至第二共识节点中的区块链上第i个区块中的。
下面结合图13,并以区块链网络中的第二共识节点为例,给出第二共识节点对区间交易的共识过程进行简单介绍。具体实现中:
首先,第二共识节点响应于针对区间交易的广播事件(如目标共识节点将区间交易发送至第二共识节点时产生的事件,或区块链网络中的其他共识节点将区间交易转发至第二共识节点时产生的事件),获取区间交易;其中,区间交易中包含候选交易集哈希及目标区间中的交易数据的写集合,候选交易集哈希是目标共识节点基于目标共识节点中的区块链上的第n个区块到第n+m个区块中的交易数据的哈希值运算得到的。
其次,从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的哈希值,并对交易数据的哈希值进行哈希计算,得到第二共识节点计算得到的交易哈希值;然后,将第二共识节点计算得到的交易哈希值,与区间交易中包含的由目标共识节点计算得到的候选交易集哈希进行比对,得到交易哈希比对结果。其中,若该交易哈希比对结果为比对成功,表示第二共识节点计算得到的交易哈希值,与区间交易中包含的由目标共识节点计算得到的候选交易集哈希相同,则确定候选交易集哈希是正确的;反之,若该交易哈希比对结果为比对失败,表示第二共识节点计算得到的交易哈希值,与区间交易中包含的由目标共识节点计算得到的候选交易集哈希不同,则确定候选交易集哈希是错误的,候选交易集哈希。
其次,从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的写集合,并将从第二共识节点中的区块链中获取的交易数据的写集合,与区间交易中的交易数据的写集合进行比对,得到写集合比对结果。若写集合比对结果为比对成功,表示区间交易中的交易数据对应的状态值是正确的,即区间交易中的交易数据的写集合未被篡改;反之,若写集合比对结果为比对失败,表示区间交易中的交易数据对应的状态值中存在一个或多个交易数据对应的状态值是错误的。本申请实施例对上述给出的两个验证步骤之间的执行先后顺序不作限定,在此说明。
最后,若写集合比对结果和交易哈希比对结果均为比对成功,表示区间交易中的候选交易集哈希是正确的,且区间交易中的交易数据的写集合未被篡改,则得到验证结果,且验证结果为验证成功。
进一步的,在验证结果为验证成功时,第二共识节点对区间交易的标识进行存储。如果第二共识节点存在数据压缩需求,那么第二共识节点还根据区间交易对第二共识节点中的区块链进行压缩处理,以实现第二共识节点存储区间交易;第二共识节点基于区间交易对第二共识节点中的区块链进行压缩处理的具体实施过程,可参见前述图2所示实施例中的第一共识节点基于区间交易对第一共识节点中的区块链进行压缩处理的具体实施过程的相关描述,在此不作赘述。
基于上述描述的第二共识节点对区间交易进行验证相关描述可知,第二共识节点中的第i个区块中包含有区间交易的标识,并不代表第i个区块中就一定包含有区间交易,因而根据第二共识节点中的区块链上是否存储有区间交易,上述提及的根据区间交易的标识获取区间交易的具体获取过程并不相同。可选的,若第二共识节点中的区块链上存储有区间交易(如第i个区块中的区块体中包含区间交易),那么第一共识节点可以直接从第二共识节点获取区间交易;可选的,若第二共识节点中的区块链上第i个区块中只包含区间交易的标识,而不包含区间交易,那么第一共识节点根据区间交易的标识从区块链网络中存储有区间交易的共识节点中获取区间交易。下面结合附图分别对第二共识节点中的区块链上存储有区间交易,以及不存储区间交易这两种情况时,第一共识节点基于区间交易的标识获取区间交易的实现过程进行介绍,其中:
(1)第二共识节点中的区块链上的第i个区块中包含区间交易的标识,且第i个区块中包含区间交易。此实现方式下获取区间交易的示意图可参见图14a,如图14a所示,假设i=n,第二共识节点中的区块链上的第n个区块的区块体中存储有区间交易,由于在前述步骤中第一共识节点已从第二共识节点中同步第i个区块的区块体,那么第一共识节点可以直接从第i个区块的区块体中获取到区间交易。
(2)第二共识节点中的区块链上的第i个区块中包含区间交易的标识,且第i个区块中不包含区间交易。此实现方式下,本申请实施例支持如下两种可选的获取区间交易的实现过程,其中:
在一种实现方式中,第二共识节点将存储有区间交易的任一共识节点的目标节点标识返回至第一共识节点,以便于第一共识节点根据该目标节点标识从该任一共识节点中获取区间交易。具体实现中,若第一共识节点发现从第二共识节点中区块链同步的第i个区块中不包含区间交易,则第一共识节点可向第二共识节点发送第一获取请求,该第一获取请求用于请求第二共识节点返回区块链网络中存储有区间交易的共识节点的目标节点标识,如返回目标共识节点的节点标识;第二共识节点响应于该第一获取请求,从第二共识节点维护的节点标识列表(如前述表1)中获取区块链网络中存储有区间交易的任一共识节点的目标节点标识,然后将该目标节点标识返回至第一共识节点,以便于第一共识节点根据目标节点标识从目标节点标识对应的共识节点中获取区间交易,如第一共识节点根据目标节点标识向该目标节点标识对应的共识节点发送区间交易获取请求,这样该目标节点标识对应的共识节点响应于区间交易获取请求返回区间交易。一种示例性的通过第一获取请求获取区间交易的示意图可参见图14b。
其他实现方式中,第二共识节点从区块链网络中存储有区间交易的任一共识节点中获取区间交易,并将区间交易转发至第一共识节点。具体实现中,若第一共识节点发现从第二共识节点中区块链同步的第i个区块中不包含区间交易,则第一共识节点可向第二共识节点发送第二获取请求,该第二获取请求用于请求第二共识节点向区块链网络中存储有区间交易的任一共识节点获取并返回区间交易;第二共识节点接收到第一共识节点发送的第二获取请求后,可响应于第二获取请求从区块链网络中存储有区间交易的任一共识节点中获取区间交易;第二共识节点再将区间交易返回至第一共识节点。一种示例性的通过第二获取请求获取区间交易的示意图可参见图14c。
S1203:对区间交易进行验证,得到验证结果。
基于前述描述可知,目标共识节点为目标区间生成的区间交易中包括:目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、证明信息、验证者公共串以及候选交易集哈希。其中,证明信息中包含零知识证明电路的输出信息以及证明字符串;验证者公共串是由目标共识节点根据密钥生成算法为验证者生成的,在本申请实施例中的验证者包括第一共识节点;候选交易集哈希是目标共识节点对m+1个区块中的交易数据的哈希值进行哈希计算得到的。
具体实现中,第一共识节点对区间交易进行验证,得到验证结果的具体实施过程可包括步骤s21-s23,其中:
s21:根据区间交易中的m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息。其中,生成的验证信息包括:第一参考状态根、第二参考状态根、参考写集合哈希以及候选交易哈希;下面对验证信息所包含的各个信息的生成过程进行说明。其中:
①第一参考状态根的生成过程。具体实现中,从区间交易中的交易数据的写集合中提取对应的P个交易,并从第一共识节点中的区块链上获取该P个对象在第n-1个区块时的第三状态值;然后对P个对象的第三状态值进行根计算处理,得到第一参考状态根,其中,对P个对象的第三状态值进行的根计算处理的具体实施过程,可参见前述描述的第一共识节点对P个对象的第一状态值进行根计算处理的具体实施过程的相关描述,在此不作赘述。
②第二状态根的生成过程。具体实现中,获取区间交易中的交易数据的写集合,并对区间交易中的交易数据的写集合进行预执行处理,得到更新后的P个对象的第四状态值;换句话说,在获取到区间交易中的交易数据的写集合后,可预执行写集合,实现对P个对象的状态值的更新,得到P个对象的更新后的第四状态值;然后,对更新后的P个对象的第四状态值进行根计算处理,得到第二参考状态值。正如前述所描述的,任一交易数据对应的写集合中包含该交易数据当前的状态值,因而上述提及的预执行写集合可简单理解为采用写集合中的交易数据的状态值(即第四状态值),对第一共识节点中的区块链上交易数据的第三状态值进行更新,得到更新后的第四状态值。
③参考写集合哈希的生成过程。具体实现中,从区间交易中获取m+1个区块中的交易数据的写集合所在字段,然后,对区间交易中的交易数据的写集合所在字段进行哈希计算,得到参考写集合哈希。
④正如前述所描述的,候选交易集哈希直接包含于区间交易中;因此,第一共识节点可以直接从区间交易中获取到候选交易集哈希。
综上所述,第一共识节点基于上述①、②、③及④所示的实施过程,可实现基于区间交易生成验证信息。
s22:采用验证信息对区间交易中的证明信息中的零知识证明电路的输出信息进行校验。
基于前述描述可知,证明信息中的零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希;其中,第一比较结果是目标共识节点将根据P个对象的第一状态值构造得到的第一候选默克尔树的第一候选状态根,与目标区间的第一状态根进行比较得到的;第二比较结果是目标共识节点将根据P个对象的第二状态值构造得到的第二候选默克尔树的第二候选状态根,与目标区间的第二状态根进行比较得到的;写集合哈希是目标共识节点基于零知识证明电路的输入信息中的每个交易数据的写集合所在字段进行哈希计算得到的;交易集哈希是目标共识节点基于零知识证明电路中的交易数据的哈希值进行哈希运算得到的。需要说明的是,上述零知识证明电路的输出信息所包含的各个信息的具体生成过程,可参见前述图2所示实施例中的具体实施过程的相关描述,在此不作赘述。
基于验证信息对零知识证明电路的输出信息进行校验的具体实施过程可包括:首先,若第一比较结果和第二比较结果均为比较成功,表示目标共识节点已确定:目标共识节点基于区块链中的交易数据的第一状态值生成的第一状态根,与零知识证明电路生成的第一候选状态值是相同的,且目标共识节点基于区块链中的交易数据的第二状态值生成的第二状态根,与零知识证明电路生成的第二候选状态值是相同的,则将目标区间的第一状态根与第一参考状态根进行比较,得到第一参考比较结果;同理,将目标区间的第二状态根与第二参考状态根进行比较,得到第二参考比较结果。当前,由于第一比较结果为比较成功,那么第一候选状态根与第一状态根相同,那么此处也可以是将第一候选状态根与第一参考状态根之间进行比较,得到第一参考比较结果;同理,由于第二比较结果为比较成功,那么第二候选状态根与第二状态根相同,那么此处也可以是将第二候选状态根与第二参考状态根之间进行比较,得到第二参考比较结果。其次,将参考写集合哈希与零知识证明电路的输出信息中的写集合哈希进行比较,得到写集合比较结果;以及,将零知识证明电路的输出信息中的交易集哈希与区间交易中的候选交易集哈希进行比较,得到交易比较结果;最后,若第一参考比较结果、第二参考比较结果、写集合比较结果以及交易比较结果均比较成功,则确定校验通过。
s23:若校验通过,则根据验证者公共串对证明信息中的证明字符串进行验证,得到验证结果。
基于前述描述可知,证明信息中的证明字符串是证明者基于证明者公共串,为零知识证明电路计算得到输出信息的计算过程生成的;证明字符串的生成表示:目标共识节点基于零知识证明电路已执行计算过程;证明者公共串是证明者所使用的密钥,证明者包括目标共识节点。那么根据验证者公共串对证明信息中的证明字符串进行验证的具体实施过程可包括:从区块链网络中的区块链上获取验证者公共串,并采用验证公共串对目标区间的证明信息中的证明字符串进行验证,得到验证结果。其中,证明字符串是由证明者(即全量节点)采用证明者字符串,为零知识证明电路计算得到输出信息的计算过程生成的,那么当验证结果为验证成功时,可以确定目标共识节点确实已完成零知识证明电路的计算过程,此处的计算过程的具体实施方式可参见前述零知识证明电路得到输出信息的运算逻辑,在此不作赘述。
S1204:若验证结果为验证通过,则将区间交易中的交易数据的写集合更新后的状态值进行存储。
具体实现中,在确定对区间交易中的证明信息验证成功时,本申请实施例支持第一共识节点将区间交易进行存储,具体是将区间交易中的交易数据的写集合更新后的状态值进行存储;例如,将区间交易存储至同步的第i个区块中的第一交易数据所在的存储位置处。
需要说明的是,本申请实施例支持在第一共识节点获取到区间交易后,对第二共识节点中的区块链上的第n个区块到第n+m个区块中的每个区块的区块头进行同步;然后,在对区间交易校验成功后,第一共识节点将区间交易存储至目标区间内。其中,第一共识节点在获取到区间交易后,从第二共识节点中同步第n个区块到第n+m个区块的区块头的具体实施过程可包括:第一共识节点从区间交易中获取目标区间的起始区块高度n和终止区块高度n+m;然后,基于起始区块高度n和终止区块高度n+m从第二共识节点中的区块链中同步第n个区块到第n+m个区块进行存储,而跳过对同步的各个区块中默克尔根的校验的步骤。
本申请实施例中,第一共识节点(即验证者)在获取到区间交易后,可从第二共识节点中的区块链上同步第n个区块到第n+m个区块之间的m+1个区块的区块头,并且跳过校验默克尔根的步骤;然后,在对区间交易验证成功后,将区间交易存储至m+1个区块中,可实现采用目标区间的区间交易替换目标区间中的所有交易数据,进而实现释放第一共识节点(或区块链网络中进行数据压缩的任一共识节点)的存储空间,降低第一共识节点的存储负荷。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方法,相应地,下面提供了本申请实施例的装置。
图15示出了本申请一个示例性实施例提供的一种基于区块链网络的数据压缩装置的结构示意图,该基于区块链网络的数据压缩装置可以是运行于目标共识节点中的一个计算机程序(包括程序代码);该基于区块链网络的数据压缩装置可以用于执行图2所示的方法实施例中的部分或全部步骤;其中,区块链网络中包含一个或多个共识节点,该装置包括区块链网络中的目标共识节点,区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;该装置包括如下单元:
处理单元1501,用于对m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;
获取单元1502,用于获取每个对象在目标共识节点中的区块链上第n-1个区块中的第一状态值,并对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根;
获取单元1502,还用于获取每个对象在目标共识节点中的区块链上第n+m个区块中的第二状态值,并对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根;
处理单元1501,还用于基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易;
处理单元1501,还用于采用区间交易对目标共识节点中的区块链进行压缩处理;其中,压缩后的目标共识节点中的区块链中的目标区间中不包含交易数据,但包含区间交易。
在一种实现方式中,处理单元1501,还用于:
接收数据压缩请求,数据压缩请求中携带压缩信息;
响应于数据压缩请求,执行对m+1个区块中的交易数据进行对象提取处理,得到P个对象的步骤;
其中,数据压缩请求是由目标对象在目标共识节点中输入压缩信息之后发起的;或者,数据压缩请求是由区块链网络中除目标共识节点之外的任一共识节点发送的;
压缩信息包含:目标区间的起始区块高度n、目标区间的终止区块高度n+m、目标区间包含的交易数据的数量阈值,以及目标共识节点的节点标识。
在一种实现方式中,m+1个区块中存储有一个或多个交易数据,每个交易数据包括一个交易及交易被执行后的交易结果;P个对象中的任一个对象是指:基于一个交易数据中的交易结果需要执行写操作的数据;
处理单元1501,还用于:
按照m+1个区块中的一个或多个交易数据的上链时间的先后顺序,对一个或多个交易数据进行排序,得到交易序列;
按照交易序列中各个交易数据的排列顺序,对P个对象进行排序,得到对象序列,P个对象在对象序列中的排列顺序与各对象对应的交易数据在交易序列中的排列顺序一致。
在一种实现方式中,处理单元1501,用于对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根时,具体用于:
根据对象序列中的每个对象的第一状态值,构建目标区间的第一默克尔树,第一默克尔树中的叶子节点的排列顺序与对象序列中各个对象的排列顺序一致;
对第一默克尔树进行根哈希计算,得到第一默克尔树的第一根哈希;
将第一根哈希确定为目标区间的第一状态根。
在一种实现方式中,处理单元1501,用于对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根时,具体用于:
根据对象序列中的每个对象的第二状态值,构建目标区间的第二默克尔树,第二默克尔树中的叶子节点的排列顺序与对象序列中各个对象的排列顺序一致;
对第二默克尔树进行根哈希计算,得到第二默克尔树的第二根哈希;
将第二根哈希确定为目标区间的第二状态根。
在一种实现方式中,处理单元1501,用于基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易时,具体用于:
获取零知识证明电路,零知识证明电路是基于待证明命题转化得到的,待证明命题用于指示对区间交易的正确性进行验证;
基于m+1个区块中的交易数据构建交易集;
采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息;
基于证明信息构建目标区间的区间交易;
其中,交易集中包含的交易数据的数量等于数量阈值;若m+1个区块中的交易数据的数量等于数量阈值,则交易集包含m+1个区块中的交易数据;若m+1个区块中的交易数据的数量小于数量阈值,则交易集包含m+1个区块中的交易数据及空交易数据,且空交易数据的数量与m+1个区块中的交易数据的数量之和等于数量阈值。
在一种实现方式中,目标区间的证明信息包括:零知识证明电路的输出信息;处理单元1501,用于采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息时,具体用于:
根据每个对象的第一状态值构造目标区间的第一候选默克尔树,并将第一候选默克尔树的第一候选状态根,与目标区间对应的第一状态根进行比较,得到第一比较结果;
根据每个对象的第二状态值构造目标区间的第二候选默克尔树,并将第二候选默克尔树的第二候选状态根,与目标区间对应的第二状态根进行比较,得到第二比较结果;
从交易集中获取除空交易数据以外的每个交易数据的写集合所在字段,并对每个交易数据的写集合所在字段进行哈希计算,得到写集合哈希;
对交易集中除空交易数据以外的交易数据的哈希值进行哈希计算,得到交易集哈希;
其中,零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希。
在一种实现方式中,目标区间的证明信息还包括:证明字符串;处理单元1501,还用于:
获取密钥生成算法,并根据密钥生成算法生成证明者公共串和验证者公共串;证明者公共串是证明者所使用的密钥,证明者包括目标共识节点;验证者公共串是验证者所使用的密钥,验证者包括区块链网络中需同步目标区间中的区块的任一共识节点;
基于证明者公共串,为零知识证明电路计算得到输出信息的计算过程生成的证明字符串;证明字符串的生成表示:目标共识节点基于零知识证明电路已执行计算过程。
在一种实现方式中,处理单元1501,用于采用区间交易对目标共识节点中的区块链进行压缩处理时,具体用于:
对目标共识节点中的区块链包含的m+1个区块中的交易数据进行清除;以及,
将目标共识节点中的区块链包含的第i个区块中的目标交易数据替换为区间交易,i为整数,且i∈[n,n+m]。
在一种实现方式中,目标交易数据是指第i个区块中的上链时间最早的交易数据;
区块链网络中的区块链包括:联盟链或私有链中的任一种;
目标区间的区间交易包括:目标区间包含的交易数据的数量阈值、目标区间的起始区块高度n、目标区间的终止区块高度n+m、证明信息、验证者公共串、目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、目标区间的区间标识以及候选交易集哈希;候选交易集哈希是根据目标共识节点中的区块链上m+个区块中的交易数据的哈希值生成的。
根据本申请的一个实施例,图15所示的基于区块链网络的数据压缩装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该基于区块链网络的数据压缩装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图15中所示的基于区块链网络的数据压缩装置,以及来实现本申请实施例的基于区块链网络的数据压缩方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例中,目标共识节点中的区块链设有目标区间,目标区间包含m+1个区块,如链上的第n个区块到第n+m个区块,处理单元1501可获取m+1个区块中的交易数据对应的对象在第n-1个区块中的第一状态值,以及各个对象在第n+m个区块中的第二状态值,第一状态值可理解为对象对应的交易数据在被执行前的状态值,第二状态值可理解为对象对应的交易数据被执行后的状态值。这样根据交易数据被执行前的状态值得到目标区间的第一状态根,以及根据交易数据被执行后的第二状态值得到目标区间的第二状态根、m+1个区块中的交易数据、第一状态值和第二状态值,并采用零知识证明电路可得到目标区间的区间交易,该区间交易中包含目标区间的相关信息;最后通过在目标共识节点中的区块链中删除m+1个区块中的交易数据,并将区间交易添加至m+1个区块中的一个区块内,实现对目标区间中的交易数据的压缩处理,进而释放目标共识节点的存储空间,降低存储负荷。
图16示出了本申请一个示例性实施例提供的一种基于区块链网络的区块同步装置的结构示意图,该基于区块链网络的区块同步装置可以是运行于第一共识节点中的一个计算机程序(包括程序代码);该基于区块链网络的区块同步装置可以用于执行图12所示的方法实施例中的部分或全部步骤;其中,区块链网络中包含一个或多个共识节点,该装置包括区块链网络中除目标共识节点以外的第一共识节点;区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;该装置包括如下单元:
获取单元1601,用于从区块链网络中的第二共识节点中同步区块链上的第i个区块,第二共识节点是区块链网络中除第一共识节点之外的任一共识节点,i为整数,且i∈[n,n+m];
获取单元1601,还用于若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易;
处理单元1602,用于对区间交易进行验证,得到验证结果;
处理单元1602,还用于若验证结果为验证通过,则将区间交易中的交易数据的写集合更新后的状态值进行存储。
在一种实现方式中,区间交易包含:目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、证明信息、验证者公共串以及候选交易集哈希;证明信息中包含零知识证明电路的输出信息以及证明字符串;零知识证明电路是基于待证明命题生成的,待证明命题用于用于指示对区间交易的正确性进行验证;验证者公共串是由目标共识节点根据密钥生成算法为验证者生成的,验证者包括所述第一共识节点;候选交易集哈希是目标共识节点对m+1个区块中的交易数据的哈希值进行哈希计算得到的;
处理单元1602,用于对区间交易进行验证,得到验证结果时,具体用于:
根据m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息;
采用验证信息对证明信息中的零知识证明电路的输出信息进行校验;
若校验通过,则根据验证者公共串对证明信息中的证明字符串进行验证,得到验证结果。
在一种实现方式中,处理单元1602,用于根据m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息时,具体用于:
从区间交易中的交易数据的写集合中提取对应的P个对象,并从第一共识节点中的区块链上获取P个对象在第n-1个区块时的第三状态值;
对P个对象的第三状态值进行根计算处理,得到第一参考状态根;以及,
对区间交易中的交易数据的写集合进行预执行处理,得到更新后的P个对象的第四状态值,并对更新后的P个对象的第四状态值进行根计算处理,得到第二参考状态根;以及,
对区间交易中的交易数据的写集合所在字段进行哈希计算,得到参考写集合哈希;
其中,验证信息包括:第一参考状态根、第二参考状态根、参考写集合哈希以及候选交易集哈希。
在一种实现方式中,证明信息中的零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希;第一比较结果是目标共识节点将根据P个对象的第一状态值构造得到的第一候选默克尔树的第一候选状态根,与目标区间的第一状态根进行比较得到的,第二比较结果是目标共识节点将根据P个对象的第二状态值构造得到的第二候选默克尔树的第二候选状态根,与目标区间的第二状态根进行比较得到的;
处理单元1602,用于采用验证信息对证明信息中的零知识证明电路的输出信息进行校验时,具体用于:
若第一比较结果和第二比较结果均为比较成功,则将目标区间的第一状态根与第一参考状态根进行比较,得到第一参考比较结果;以及,将目标区间的第二状态根与第二参考状态根进行比较,得到第二参考比较结果;
将参考写集合哈希与零知识证明电路的输出信息中的写集合哈希进行比较,得到写集合比较结果;
将零知识证明电路的输出信息中的交易集哈希与区间交易中的候选交易集哈希进行比较,得到交易比较结果;
若第一参考比较结果、第二参考比较结果、写集合比较结果以及交易比较结果均比较成功,则确定校验通过。
在一种实现方式中,处理单元1602,用于若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易时,具体用于:
若第二共识节点中的区块链上的第i个区块中包含区间交易的标识,且第i个区块中不包含区间交易,则向第二共识节点发送第一获取请求,以便于第二共识节点响应于第一获取请求而返回区块链网络中存储有区间交易的任一共识节点的目标节点标识;
根据目标节点标识从目标节点标识对应的共识节点中获取区间交易;
或者,向第二共识节点发送第二获取请求,以便于第二共识节点响应于第二获取请求,从区块链网络中存储有区间交易的任一共识节点中获取并返回区间交易。
在一种实现方式中,区间交易的标识是第二共识节点对区间交易验证成功后,存储至第二共识节点中的区块链上第i个区块中的;第二共识节点对区块链网络中的区间交易进行验证包括:
获取区间交易,区间交易中包含候选交易集哈希及目标区间中的交易数据的写集合;
从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的写集合,并将从第二共识节点中的区块链中获取的交易数据的写集合,与区间交易中的交易数据的写集合进行比对,得到写集合比对结果;
从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的哈希值,并对交易数据的哈希值进行哈希计算,得到交易哈希值;
将交易哈希值与区间交易中的候选交易集哈希进行比对,得到交易哈希比对结果;
若写集合比对结果和交易哈希比对结果均为比对成功,则得到验证结果,验证结果为验证成功。
根据本申请的一个实施例,图16所示的基于区块链网络的区块同步装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该基于区块链网络的区块同步装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图12所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图16中所示的基于区块链网络的区块同步装置,以及来实现本申请实施例的基于区块链网络的区块同步方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例中,获取单元1601在获取到区间交易后,可从第二共识节点中的区块链上同步第n个区块到第n+m个区块之间的m+1个区块的区块头,并且跳过校验默克尔根的步骤;然后,处理单元1602在对区间交易验证成功后,将区间交易存储至m+1个区块中,可实现采用目标区间的区间交易替换目标区间中的所有交易数据,进而实现释放第一共识节点(或区块链网络中进行数据压缩的任一共识节点)的存储空间,降低第一共识节点的存储负荷。
图17示出了本申请一个示例性实施例提供的一种区块链节点设备的结构示意图。请参见图17,该区块链节点设备包括处理器1701、通信接口1702以及计算机可读存储介质1703。其中,处理器1301、通信接口1702以及计算机可读存储介质1703可通过总线或者其它方式连接。其中,通信接口1702用于接收和发送数据。计算机可读存储介质1703可以存储在区块链节点设备的存储器中,计算机可读存储介质1703用于存储计算机程序,计算机程序包括程序指令,处理器1701用于执行计算机可读存储介质1703存储的程序指令。处理器1701(或称CPU(Central Processing Unit,中央处理器))是区块链节点设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是区块链节点设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括区块链节点设备中的内置存储介质,当然也可以包括区块链节点设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了区块链节点设备的处理系统。并且,在该存储空间中还存放了适于被处理器1701加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机可读存储介质。
在一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器1701加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述基于区块链网络的数据压缩方法实施例中的相应步骤。具体实现中,区块链网络中包含一个或多个共识节点,该设备包括区块链网络中的目标共识节点,区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;计算机可读存储介质中的一条或多条指令由处理器1701加载并执行如下步骤:
对m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;
获取每个对象在目标共识节点中的区块链上第n-1个区块中的第一状态值,并对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根;
获取每个对象在目标共识节点中的区块链上第n+m个区块中的第二状态值,并对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根;
基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易;
采用区间交易对目标共识节点中的区块链进行压缩处理;其中,压缩后的目标共识节点中的区块链中的目标区间中不包含交易数据,但包含区间交易。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并还执行如下步骤:
接收数据压缩请求,数据压缩请求中携带压缩信息;
响应于数据压缩请求,执行对m+1个区块中的交易数据进行对象提取处理,得到P个对象的步骤;
其中,数据压缩请求是由目标对象在目标共识节点中输入压缩信息之后发起的;或者,数据压缩请求是由区块链网络中除目标共识节点之外的任一共识节点发送的;
压缩信息包含:目标区间的起始区块高度n、目标区间的终止区块高度n+m、目标区间包含的交易数据的数量阈值,以及目标共识节点的节点标识。
在一种实现方式中,m+1个区块中存储有一个或多个交易数据,每个交易数据包括一个交易及交易被执行后的交易结果;P个对象中的任一个对象是指:基于一个交易数据中的交易结果需要执行写操作的数据;
计算机可读存储介质中的一条或多条指令由处理器1701加载并还执行如下步骤:
按照m+1个区块中的一个或多个交易数据的上链时间的先后顺序,对一个或多个交易数据进行排序,得到交易序列;
按照交易序列中各个交易数据的排列顺序,对P个对象进行排序,得到对象序列,P个对象在对象序列中的排列顺序与各对象对应的交易数据在交易序列中的排列顺序一致。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行对每个对象的第一状态值进行根计算处理,得到目标区间对应的第一状态根时,具体执行如下步骤:
根据对象序列中的每个对象的第一状态值,构建目标区间的第一默克尔树,第一默克尔树中的叶子节点的排列顺序与对象序列中各个对象的排列顺序一致;
对第一默克尔树进行根哈希计算,得到第一默克尔树的第一根哈希;
将第一根哈希确定为目标区间的第一状态根。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行对每个对象的第二状态值进行根计算处理,得到目标区间对应的第二状态根时,具体执行如下步骤:
根据对象序列中的每个对象的第二状态值,构建目标区间的第二默克尔树,第二默克尔树中的叶子节点的排列顺序与对象序列中各个对象的排列顺序一致;
对第二默克尔树进行根哈希计算,得到第二默克尔树的第二根哈希;
将第二根哈希确定为目标区间的第二状态根。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行基于m+1个区块中的交易数据、每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到目标区间的区间交易时,具体执行如下步骤:
获取零知识证明电路,零知识证明电路是基于待证明命题转化得到的,待证明命题用于指示对区间交易的正确性进行验证;
基于m+1个区块中的交易数据构建交易集;
采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息;
基于证明信息构建目标区间的区间交易;
其中,交易集中包含的交易数据的数量等于数量阈值;若m+1个区块中的交易数据的数量等于数量阈值,则交易集包含m+1个区块中的交易数据;若m+1个区块中的交易数据的数量小于数量阈值,则交易集包含m+1个区块中的交易数据及空交易数据,且空交易数据的数量与m+1个区块中的交易数据的数量之和等于数量阈值。
在一种实现方式中,目标区间的证明信息包括:零知识证明电路的输出信息;计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行采用零知识证明电路,对每个对象的第一状态值及第二状态值、目标区间对应的第一状态根及第二状态根、交易集进行验证处理,生成目标区间的证明信息时,具体执行如下步骤:
根据每个对象的第一状态值构造目标区间的第一候选默克尔树,并将第一候选默克尔树的第一候选状态根,与目标区间对应的第一状态根进行比较,得到第一比较结果;
根据每个对象的第二状态值构造目标区间的第二候选默克尔树,并将第二候选默克尔树的第二候选状态根,与目标区间对应的第二状态根进行比较,得到第二比较结果;
从交易集中获取除空交易数据以外的每个交易数据的写集合所在字段,并对每个交易数据的写集合所在字段进行哈希计算,得到写集合哈希;
对交易集中除空交易数据以外的交易数据的哈希值进行哈希计算,得到交易集哈希;
其中,零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希。
在一种实现方式中,目标区间的证明信息还包括:证明字符串;计算机可读存储介质中的一条或多条指令由处理器1701加载并还执行如下步骤:
获取密钥生成算法,并根据密钥生成算法生成证明者公共串和验证者公共串;证明者公共串是证明者所使用的密钥,证明者包括目标共识节点;验证者公共串是验证者所使用的密钥,验证者包括区块链网络中需同步目标区间中的区块的任一共识节点;
基于证明者公共串,为零知识证明电路计算得到输出信息的计算过程生成的证明字符串;证明字符串的生成表示:目标共识节点基于零知识证明电路已执行计算过程。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行采用区间交易对目标共识节点中的区块链进行压缩处理时,具体执行如下步骤:
对目标共识节点中的区块链包含的m+1个区块中的交易数据进行清除;以及,
将目标共识节点中的区块链包含的第i个区块中的目标交易数据替换为区间交易,i为整数,且i∈[n,n+m]。
在一种实现方式中,目标交易数据是指第i个区块中的上链时间最早的交易数据;
区块链网络中的区块链包括:联盟链或私有链中的任一种;
目标区间的区间交易包括:目标区间包含的交易数据的数量阈值、目标区间的起始区块高度n、目标区间的终止区块高度n+m、证明信息、验证者公共串、目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、目标区间的区间标识以及候选交易集哈希;候选交易集哈希是根据目标共识节点中的区块链上m+个区块中的交易数据的哈希值生成的。
在另一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器1701加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述基于区块链网络的区块同步方法实施例中的相应步骤。具体实现中,区块链网络中包含一个或多个共识节点,该设备包括区块链网络中除目标共识节点以外的第一共识节点;区块链网络中的区块链上设有目标区间,目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;计算机可读存储介质中的一条或多条指令由处理器1701加载并执行如下步骤:
从区块链网络中的第二共识节点中同步区块链上的第i个区块,第二共识节点是区块链网络中除第一共识节点之外的任一共识节点,i为整数,且i∈[n,n+m];
若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易;
对区间交易进行验证,得到验证结果;
若验证结果为验证通过,则将区间交易中的交易数据的写集合更新后的状态值进行存储。
在一种实现方式中,区间交易包含:目标共识节点中的区块链上m+1个区块中的每个交易数据的写集合、证明信息、验证者公共串以及候选交易集哈希;证明信息中包含零知识证明电路的输出信息以及证明字符串;零知识证明电路是基于待证明命题生成的,待证明命题用于用于指示对区间交易的正确性进行验证;验证者公共串是由目标共识节点根据密钥生成算法为验证者生成的,验证者包括所述第一共识节点;候选交易集哈希是目标共识节点对m+1个区块中的交易数据的哈希值进行哈希计算得到的;
计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行对区间交易进行验证,得到验证结果时,具体执行如下步骤:
根据m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息;
采用验证信息对证明信息中的零知识证明电路的输出信息进行校验;
若校验通过,则根据验证者公共串对证明信息中的证明字符串进行验证,得到验证结果。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行根据m+1个区块中的每个交易数据的写集合以及候选交易集哈希,生成验证信息时,具体执行如下步骤:
从区间交易中的交易数据的写集合中提取对应的P个对象,并从第一共识节点中的区块链上获取P个对象在第n-1个区块时的第三状态值;
对P个对象的第三状态值进行根计算处理,得到第一参考状态根;以及,
对区间交易中的交易数据的写集合进行预执行处理,得到更新后的P个对象的第四状态值,并对更新后的P个对象的第四状态值进行根计算处理,得到第二参考状态根;以及,
对区间交易中的交易数据的写集合所在字段进行哈希计算,得到参考写集合哈希;
其中,验证信息包括:第一参考状态根、第二参考状态根、参考写集合哈希以及候选交易集哈希。
在一种实现方式中,证明信息中的零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希;第一比较结果是目标共识节点将根据P个对象的第一状态值构造得到的第一候选默克尔树的第一候选状态根,与目标区间的第一状态根进行比较得到的,第二比较结果是目标共识节点将根据P个对象的第二状态值构造得到的第二候选默克尔树的第二候选状态根,与目标区间的第二状态根进行比较得到的;
计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行采用验证信息对证明信息中的零知识证明电路的输出信息进行校验时,具体执行如下步骤:
若第一比较结果和第二比较结果均为比较成功,则将目标区间的第一状态根与第一参考状态根进行比较,得到第一参考比较结果;以及,将目标区间的第二状态根与第二参考状态根进行比较,得到第二参考比较结果;
将参考写集合哈希与零知识证明电路的输出信息中的写集合哈希进行比较,得到写集合比较结果;
将零知识证明电路的输出信息中的交易集哈希与区间交易中的候选交易集哈希进行比较,得到交易比较结果;
若第一参考比较结果、第二参考比较结果、写集合比较结果以及交易比较结果均比较成功,则确定校验通过。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1701加载并在执行若第i个区块中包含区间交易的标识,则根据区间交易的标识获取区间交易时,具体执行如下步骤:
若第二共识节点中的区块链上的第i个区块中包含区间交易的标识,且第i个区块中不包含区间交易,则向第二共识节点发送第一获取请求,以便于第二共识节点响应于第一获取请求而返回区块链网络中存储有区间交易的任一共识节点的目标节点标识;
根据目标节点标识从目标节点标识对应的共识节点中获取区间交易;
或者,向第二共识节点发送第二获取请求,以便于第二共识节点响应于第二获取请求,从区块链网络中存储有区间交易的任一共识节点中获取并返回区间交易。
在一种实现方式中,区间交易的标识是第二共识节点对区间交易验证成功后,存储至第二共识节点中的区块链上第i个区块中的;第二共识节点对区块链网络中的区间交易进行验证包括:
获取区间交易,区间交易中包含候选交易集哈希及目标区间中的交易数据的写集合;
从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的写集合,并将从第二共识节点中的区块链中获取的交易数据的写集合,与区间交易中的交易数据的写集合进行比对,得到写集合比对结果;
从第二共识节点中的区块链中获取第n个区块到第n+m个区块中的交易数据的哈希值,并对交易数据的哈希值进行哈希计算,得到交易哈希值;
将交易哈希值与区间交易中的候选交易集哈希进行比对,得到交易哈希比对结果;
若写集合比对结果和交易哈希比对结果均为比对成功,则得到验证结果,验证结果为验证成功。
基于同一发明构思,本申请实施例中提供的区块链节点设备解决问题的原理与有益效果与本申请方法实施例中基于区块链网络的数据压缩方法、区块同步方法解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。区块链节点设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该区块链节点设备执行上述基于区块链网络的数据压缩方法、区块同步方法。
本领域普通技术对象可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术对象可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据处理设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术对象在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (20)

1.一种基于区块链网络的数据压缩方法,其特征在于,所述区块链网络中包含一个或多个共识节点,所述方法由所述区块链网络中的目标共识节点执行,所述区块链网络中的区块链上设有目标区间,所述目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;所述方法包括:
对所述m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;
获取每个对象在所述目标共识节点中的区块链上第n-1个区块中的第一状态值,并对所述每个对象的第一状态值进行根计算处理,得到所述目标区间对应的第一状态根;
获取每个对象在所述目标共识节点中的区块链上第n+m个区块中的第二状态值,并对所述每个对象的第二状态值进行根计算处理,得到所述目标区间对应的第二状态根;
基于所述m+1个区块中的交易数据、所述每个对象的第一状态值及第二状态值、所述目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到所述目标区间的区间交易;
采用所述区间交易对所述目标共识节点中的区块链进行压缩处理;其中,压缩后的所述目标共识节点中的区块链中的目标区间中不包含所述交易数据,但包含所述区间交易。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收数据压缩请求,所述数据压缩请求中携带压缩信息;
响应于所述数据压缩请求,执行所述对所述m+1个区块中的交易数据进行对象提取处理,得到P个对象的步骤;
其中,所述数据压缩请求是由目标对象在所述目标共识节点中输入压缩信息之后发起的;或者,所述数据压缩请求是由所述区块链网络中除所述目标共识节点之外的任一共识节点发送的;
所述压缩信息包含:所述目标区间的起始区块高度n、所述目标区间的终止区块高度n+m、所述目标区间包含的交易数据的数量阈值,以及所述目标共识节点的节点标识。
3.如权利要求1所述的方法,其特征在于,所述m+1个区块中存储有一个或多个交易数据,每个交易数据包括一个交易及所述交易被执行后的交易结果;所述P个对象中的任一个对象是指:基于一个交易数据中的交易结果需要执行写操作的数据;
所述方法还包括:
按照所述m+1个区块中的一个或多个交易数据的上链时间的先后顺序,对所述一个或多个交易数据进行排序,得到交易序列;
按照所述交易序列中各个交易数据的排列顺序,对所述P个对象进行排序,得到对象序列,所述P个对象在所述对象序列中的排列顺序与各对象对应的交易数据在所述交易序列中的排列顺序一致。
4.如权利要求3所述的方法,其特征在于,所述对所述每个对象的第一状态值进行根计算处理,得到所述目标区间对应的第一状态根,包括:
根据所述对象序列中的每个对象的第一状态值,构建所述目标区间的第一默克尔树,所述第一默克尔树中的叶子节点的排列顺序与所述对象序列中各个对象的排列顺序一致;
对所述第一默克尔树进行根哈希计算,得到所述第一默克尔树的第一根哈希;
将所述第一根哈希确定为所述目标区间的第一状态根。
5.如权利要求3所述的方法,其特征在于,所述对所述每个对象的第二状态值进行根计算处理,得到所述目标区间对应的第二状态根,包括:
根据所述对象序列中的每个对象的第二状态值,构建所述目标区间的第二默克尔树,所述第二默克尔树中的叶子节点的排列顺序与所述对象序列中各个对象的排列顺序一致;
对所述第二默克尔树进行根哈希计算,得到所述第二默克尔树的第二根哈希;
将所述第二根哈希确定为所述目标区间的第二状态根。
6.如权利要求2所述的方法,其特征在于,所述基于所述m+1个区块中的交易数据、所述每个对象的第一状态值及第二状态值、所述目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到所述目标区间的区间交易,包括:
获取零知识证明电路,所述零知识证明电路是基于待证明命题转化得到的,所述待证明命题用于指示对所述区间交易的正确性进行验证;
基于所述m+1个区块中的交易数据构建交易集;
采用所述零知识证明电路,对所述每个对象的第一状态值及第二状态值、所述目标区间对应的第一状态根及第二状态根、所述交易集进行验证处理,生成所述目标区间的证明信息;
基于所述证明信息构建所述目标区间的区间交易;
其中,所述交易集中包含的交易数据的数量等于所述数量阈值;若所述m+1个区块中的交易数据的数量等于所述数量阈值,则所述交易集包含所述m+1个区块中的交易数据;若所述m+1个区块中的交易数据的数量小于所述数量阈值,则所述交易集包含所述m+1个区块中的交易数据及空交易数据,且所述空交易数据的数量与所述m+1个区块中的交易数据的数量之和等于所述数量阈值。
7.如权利要求6所述的方法,其特征在于,所述目标区间的证明信息包括:所述零知识证明电路的输出信息;所述采用所述零知识证明电路,对所述每个对象的第一状态值及第二状态值、所述目标区间对应的第一状态根及第二状态根、所述交易集进行验证处理,生成所述目标区间的证明信息,包括:
根据所述每个对象的第一状态值构造所述目标区间的第一候选默克尔树,并将所述第一候选默克尔树的第一候选状态根,与所述目标区间对应的第一状态根进行比较,得到第一比较结果;
根据所述每个对象的第二状态值构造所述目标区间的第二候选默克尔树,并将所述第二候选默克尔树的第二候选状态根,与所述目标区间对应的第二状态根进行比较,得到第二比较结果;
从所述交易集中获取除所述空交易数据以外的每个交易数据的写集合所在字段,并对所述每个交易数据的写集合所在字段进行哈希计算,得到写集合哈希;
对所述交易集中除所述空交易数据以外的交易数据的哈希值进行哈希计算,得到交易集哈希;
其中,所述零知识证明电路的输出信息包括:所述第一比较结果、所述第二比较结果、所述写集合哈希以及所述交易集哈希。
8.如权利要求7所述的方法,其特征在于,所述目标区间的证明信息还包括:证明字符串;所述方法还包括:
获取密钥生成算法,并根据所述密钥生成算法生成证明者公共串和验证者公共串;所述证明者公共串是证明者所使用的密钥,所述证明者包括所述目标共识节点;所述验证者公共串是验证者所使用的密钥,所述验证者包括所述区块链网络中需同步所述目标区间中的区块的任一共识节点;
基于所述证明者公共串,为所述零知识证明电路计算得到输出信息的计算过程生成的证明字符串;所述证明字符串的生成表示:所述目标共识节点基于所述零知识证明电路已执行所述计算过程。
9.如权利要求1所述的方法,其特征在于,所述采用所述区间交易对所述目标共识节点中的区块链进行压缩处理,包括:
对所述目标共识节点中的区块链包含的所述m+1个区块中的交易数据进行清除;以及,
将所述目标共识节点中的区块链包含的第i个区块中的目标交易数据替换为所述区间交易,i为整数,且i∈[n,n+m]。
10.如权利要求1-9任一项所述的方法,其特征在于,目标交易数据是指第i个区块中的上链时间最早的交易数据;
所述区块链网络中的区块链包括:联盟链或私有链中的任一种;
目标区间的区间交易包括:目标区间包含的交易数据的数量阈值、目标区间的起始区块高度n、目标区间的终止区块高度n+m、证明信息、验证者公共串、所述目标共识节点中的区块链上所述m+1个区块中的每个交易数据的写集合、目标区间的区间标识以及候选交易集哈希;所述候选交易集哈希是根据所述目标共识节点中的区块链上所述m+个区块中的交易数据的哈希值生成的。
11.一种基于区块链网络的区块同步方法,其特征在于,所述区块链网络中包含一个或多个共识节点,所述方法由所述区块链网络中除目标共识节点以外的第一共识节点执行;所述区块链网络中的区块链上设有目标区间,所述目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;所述方法包括:
从所述区块链网络中的第二共识节点中同步所述区块链上的第i个区块,所述第二共识节点是所述区块链网络中除所述第一共识节点之外的任一共识节点,i为整数,且i∈[n,n+m];
若所述第i个区块中包含所述区间交易的标识,则根据所述区间交易的标识获取所述区间交易;
对区间交易进行验证,得到验证结果;
若所述验证结果为验证通过,则将所述区间交易中的交易数据的写集合更新后的状态值进行存储。
12.如权利要求11所述的方法,其特征在于,所述区间交易包含:所述目标共识节点中的区块链上所述m+1个区块中的每个交易数据的写集合、证明信息、验证者公共串以及候选交易集哈希;所述证明信息中包含零知识证明电路的输出信息以及证明字符串;所述零知识证明电路是基于待证明命题生成的,所述待证明命题用于用于指示对所述区间交易的正确性进行验证;所述验证者公共串是由所述目标共识节点根据密钥生成算法为验证者生成的,所述验证者包括所述第一共识节点;所述候选交易集哈希是所述目标共识节点对所述m+1个区块中的交易数据的哈希值进行哈希计算得到的;
所述对所述区间交易进行验证,得到验证结果,包括:
根据所述m+1个区块中的每个交易数据的写集合以及所述候选交易集哈希,生成验证信息;
采用所述验证信息对所述证明信息中的零知识证明电路的输出信息进行校验;
若校验通过,则根据所述验证者公共串对所述证明信息中的证明字符串进行验证,得到验证结果。
13.如权利要求12所述的方法,其特征在于,所述根据所述m+1个区块中的每个交易数据的写集合以及所述候选交易集哈希,生成验证信息,包括:
从所述区间交易中的交易数据的写集合中提取对应的P个对象,并从所述第一共识节点中的区块链上获取所述P个对象在第n-1个区块时的第三状态值;
对所述P个对象的第三状态值进行根计算处理,得到第一参考状态根;以及,
对所述区间交易中的交易数据的写集合进行预执行处理,得到更新后的所述P个对象的第四状态值,并对所述更新后的所述P个对象的第四状态值进行根计算处理,得到第二参考状态根;以及,
对所述区间交易中的交易数据的写集合所在字段进行哈希计算,得到参考写集合哈希;
其中,所述验证信息包括:所述第一参考状态根、所述第二参考状态根、所述参考写集合哈希以及所述候选交易集哈希。
14.如权利要求13所述的方法,其特征在于,所述证明信息中的零知识证明电路的输出信息包括:第一比较结果、第二比较结果、写集合哈希以及交易集哈希;所述第一比较结果是所述目标共识节点将根据所述P个对象的第一状态值构造得到的第一候选默克尔树的第一候选状态根,与所述目标区间的第一状态根进行比较得到的,所述第二比较结果是所述目标共识节点将根据所述P个对象的第二状态值构造得到的第二候选默克尔树的第二候选状态根,与所述目标区间的第二状态根进行比较得到的;
所述采用所述验证信息对所述证明信息中的零知识证明电路的输出信息进行校验,包括:
若所述第一比较结果和第二比较结果均为比较成功,则将所述目标区间的第一状态根与所述第一参考状态根进行比较,得到第一参考比较结果;以及,将所述目标区间的第二状态根与所述第二参考状态根进行比较,得到第二参考比较结果;
将所述参考写集合哈希与所述零知识证明电路的输出信息中的写集合哈希进行比较,得到写集合比较结果;
将所述零知识证明电路的输出信息中的交易集哈希与所述区间交易中的候选交易集哈希进行比较,得到交易比较结果;
若所述第一参考比较结果、所述第二参考比较结果、所述写集合比较结果以及所述交易比较结果均比较成功,则确定校验通过。
15.如权利要求11所述的方法,其特征在于,所述若所述第i个区块中包含所述区间交易的标识,则根据所述区间交易的标识获取所述区间交易,包括:
若所述第二共识节点中的区块链上的所述第i个区块中包含所述区间交易的标识,且所述第i个区块中不包含所述区间交易,则向所述第二共识节点发送第一获取请求,以便于所述第二共识节点响应于所述第一获取请求而返回所述区块链网络中存储有所述区间交易的任一共识节点的目标节点标识;
根据所述目标节点标识从所述目标节点标识对应的共识节点中获取所述区间交易;
或者,向所述第二共识节点发送第二获取请求,以便于所述第二共识节点响应于所述第二获取请求,从所述区块链网络中存储有所述区间交易的任一共识节点中获取并返回所述区间交易。
16.一种基于区块链网络的数据压缩装置,其特征在于,所述区块链网络中包含一个或多个共识节点,所述数据压缩装置包括所述区块链网络中的目标共识节点,所述区块链网络中的区块链上设有目标区间,所述目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数;所述数据压缩装置,包括:
处理单元,用于对所述m+1个区块中的交易数据进行对象提取处理,得到P个对象,P为正整数;
获取单元,用于获取每个对象在所述目标共识节点中的区块链上第n-1个区块中的第一状态值,并对所述每个对象的第一状态值进行根计算处理,得到所述目标区间对应的第一状态根;
所述获取单元,还用于获取每个对象在所述目标共识节点中的区块链上第n+m个区块中的第二状态值,并对所述每个对象的第二状态值进行根计算处理,得到所述目标区间对应的第二状态根;
所述处理单元,还用于基于所述m+1个区块中的交易数据、所述每个对象的第一状态值及第二状态值、所述目标区间对应的第一状态根及第二状态根,采用零知识证明电路进行运算处理,得到所述目标区间的区间交易;
所述处理单元,还用于采用所述区间交易对所述目标共识节点中的区块链进行压缩处理;其中,压缩后的所述目标共识节点中的区块链中的目标区间中不包含所述交易数据,但包含所述区间交易。
17.一种基于区块链网络的区块同步装置,其特征在于,所述区块链网络中包含一个或多个共识节点,所述同步装置包括所述区块链网络中除目标共识节点以外的第一共识节点;所述区块链网络中的区块链上设有目标区间,所述目标区间包含第n个区块到第n+m个区块之间的m+1个区块,n、m均为大于零的整数,所述目标区间中包含区间交易;所述同步装置,包括:
获取单元,用于从所述区块链网络中的第二共识节点中同步所述区块链上的第i个区块,所述第二共识节点是所述区块链网络中除所述第一共识节点之外的任一共识及得按,i为整数,且i∈[n,n+m];
所述获取单元,还用于若所述第i个区块中包含所述区间交易的标识,则根据所述区间交易的标识获取所述区间交易;
所述处理单元,还用于对所述区间交易进行验证,得到验证结果;
所述处理单元,还用于若所述验证结果为验证通过,则将所述区间交易中的交易数据的写集合更新后的状态值进行存储。
18.一种区块链节点设备,其特征在于,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1-10任一项所述的基于区块链网络的数据压缩方法,或者实现如权利要求11-15任一项所述的基于区块链网络的区块同步方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-10任一项所述的基于区块链网络的数据压缩方法,或者实现如权利要求11-15任一项所述的基于区块链网络的区块同步方法。
20.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1-10任一项所述的基于区块链网络的数据压缩方法,或者实现如权利要求11-15任一项所述的基于区块链网络的区块同步方法。
CN202210148072.5A 2022-02-17 2022-02-17 一种数据压缩方法、区块同步方法及相关设备 Pending CN116661674A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210148072.5A CN116661674A (zh) 2022-02-17 2022-02-17 一种数据压缩方法、区块同步方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210148072.5A CN116661674A (zh) 2022-02-17 2022-02-17 一种数据压缩方法、区块同步方法及相关设备

Publications (1)

Publication Number Publication Date
CN116661674A true CN116661674A (zh) 2023-08-29

Family

ID=87708527

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210148072.5A Pending CN116661674A (zh) 2022-02-17 2022-02-17 一种数据压缩方法、区块同步方法及相关设备

Country Status (1)

Country Link
CN (1) CN116661674A (zh)

Similar Documents

Publication Publication Date Title
US20240074004A1 (en) Verification of interactions system and method
Dai et al. A low storage room requirement framework for distributed ledger in blockchain
US20230245121A1 (en) Blockchain-based data verification system and method, computing device and storage medium
KR20210003234A (ko) 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
CN112685505B (zh) 一种交易数据处理方法、装置、计算机设备及存储介质
CN111291060B (zh) 一种管理区块链节点的方法、装置及计算机可读介质
US20230316273A1 (en) Data processing method and apparatus, computer device, and storage medium
CN111464518A (zh) 一种跨链通信数据的发送、验证方法及装置
CN112988667B (zh) 一种基于区块链网络的数据存储方法及装置
CN112287033B (zh) 一种数据同步方法、设备以及计算机可读存储介质
US20210073796A1 (en) Method of selective authentication of a blockchain user with a smart contract
CN110930152B (zh) 一种基于区块链的数据处理方法及相关设备
CN114567643B (zh) 跨区块链的数据流转方法、装置及相关设备
CN113256297A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN113326165A (zh) 基于区块链的数据处理方法、设备及计算机可读存储介质
CN111292190A (zh) 交易生成方法、区块创建方法及相关装置、设备
JP2024515022A (ja) ブロックチェーンに基づくデータ処理方法、装置、機器及びコンピュータプログラム
CN111555860A (zh) 一种区块链节点共识方法、装置、电子设备及存储介质
US20240039727A1 (en) Blockchain-based data processing method and apparatus, device, and readable storage medium
CN116827957B (zh) 基于多区块链的信息处理方法、装置、设备以及介质
KR102349014B1 (ko) 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템
CN110827034B (zh) 用于发起区块链交易的方法及装置
CN116661674A (zh) 一种数据压缩方法、区块同步方法及相关设备
CN117010889A (zh) 数据处理方法、装置及设备、介质、产品
Sgier Bazo–A Cryptocurrency from Scratch

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40091478

Country of ref document: HK