CN114153849A - 一种区块链的数据生成及验证方法及装置 - Google Patents

一种区块链的数据生成及验证方法及装置 Download PDF

Info

Publication number
CN114153849A
CN114153849A CN202111457563.XA CN202111457563A CN114153849A CN 114153849 A CN114153849 A CN 114153849A CN 202111457563 A CN202111457563 A CN 202111457563A CN 114153849 A CN114153849 A CN 114153849A
Authority
CN
China
Prior art keywords
hash value
node
preset operation
root
tree
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
CN202111457563.XA
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202111457563.XA priority Critical patent/CN114153849A/zh
Publication of CN114153849A publication Critical patent/CN114153849A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种区块链的数据生成及验证方法及装置,其中方法为:第一设备获取第一节点的第一哈希值和第二节点的第二哈希值;所述第一节点和所述第二节点为待生成默克尔树中同层次的节点;所述第一设备按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;若所述第一设备不为所述待生成默克尔树的根节点对应的设备,所述第一设备将所述第三哈希值发送至第二设备,所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点,上述方法可以应用于金融科技(Fintech)。

Description

一种区块链的数据生成及验证方法及装置
技术领域
本发明涉及金融科技(Fintech)领域中的区块链(Blockchain)领域,尤其涉及一种区块链的数据生成及验证方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。基于区块链的不可篡改性,金融科技领域中常通过区块链进行交易。目前区块中可以存储默克尔树,默克尔树可以作为区块中交易数据的数据摘要,默克尔树的叶子节点可以指向一个数据块(如一笔交易),每个叶子节点上存储着这个数据块的哈希值。在一些情形下,需要基于默克尔树进行数据传输,如默克尔树的根哈希值的生成以及默克尔树中某个节点的正确性。
目前生成默克尔树的根哈希值,或者验证默克尔树中某个节点的正确性时,需要按照顺序拼接哈希值,这会导致计算过程中数据传输量较大,导致数据生成或验证时效率较低。特别地,当区块链采用分布式部署时,默克尔树中叶子节点被拆分到多台设备上存储。默克尔树的根哈希值生成或验证时数据生成或验证时效率较低的问题更为明显,这个问题亟待解决。
发明内容
本发明提供一种区块链的数据生成及验证方法及装置,解决了现有技术中默克尔树的根哈希值生成或验证时效率较低的问题。
第一方面,本发明提供一种区块链的数据生成方法,包括:
第一设备获取第一节点的第一哈希值和第二节点的第二哈希值;所述第一节点和所述第二节点为默克尔树中同层次的节点;
所述第一设备按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述第三哈希值用于生成所述默克尔树的根哈希值;
若所述第一设备不为所述默克尔树的根节点对应的设备,所述第一设备将所述第三哈希值发送至第二设备,所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点。
上述方式下,由于所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且满***换律,因此,在采用预设运算的情况下,既能压缩所述预设运算的运算结果的数据量,也不影响待生成默克尔树最终的根节点计算结果,还可以在发送第三哈希值至第二设备的过程中降低传输开销,从而提升了待生成默克尔树的验证效率。
可选的,若所述第一设备为所述根节点对应的设备,且所述第一节点与所述第二节点为所述根节点的子节点,则所述第三哈希值为所述根哈希值。
上述方法中,若所述第一设备为所述根节点对应的设备,那么可以直接在第一设备本地得到根哈希值,从而可以在根哈希值生成的步骤中,进一步降低数据运算量,提升了数据生成效率。
可选的,所述第一节点和所述第二节点为所述待生成默克尔树中的叶子节点。
上述方法中,当所述第一节点和所述第二节点为所述待生成默克尔树中的叶子节点时,在最初的哈希值获取步骤中便采用预设运算,从而可以有效降低数据传输量,提升数据生成效率。
可选的,所述预设运算为加法运算。
上述方法中,加法运算的运算过程开销较少,且从而可以进一步提升数据生成效率。
第二方面,本发明提供一种区块链的数据验证方法,包括:
获取来自被验证设备的默克尔树的待验证节点的第四哈希值以及至少一个辅助哈希值,所述至少一个辅助哈希值中任一辅助哈希值为所述待验证节点的兄弟节点的哈希值或者所述待验证节点的父类节点的兄弟节点的哈希值;
根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述已认证根哈希值是基于所述默克尔树的叶子节点的哈希值按照所述预设预算得到的。
上述方式下,由于所述已认证根哈希值是基于所述默克尔树的叶子节点的哈希值按照所述预设预算得到的,那么当获取到待验证节点的第四哈希值以及至少一个辅助哈希值后,便可以按照预设运算验证所述第四哈希值,由于所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,从而可以逐步压缩数据量,进一步增加数据验证效率。
可选的,所述根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值,包括:
根据所述第四哈希值和所述至少一个辅助哈希值,按照所述预设运算,获得第五哈希值;所述第五哈希值为所述根节点的待验证哈希值;
若确定所述第五哈希值与所述已认证根哈希值一致,则确定所述第四哈希值通过验证。
上述方式下,通过按照所述预设运算获得第五哈希值,从而只需要第五哈希值与已认证根哈希值比较一次,便可以确定第四哈希值的正确性,进一步提升了验证效率。
第三方面,本发明提供一种区块链的数据生成装置,所述装置为所述第一设备,所述装置包括:
获取模块,用于获取第一节点的第一哈希值和第二节点的第二哈希值;所述第一节点和所述第二节点为默克尔树中同层次的节点;
处理模块,用于按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述第三哈希值用于生成所述默克尔树的根哈希值;
以及用于若所述第一设备不为所述默克尔树的根节点对应的设备,则将所述第三哈希值发送至第二设备,所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点。
可选的,若所述第一设备为所述根节点对应的设备,且所述第一节点与所述第二节点为所述根节点的子节点,则所述第三哈希值为所述根哈希值。
可选的,所述第一节点和所述第二节点为所述默克尔树中的叶子节点。
可选的,所述预设运算为加法运算。
第四方面,本发明提供一种区块链的数据验证装置,所述装置包括:
获取模块,用于获取来自被验证设备的默克尔树的待验证节点的第四哈希值以及至少一个辅助哈希值,所述至少一个辅助哈希值中任一辅助哈希值为所述待验证节点的兄弟节点的哈希值或者所述待验证节点的父类节点的兄弟节点的哈希值;
验证模块,用于根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述已认证根哈希值是基于所述默克尔树的叶子节点的哈希值按照所述预设预算得到的。
可选的,所述验证模块具体用于:
根据所述第四哈希值和所述至少一个辅助哈希值,按照所述预设运算,获得第五哈希值;所述第五哈希值为所述根节点的待验证哈希值;
若确定所述第五哈希值与所述已认证根哈希值一致,则确定所述第四哈希值通过验证。
第五方面,本发明提供一种区块链的数据生成***,所述***包括一个顶层设备、至少一层中间层设备和一层底层设备;所述顶层设备对应默克尔树的根节点,任一中间层设备对应所述默克尔树的中间节点,任一底层设备对应所述默克尔树的叶子节点;
任一底层设备,用于将所述底层设备的底层计算结果发送至所述底层设备对应的中间层设备;所述底层计算结果是根据所述底层设备对应的叶子节点的哈希值按照预设运算得到的,所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;
任一中间层设备,用于获取所述中间层设备的下一层设备的计算结果,并根据所述下一层设备的计算结果,按照所述预设运算,生成所述中间层设备的计算结果,并将所述中间层设备的计算结果发送至所述中间层设备的上一层设备;
所述顶层设备,用于获取所述顶层设备的下一层中间层设备的计算结果,并根据所述下一层中间层设备的计算结果生成所述默克尔树的根哈希值。
第六方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面或第二方面以及各个可选的方法。
第七方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面或第二方面以及各个可选的方法。
上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链的数据生成方法对应的流程示意图;
图2为本发明实施例提供的一种区块链的数据生成方法对应的架构示意图;
图3为本发明实施例提供的一种区块链的数据验证方法对应的流程示意图;
图4为本发明实施例提供的一种区块链的数据验证方法对应的架构示意图;
图5为本发明实施例提供的一种区块链的数据生成装置对应的结构示意图;
图6为本发明实施例提供的一种区块链的数据验证装置对应的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为方便描述,下面首先介绍下本申请中出现的名词。
哈希算法:哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希算法最重要的特点就是:相同的输入一定得到相同的输出;不同的输入大概率得到不同的输出。
同态算法:同态加密算法保证对联合密文的解密结果等价于联合明文。若存在同态加密算法f,针对明文A和B,加密后分别得到A'=f(A),B'=f(B),将其和A'+B'解密后得到A+B,则同态加密算法f被成为加法同态加密算法。
MPT:又称哈希树,在密码学及计算机科学中是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签。哈希树能够高效、安全地验证大型数据结构的内容。
存在性证明:用于证明某个数据是否存在于另一个数据之中的算法,常见的实现是默克尔证明,默克尔证明提供了一种仅需默克尔树根信息就可以证明数据是否存在于默克尔树的方法。
分布式部署:把程序或数据,分散部署到多台物理服务器上,组合起来,形成一个整体对外提供服务。
中间节点、叶子节点:本文中提到的“中间节点”和“叶子节点”均指MPT树中的节点,为树的一部分,非区块链节点。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,需要基于默克尔树进行数据传输,如默克尔树的根哈希值的生成以及默克尔树中某个节点的正确性。
现有技术中,需要按照顺序拼接哈希值,这会导致计算过程中数据传输量较大,导致数据生成或验证时效率较低。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。
如图1所示,本申请提供一种区块链的数据生成方法。
步骤101:第一设备获取第一节点的第一哈希值和第二节点的第二哈希值。所述第一节点和所述第二节点为默克尔树中同层次的节点。
步骤102:所述第一设备按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值。
所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述第三哈希值用于生成所述默克尔树的根哈希值。
步骤103:若所述第一设备不为所述默克尔树的根节点对应的设备,所述第一设备将所述第三哈希值发送至第二设备。
所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点。
需要说明的是,步骤101~步骤103涉及的过程为可能会有多种情形,一种可能的情形中,若所述第一设备为所述根节点对应的设备,且所述第一节点与所述第二节点为所述根节点的子节点,则所述第三哈希值为所述根哈希值。
另一种可能的情形中,所述第一节点和所述第二节点为所述默克尔树中的叶子节点。
还有一种可能情形中,所述第一节点和所述第二节点既不是所述默克尔树中的叶子节点,又不是所述默克尔树的根节点的子节点。
所述预设运算在此并不做限定,只要满***换律,且所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量均可。
举例来说,所述预设运算可以为位运算,或者,所述预设运算可以为加法运算。
本发明还提供一种区块链的数据生成***,适用于图1示出的区块链的数据生成方法,所述***包括一个顶层设备、至少一层中间层设备和一层底层设备;所述顶层设备对应默克尔树的根节点,任一中间层设备对应所述默克尔树的中间节点,任一底层设备对应所述默克尔树的叶子节点。
任一底层设备,用于将所述底层设备的底层计算结果发送至所述底层设备对应的中间层设备。
所述底层计算结果是根据所述底层设备对应的叶子节点的哈希值按照预设运算得到的,所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律。
任一中间层设备,用于获取所述中间层设备的下一层设备的计算结果,并根据所述下一层设备的计算结果,按照所述预设运算,生成所述中间层设备的计算结果,并将所述中间层设备的计算结果发送至所述中间层设备的上一层设备。需要说明的是,由于中间层设备可能有多层,那么所述中间层设备的上一层设备可能为顶层设备,也可能为中间层设备,那么所述中间层设备的下一层设备可能为底层设备,也可能为中间层设备。
所述顶层设备,用于获取所述顶层设备的下一层中间层设备的计算结果,并根据所述下一层中间层设备的计算结果生成所述默克尔树的根哈希值。
下面结合图2,详细描述本申请提供一种区块链的数据生成方法。图2为本发明提供的一种区块链的数据生成***的具体示例,机器1~4为底层设备,机器5~6为中间层设备,机器7为顶层设备,图2并不构成对本申请的限定,如中间层设备可以有多层,图2中仅以一层作为例子。
图2中,计算中间节点的哈希值不再使用所有叶子节点哈希值的拼接,而是将哈希值视为一个固定字节大数,使用一个大于固定字节的大数来存储所有叶子节点哈希值的加和结果,得到中间节点的哈希和;所有中间节点的哈希和进行相加后,得到大于固定字节的根节点的哈希和,再对该哈希和计算哈希,得到固定字节的根哈希。
下面以固定字节为32字节,以及预设运算为加法运算为例,详细描述本申请提供的一种区块链的数据生成方法。
默克尔树的根哈希值的计算流程具体如下:
第一步:每台存储叶子节点的机器(图2中的机器1-4)计算自己机器上所有叶子节点的哈希值,计算完成后,将所有叶子节点哈希值作为大数进行加和,得出哈希和。例如:
机器1(底层设备)计算出叶子节点1的哈希值为:
5830feecf3a92bb383efb10ed59bc4fb1e03a63cef03507cf97f3508c28d0811;
计算出叶子节点2的哈希值为:
3082010a0282010100c05eb558da5910b6df87de6032921f118c522544dd1a4a;
加和计算后得到机器1的底层计算结果为:
88B2FFF6F62B2CB484B00FC42E761E0BD4E32E1B4F35E29C0B0B872E076A225B;
如果有进位,则哈希和(底层计算结果)长度大于32字节。
第二步:每台机器将自己的哈希和,发送到机器5或6,机器(5-6)将底层设备的哈希和作为大数进行加和。例如:
机器1的哈希和1(底层计算结果)为:
88B2FFF6F62B2CB484B00FC42E761E0BD4E32E1B4F35E29C0B0B872E076A225B;
机器2的哈希和2(底层计算结果)为:
41B2FFF6F62B2CB284BC0FC42E961E0BD4E32c1B4F35E29C0B0B872E076A225B;
机器5将哈希和1与哈希和2相加,得到中间节点哈希和1(中间层设备的计算结果):
CA65FFEDEC565967096C1F885D0C3C17A9C65A369E6BC53816170E5C0ED444B6;
第三步:机器7将来自机器5和机器6的中间节点哈希和(中间层设备的计算结果)进行相加,再对相加结果进行hash计算,得到根哈希值,例如:
机器5计算出的中间节点哈希和1:
CA65FFEDEC565967096C1F885D0C3C17A9C65A369E6BC53816170E5C0ED444B6;
机器6计算出的中间节点哈希和2:
D5EBEAC4003D0D9FBF75367C4F4E1761CADDB2D66450484692E4FEFA8FCF0F04;
机器7将中间节点哈希和1与中间节点哈希和2相加,得到根节点哈希和:
1A051EAB1EC936706C8E15604AC5A537974A40D0D02BC0D7EA8FC0D569EA353BA;
对根节点哈希和进行hash计算,得到根hash值:
6a4a026c6c712a198070183b7997aab8325977794d79c2b2733d12926a0f339b。
显然,图2架构示出的流程是一种满足同态加的合并哈希算法,使用该方案计算得到的中间节点哈希值和默克尔树根哈希值,在减少了网络传输量、简化逻辑和减少拼接开销的同时,保持了哈希算法的离散型,保证默克尔树能安全、唯一、不可伪造地证明数据的存在性。
如图3所示,本申请提供一种区块链的数据验证方法。
步骤301:获取来自被验证设备的默克尔树的待验证节点的第四哈希值以及至少一个辅助哈希值。
步骤302:根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值。
步骤301~步骤302中,所述至少一个辅助哈希值中任一辅助哈希值为所述待验证节点的兄弟节点的哈希值或者所述待验证节点的父类节点的兄弟节点的哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述已认证根哈希值是基于所述默克尔树的叶子节点的哈希值按照所述预设预算得到的。
需要说明的是,待验证节点的父类节点的数量可能大于或等于1,待验证节点的任一父类节点为待验证节点的父节点或者为待验证节点的父类节点的父节点。
步骤302的具体步骤可以如下:
根据所述第四哈希值和所述至少一个辅助哈希值,按照所述预设运算,获得第五哈希值;所述第五哈希值为所述根节点的待验证哈希值;若确定所述第五哈希值与所述已认证根哈希值一致,则确定所述第四哈希值通过验证。
步骤302的具体步骤还可以如下:
根据所述第四哈希值和所述至少一个辅助哈希值,按照所述预设运算,获得第六哈希值和第七哈希值;所述第六哈希值为所述根节点的第一子节点的待验证哈希值,所述第七哈希值为所述根节点的第二子节点的待验证哈希值;
若确定所述第六哈希值与所述第一子节点的已认证哈希值一致,且所述第七哈希值与所述第二子节点的已认证哈希值一致,则确定所述第四哈希值通过验证。
下面结合图4,详细说明图3示出的流程。
举例来说,验证设备获得了默克尔树的已认证根哈希值,需要证明叶子节点3存在默克尔树中,那么具体流程可以如下:
第一步:计算叶子节点3(待验证节点)的哈希值(第四哈希值),然后向默克尔树请求叶子节点4的哈希值(辅助哈希值),计算得出哈希和2,例如:
叶子节点3哈希值:
4e16528f7146eeab21bac2f1d640d89079c25447e15106e74ea7bd567cbdab0d;
叶子节点4哈希值:
87d598348ef61ef49dba738a790d3ed1511b5e8e82ff415f443d41a4131163f7;
加和得到哈希和2:
D5EBEAC4003D0D9FBF75367C4F4E1761CADDB2D66450484692E4FEFA8FCF0F04;
第二步:向默克尔树请求哈希和1(辅助哈希值),使用哈希和1与哈希和2,计算出中间节点1哈希和,例如:
哈希和1:
CA65FFEDEC565967096C1F885D0C3C17A9C65A369E6BC53816170E5C0ED444B6;
哈希和2:
D5EBEAC4003D0D9FBF75367C4F4E1761CADDB2D66450484692E4FEFA8FCF0F04;
加和得到中间节点1哈希和:
CA65FFEDEC565967096C1F885D0C3C17A9C65A369E6BC53816170E5C0ED444B6;
第三步:向默克尔树请求中间节点2哈希和(辅助哈希值),使用中间节点1哈希和与中间节点2哈希和,计算出根节点哈希和(默克尔树的根节点的待验证哈希值),例如:
中间节点1哈希和:
CA65FFEDEC565967096C1F885D0C3C17A9C65A369E6BC53816170E5C0ED444B6;
中间节点2哈希和:
D5EBEAC4003D0D9FBF75367C4F4E1761CADDB2D66450484692E4FEFA8FCF0F04;
根节点哈希和(根节点的待验证哈希值):
1A051EAB1EC936706C8E15604AC5A537974A40D0D02BC0D7EA8FC0D569EA353BA;
第四步:对根节点哈希和计算哈希值,得到根节点的待验证哈希值,判断是否等于先前获得的根节点哈希值(已认证根哈希值),如果相等,则证明叶子节点3位于默克尔树中,例如:
根节点哈希和(根节点的待验证哈希值):
1A051EAB1EC936706C8E15604AC5A537974A40D0D02BC0D7EA8FC0D569EA353BA;
根节点哈希值(已认证根哈希值):
6a4a026c6c712a198070183b7997aab8325977794d79c2b2733d12926a0f339b。
根节点哈希值与事先提供的哈希值一致,证明叶子节点3在默克尔树中。
设叶子节点总数量为n,机器总数量为m,前述两种方案的对比:
Figure BDA0003388316170000131
可以看出,现有技术和本申请的算法间的差距与n和m的比值直接相关,通常的工程实践中,一台机器至少承载十万级别的叶子节点数量,n:m在10万:1以上,采用本申请中的方法能极大减少网络数据传输量和计算量。
如图5所示,本发明提供一种区块链的数据生成装置,所述装置为所述第一设备,所述装置包括:
获取模块501,用于获取第一节点的第一哈希值和第二节点的第二哈希值;所述第一节点和所述第二节点为默克尔树中同层次的节点;
处理模块502,用于按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述第三哈希值用于生成所述默克尔树的根哈希值;
以及用于若所述第一设备不为所述默克尔树的根节点对应的设备,则将所述第三哈希值发送至第二设备,所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点。
可选的,若所述第一设备为所述根节点对应的设备,且所述第一节点与所述第二节点为所述根节点的子节点,则所述第三哈希值为所述根哈希值。
可选的,所述第一节点和所述第二节点为所述默克尔树中的叶子节点。
可选的,所述预设运算为加法运算。
如图6所示,本发明提供一种区块链的数据验证装置,所述装置包括:
获取模块601,用于获取来自被验证设备的默克尔树的待验证节点的第四哈希值以及至少一个辅助哈希值,所述至少一个辅助哈希值中任一辅助哈希值为所述待验证节点的兄弟节点的哈希值或者所述待验证节点的父类节点的兄弟节点的哈希值;
验证模块602,用于根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述已认证根哈希值是基于所述默克尔树的叶子节点的哈希值按照所述预设预算得到的。
可选的,所述验证模块602具体用于:
根据所述第四哈希值和所述至少一个辅助哈希值,按照所述预设运算,获得第五哈希值;所述第五哈希值为所述根节点的待验证哈希值;
若确定所述第五哈希值与所述已认证根哈希值一致,则确定所述第四哈希值通过验证。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的区块链的数据生成或验证方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的区块链的数据生成或验证方法及任一可选方法被执行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种区块链的数据生成方法,其特征在于,包括:
第一设备获取第一节点的第一哈希值和第二节点的第二哈希值;所述第一节点和所述第二节点为默克尔树中同层次的节点;
所述第一设备按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述第三哈希值用于生成所述默克尔树的根哈希值;
若所述第一设备不为所述默克尔树的根节点对应的设备,所述第一设备将所述第三哈希值发送至第二设备,所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点。
2.如权利要求1所述的方法,其特征在于,若所述第一设备为所述根节点对应的设备,且所述第一节点与所述第二节点为所述根节点的子节点,则所述第三哈希值为所述根哈希值。
3.如权利要求1所述的方法,其特征在于,所述第一节点和所述第二节点为所述默克尔树中的叶子节点。
4.如权利要求1至3任一项所述的方法,其特征在于,所述预设运算为加法运算。
5.一种区块链的数据验证方法,其特征在于,包括:
获取来自被验证设备的默克尔树的待验证节点的第四哈希值以及至少一个辅助哈希值,所述至少一个辅助哈希值中任一辅助哈希值为所述待验证节点的兄弟节点的哈希值或者所述待验证节点的父类节点的兄弟节点的哈希值;
根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述已认证根哈希值是基于所述默克尔树的叶子节点的哈希值按照所述预设预算得到的。
6.如权利要求5所述的方法,其特征在于,所述根据所述第四哈希值、所述至少一个辅助哈希值以及所述默克尔树的已认证根哈希值,按照预设运算,验证所述第四哈希值,包括:
根据所述第四哈希值和所述至少一个辅助哈希值,按照所述预设运算,获得第五哈希值;所述第五哈希值为所述根节点的待验证哈希值;
若确定所述第五哈希值与所述已认证根哈希值一致,则确定所述第四哈希值通过验证。
7.一种区块链的数据生成***,其特征在于,所述***包括一个顶层设备、至少一层中间层设备和一层底层设备;所述顶层设备对应默克尔树的根节点,任一中间层设备对应所述默克尔树的中间节点,任一底层设备对应所述默克尔树的叶子节点;
任一底层设备,用于将所述底层设备的底层计算结果发送至所述底层设备对应的中间层设备;所述底层计算结果是根据所述底层设备对应的叶子节点的哈希值按照预设运算得到的,所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;
任一中间层设备,用于获取所述中间层设备的下一层设备的计算结果,并根据所述下一层设备的计算结果,按照所述预设运算,生成所述中间层设备的计算结果,并将所述中间层设备的计算结果发送至所述中间层设备的上一层设备;
所述顶层设备,用于获取所述顶层设备的下一层中间层设备的计算结果,并根据所述下一层中间层设备的计算结果生成所述默克尔树的根哈希值。
8.一种区块链的数据生成装置,其特征在于,所述装置为所述第一设备,所述装置包括:
获取模块,用于获取第一节点的第一哈希值和第二节点的第二哈希值;所述第一节点和所述第二节点为默克尔树中同层次的节点;
处理模块,用于按照预设运算,根据所述第一哈希值和所述第二哈希值,获得第三哈希值;所述预设运算的运算输入的数据量大于所述预设运算的运算结果的数据量,且所述预设运算满***换律;所述第三哈希值用于生成所述默克尔树的根哈希值;
以及用于若所述第一设备不为所述默克尔树的根节点对应的设备,则将所述第三哈希值发送至第二设备,所述第二设备对应的节点包括所述第一节点与所述第二节点的父节点。
9.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被处理器执行时,如权利要求1至4或5至6中任意一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令被处理器执行时,如权利要求1至4或5至6中任意一项所述的方法被执行。
CN202111457563.XA 2021-12-02 2021-12-02 一种区块链的数据生成及验证方法及装置 Pending CN114153849A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111457563.XA CN114153849A (zh) 2021-12-02 2021-12-02 一种区块链的数据生成及验证方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111457563.XA CN114153849A (zh) 2021-12-02 2021-12-02 一种区块链的数据生成及验证方法及装置

Publications (1)

Publication Number Publication Date
CN114153849A true CN114153849A (zh) 2022-03-08

Family

ID=80455817

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111457563.XA Pending CN114153849A (zh) 2021-12-02 2021-12-02 一种区块链的数据生成及验证方法及装置

Country Status (1)

Country Link
CN (1) CN114153849A (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407795A (zh) * 2016-09-05 2017-02-15 北京众享比特科技有限公司 数据存在认证***、认证方法及验证方法
KR20170113481A (ko) * 2017-05-02 2017-10-12 주식회사 코인플러그 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버
KR20180014537A (ko) * 2016-08-01 2018-02-09 주식회사 케이티 분산 스토리지 환경에서 데이터 무결성 검증을 위한 장치 및 방법
CN108711052A (zh) * 2018-05-18 2018-10-26 电子科技大学 一种基于区块链的信息验证***
CN109241121A (zh) * 2017-06-29 2019-01-18 阿里巴巴集团控股有限公司 时间序列数据的存储和查询方法、装置、***及电子设备
CN109889505A (zh) * 2019-01-23 2019-06-14 平安科技(深圳)有限公司 数据持有性验证方法及终端设备
CN110175840A (zh) * 2019-04-19 2019-08-27 华中科技大学 联盟链中实现轻钱包机制的方法、客户端、联盟链及***
CN110311782A (zh) * 2019-04-29 2019-10-08 山东工商学院 个人信息的零知识证明方法、***及存储介质
CN110599174A (zh) * 2019-09-20 2019-12-20 腾讯科技(深圳)有限公司 一种区块链信息处理方法及相关设备
CN110989994A (zh) * 2019-11-18 2020-04-10 腾讯科技(深圳)有限公司 基于区块链的代码版本管理方法、装置、终端及存储介质
US20200412526A1 (en) * 2018-09-20 2020-12-31 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for verifying smart contracts in blockchain, and storage medium
CN112348518A (zh) * 2020-10-15 2021-02-09 深圳前海微众银行股份有限公司 一种区块链交易证明的方法及装置
CN112561700A (zh) * 2020-12-14 2021-03-26 长沙理工大学 区块链中交易数据的存储方法、验证方法、及区块链***
CN113129145A (zh) * 2021-03-12 2021-07-16 广州八爪鱼科技有限公司 一种基于区块链的电子证据存证和验证方法及装置

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180014537A (ko) * 2016-08-01 2018-02-09 주식회사 케이티 분산 스토리지 환경에서 데이터 무결성 검증을 위한 장치 및 방법
CN106407795A (zh) * 2016-09-05 2017-02-15 北京众享比特科技有限公司 数据存在认证***、认证方法及验证方法
KR20170113481A (ko) * 2017-05-02 2017-10-12 주식회사 코인플러그 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버
CN109241121A (zh) * 2017-06-29 2019-01-18 阿里巴巴集团控股有限公司 时间序列数据的存储和查询方法、装置、***及电子设备
CN108711052A (zh) * 2018-05-18 2018-10-26 电子科技大学 一种基于区块链的信息验证***
US20200412526A1 (en) * 2018-09-20 2020-12-31 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for verifying smart contracts in blockchain, and storage medium
CN109889505A (zh) * 2019-01-23 2019-06-14 平安科技(深圳)有限公司 数据持有性验证方法及终端设备
CN110175840A (zh) * 2019-04-19 2019-08-27 华中科技大学 联盟链中实现轻钱包机制的方法、客户端、联盟链及***
CN110311782A (zh) * 2019-04-29 2019-10-08 山东工商学院 个人信息的零知识证明方法、***及存储介质
CN110599174A (zh) * 2019-09-20 2019-12-20 腾讯科技(深圳)有限公司 一种区块链信息处理方法及相关设备
CN110989994A (zh) * 2019-11-18 2020-04-10 腾讯科技(深圳)有限公司 基于区块链的代码版本管理方法、装置、终端及存储介质
CN112348518A (zh) * 2020-10-15 2021-02-09 深圳前海微众银行股份有限公司 一种区块链交易证明的方法及装置
CN112561700A (zh) * 2020-12-14 2021-03-26 长沙理工大学 区块链中交易数据的存储方法、验证方法、及区块链***
CN113129145A (zh) * 2021-03-12 2021-07-16 广州八爪鱼科技有限公司 一种基于区块链的电子证据存证和验证方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
桂小林: "物联网信息安全", vol. 2, 31 May 2021, 机械工业出版社, pages: 272 - 317 *

Similar Documents

Publication Publication Date Title
Bootle et al. Arya: Nearly linear-time zero-knowledge proofs for correct program execution
EP3707871B1 (en) System for recording verification keys on a blockchain
CN108683669B (zh) 数据验证方法和安全多方计算***
US20230245131A1 (en) Method, System, and Computer Program Product for Determining Solvency of a Digital Asset Exchange
US10911231B2 (en) Method for restoring public key based on SM2 signature
EP3096309B1 (en) Secret calculation method, secret calculation system, sorting device, and program
US8411855B1 (en) Size optimization for large elliptic curve cryptography scalar multiplication acceleration tables
CN109272316B (zh) 一种基于区块链网络下的区块实现方法及***
CN112348518B (zh) 一种区块链交易证明的方法及装置
CN111415013A (zh) 隐私机器学习模型生成、训练方法、装置及电子设备
US20100054474A1 (en) SHARING A SECRET USING HYPERPLANES OVER GF(2m)
CN111640018B (zh) 一种区块链交易存在性验证方法及装置
CN114358782A (zh) 区块链交易审计方法、装置、设备及存储介质
CN111080296A (zh) 一种基于区块链***的验证方法及装置
Maddali et al. VeriBlock: A novel blockchain framework based on verifiable computing and trusted execution environment
US20240179211A1 (en) Computer-implemented system and method for controlling processing steps of a distributed system
CN113158253A (zh) 一种隐私求并集方法及装置
van der Linde et al. Post-quantum blockchain using one-time signature chains
CN115473632B (zh) 一种改进的多层可链接环签名生成方法及装置
CN114153849A (zh) 一种区块链的数据生成及验证方法及装置
Na et al. Comparative analysis of schnorr digital signature and ecdsa for efficiency using private ethereum network
CN112541197B (zh) 一种结果验证方法及装置
CN114362961A (zh) 基于区块链的账户恢复方法、装置、设备及存储介质
CN112163845A (zh) 一种跨区块链的交易身份确认方法及装置
CN112632636A (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