CN109617690B - 区块数据处理方法及计算机存储介质 - Google Patents
区块数据处理方法及计算机存储介质 Download PDFInfo
- Publication number
- CN109617690B CN109617690B CN201811258483.XA CN201811258483A CN109617690B CN 109617690 B CN109617690 B CN 109617690B CN 201811258483 A CN201811258483 A CN 201811258483A CN 109617690 B CN109617690 B CN 109617690B
- Authority
- CN
- China
- Prior art keywords
- prime number
- prime
- nodes
- numbers
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3033—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种区块数据处理方法及计算机存储介质,其中,所述区块数据处理方法应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为所述联盟区块链中的每个待生成的区块分配素数;所述方法包括:所述中心节点接收所述联盟区块链中的节点发送的至少一个HASH值,其中,每个HASH值对应一条待生成的区块的数据记录;所述中心节点针对每个HASH值判断是否已分配过素数;若否,则通过所述素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树;若是,则为已分配过素数的HASH值返回对应的素数。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种区块数据处理方法及计算机存储介质。
背景技术
区块链是一种利用了分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链分为三类,分别是:公有区块链、联盟区块链(也称联合区块链、行业区块链)、和私有区块链三种。
其中,在联盟区块链中,为了保证交易的可靠性,采用了Merkle树进行数据验证。Merkle树采用树形数据结构,其叶子节点的值(value)是数据集合的单元数据或者单元数据的HASH(哈希)值,其非叶子节点的值是根据它下面所有的叶子节点值,然后按照HASH算法计算而得出的。
在使用Merkle树进行数据验证时,需要对其进行遍历,与遍历其它树形数据结构类似,目前遍历Merkle树的时间复杂度为O(lg(n)),很明显,Merkle树的节点越多,n越大,则时间复杂度越高,遍历时间越长。但在使用联盟区块链的场景中,节点数量均巨大。因此,如何使得在使用Merkle树进行联盟区块链的数据验证时,提高验证效率,节省验证时间,正成为亟待解决的问题。
发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种应用于联盟区块链的区块数据处理方法及计算机存储介质,用以解决上述问题。
本发明实施例提供一种区块数据处理方法,应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为所述联盟区块链中的每个待生成的区块分配素数;所述方法包括:所述中心节点接收所述联盟区块链中的节点发送的至少一个HASH值,其中,每个HASH值对应一条待生成的区块的数据记录;所述中心节点针对每个HASH值判断是否已分配过素数;若否,则通过所述素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树;若是,则为已分配过素数的HASH值返回对应的素数。
本发明实施例还提供一种计算机可读介质,所述计算机存储介质设置于联盟区块链的中心节点中,所述计算机存储介质中存储有可读程序,所述可读程序应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为所述联盟区块链中的每个待生成的区块分配素数;所述可读程序包括:用于接收所述联盟区块链中的节点发送的至少一个HASH值的指令,其中,每个HASH值对应一条待生成的区块的数据记录;用于针对每个HASH值判断是否已分配过素数的指令;用于若判断结果为否,则通过所述素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树的指令;用于若判断结果为是,则为已分配过素数的HASH值返回对应的素数的指令。
由以上技术方案可见,通过为待生成区块的HASH值分配素数,使得每个区块都对应有一个素数,因在联盟区块链中,每个节点均具有一个验证树如Merkle树,以进行区块数据记录和验证。当使用素数生成Merkle树时,因素数相乘得到的合数可以分解得到唯一的一组质因数,由此,生成的Merkle树为完全二叉树,这样,可以通过很方便地对比各个节点的Merkle树是否一致来判断区块数据是否一致,若不一致则通过对两个节点的Merkle树的根结点的素数积进行素数分解和对比则可得到不相同的素数,而这个不相同的素数就是不相同的区块数据记录。由此,可以直接确定不一致的区块数据,而无需遍历Merkle树的各个结点,将遍历Merkle树的时间复杂度从O(lg(n))降为O(1),从而提高了验证效率,节省了验证时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例一的一种区块数据处理方法的步骤流程图;
图2示出了根据本发明实施例二的一种区块数据处理方法的步骤流程图;
图3为图2所示实施例中的一种Merkle树的生成示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1,示出了根据本发明实施例一的一种区块数据处理方法的步骤流程图。
本实施例的区块数据处理方法应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为联盟区块链中的每个待生成的区块分配素数。
本实施例的区块数据处理方法包括以下步骤:
步骤S102:联盟区块链的中心节点接收联盟区块链中的节点发送的至少一个HASH值。
其中,每个HASH值对应一条待生成的区块的数据记录。
发送HASH值的节点可以是联盟区块链中的任意一个或多个节点,包括中心节点自身,在节点需要生成新区块时,会计算待生成的新区块的SHA-256的HASH值,然后,将HASH值批量发送给中心节点,以通过素数发号器进行素数分配;接着,待生成区块的节点会将待生成的新区块的信息,包括该新区块的区块数据、HASH值和素数等向联盟区块链中的各个节点广播;在联盟区块链中的各个节点达成共识后,即可生成相应的新区块,每个区块都对应有一条相应的数据记录,以记录该区块的信息,包括区块体、区块头、内容数据等等。
步骤S104:中心节点针对每个HASH值判断是否已分配过素数;若否,则执行步骤S106;若是,则执行步骤S108。
素数又称质数,是指大于1的自然数中,除了1和它本身以外不再有其他因数,与素数相对的称为合数。利用素数相乘可以得到合数,该合数可以分解得到唯一的一组质因数。基于此,本发明实施例的区块数据处理方案中为区块分配素数,这样可以很方便地对比联盟区块链中的各节点的素数来确定区块数据是否一致,若不一致,则通过将素数积分解为素数即可得到不相同的素数,而这些素数对应不相同的区块数据记录。由此,大大加快了确定联盟区块链中数据不一致的速度和效率,将确定不一致的时间复杂度降至O(1)。
在一种可行方式中,中心节点在针对每个HASH值判断是否已为其分配过素数时,可以根据自身存储的HASH值与素数的映射关系表,判断某个HASH值是否在表中,若在,则可以认为已为该HASH值分配过素数,否则,则没有分配。若未分配过素数,则执行步骤S106;若已分配过素数,则执行步骤S108。
步骤S106:若未分配过素数,则通过素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树。然后,结束本次流程。
需要说明的是,不同的HASH值分配到的素数是不同的,以对相应的区块数据记录进行区别和标识。
每个节点在得到相应的素数后,且待生成的区块在联盟区块链中达成共识后,即可生成相应的新区块,并依据新区块的素数及其它各个已生成的区块的素数生成的当前节点的验证树,本发明实施例中,所述验证树为一种可用于数据验证的树形数据结构,包括但不限于Merkle树。
步骤S108:若分配过素数,则为已分配过素数的HASH值返回对应的素数。
若中心节点查找本地缓存的、如前所述的HASH值和素数映射关系表,根据查找结果确定已为某个HASH值分配过素数,则不再进行再次分配,而是将原来分配的素数反馈给发送该HASH值的节点(如,若发送该HASH值的节点为节点A,则中心节点为将该素数反馈给节点A),该节点仍使用该HASH值对应的素数进行数据验证以及生成本节点的验证树。
根据本实施例的方案,通过为待生成区块的HASH值分配素数,使得每个区块都对应有一个素数,因在联盟区块链中,每个节点均具有一个验证树如Merkle树,以进行区块数据记录和验证。当使用素数生成Merkle树时,因素数相乘得到的合数可以分解得到唯一的一组质因数,由此,生成的Merkle树为完全二叉树,这样,可以通过很方便地对比各个节点的Merkle树是否一致来判断区块数据是否一致,若不一致则通过对两个节点的Merkle树的根结点的素数积进行素数分解和对比则可得到不相同的素数,而这个不相同的素数就是不相同的区块数据记录。由此,可以直接确定不一致的区块数据,而无需遍历Merkle树的各个结点,将遍历Merkle树的时间复杂度从O(lg(n))降为O(1),从而提高了验证效率,节省了验证时间。
本实施例的区块数据处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例二
参照图2,示出了根据本发明实施例二的一种区块数据处理方法的步骤流程图。
本实施例的区块数据处理方法应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为联盟区块链中的每个待生成的区块分配素数。
本实施例的区块数据处理方法包括以下步骤:
步骤S202:中心节点通过素数发号器生成至少两个素数列表;从至少两个素数列表中确定主素数列表。
其中,不同的素数列表中存储的素数的数量相同但数值不同,所述主素数列表用于分配素数。
素数发号器可以生成至少两个素数列表,其中一个为用于分配素数的主素数列表,其它素数列表用于在主素数列表中的素数不够分配时,为其提供素数资源。通过至少两个素数列表的方式,可以有效保证素数的分配,避免因素数资源不够分配时,生成新的素数造成的素数分配占用资源的消耗和分配速度的下降。在实际应用中,本领域技术人员可以根据实际需要,从素数列表中确定出一个主素数列表,一般来说,可以按照素数的数值大小,将包含较小素数的列表确定为主素数列表。但不限于此,将其它素数列表确定为主素数列表的方式也同样适用于本发明实施例。
优选地,素数列表可以为2个,其中一个为主素数列表,另一个素数列表在主素数列表中的剩余素数不够分配时,将其素数资源提供给主素数列表。使用2个素数列表,既可有效保证素数分配,又避免过多占用系统资源。
例如,素数发号器初始生成两个素数列表ListA和ListB,其中ListA和ListB的素数数量相同,如均为2000万个素数,但具体的素数值不同。ListA为主素数列表,用于给联盟区块链中的节点分配素数,ListB用于在ListA素数不够分配时,重新给ListA快速赋值。在ListB给ListA赋值后,ListB会进行更新,获取新的素数,如,再获取与之前的ListA和ListB中的素数不同的另外2000万个素数。需要说明的是,ListB在每次给ListA进行赋值后,均会进行更新,以保证联盟区块链中有充足的素数资源。
步骤S204:中心节点接收联盟区块链中的节点发送的至少一个HASH值。
其中,每个HASH值对应一条待生成的区块的数据记录,发送HASH值的节点可以是联盟区块链中的任意一个或多个节点。
例如,待生成区块的节点在对待生成的区块的各条数据记录计算SHA-256的HASH值后,将这些HASH值批量发给素数发号器以进行素数分配,这些HASH值将由联盟区块链的中心节点接收。
步骤S206:中心节点针对每个HASH值判断是否已分配过素数;若否,则执行步骤S208;若是,则执行步骤S210。
中心节点中存储有已分配过素数的HASH值与分配的素数的映射关系信息,根据该信息即可判断是否已为某个HASH值分配过素数。
素数的计算和个数、合数对应的一组质因数计算非常高效,素数的计算和个数统计如下表所示:
素数生成的范围 | 素数个数 |
<=10000 | 1229 |
<=100000 | 9592 |
<=1000000 | 78498 |
<=10000000 | 664579 |
<=100000000 | 5761455 |
<=500000000 | 26355867 |
同样,合数对应的一组质因数计算非常高效,如计算223092870的质因数仅需1ms。
可见,通过素数分配和使用极大提升了数据一致性判断和验证效率。
步骤S208:若未分配过素数,则中心节点通过素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树。转步骤S212。
本实施例中,设定素数列表为2个,包括第一素数列表和第二素数列表,其中,第一素数列表为主素数列表。
基于此,在一种可行方式中,本步骤可以实现为:通过素数发号器检查第一素数列表中的剩余素数的数量是否大于或等于未分配过素数的HASH值的数量;若是,则使用第一素数列表中的素数,通过素数发号器为未分配过素数的HASH值分配素数;若否,则使用第二素数列表中的素数更新第一素数列表中的素数,并使用更新后的第一素数列表中的素数,通过素数发号器为未分配过素数的HASH值分配素数。
在联盟区块链中,由于可能上链的区块数据记录很多,因此在兼顾素数积的解算效率的前提下,主素数列表会定期更新。但由于素数仅用于验证新生成区块内容的完整性,具有短时效性,因此更新主素数列表并不影响新生成区块内容的验证。
可选地,在通过素数发号器为未分配过素数的HASH值分配素数之后,还可以将分配了素数的HASH值与为其分配的素数的映射关系存储至中心节点的缓存中,以在需要时进行查找,避免重复分配素数。
例如,在一个具体实例中,(1)素数发号器检查本地缓存是否有HASH值对应的素数缓存,若有则直接返回缓存内容不用重新分配素数;若存在部分或全部HASH值在缓存中无素数则为其分配新素数;(2)素数发号器检查ListA(主素数列表)剩余素数个数和HASH值LIST大小,若ListA的剩余素数个数大于等于HASH值LIST的大小,则直接分配素数给各个HASH值,并将HASH值和素数的映射关系写入缓存;(3)若ListA的剩余素数个数小于HASH值LIST的大小,则将ListB的值复制给ListA,转(1)继续执行。
由此,实现了素数的高效、准确分配。
可选地,本实施例中的验证树可以为二叉树,所述验证树中的叶子结点的值为当前叶子结点的HASH值对应的素数,所述验证树中的非叶子结点的值为当前非叶子结点的下一级结点的值的乘积。进一步可选地,所述验证树为Merkle树。
一种Merkle树的生成示意如图3所示,该Merkle树有9个叶子结点Node01-Node09,对应与9条区块数据记录Data01-Data09,本实施例中,Node01-Node09的值分别为Data01-Data09的HASH值对应的素数。非叶子结点的值是根据它下面所有的叶子结点的值,然后按照Hash算法计算而得出的,例如,叶子结点的父结点的值为相邻的两个叶子结点的素数乘积,如Node11的值是Node01和Node02对应的两个素数的乘积,其为合数;再向上,该父结点的父结点的值则为其子结点的值的乘积,如Node31的值是Node21和Node22对应的两个合数的乘积;依此类推,直至根结点,根结点Root的值是Node21和Node22对应的两个合数的乘积。由此,若联盟区块链中的两个节点的Merkle树的根结点的数值不同,则可直接进行素数分解,将根结点的数值分解为多个素数的乘积,进而对这两个节点的两个Merkle树对应的两组素数乘积进行比对,即可获得不同的两个素数,这两个素数即为不一致的区块数据记录对应的素数,由此,可直接确定不一致的区块。
步骤S210:若分配过素数,则中心结点为已分配过素数的HASH值返回对应的素数。转步骤S212。
该分配过的素数可从中心节点缓存的HASH值与素数的映射关系中获得。
步骤S212:中心节点接收到数据验证触发操作,执行所述触发操作所触发的数据验证。
需要说明的是,本实施例中以中心节点接收到数据验证触发操作为例,但本领域技术人员应当明了的是,在实际应用中,联盟区块链中的任意一个节点都可能接收到数据验证触发操作,则接收到数据验证触发操作的节点均可参照本实施例,实现相应的节点间的数据验证操作。
本步骤以验证树为Merkle树为例,对联盟区块链中的节点间的数据验证进行说明。
具体地,本步骤可以包括:接收到数据验证触发操作,其中,所述数据验证触发操作用于指示验证两个节点的区块数据是否一致;根据所述触发操作,获取待验证的两个节点的Merkle树,其中,所述两个节点包括当前节点;比较所述两个节点的Merkle树的根结点的值是否相同;若相同,则确定所述两个节点的区块数据一致;若不相同,则根据所述两个节点的Merkle树的根结点的值,确定不一致的区块数据。
其中,根据所述两个节点的Merkle树的根结点的值,确定不一致的区块数据,包括:对所述两个节点的Merkle树的根结点的值进行素数分解,得到对应的两个素数列表;对得到的所述两个素数列表中的各个素数的数值进行比较操作,获得数值不同的两个素数;确定所述两个素数对应的两个区块数据为不一致的区块数据。
如前所述,因Merkle树是根据区块数据记录对应的素数生成的,因此,通过对两个Merkle树的根结点的值进行素数分解,获得对应的两组素数的乘积,进而对这两组素数的乘积进行对比,即可确定不同的两个素数,进而可确定不一致的区块数据,时间复杂度为O(1)。
例如,在区块创建的时候每个节点都构建了一个Merkle树,根据各条区块数据记录的HASH值,向素数发号器申请素数。如前所述,已分配素数的HASH值会继续沿用已有的素数,新产生的HASH值会分配新素数。在构建Merkle树的过程中,如图3所示,Merkle树的中间结点(非叶子结点)和根结点均会根据其子结点的值计算得到素数积。基于此,比较两个节点的Merkle树的根结点的值即根结点的素数积值是否一致,若一致,则说明两个Merkle树叶子结点的区块数据相同;若不一致,则将两个根结点的素数积进行素数分解,确定不同的素数,这两个不同的素数分别对应两个Merkle树中数据不同的区块;然后,根据找到的不同区块,向联盟区块链中的其他节点获取对应区块的内容并继续完成上述验证,直到找到正确的区块数据。
以下,以由四个叶子结点组成的Merkle树为例,对上述数据验证过程进行简要说明。
假设Merkle A的四个叶子结点对应的素数分别为3、5、7、11,以L1表示叶子结点,对应的叶子结点N1-N4的值分别为3、5、7、11;以L2表示叶子结点的父结点,则L21的值为N1和N2的乘积15,即3*5=15,L22为N3和N4的乘积77,即7*11=77;以L3表示根结点,则L3的值为L21和L22的乘积1155,即15*77=1155。
假设Merkle B的四个叶子结点对应的素数分别为2、5、7、11,以L1表示叶子结点,对应的叶子结点N1-N4的值分别为2、5、7、11;以L2表示叶子结点的父结点,则L21的值为N1和N2的乘积10,即2*5=10,L22为N3和N4的乘积77,即7*11=77;以L3表示根结点,则L3的值为L21和L22的乘积770,即10*77=770。
在根据Merkle A和Merkle B进行数据验证时,因Merkle A和Merkle B的根结点的值一个为1155,另一个为770,确定两者不一致。将1155与770分别进行素数分解,则分解出:1155=3*5*7*11,770=2*5*7*11,比较这两组素数乘积可得到这两组素数乘积中有不一样的素数3和2,则可确定Merkle A中素数3对应的区块和Merkle B中素数2对应的区块不一致。可见,通过这种方式可直接确定出不一致的区块。
步骤S214:若确定两个节点中的区块数据不一致,更新不一致的区块数据。
具体地,若确定两个Merkle树中的两个素数对应的两个区块数据为不一致的区块数据,则接着,可以确定所述两个素数对应的HASH值及所述HASH值对应的区块数据;从联盟区块链中除所述两个节点之外的其它节点中,获取确定的所述HASH值对应的区块数据;比较所述其它节点中的区块数据和所述两个素数对应的区块数据;将不一致的区块数据更新为所述其它节点中的区块数据。
仍以上述Merkle A和Merkle B为例,若素数3对应的区块数据为X,素数2对应的区块数据为Y,若从联盟区块链中的其它节点中获得相应的Merkle树,确定相对应的叶子结点的值也为3,则可确定素数3为正确的结点数值,使用素数3对应的区块数据X替换素数2对应的区块数据Y,以保证联盟区块链中所有区块数据的一致性。
可见,通过本实施例,使用素数提高了联盟区块链中节点对Merkle树的数据验证效率。通过在联盟区块链中的中心结点构建中心化的素数发号器,为每一条区块数据记录分配一个唯一的素数,根据素数乘积得到的合数可以唯一分解为一组素数的特点,将Merkle树的O(lg(n))的时间复杂度降低到O(1),极大地提高了通过Merkle树进行数据一致性验证的效率,节省了验证时间。
本实施例的区块数据处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例三
本发明实施例还提供了一种计算机可读介质,所述计算机存储介质设置于联盟区块链的中心节点中,所述计算机存储介质中存储有可读程序,所述可读程序应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为所述联盟区块链中的每个待生成的区块分配素数;所述可读程序包括:用于接收所述联盟区块链中的节点发送的至少一个HASH值的指令,其中,每个HASH值对应一条待生成的区块的数据记录;用于针对每个HASH值判断是否已分配过素数的指令;用于若判断结果为否,则通过所述素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树的指令;用于若判断结果为是,则为已分配过素数的HASH值返回对应的素数的指令。
可选地,所述可读程序还包括:在所述用于接收所述联盟区块链中的节点发送的至少一个HASH值的指令之前,用于通过所述素数发号器生成至少两个素数列表的指令,其中,不同的素数列表中存储的素数的数量相同但数值不同;用于从所述至少两个素数列表中确定主素数列表的指令,其中,所述主素数列表用于分配素数。
可选地,所述素数列表为2个,包括第一素数列表和第二素数列表,其中,所述第一素数列表为主素数列表;所述用于通过所述素数发号器为未分配过素数的HASH值分配素数的指令,包括:用于通过所述素数发号器检查所述第一素数列表中的剩余素数的数量是否大于或等于所述未分配过素数的HASH值的数量的指令;用于若是,则使用所述第一素数列表中的素数,通过所述素数发号器为未分配过素数的HASH值分配素数的指令;用于若否,则使用所述第二素数列表中的素数更新所述第一素数列表中的素数,并使用更新后的所述第一素数列表中的素数,通过所述素数发号器为未分配过素数的HASH值分配素数的指令。
可选地,所述可读程序还包括:在所述用于通过所述素数发号器为未分配过素数的HASH值分配素数的指令之后,用于将所述HASH值与为其分配的素数的映射关系存储至缓存中的指令。
可选地,所述验证树为二叉树,所述验证树中的叶子结点的值为当前叶子结点的HASH值对应的素数,所述验证树中的非叶子结点的值为当前非叶子结点的下一级结点的值的乘积。
可选地,所述验证树为Merkle树。
可选地,所述可读程序还包括:用于接收到数据验证触发操作的指令,其中,所述数据验证触发操作用于指示验证两个节点的区块数据是否一致;用于根据所述触发操作,获取待验证的两个节点的Merkle树,其中,所述两个节点包括当前节点的指令;用于比较所述两个节点的Merkle树的根结点的值是否相同的指令;用于若相同,则确定所述两个节点的区块数据一致的指令;用于若不相同,则根据所述两个节点的Merkle树的根结点的值,确定不一致的区块数据的指令。
可选地,所述用于根据所述两个节点的Merkle树的根结点的值,确定不一致的区块数据的指令,包括:用于对所述两个节点的Merkle树的根结点的值进行素数分解,得到对应的两个素数列表的指令;用于对得到的所述两个素数列表中的各个素数的数值进行比较操作,获得数值不同的两个素数的指令;用于确定所述两个素数对应的两个区块数据为不一致的区块数据的指令。
可选地,所述可读程序还包括:在所述用于确定所述两个素数对应的两个区块数据为不一致的区块数据的指令之后,用于确定所述两个素数对应的HASH值及所述HASH值对应的区块数据的指令;用于从所述联盟区块链中除所述两个节点之外的其它节点中,获取确定的所述HASH值对应的区块数据的指令;用于比较所述其它节点中的区块数据和所述两个素数对应的区块数据的指令;用于将不一致的区块数据更新为所述其它节点中的区块数据的指令。
根据本实施例的计算机可读介质,通过为待生成区块的HASH值分配素数,使得每个区块都对应有一个素数,因在联盟区块链中,每个节点均具有一个验证树如Merkle树,以进行区块数据记录和验证。当使用素数生成Merkle树时,因素数相乘得到的合数可以分解得到唯一的一组质因数,由此,生成的Merkle树为完全二叉树,这样,可以通过很方便地对比各个节点的Merkle树是否一致来判断区块数据是否一致,若不一致则通过对两个节点的Merkle树的根结点的素数积进行素数分解和对比则可得到不相同的素数,而这个不相同的素数就是不相同的区块数据记录。由此,可以直接确定不一致的区块数据,而无需遍历Merkle树的各个结点,将遍历Merkle树的时间复杂度从O(lg(n))降为O(1),从而提高了验证效率,节省了验证时间。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的区块数据处理方法。此外,当通用计算机访问用于实现在此示出的区块数据处理方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的区块数据处理方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (9)
1.一种区块数据处理方法,应用于联盟区块链,其特征在于,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为所述联盟区块链中的每个待生成的区块分配素数;
所述方法包括:
所述中心节点接收所述联盟区块链中的节点发送的至少一个HASH值,其中,每个HASH值对应一条待生成的区块的数据记录;
所述中心节点针对每个HASH值判断是否已分配过素数;
若否,则通过所述素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树;
若是,则为已分配过素数的HASH值返回对应的素数;
所述验证树为二叉树,所述验证树中的叶子节点的值为当前叶子节点的HASH值对应的素数,所述验证树中的非叶子节点的值为当前非叶子节点的下一级节点的值的乘积,以在验证时比较两个节点的二叉树的根节点的值是否相同;若相同,则确定所述两个节点的区块数据一致。
2.根据权利要求1所述的方法,其特征在于,在所述中心节点接收所述联盟区块链中的节点发送的至少一个HASH值之前,所述方法还包括:
所述中心节点通过所述素数发号器生成至少两个素数列表,其中,不同的素数列表中存储的素数的数量相同但数值不同;
从所述至少两个素数列表中确定主素数列表,其中,所述主素数列表用于分配素数。
3.根据权利要求2所述的方法,其特征在于,所述素数列表为2个,包括第一素数列表和第二素数列表,其中,所述第一素数列表为主素数列表;
所述通过所述素数发号器为未分配过素数的HASH值分配素数,包括:
通过所述素数发号器检查所述第一素数列表中的剩余素数的数量是否大于或等于所述未分配过素数的HASH值的数量;
若是,则使用所述第一素数列表中的素数,通过所述素数发号器为未分配过素数的HASH值分配素数;
若否,则使用所述第二素数列表中的素数更新所述第一素数列表中的素数,并使用更新后的所述第一素数列表中的素数,通过所述素数发号器为未分配过素数的HASH值分配素数。
4.根据权利要求1所述的方法,其特征在于,在所述通过所述素数发号器为未分配过素数的HASH值分配素数之后,所述方法还包括:
将所述HASH值与为其分配的素数的映射关系存储至缓存中。
5.根据权利要求1所述的方法,其特征在于,所述验证树为Merkle树。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收到数据验证触发操作,其中,所述数据验证触发操作用于指示验证两个节点的区块数据是否一致;
根据所述触发操作,获取待验证的两个节点的Merkle树,其中,所述两个节点包括当前节点;
若比较所述两个节点的Merkle树的根节点的值不相同,则根据所述两个节点的Merkle树的根节点的值,确定不一致的区块数据。
7.根据权利要求6所述的方法,其特征在于,所述根据所述两个节点的Merkle树的根节点的值,确定不一致的区块数据,包括:
对所述两个节点的Merkle树的根节点的值进行素数分解,得到对应的两个素数列表;
对得到的所述两个素数列表中的各个素数的数值进行比较操作,获得数值不同的两个素数;
确定所述两个素数对应的两个区块数据为不一致的区块数据。
8.根据权利要求7所述的方法,其特征在于,在所述确定所述两个素数对应的两个区块数据为不一致的区块数据之后,所述方法还包括:
确定所述两个素数对应的HASH值及所述HASH值对应的区块数据;
从所述联盟区块链中除所述两个节点之外的其它节点中,获取确定的所述HASH值对应的区块数据;
比较所述其它节点中的区块数据和所述两个素数对应的区块数据;
将不一致的区块数据更新为所述其它节点中的区块数据。
9.一种计算机存储介质,所述计算机存储介质设置于联盟区块链的中心节点中,所述计算机存储介质中存储有可读程序,其特征在于,所述可读程序应用于联盟区块链,所述联盟区块链的中心节点中设置有素数发号器,所述素数发号器用于为所述联盟区块链中的每个待生成的区块分配素数;
所述可读程序包括:
用于接收所述联盟区块链中的节点发送的至少一个HASH值的指令,其中,每个HASH值对应一条待生成的区块的数据记录;
用于针对每个HASH值判断是否已分配过素数的指令;
用于若判断结果为否,则通过所述素数发号器为未分配过素数的HASH值分配素数,以使所述HASH值对应的节点根据所述素数生成所述节点的验证树的指令;
用于若判断结果为是,则为已分配过素数的HASH值返回对应的素数的指令;
所述验证树为二叉树,所述验证树中的叶子节点的值为当前叶子节点的HASH值对应的素数,所述验证树中的非叶子节点的值为当前非叶子节点的下一级节点的值的乘积,用于在验证时比较两个节点的二叉树的根节点的值是否相同;若相同,则确定所述两个节点的区块数据一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811258483.XA CN109617690B (zh) | 2018-10-26 | 2018-10-26 | 区块数据处理方法及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811258483.XA CN109617690B (zh) | 2018-10-26 | 2018-10-26 | 区块数据处理方法及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109617690A CN109617690A (zh) | 2019-04-12 |
CN109617690B true CN109617690B (zh) | 2021-04-09 |
Family
ID=66003012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811258483.XA Active CN109617690B (zh) | 2018-10-26 | 2018-10-26 | 区块数据处理方法及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109617690B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105790954A (zh) * | 2016-03-02 | 2016-07-20 | 布比(北京)网络技术有限公司 | 一种构建电子证据的方法和系统 |
CN106789090A (zh) * | 2017-02-24 | 2017-05-31 | 陈晶 | 基于区块链的公钥基础设施系统及半随机联合证书签名方法 |
CN107465505A (zh) * | 2017-08-28 | 2017-12-12 | 阿里巴巴集团控股有限公司 | 一种密钥数据处理方法、装置及服务器 |
CN107833135A (zh) * | 2017-10-30 | 2018-03-23 | 中山大学 | 一种基于区块链的公平电子投票协议 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9960920B2 (en) * | 2016-01-26 | 2018-05-01 | Stampery Inc. | Systems and methods for certification of data units and/or certification verification |
-
2018
- 2018-10-26 CN CN201811258483.XA patent/CN109617690B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105790954A (zh) * | 2016-03-02 | 2016-07-20 | 布比(北京)网络技术有限公司 | 一种构建电子证据的方法和系统 |
CN106789090A (zh) * | 2017-02-24 | 2017-05-31 | 陈晶 | 基于区块链的公钥基础设施系统及半随机联合证书签名方法 |
CN107465505A (zh) * | 2017-08-28 | 2017-12-12 | 阿里巴巴集团控股有限公司 | 一种密钥数据处理方法、装置及服务器 |
CN107833135A (zh) * | 2017-10-30 | 2018-03-23 | 中山大学 | 一种基于区块链的公平电子投票协议 |
Also Published As
Publication number | Publication date |
---|---|
CN109617690A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110602148B (zh) | 一种区块的状态树的生成和链上数据验证的方法及装置 | |
CN107332876B (zh) | 区块链状态的同步方法及装置 | |
CN110737664A (zh) | 一种区块链节点同步的方法及装置 | |
CN110737658A (zh) | 数据分片存储方法、装置、终端及可读存储介质 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN104090806A (zh) | 升级包、升级请求的处理方法及装置 | |
CN109246190B (zh) | 网络寻址方法、数据编辑方法、装置及存储介质 | |
RU2011115207A (ru) | Способ защищенной связи в сети, устройство связи, сеть и компьютерная программа для этого | |
CN104834557A (zh) | 一种基于Hadoop的数据分析方法 | |
CN108241539B (zh) | 基于分布式系统的交互式大数据查询方法、装置、存储介质和终端设备 | |
CN104636286A (zh) | 用于数据访问的方法和设备 | |
CN104731951A (zh) | 一种数据查询方法及装置 | |
US20160080462A1 (en) | Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system | |
WO2022048359A1 (zh) | 一种数据归档方法、装置、电子设备和存储介质 | |
CN109756566A (zh) | 基于区块链的数据存储方法、相关设备及存储介质 | |
US20170170958A1 (en) | Communication control device, communication control method, and computer program product | |
CN113468571B (zh) | 基于区块链的溯源方法 | |
CN109617690B (zh) | 区块数据处理方法及计算机存储介质 | |
CN107807976B (zh) | Ip归属地查询方法和装置 | |
CN107562762A (zh) | 数据索引构建方法及装置 | |
CN112035413B (zh) | 元数据信息查询方法、装置及存储介质 | |
CN113612632A (zh) | 应用于网关设备的拓扑识别方法、装置、网关设备和介质 | |
CN106559278B (zh) | 数据处理状态监控方法和装置 | |
US20210382872A1 (en) | Blockchain-based Data Storage Method, Related Device and Storage Medium | |
CN104834733A (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 |