CN110493148A - 一种区块处理、区块共识和区块同步方法及装置 - Google Patents
一种区块处理、区块共识和区块同步方法及装置 Download PDFInfo
- Publication number
- CN110493148A CN110493148A CN201910741064.XA CN201910741064A CN110493148A CN 110493148 A CN110493148 A CN 110493148A CN 201910741064 A CN201910741064 A CN 201910741064A CN 110493148 A CN110493148 A CN 110493148A
- Authority
- CN
- China
- Prior art keywords
- block
- empty
- node
- caching
- common recognition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9015—Buffering arrangements for supporting a linked list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明公开了一种区块处理、区块共识和区块同步方法及装置,适用于包括主共识节点和辅共识节点的区块链系统;区块链系统包括区块链和空块缓存;区块链中任一区块均不是空块;空块缓存用于存储空块;空块缓存中的空块是针对区块链中第m个区块之后生成的空块且在区块链中增加第m+1个区块时被清空;其中,区块处理方法包括:主共识节点在确定待生成的第i个区块为空块时,从空块缓存中确定最新空块的空块索引值和哈希值,生成第i个区块并将第i个区块广播至各辅共识节点,在确定第i个区块通过共识验证后,将第i个区块存储至空块缓存中。该技术方案用以解决空块占用节点中磁盘存储空间的问题,提高节点中磁盘的利用率。
Description
技术领域
本发明实施例涉及金融科技(Fintech)领域,尤其一种区块处理、区块共识和区块同步方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,区块链技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对区块链技术提出的更高的要求。
区块链系统中,为了保证定时出块,基于POW(Proof of Work,工作证明)和POS(Proof of Stake,股权证明)共识算法的区块链系统,如比特币、以太坊等均对空块进行共识和存储至区块链中。为了保障系统正常运行、防止节点作恶,基于PBFT(PracticalByzantine Fault Tolerance,实用拜占庭容错)共识算法的区块链系统(如Algorand)会在没有交易的情况下产生空块,并对产生的空块进行共识验证,且在验证通过后存储至区块链中。
区块链系统将空块存储至区块链上,空块占用了节点中大量的磁盘存储空间,降低节点中磁盘的利用率,且影响节点中可存储交易的数量。
发明内容
本发明实施例提供一种区块处理、区块共识和区块同步方法及装置,用以解决空块占用节点中磁盘存储空间的问题,提高节点中磁盘的利用率。
本发明实施例提供的一种区块处理方法,该区块处理方法适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;
该区块处理方法包括:
所述主共识节点在确定待生成的第i个区块为空块时,从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块索引值用于指示所述空块缓存中各空块产生的先后;i为正整数,m为正整数;
所述主共识节点生成所述第i个区块并将所述第i个区块广播至各辅共识节点,所述第i个区块中包括所述第i个区块的空块索引值和父空块哈希值,所述第i个区块的父空块哈希值是所述最新空块的哈希值;所述第i个区块的空块索引值是根据所述最新空块的空块索引值确定的;
所述主共识节点在确定所述第i个区块通过共识验证后,将所述第i个区块存储至所述空块缓存中。
上述技术方案中,区块链系统包括区块链和空块缓存,区块链用于对账本数据进行永久性存储,空块缓存用于对的空块进行暂时性存储,当区块链中有新的区块生成并存储至区块链上时,则当前空块缓存中的空块则会被清空,节省磁盘存储空间,提高磁盘利用率。而且,在生成空块时,将空块的空块索引值和父空块哈希值同时打包至空块,有利于各共识节点根据空块的空块索引值和父空块哈希值,结合本地的空块缓存对空块进行共识验证,用于保障区块链系统的稳定性和安全性。也即本技术方案,在保障区块链系统安全性的前提下,提高各节点中磁盘利用率,使得各节点可存储更多的账本数据。
可选的,所述主共识节点生成所述第i个区块,包括:
所述主共识节点获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
所述主共识节点将所述第i个区块的块高、所述第i个区块的父区块哈希值、所述第i个区块的空块索引值和所述第i个区块的父空块哈希值打包至所述第i个区块。
上述技术方案中,主共识节点在生成空块时,还会根据当前区块链中最高区块的块高和哈希值确定当前待生成空块的块高和父区块哈希值,用于各共识节点根据该空块的块高和父区块哈希值,结合本地存储的区块链对该空块进行共识验证,进一步保障区块链系统的稳定性和安全性。
可选的,还包括:
所述主共识节点在确定所述待生成的第i个区块不是空块时,则获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
所述主共识节点将所述第i个区块的块高、所述第i个区块的父区块哈希值打包至所述第i个区块。
上述技术方案中,主共识节点在生成非空块时,同样会根据当前区块链中最高区块的块高和哈希值确定当前待生成的非空块的块高和父区块哈希值,用于各共识节点根据该非空块的块高和父区块哈希值,结合本地存储的区块链对该非空块进行共识验证。同时,在将该非空块存储至区块链上时,可以清空当前空块缓存中的所有空块。
可选的,所述空块缓存中包括最新空块索引值,所述最新空块索引值为所述最新空块的空块索引值;
所述主共识节点从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值,包括:
所述主共识节点根据所述最新空块索引值,从所述空块缓存中确定所述最新空块并获取所述最新空块的空块索引值和所述最新空块的哈希值;
所述主共识节点在将所述第i个区块存储至所述空块缓存中之后,还包括:
所述主共识节点将所述最新空块索引值加1。
上述技术方案中,可以在空块缓存中设置最新空块索引值,也即当前空块缓存中最新空块的空块索引值,用于主共识节点在生成空块时,根据该最新空块索引值,从空块缓存中确定最新空块的空块索引值和哈希值。该技术方案中,主共识节点无需从空块缓存中查找最新空块,而是可以直接根据最新空块索引值确定,提高主共识节点生成空块的效率。
相应的,本发明实施例还提供了一种区块共识方法,该区块共识方法适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块包括空块索引值和父空块哈希值;所述空块索引值用于指示所述空块缓存中各空块产生的先后;m为正整数;
该区块共识方法包括:
所述辅共识节点接收所述主共识节点广播的第i个区块;i为正整数;
所述辅共识节点从所述第i个区块中确定所述第i个区块的空块索引值和所述第i个区块的父空块哈希值;
所述辅共识节点从所述辅共识节点的空块缓存中确定第一空块的哈希值和所述第一空块的空块索引值;所述第一空块是所述辅共识节点的空块缓存中的最新空块;
所述辅共识节点若确定所述第i个区块通过共识验证,则将所述第i个区块存储至所述辅共识节点的空块缓存中;所述第i个区块通过共识验证包括所述第i个区块的空块索引值与所述第一空块的空块索引值符合预设要求,且确定所述第i个区块的父空块哈希值等于所述第一空块的哈希值。
上述技术方案中,区块链系统包括区块链和空块缓存,区块链用于对账本数据进行永久性存储,空块缓存用于对的空块进行暂时性存储,当区块链中有新的区块生成并存储至区块链上时,则当前空块缓存中的空块则会被清空,节省磁盘存储空间,提高磁盘利用率。而且,辅共识节点在接收到第i个区块时,从该第i个区块中确定第i个区块的空块索引值和父空块哈希值,并结合本地的空块缓存中的最新空块的空块索引值和哈希值对第i个区块进行共识验证,用于保障区块链系统的稳定性和安全性。
可选的,所述方法还包括:
所述辅共识节点从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
所述辅共识节点从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述第i个区块通过共识验证,还包括:
所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值。
上述技术方案中,辅共识节点会获取第i个区块的块高和父区块哈希值,并根据第i个区块的块高和父区块哈希值,结合本地区块链中的最高区块的块高和哈希值,对第i个区块进行共识验证,进一步保障区块链系统的稳定性和安全性。
可选的,所述方法还包括:
所述辅共识节点从所述第i个区块中确定所述第i个区块的空块索引值为预设值,且所述第i个区块的父空块哈希值为空值;
所述辅共识节点从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
所述辅共识节点从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述辅共识节点若确定所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值,则确定所述第i个区块通过所述共识验证;
所述辅共识节点将所述第i个区块存储至所述辅共识节点的空块缓存中。
上述技术方案中,辅共识节点在确定第i个区块中的空块索引值为预设值,且父区块哈希值为空时,则可以确定该第i个区块为空块缓存中的第一个空块。辅共识节点可以对空块缓存中的第一个空块进行共识验证,主要验证第一个空块的块高、父区块哈希值,以保障区块链系统的稳定性和安全性。
相应的,本发明实施例还提供了一种区块同步方法,该区块同步方法适用于包括多个节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述多个节点包括第一节点和第二节点,所述第一节点是所述多个节点中的任一个,所述第二节点是所述多个节点中除所述第一节点之外的任一个;m为正整数;
该区块同步方法包括:
所述第一节点接收所述第二节点广播的状态信息;所述状态信息包括所述第二节点的空块缓存中最新空块的空块索引值和所述第二节点的区块链的最高区块的块高;
所述第一节点若确定所述第二节点的区块链的最高区块的块高等于所述第一节点的区块链的最高区块的块高且所述第二节点的最新空块的空块索引值大于所述第一节点的最新空块的空块索引值,则从所述第二节点的空块缓存中确定待同步空块;所述待同步空块是所述第二节点的空块缓存中空块索引值大于所述第一节点的最新空块的空块索引值的空块;
所述第一节点将所述待同步空块同步至所述第一节点的空块缓存中。
上述技术方案中,考虑区块链系统中各节点的性能不一,可能存在区块链系统中节点的区块链或空块缓存中数据不同步的情况,若第一节点和第二节点的区块链中数据同步,而空块缓存中数据不同步,则第一节点可以从第二节点中获取待同步空块,以保证区块链系统中所有节点处于最新状态。
可选的,所述第一节点将所述待同步空块同步至所述第一节点的空块缓存中,包括:
所述第一节点针对任一个待同步空块,获取所述待同步空块的父空块哈希值和空块索引值;
所述第一节点若确定所述待同步空块的父空块哈希值等于所述第一节点的空块缓存中最新空块的哈希值,且所述待同步空块的空块索引值等于所述第一节点的最新空块的空块索引值加1,则确定同步所述待同步空块至所述第一节点的空块缓存中。
可选的,所述待同步空块中包括父区块哈希值;
所述第一节点确定同步所述待同步空块至所述第一节点的空块缓存中之前,还包括:
所述第一节点确定所述待同步空块中父区块哈希值是否等于所述第一节点的区块链上的最高区块的哈希值。
上述技术方案中,考虑到第一节点会接收到多个节点广播的状态信息,也即第一节点可以同时向多个节点同步数据,为了避免第一节点向多个节点同步重复的数据,第一节点在同步数据时,可以对待同步空块进行重复性验证,实现第一节点不同步已经同步过的数据。
可选的,所述状态信息还包括所述第二节点的区块链的块高;
所述第一节点在从所述第二节点的空块缓存确定待同步空块之前,还包括:
所述第一节点若确定所述第二节点的区块链的最高区块的块高大于所述第一节点的区块链的最高区块的块高,则同步所述第二节点的区块链中高于所述第一节点的区块链的区块;
所述第一节点在所述第一节点的区块链的区块同步后,清空所述第一节点的空块缓存。
上述技术方案中,第一节点先判断本地区块链的最高区块的块高与第二节点的区块链的最高区块的块高,也即第一节点先从第二节点中同步区块链上的非空块,并在同步到非空块后,将本地空块缓存中的空块清除。先同步非空块,再同步空块,可以通过最少的同步次数实现第一节点中数据的同步。
相应的,本发明实施例还提供了一种区块处理装置,适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;
所述装置包括:
确定单元,用于在确定待生成的第i个区块为空块时,从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块索引值用于指示所述空块缓存中各空块产生的先后;i为正整数,m为正整数;
生成单元,用于生成所述第i个区块并将所述第i个区块广播至各辅共识节点,所述第i个区块中包括所述第i个区块的空块索引值和父空块哈希值,所述第i个区块的父空块哈希值是所述最新空块的哈希值;所述第i个区块的空块索引值是根据所述最新空块的空块索引值确定的;
存储单元,用于在确定所述第i个区块通过共识验证后,将所述第i个区块存储至所述空块缓存中。
可选的,所述生成单元具体用于:
获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
将所述第i个区块的块高、所述第i个区块的父区块哈希值、所述第i个区块的空块索引值和所述第i个区块的父空块哈希值打包至所述第i个区块。
可选的,所述生成单元还用于:
在所述确定单元确定所述待生成的第i个区块不是空块时,则获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
将所述第i个区块的块高、所述第i个区块的父区块哈希值打包至所述第i个区块。
可选的,所述空块缓存中包括最新空块索引值,所述最新空块索引值为所述最新空块的空块索引值;
所述确定单元具体用于:
所述主共识节点根据所述最新空块索引值,从所述空块缓存中确定所述最新空块并获取所述最新空块的空块索引值和所述最新空块的哈希值;
所述存储单元还用于:
在将所述第i个区块存储至所述空块缓存中之后,将所述最新空块索引值加1。
相应的,本发明实施例还提供了一种区块共识装置,适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块包括空块索引值和父空块哈希值;所述空块索引值用于指示所述空块缓存中各空块产生的先后;m为正整数;
所述装置包括:
接收单元,用于接收所述主共识节点广播的第i个区块;i为正整数;
确定单元,用于从所述第i个区块中确定所述第i个区块的空块索引值和所述第i个区块的父空块哈希值;以及从所述辅共识节点的空块缓存中确定第一空块的哈希值和所述第一空块的空块索引值;所述第一空块是所述辅共识节点的空块缓存中的最新空块;
存储单元,用于若确定所述第i个区块通过共识验证,则将所述第i个区块存储至所述辅共识节点的空块缓存中;所述第i个区块通过共识验证包括所述第i个区块的空块索引值与所述第一空块的空块索引值符合预设要求,且确定所述第i个区块的父空块哈希值等于所述第一空块的哈希值。
可选的,所述确定单元还用于:
从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述第i个区块通过共识验证,还包括:
所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值。
可选的,所述确定单元还用于:
从所述第i个区块中确定所述第i个区块的空块索引值为预设值,且所述第i个区块的父空块哈希值为空值;
从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
若确定所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值,则确定所述第i个区块通过所述共识验证。
相应的,本发明实施例还提供了一种区块同步装置,适用于包括多个节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述多个节点包括第一节点和第二节点,所述第一节点是所述多个节点中的任一个,所述第二节点是所述多个节点中除所述第一节点之外的任一个;m为正整数;
所述装置包括:
接收单元,用于接收所述第二节点广播的状态信息;所述状态信息包括所述第二节点的空块缓存中最新空块的空块索引值和所述第二节点的区块链的最高区块的块高;
确定单元,用于若确定所述第二节点的区块链的最高区块的块高等于所述第一节点的区块链的最高区块的块高且所述第二节点的最新空块的空块索引值大于所述第一节点的最新空块的空块索引值,则从所述第二节点的空块缓存中确定待同步空块;所述待同步空块是所述第二节点的空块缓存中空块索引值大于所述第一节点的最新空块的空块索引值的空块;
同步单元,用于将所述待同步空块同步至所述第一节点的空块缓存中。
可选的,所述同步单元具体用于:
针对任一个待同步空块,获取所述待同步空块的父空块哈希值和空块索引值;
若确定所述待同步空块的父空块哈希值等于所述第一节点的空块缓存中最新空块的哈希值,且所述待同步空块的空块索引值等于所述第一节点的最新空块的空块索引值加1,则确定同步所述待同步空块至所述第一节点的空块缓存中。
可选的,所述待同步空块中包括父区块哈希值;
所述同步单元还用于:
在确定同步所述待同步空块至所述第一节点的空块缓存中之前,还包括:
确定所述待同步空块中父区块哈希值是否等于所述第一节点的区块链上的最高区块的哈希值。
可选的,所述状态信息还包括所述第二节点的区块链的块高;
所述同步单元还用于:
在从所述第二节点的空块缓存中确定待同步空块之前,若确定所述第二节点的区块链的最高区块的块高大于所述第一节点的区块链的最高区块的块高,则同步所述第二节点的区块链中高于所述第一节点的区块链的区块;
在所述第一节点的区块链的区块同步后,清空所述第一节点的空块缓存。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块处理方法、区块共识方法、区块同步方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块处理方法、区块共识方法、区块同步方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种空块块头的结构示意图;
图2为本发明实施例提供的一种区块处理方法的流程示意图;
图3为本发明实施例提供的另一种区块处理方法的流程示意图;
图4为本发明实施例提供的一种区块共识方法的流程示意图;
图5为本发明实施例提供的另一种区块共识方法的流程示意图;
图6为本发明实施例提供的一种PBFT共识算法中空块处理、共识的流程;
图7为本发明实施例提供的一种区块同步方法的流程示意图;
图8为本发明实施例提供的一种第二节点广播状态信息的示意图;
图9为本发明实施例提供的一种第一节点接收状态信息的示意图;
图10为本发明实施例提供的一种区块处理装置的结构示意图;
图11为本发明实施例提供的一种区块共识装置的结构示意图;
图12为本发明实施例提供的一种区块同步装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了更好的解释本发明,先对本发明实施例中所涉及的名词进行解释:
区块:过程区块链的基本单元,由包含元数据的区块头和包含交易数据的区块体构成,区块头主要包括父区块的哈希。
区块链:区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希值(Hash),通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。一个区块由块头和块体组成,其中块头包括该区块的区块高度、父区块哈希(prevHash)等重要字段,而块体主要存储交易数据。
共识算法:区块链网络中的各个节点通过一种算法对一批交易进行确认,并确保所有节点对这批数据具有一致的确认结果,这种算法就是区块链的共识算法,目前常见的共识算法包括PBFT、Raft(Replication and Fault Tolerant,副本容错)、POW、POS等。
交易池:存储客户端发起的全部有效交易的队列称为交易池,进入交易池的交易必须满足以下条件:(1)与交易池内已有交易不重复;(2)与记录在区块内的交易不重复;(3)签名有效。
节点:区块链网络中的每一个参与者就是一个节点,节点参与网络组建和数据交换。在区块链网络中,一个节点是指一个具有唯一身份的参与者,该节点具有一份完整的账本拷贝,具有参与区块链网络共识和账本维护的能力。
共识节点:可参与共识出块的节点,主要功能包括:将交易池内的交易打包成区块;执行交易;运行共识算法,并将达成共识的区块写入账本。
PBFT共识算法:可以在少数节点作恶(如伪造消息)场景中达成共识,它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别,在一个由(3×f+1)个节点构成的系统中,只要有不少于(2×f+1)非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误。
空块:不包含任何交易的区块。
非空块:与空块相对应,包括交易的区块。
QPS(Query Per Second,每秒查询率):每秒请求数目,计算共识为请求数除以时间。
本发明提供一种区块处理方法、区块共识方法和区块同步方法,适用于区块链系统,该区块链系统即上述的区块链网络,该区块链系统包括区块链和空块缓存,区块链用于存储非空块,即区块链中任一区块均不是空块;空块缓存用于存储空块,且空块缓存中的空块是针对区块链中第m个区块之后生成的空块且空块缓存中的空块在区块链中增加第m+1个区块时被清空。m为正整数。
解释为,区块链系统中存在两种存储方式,一种是将非空块存储至区块链,一种是将空块存储至空块缓存。区块链系统生成空块的目的在于,防止区块链中恶意节点篡改数据,且区块链系统在生成空块后会被共识上链,本发明实施例中的空块上链指的是将空块存储至空块缓存中。为了节省节点中存储空间,空块缓存中的空块会在下一个非空块上链(存储至区块链)之后清空,即将当前的空块缓存中的所有空块删除。
举例来说,当前区块链上有100个非空块,即块高为100。此时,生成了第1个空块存储至空块缓存中,随后又生成了第2个空块、第3个空块……第10个空块存储至空块缓存中,需要说明的是,第1个空块至第10个空块期间不会生成非空块。当区块链系统中生成第101个非空块并经共识后存储至区块链上时,块高为101,且区块链系统将空块缓存中当前缓存的10个空块删除。如果区块链系统再生成空块时,则作为第1个空块再次存储至空块缓存中,随后可能还会存储第2个空块至第n个空块至空块缓存中,但都会在第102个非空块生成并经共识存储至区块链上时,再次被清空。
通过上述过程,可以在保障区块链系统中生成的所有空块和非空块都共识的前提下,将生成的所有空块清除,以降低空块在区块链系统中所占的存储空间,提升磁盘利用效率。
例如,某区块链系统1s即生成一个区块,1天有50%的时间没有交易,每个空块大小为1KB,若这些空块都存储至区块链上,则一天空块占据的磁盘空间为:3600s/h×24h×50%×1KB≈43.2MB,1年空块占据约为15.7GB磁盘空间。设平均每个交易大小为1KB,则15.7GB磁盘空间可用于存储15.7GB/1KB=15,700笔交易。
结合上述描述,为了实现空块共识,可以设置空块的块头。空块的块头中包括多个字段,可以有空块索引值、父空块哈希值、父区块哈希值(prevHash)、块高(blockNumber)、打包者(sealer),其中,空块索引值、父空块哈希值可以存储至扩展数组(extraData)中,如图1为本发明实施例提供的一种空块块头的结构。
父区块哈希:最高非空块的哈希值,即区块链上最高区块的哈希值;
区块高度:最高非空块的块高加1,即区块链上最高区块的块高加1;
打包者:产生空块的共识节点索引,相当于主共识节点的索引。考虑到节点ID(Identification,身份标识号)很长,在共识消息中包含节点ID字段会耗费部分网络带宽,本发明实施例中的区块链系统引入了节点索引。区块链系统中可以设置公共节点列表,公共节点列表中记录有各节点的节点索引,节点索引用于指示每个节点在公共节点列表中的位置。发送网络消息包时,只需要带上节点索引,其他节点即可以从公共节点列表中索引出节点ID,进而对网络消息进行验证签名。
空块索引值;基于最高非空块产生的空块索引值,用于指示空块缓存中各空块产生的先后,如:当前空块是基于第10个非空块产生的第5个空块,则当前空块的空块索引为4。
父空块哈希值:前一个空块的哈希值,可通过空块缓存获取。
空块缓存可以理解成一个空块表,有多个空块排列组成,如表1所示,为一种空块表的结构,第n个空块中记录有第n-1个空块的哈希值,第n个空块中记录有空块索引值为(n-1)。空块表中记录有当前空块缓存的最新空块索引值(latestIdx),也即最新空块的空块索引值。当区块链系统中生成第n+1个空块时,区块链系统会将最新空块索引值加1后打包至第n+1个空块的块头中,且在第n+1个空块存储至空块缓存中时,最新空块索引值更新为n。
表1
Key | Value |
number_0 | emptyBlock_0 |
number_1 | emptyBlock_1 |
… | … |
number_(n-1) | emptyBlock_(n-1) |
latestIdx | (n-1) |
进一步的,区块链系统中包括多个节点,各节点本地存储有上述区块链和空块缓存。多个节点中包括主共识节点和辅共识节点,其中,主共识节点用于打包区块和区块共识,辅共识节点用于区块共识。每轮共识过程中有且仅有一个主共识节点,且在每轮共识之后,会切换主共识节点。
图2示例性的示出了本发明实施例提供的一种区块处理方法的流程,该流程可以由区块处理装置执行,该装置可以位于区块链网络的节点中,可以是用于打包区块的主共识节点。
区块链系统定时出块,当主共识节点在出块时,可以先判断当前出块时是否有交易被打包至区块,也即判断待生成的区块是否为空块。本发明实施例中,待生成的区块为空块和非空块时,所对应的操作步骤不同,下面分情况说明。
如图2所示,为主共识节点确定待生成区块为空块时的具体流程:
步骤201,主共识节点在确定待生成的第i个区块为空块时,从空块缓存中确定最新空块的空块索引值和最新空块的哈希值;
步骤202,主共识节点生成第i个区块并将第i个区块广播至各辅共识节点;
步骤203,主共识节点在确定第i个区块通过共识验证后,将第i个区块存储至空块缓存中。
其中,i为正整数,空块缓存中存储有至少一个空块,主共识节点可以从空块缓存中确定出最新空块,也即最后一个存储至空块缓存中空块。主共识节点根据该最新空块,确定该最新空块的空块索引值和最新空块的哈希值,进一步的,根据该最新空块的空块索引值确定第i个区块的空块索引值,可以是将最新空块的空块索引值加1后确定为第i个区块的空块索引值,以及将最新空块的哈希值确定为第i个区块的父空块哈希值,并根据第i个区块的空块索引值和父空块哈希值生成第i个区块。
第i个区块中可以包括第i个区块的空块索引值和父空块哈希值,还可以包括第i个区块的块高和第i个区块的父区块哈希值,其中,第i个区块的块高可以为当前区块链上最高区块的块高加1,也可以等于当前区块链上最高区块;第i个区块的父区块哈希值可以为当前区块链上最高区块的哈希值,具体可以为最高区块的块头的哈希值。一种实现方式中,主共识节点可以从区块链上获取最高区块的块高和哈希值,将最高区块的块高加1后确定为第i个区块的块高,以及将最高区块的哈希值确定为第i个区块的父区块哈希值;将第i个区块的块高、第i个区块的父区块哈希值、第i个区块的空块索引值和第i个区块的父空块哈希值打包至第i个区块。
另一种实现方式中,可以在空块缓存中设置最新空块索引值,最新空块索引值即为最新空块的空块索引值。主共识节点可以从空块缓存中确定最新空块索引值,并根据最新空块索引值,从空块缓存中确定最新空块并获取最新空块的空块索引值和最新空块的哈希值,进而将第i个区块的块高、第i个区块的父区块哈希值、第i个区块的空块索引值和第i个区块的父空块哈希值打包至第i个区块。主共识节点在将第i个区块存储至空块缓存中之后,可以将最新空块索引值加1。
需要说明的是,上述实施例中主共识节点在生成第i个区块前,空块缓存中存储有至少一个空块,则主共识节点可以获取第i个区块的父空块哈希值。当空块缓存中未存储有空块时,相当于第i个区块为当前空块缓存中的第一个空块,则主共识节点不能获取到第i个区块的父空块哈希值,也即主共识节点将第i个区块的父空块哈希值设置为空。本发明实施例中,主共识节点可以在生成第i个区块前,直接判断当前空块缓存中是否存储有空块,也可以读取当前空块缓存中的最新空块索引值,进而确定当前空块缓存中是否存储有空块,主共识节点若读取到该最新空块索引值为预设值时,则可以确定当前空块缓存中未存储有空块,该预设值可以为-1或0或者其它值,该预设值用于指示当前空块缓存中不存在空块。进一步的,主共识节点在确定当前空块缓存中未存储有空块之后,则将第i个区块的父空块哈希值设置为空,且将第i个区块的空块索引值设置为预设值加1。
具体实现中,主共识节点可以获取最新空块索引值,若最新空块索引值为-1,则获取区块链上最高非空块的区块头,并将最高非空块的区块头哈希值确定为当前空块的父区块哈希值,以及将0确定为当前空块的空块索引值,将最高非空块的块高加1后确定为当前空块的块高;若最新空块索引值大于0,则从空块缓存中读取最新空块的区块头,并将最新空块的区块头的哈希值确定为当前空块的父空块哈希值,将最新空块索引值加1后确定为当前空块的空块索引值,以及将最高非空块的区块头哈希值确定为当前空块的父区块哈希值,将最高非空块的块高加1后确定为当前空块的块高。
如图3所示,为主共识节点确定待生成区块为非空块时的具体流程:
步骤301,主共识节点在确定待生成的第i个区块不是空块时,则获取区块链上最高区块的块高和哈希值;
步骤302,主共识节点将最高区块的块高加1后确定为第i个区块的块高,将最高区块的哈希值确定为第i个区块的父区块哈希值;
步骤303,主共识节点将第i个区块的块高、第i个区块的父区块哈希值打包至第i个区块;
步骤304,主共识节点将第i个区块广播至各辅共识节点;
步骤305,主共识节点在确定第i个区块通过共识验证后,将第i个区块存储至区块链中,并清除当前空块缓存中的空块。
此时的第i个区块即为第m+1个区块,将第i个区块存储至区块链中相当于将第m+1个区块存储至区块链中,也即空块缓存中的空块是在区块链中第m个区块之后生成,且会在第m+1个区块存储至区块链时被删除。
上述实施例中,主共识节点可以生成空块或非空块,各共识节点可以分别对空块和非空块进行共识验证。具体的如下:
各共识节点对非空块进行共识验证:非空块中包括父区块哈希值、块高、主共识节点索引,各共识节点可以根据该非空块的父区块哈希值、块高、主共识节点索引,并结合本共识节点的区块链,对该非空块进行共识验证;
各共识节点对空块进行共识验证:主共识节点生成的空块又可以分为是否为空块缓存中的第一个空块,如果不是空块缓存中的第一个空块,则该空块包括父区块哈希值、块高、空块索引值、父区块哈希值、主共识节点索引,在对空块进行共识时,各共识节点可以根据该空块中父区块哈希值、块高、空块索引值、父空块哈希值、主共识节点索引,并结合本共识节点的区块链和空块缓存,对该空块进行共识验证;如果是空块缓存中的第一个空块,则该空块包括父区块哈希值、块高、空块索引值、主共识节点索引,在对空块进行共识时,各共识节点可以根据该空块中父区块哈希值、块高、空块索引值、主共识节点索引,并结合本共识节点的区块链和空块缓存,对该空块进行共识验证。
区块链系统无论是生成空块还是非空块,都会对生成的空块或非空块进行共识验证,确保区块链系统中节点的安全性,同时将非空块存储至区块链中做永久性存储,将空块存储至空块缓存并在区块链中有新的区块上链时清除空块缓存,节省磁盘存储空间,提高磁盘利用率。也即本发明实施例,在保障区块链系统安全性的前提下,提高各节点中磁盘利用率,使得各节点可存储更多的账本数据。
基于同一发明构思,本发明还提供一种区块共识方法,该区块共识的方法同样适用于上述区块链系统,且可以是在主共识节点将第i个区块进行打包并广播后,各共识节点进行共识的流程。各共识节点可以对空块共识、非空块共识,且在空块共识时可以是对空块缓存中的第一个空块共识,也可是对空块缓存中的第一个空块之后的空块共识。此处,非空块共识即验证第i个区块的块高和父区块哈希值,具体验证过程不做赘述,但共识节点在确定第i个区块通过共识验证后,将该非空块存储至区块链上之后,可以清空本地的空块缓存中的空块。
下面具体描述共识节点对空块进行共识的具体实现方式,为方便描述将用于共识的节点叫做辅共识节点。当辅共识节点接收到第i个区块时,可以确定出第i个区块中是否存在父空块哈希值或者可以读取该第i个区块中的空块索引值,进而确定该第i个区块是否为空块缓存中的第一个空块。
当辅共识节点确定第i个区块不是第一个空块时,辅共识节点可以执行如图4示出的流程图中的各步骤。
步骤401,辅共识节点接收主共识节点广播的第i个区块;
步骤402,辅共识节点从第i个区块中确定第i个区块的空块索引值和第i个区块的父空块哈希值;
步骤403,辅共识节点从辅共识节点的空块缓存中确定第一空块的哈希值和第一空块的空块索引值;
步骤404,辅共识节点若确定第i个区块通过共识验证,则将第i个区块存储至辅共识节点的空块缓存中。
辅共识节点在接收到第i个区块后,会结合本辅共识节点的区块链和空块缓存,对该空块进行共识验证,具体的,辅共识节点确定本地的空块缓存中的最新空块为第一空块,确定第一空块的空块索引值和第一空块的哈希值,并判断第i个区块的空块索引值与第一空块的空块索引值是否符合预设要求,可以是判断第i个区块的空块索引值是否等于第一空块的空块索引值加1,以及判断第i个区块的父空块哈希值是否等于第一空块的哈希值,若两次判断都是等于,则确定第i个区块通过共识验证。
辅共识节点在对第i个区块进行共识验证时,还可以包括对第i个区块中的块高和父区块哈希值进行验证,具体的,辅共识节点从第i个区块中确定第i个区块的块高和第i个区块的父区块哈希值,以及从辅共识节点的区块链中确定最高区块的块高和最高区块的哈希值,并根据区块高度、父区块哈希对第i个区块进行共识验证,也就是说,共识验证不仅包括第i个区块的空块索引值与第一空块的空块索引值是否符合预设要求以及父空块哈希值是否等于第一空块的哈希值,还包括:第i个区块的块高是否等于最高区块的块高加1以及第i个区块的父区块哈希值是否等于最高区块的哈希值。
当辅共识节点确定第i个区块是第一个空块时,即辅共识节点确定第i个区块的空块索引值为预设值,且第i个区块的父空块哈希值为空值,则辅共识节点可以执行如图5示出的流程图中的各步骤。
步骤501,辅共识节点从第i个区块中确定第i个区块的块高和第i个区块的父区块哈希值;
步骤502,辅共识节点从辅共识节点的区块链中确定最高区块的块高和最高区块的哈希值;
步骤503,辅共识节点若确定第i个区块的块高等于最高区块的块高加1,且第i个区块的父区块哈希值等于最高区块的哈希值,则确定第i个区块通过共识验证;
步骤504,辅共识节点将第i个区块存储至辅共识节点的空块缓存中。
为了更好的解释本发明实施例,以PBFT共识算法为例具体说明。首先对PBFT共识算法所涉及到的相关概念进行解释:
(1)节点ID、节点索引
为了防止节点作恶,PBFT共识过程中每个共识节点均对其发送的消息进行签名,对收到的消息包进行验证签名,因此每个节点均维护一份公私钥对,私钥用于对发送的消息进行签名,公钥作为节点ID,用于标识和验证签名。节点ID为共识节点签名公钥和共识节点唯一标识,一般是64字节二进制串,其他节点使用消息包发送者的节点ID对消息包进行验签。
考虑到节点ID很长,在共识消息中包含该字段会耗费部分网络带宽,本发明实施例引入了节点索引,每个共识节点维护一份公共的共识节点列表,节点索引记录了每个共识节点ID在这个列表中的位置,发送网络消息包时,只需要带上节点索引,其他节点即可以从公共的共识节点列表中索引出节点的ID,进而对消息进行验证签名;节点索引用于指示每个共识节点ID在这个公共节点ID列表中的位置。
(2)PBFT共识算法中的节点类型
共识节点可以分为主共识节点(Leader/Primary节点)和副本节点(Replica节点,相当于本发明实施例中的辅共识节点),其中,主共识节点负责将交易打包成区块和区块共识,每轮共识过程中有且仅有一个主共识节点,为了防止主共识节点伪造区块,每轮PBFT共识后,均会切换主共识节点;副本节点负责区块共识,每轮共识过程中有多个副本节点,每个副本节点的处理过程类似。
主共识节点和副本节点统称为共识节点。可以根据预设的算法确定当前共识过程中的主共识节点,示例性的,设当前系统中包括N个共识节点,最新区块哈希为blockHash,则当前的主共识节点的索引为:blockHash%N。
进一步的,根据共识节点是否为恶意节点,可以将共识节点划分为拜占庭节点和非拜占庭节点,其中,拜占庭节点理解为恶意节点,不能正常参与共识,设系统节点总数为3×f+1,则当拜占庭节点超过f后,系统无法正常共识;非拜占庭节点理解为诚实节点,可正常参与共识,设系统节点总数为3×f+1,则当非拜占庭节点不小于2×f+1时,系统可正常共识。
(3)视图(view)
PBFT共识算法使用视图记录每个节点的共识状态,相同视图节点维护相同的主共识节点和副本节点的节点列表。当主共识节点出现故障,会发生视图切换,若视图切换成功(至少2×f+1个节点达到相同视图),则根据新的视图选出新的主共识节点,新的主共识节点开始出块,否则继续进行视图切换,直至全网大部分节点(大于等于2×f+1)达到一致视图。
结合上述描述,假设区块链系统中共有3×f+1个共识节点,当前区块链上的最高区块的区块高度为A,最高区块的哈希值为Hash(A),空块缓存中的最新空块索引值为B。PBFT共识算法中空块处理、空块共识的流程可以如图6所示。
步骤601,主共识节点确定待生成区块为空块;
步骤602,主共识节点确定最新空块索引值B;若B为-1,则转向步骤603;若B大于等于0,则转向步骤604;
步骤603,确定当前空块缓存中不存在空块;
获取区块链上最高区块的区块头,将待生成空块的父区块哈希设置为最高区块的哈希值;将待生成空块的块高设置为最高区块的块高加1;将待生成空块的空块索引值设置为0;
步骤604,确定当前空块缓存中存在空块;
从空块缓存中读取最新空块,并将待生成空块的父区块哈希设置为最高区块的哈希值;将待生成空块的块高设置为最高区块的块高加1;将待生成空块的空块索引值设置为B+1;将待生成空块的父空块哈希值设置为最新空块的哈希值;
步骤605,主共识节点打包空块,并将空块封装到准备包(Prepare包)内,广播给所有其他共识节点;
步骤606,辅共识节点收到主共识节点广播的准备包后,对该准备包进行第一验证,若验证通过,则转向步骤607,否则结束;
对该准备包进行第一验证包括:验证该准备包是否由主共识节点产生、是否为重复包(即是否收到重复的准备包)。
步骤607,辅共识节点获取准备包中的父区块哈希值、打包者索引、空块索引值、父空块哈希值;
步骤608,辅共识节点对该准备包进行第二验证,若验证通过,则转向步骤609,否则结束。
对该准备包进行第二验证包括:验证该准备包中的父区块哈希值是否为当前节点的区块链上最高区块的哈希值,准备包中的块高是否为当前节点的区块链上最高区块的块高加1,准备包中的打包者索引是否为当前节点已经确定的打包者索引,准备包中的空块索引值是否为当前节点空块缓存中的最新空块索引值加1,准备包中的父空块哈希值是否为当前节点空块缓存中最新空块的哈希值;此处,若该准备包中的空块为空块缓存中的第一个空块,则仅执行打包者索引、父区块哈希值、空块索引值、块高的验证。
步骤609,辅共识节点确定准备包验证通过,则计算该空块的哈希值,并对哈希值进行签名后,将哈希值和签名封装在一起,构成签名包(SignReq包),广播给所有其他共识节点;
步骤610,辅共识节点收集签名请求。
具体的,若收集到超过2×f+1个来自不同共识节点、哈希值为空块哈希值的签名包,则向所有共识节点广播提交请求(CommitReq);
步骤611,辅共识节点收集提交请求,并将空块提交至空块缓存。
具体的,若共识节点收集到超过2×f+1个来自不同共识节点、哈希值为空块哈希值的提交请求,则将空块提交至空块缓存。可以是在空块缓存中插入新表项,并更新最新空块索引值为B+1。
上述实施例中,辅共识节点对接收到的第i个区块进行共识验证,包括对第i个区块中的空块索引值、父空块哈希值、块高、父区块哈希值、打包者索引进行验证,实现第i个区块为空块时的共识验证,且在有新的非空块存储至区块链上时,会清除空块缓存中的空块,降低了空块所占存储空间,提升磁盘利用效率。
考虑区块链系统中各节点的性能不一,可能存在区块链系统中节点的区块链数据不同步或空块缓存中数据不同步的情况,如区块链系统中包括节点1和节点2,节点1中存储有10个空块,节点2中存储有5个空块,则节点1和节点2的空块缓存中数据不同步;又如,节点1中存储有10个非空块,节点2中存储有6个非空块,则节点1和节点2的区块链中数据不同步。为保障区块链系统中各节点中数据处于最新状态,则需要对区块链系统中各节点执行同步操作。
本发明实施例中,设定第一节点和第二节点,第一节点是区块链系统的多个节点中的任一个,第二节点是区块链系统的多个节点中除第一节点之外的任一个。第一节点和第二节点之间的数据同步可以如图7示出的流程,该流程中的执行主体即包括第一节点和第二节点。
步骤701,第二节点定期的广播自己节点的状态信息。
其中,状态信息中包括第二节点的空块缓存中最新空块的空块索引值和第二节点的区块链的最高区块的块高。
如图8所示,具体实现过程中,第二节点定期的广播自己节点的状态信息相当于第二节点将状态信息广播给区块链系统中的所有节点,所有节点会根据接收到的第二节点的状态信息判断是否需要从第二节点中同步数据。本发明实施例中仅以第二节点向第一节点广播状态信息为例说明。
步骤702,第一节点接收第二节点广播的状态信息;
步骤703,第一节点若确定第二节点的区块链的最高区块的块高等于第一节点的区块链的最高区块的块高且第二节点的最新空块的空块索引值大于第一节点的最新空块的空块索引值,则从第二节点的空块缓存确定待同步空块;
待同步空块指的是第二节点的空块缓存中空块索引值大于第一节点的最新空块的空块索引值的空块,举例来说,第二节点的空块缓存中存储有3个空块,空块索引值分别是1、2、3,第一节点的空块缓存中存储有1个空块,空块索引值为1,则可以确定出第一节点从第二节点中同步的待同步空块为空块索引值2的空块和空块索引值3的空块。
步骤704,第一节点将待同步空块同步至第一节点的空块缓存中。
如图9所示,具体实现过程中,第一节点会接收到多个节点广播的状态信息,也即第一节点可以同时向多个节点同步数据,本发明实施例中仅以第一节点向第二节点同步为例说明。为了避免向多个节点同步重复的数据,第一节点在同步数据时,可以根据以下步骤进行重复性验证:
具体的,第一节点针对任一个待同步空块,获取待同步空块的父空块哈希值和空块索引值,第一节点若确定待同步空块的父空块哈希值等于第一节点的空块缓存中最新空块的哈希值,且待同步空块的空块索引值等于第一节点的最新空块的空块索引值加1,则确定同步待同步空块至第一节点的空块缓存中。还可以对待同步空块的共识签名进行验证。
第一节点在进行重复性验证时,还可以验证待同步空块的父区块哈希值,也即,第一节点获取待同步空块中的父区块哈希值,确定该待同步空块中的父区块哈希值是否等于第一节点的区块链上的最高区块的哈希值,若是,则进一步确定父空块哈希值和空块索引值。
上述实施例的前提是第二节点的区块链的最高区块的块高等于第一节点的区块链的最高区块的块高,也即第一节点仅需要从第二节点中同步空块,但是还可能存在第一节点向第二节点中同步非空块的可能性。可选的,同步非空块的步骤在同步空块的步骤之前执行。第一节点若确定第二节点的区块链的最高区块的块高大于第一节点的区块链的最高区块的块高,则同步第二节点的区块链中高于第一节点的区块链的区块,且第一节点在区块同步后,清空第一节点的空块缓存。
一种可实现的方式中,第一节点接收到第二节点的状态信息,先判断第二节点的区块链的最高区块的块高是否大于第一节点的区块链的最高区块的块高,若是,则第一节点先向第二节点请求非空块,并清除空块缓存;当确定第二节点的区块链的最高区块的块高等于第一节点的区块链的最高区块的块高时,则判断第二节点的空块缓存的最新空块索引值是否大于第一节点的空块缓存的最新空块索引值,若是,则向第二节点请求空块,此时需要进行如下四个验证:
(1)待同步空块的父空块哈希值等于本地空块缓存中最新空块的哈希值;
(2)待同步空块的空块索引值等于本地空块缓存中最新空块索引值加1;
(3)待同步空块的父区块哈希值等于本地区块链中最高区块的哈希值;
(4)待同步空块的共识签名信息。
此外,第一节点若确定第二节点的区块链的最高区块的块高不大于第一节点的区块链的最高区块的块高,则不同步区块链上的区块;以及第一节点若第二节点的空块缓存的最新空块索引值不大于第一节点的空块缓存的最新空块索引值,则不同步空块缓存中的空块。
上述实施例中,考虑区块链系统中各节点的性能不一,可能存在区块链系统中节点的区块链数据不同步或空块缓存中数据不同步的情况,针对不同情况,提供节点间数据同步的实现方式,保证区块链系统中所有节点处于最新状态。且节点在同步到非空块时,会清空本地空块缓存中的空块,降低了空块所占存储空间,提升磁盘利用效率。
基于同一发明构思,图10示例性的示出了本发明实施例提供的一种区块处理装置的结构,该装置可以执行区块处理方法的流程。
该装置适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;
该装置包括:
确定单元1001,用于在确定待生成的第i个区块为空块时,从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块索引值用于指示所述空块缓存中各空块产生的先后;i为正整数,m为正整数;
生成单元1002,用于生成所述第i个区块并将所述第i个区块广播至各辅共识节点,所述第i个区块中包括所述第i个区块的空块索引值和父空块哈希值,所述第i个区块的父空块哈希值是所述最新空块的哈希值;所述第i个区块的空块索引值是根据所述最新空块的空块索引值确定的;
存储单元1003,用于在确定所述第i个区块通过共识验证后,将所述第i个区块存储至所述空块缓存中。
可选的,所述生成单元1002具体用于:
获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
将所述第i个区块的块高、所述第i个区块的父区块哈希值、所述第i个区块的空块索引值和所述第i个区块的父空块哈希值打包至所述第i个区块。
可选的,所述生成单元1002还用于:
在所述确定单元1001确定所述待生成的第i个区块不是空块时,则获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
将所述第i个区块的块高、所述第i个区块的父区块哈希值打包至所述第i个区块。
可选的,所述空块缓存中包括最新空块索引值,所述最新空块索引值为所述最新空块的空块索引值;
所述确定单元1001具体用于:
所述主共识节点根据所述最新空块索引值,从所述空块缓存中确定所述最新空块并获取所述最新空块的空块索引值和所述最新空块的哈希值;
所述存储单元1003还用于:
在将所述第i个区块存储至所述空块缓存中之后,将所述最新空块索引值加1。
基于同一发明构思,图11示例性的示出了本发明实施例提供的一种区块共识装置的结构,该装置可以执行区块共识方法的流程。
该装置适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块包括空块索引值和父空块哈希值;所述空块索引值用于指示所述空块缓存中各空块产生的先后;m为正整数;
该装置包括:
接收单元1101,用于接收所述主共识节点广播的第i个区块;i为正整数;
确定单元1102,用于从所述第i个区块中确定所述第i个区块的空块索引值和所述第i个区块的父空块哈希值;以及从所述辅共识节点的空块缓存中确定第一空块的哈希值和所述第一空块的空块索引值;所述第一空块是所述辅共识节点的空块缓存中的最新空块;
存储单元1103,用于若确定所述第i个区块通过共识验证,则将所述第i个区块存储至所述辅共识节点的空块缓存中;所述第i个区块通过共识验证包括所述第i个区块的空块索引值与所述第一空块的空块索引值符合预设要求,且确定所述第i个区块的父空块哈希值等于所述第一空块的哈希值。
可选的,所述确定单元1102还用于:
从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述第i个区块通过共识验证,还包括:
所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值。
可选的,所述确定单元1102还用于:
从所述第i个区块中确定所述第i个区块的空块索引值为预设值,且所述第i个区块的父空块哈希值为空值;
从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
若确定所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值,则确定所述第i个区块通过所述共识验证。
基于同一发明构思,图12示例性的示出了本发明实施例提供的一种区块同步装置的结构,该装置可以执行区块同步方法的流程。
该装置适用于包括多个节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述多个节点包括第一节点和第二节点,所述第一节点是所述多个节点中的任一个,所述第二节点是所述多个节点中除所述第一节点之外的任一个;m为正整数;
该装置包括:
接收单元1201,用于接收所述第二节点广播的状态信息;所述状态信息包括所述第二节点的空块缓存中最新空块的空块索引值和所述第二节点的区块链的最高区块的块高;
确定单元1202,用于若确定所述第二节点的区块链的最高区块的块高等于所述第一节点的区块链的最高区块的块高且所述第二节点的最新空块的空块索引值大于所述第一节点的最新空块的空块索引值,则从所述第二节点的空块缓存中确定待同步空块;所述待同步空块是所述第二节点的空块缓存中空块索引值大于所述第一节点的最新空块的空块索引值的空块;
同步单元1203,用于将所述待同步空块同步至所述第一节点的空块缓存中。
可选的,所述同步单元1203具体用于:
针对任一个待同步空块,获取所述待同步空块的父空块哈希值和空块索引值;
若确定所述待同步空块的父空块哈希值等于所述第一节点的空块缓存中最新空块的哈希值,且所述待同步空块的空块索引值等于所述第一节点的最新空块的空块索引值加1,则确定同步所述待同步空块至所述第一节点的空块缓存中。
可选的,所述待同步空块中包括父区块哈希值;
所述同步单元1203还用于:
在确定同步所述待同步空块至所述第一节点的空块缓存中之前,还包括:
确定所述待同步空块中父区块哈希值是否等于所述第一节点的区块链上的最高区块的哈希值。
可选的,所述状态信息还包括所述第二节点的区块链的块高;
所述同步单元1203还用于:
在从所述第二节点的空块缓存中确定待同步空块之前,若确定所述第二节点的区块链的最高区块的块高大于所述第一节点的区块链的最高区块的块高,则同步所述第二节点的区块链中高于所述第一节点的区块链的区块;
在所述第一节点的区块链的区块同步后,清空所述第一节点的空块缓存。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块处理方法、区块共识方法、区块同步方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块处理方法、区块共识方法、区块同步方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (24)
1.一种区块处理方法,其特征在于,适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;
所述方法包括:
所述主共识节点在确定待生成的第i个区块为空块时,从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块索引值用于指示所述空块缓存中各空块产生的先后;i为正整数,m为正整数;
所述主共识节点生成所述第i个区块并将所述第i个区块广播至各辅共识节点,所述第i个区块中包括所述第i个区块的空块索引值和父空块哈希值,所述第i个区块的父空块哈希值是所述最新空块的哈希值;所述第i个区块的空块索引值是根据所述最新空块的空块索引值确定的;
所述主共识节点在确定所述第i个区块通过共识验证后,将所述第i个区块存储至所述空块缓存中。
2.如权利要求1所述的方法,其特征在于,所述主共识节点生成所述第i个区块,包括:
所述主共识节点获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
所述主共识节点将所述第i个区块的块高、所述第i个区块的父区块哈希值、所述第i个区块的空块索引值和所述第i个区块的父空块哈希值打包至所述第i个区块。
3.如权利要求1所述的方法,其特征在于,还包括:
所述主共识节点在确定所述待生成的第i个区块不是空块时,则获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
所述主共识节点将所述第i个区块的块高、所述第i个区块的父区块哈希值打包至所述第i个区块。
4.如权利要求1所述的方法,其特征在于,所述空块缓存中包括最新空块索引值,所述最新空块索引值为所述最新空块的空块索引值;
所述主共识节点从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值,包括:
所述主共识节点根据所述最新空块索引值,从所述空块缓存中确定所述最新空块并获取所述最新空块的空块索引值和所述最新空块的哈希值;
所述主共识节点在将所述第i个区块存储至所述空块缓存中之后,还包括:
所述主共识节点将所述最新空块索引值加1。
5.一种区块共识方法,其特征在于,适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块包括空块索引值和父空块哈希值;所述空块索引值用于指示所述空块缓存中各空块产生的先后;m为正整数;
所述方法包括:
所述辅共识节点接收所述主共识节点广播的第i个区块;i为正整数;
所述辅共识节点从所述第i个区块中确定所述第i个区块的空块索引值和所述第i个区块的父空块哈希值;
所述辅共识节点从所述辅共识节点的空块缓存中确定第一空块的哈希值和所述第一空块的空块索引值;所述第一空块是所述辅共识节点的空块缓存中的最新空块;
所述辅共识节点若确定所述第i个区块通过共识验证,则将所述第i个区块存储至所述辅共识节点的空块缓存中;所述第i个区块通过共识验证包括所述第i个区块的空块索引值与所述第一空块的空块索引值符合预设要求,且确定所述第i个区块的父空块哈希值等于所述第一空块的哈希值。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述辅共识节点从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
所述辅共识节点从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述第i个区块通过共识验证,还包括:
所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值。
7.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述辅共识节点从所述第i个区块中确定所述第i个区块的空块索引值为预设值,且所述第i个区块的父空块哈希值为空值;
所述辅共识节点从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
所述辅共识节点从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述辅共识节点若确定所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值,则确定所述第i个区块通过所述共识验证;
所述辅共识节点将所述第i个区块存储至所述辅共识节点的空块缓存中。
8.一种区块同步方法,其特征在于,适用于包括多个节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述多个节点包括第一节点和第二节点,所述第一节点是所述多个节点中的任一个,所述第二节点是所述多个节点中除所述第一节点之外的任一个;m为正整数;
所述方法包括:
所述第一节点接收所述第二节点广播的状态信息;所述状态信息包括所述第二节点的空块缓存中最新空块的空块索引值和所述第二节点的区块链的最高区块的块高;
所述第一节点若确定所述第二节点的区块链的最高区块的块高等于所述第一节点的区块链的最高区块的块高且所述第二节点的最新空块的空块索引值大于所述第一节点的最新空块的空块索引值,则从所述第二节点的空块缓存中确定待同步空块;所述待同步空块是所述第二节点的空块缓存中空块索引值大于所述第一节点的最新空块的空块索引值的空块;
所述第一节点将所述待同步空块同步至所述第一节点的空块缓存中。
9.如权利要求8所述的方法,其特征在于,所述第一节点将所述待同步空块同步至所述第一节点的空块缓存中,包括:
所述第一节点针对任一个待同步空块,获取所述待同步空块的父空块哈希值和空块索引值;
所述第一节点若确定所述待同步空块的父空块哈希值等于所述第一节点的空块缓存中最新空块的哈希值,且所述待同步空块的空块索引值等于所述第一节点的最新空块的空块索引值加1,则确定同步所述待同步空块至所述第一节点的空块缓存中。
10.如权利要求9所述的方法,其特征在于,所述待同步空块中包括父区块哈希值;
所述第一节点确定同步所述待同步空块至所述第一节点的空块缓存中之前,还包括:
所述第一节点确定所述待同步空块中父区块哈希值是否等于所述第一节点的区块链上的最高区块的哈希值。
11.如权利要求8所述的方法,其特征在于,所述状态信息还包括所述第二节点的区块链的块高;
所述第一节点在从所述第二节点的空块缓存确定待同步空块之前,还包括:
所述第一节点若确定所述第二节点的区块链的最高区块的块高大于所述第一节点的区块链的最高区块的块高,则同步所述第二节点的区块链中高于所述第一节点的区块链的区块;
所述第一节点在所述第一节点的区块链的区块同步后,清空所述第一节点的空块缓存。
12.一种区块处理装置,其特征在于,适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;
所述装置包括:
确定单元,用于在确定待生成的第i个区块为空块时,从所述空块缓存中确定最新空块的空块索引值和所述最新空块的哈希值;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块索引值用于指示所述空块缓存中各空块产生的先后;i为正整数,m为正整数;
生成单元,用于生成所述第i个区块并将所述第i个区块广播至各辅共识节点,所述第i个区块中包括所述第i个区块的空块索引值和父空块哈希值,所述第i个区块的父空块哈希值是所述最新空块的哈希值;所述第i个区块的空块索引值是根据所述最新空块的空块索引值确定的;
存储单元,用于在确定所述第i个区块通过共识验证后,将所述第i个区块存储至所述空块缓存中。
13.如权利要求12所述的装置,其特征在于,所述生成单元具体用于:
获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
将所述第i个区块的块高、所述第i个区块的父区块哈希值、所述第i个区块的空块索引值和所述第i个区块的父空块哈希值打包至所述第i个区块。
14.如权利要求12所述的装置,其特征在于,所述生成单元还用于:
在所述确定单元确定所述待生成的第i个区块不是空块时,则获取所述区块链上最高区块的块高和哈希值;将所述最高区块的块高加1后确定为所述第i个区块的块高,将所述最高区块的哈希值确定为所述第i个区块的父区块哈希值;
将所述第i个区块的块高、所述第i个区块的父区块哈希值打包至所述第i个区块。
15.如权利要求12所述的装置,其特征在于,所述空块缓存中包括最新空块索引值,所述最新空块索引值为所述最新空块的空块索引值;
所述确定单元具体用于:
所述主共识节点根据所述最新空块索引值,从所述空块缓存中确定所述最新空块并获取所述最新空块的空块索引值和所述最新空块的哈希值;
所述存储单元还用于:
在将所述第i个区块存储至所述空块缓存中之后,将所述最新空块索引值加1。
16.一种区块共识装置,其特征在于,适用于包括主共识节点和辅共识节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述空块包括空块索引值和父空块哈希值;所述空块索引值用于指示所述空块缓存中各空块产生的先后;m为正整数;
所述装置包括:
接收单元,用于接收所述主共识节点广播的第i个区块;i为正整数;
确定单元,用于从所述第i个区块中确定所述第i个区块的空块索引值和所述第i个区块的父空块哈希值;以及从所述辅共识节点的空块缓存中确定第一空块的哈希值和所述第一空块的空块索引值;所述第一空块是所述辅共识节点的空块缓存中的最新空块;
存储单元,用于若确定所述第i个区块通过共识验证,则将所述第i个区块存储至所述辅共识节点的空块缓存中;所述第i个区块通过共识验证包括所述第i个区块的空块索引值与所述第一空块的空块索引值符合预设要求,且确定所述第i个区块的父空块哈希值等于所述第一空块的哈希值。
17.如权利要求16所述的装置,其特征在于,所述确定单元还用于:
从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
所述第i个区块通过共识验证,还包括:
所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值。
18.如权利要求16所述的装置,其特征在于,所述确定单元还用于:
从所述第i个区块中确定所述第i个区块的空块索引值为预设值,且所述第i个区块的父空块哈希值为空值;
从所述第i个区块中确定所述第i个区块的块高和所述第i个区块的父区块哈希值;
从所述辅共识节点的区块链中确定最高区块的块高和所述最高区块的哈希值;
若确定所述第i个区块的块高等于所述最高区块的块高加1,且所述第i个区块的父区块哈希值等于所述最高区块的哈希值,则确定所述第i个区块通过所述共识验证。
19.一种区块同步装置,其特征在于,适用于包括多个节点的区块链系统;所述区块链系统包括区块链和空块缓存;所述区块链中任一区块均不是空块;所述空块缓存用于存储空块;所述空块缓存中的空块是针对所述区块链中第m个区块之后生成的空块且所述空块缓存中的空块在所述区块链中增加第m+1个区块时被清空;所述多个节点包括第一节点和第二节点,所述第一节点是所述多个节点中的任一个,所述第二节点是所述多个节点中除所述第一节点之外的任一个;m为正整数;
所述装置包括:
接收单元,用于接收所述第二节点广播的状态信息;所述状态信息包括所述第二节点的空块缓存中最新空块的空块索引值和所述第二节点的区块链的最高区块的块高;
确定单元,用于若确定所述第二节点的区块链的最高区块的块高等于所述第一节点的区块链的最高区块的块高且所述第二节点的最新空块的空块索引值大于所述第一节点的最新空块的空块索引值,则从所述第二节点的空块缓存中确定待同步空块;所述待同步空块是所述第二节点的空块缓存中空块索引值大于所述第一节点的最新空块的空块索引值的空块;
同步单元,用于将所述待同步空块同步至所述第一节点的空块缓存中。
20.如权利要求19所述的装置,其特征在于,所述同步单元具体用于:
针对任一个待同步空块,获取所述待同步空块的父空块哈希值和空块索引值;
若确定所述待同步空块的父空块哈希值等于所述第一节点的空块缓存中最新空块的哈希值,且所述待同步空块的空块索引值等于所述第一节点的最新空块的空块索引值加1,则确定同步所述待同步空块至所述第一节点的空块缓存中。
21.如权利要求20所述的装置,其特征在于,所述待同步空块中包括父区块哈希值;
所述同步单元还用于:
在确定同步所述待同步空块至所述第一节点的空块缓存中之前,还包括:
确定所述待同步空块中父区块哈希值是否等于所述第一节点的区块链上的最高区块的哈希值。
22.如权利要求19所述的装置,其特征在于,所述状态信息还包括所述第二节点的区块链的块高;
所述同步单元还用于:
在从所述第二节点的空块缓存中确定待同步空块之前,若确定所述第二节点的区块链的最高区块的块高大于所述第一节点的区块链的最高区块的块高,则同步所述第二节点的区块链中高于所述第一节点的区块链的区块;
在所述第一节点的区块链的区块同步后,清空所述第一节点的空块缓存。
23.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至11任一项所述的方法。
24.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至11任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910741064.XA CN110493148B (zh) | 2019-08-12 | 2019-08-12 | 一种区块处理、区块共识和区块同步方法及装置 |
PCT/CN2020/104618 WO2021027529A1 (zh) | 2019-08-12 | 2020-07-24 | 一种区块处理、区块共识和区块同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910741064.XA CN110493148B (zh) | 2019-08-12 | 2019-08-12 | 一种区块处理、区块共识和区块同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110493148A true CN110493148A (zh) | 2019-11-22 |
CN110493148B CN110493148B (zh) | 2022-04-01 |
Family
ID=68550558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910741064.XA Active CN110493148B (zh) | 2019-08-12 | 2019-08-12 | 一种区块处理、区块共识和区块同步方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110493148B (zh) |
WO (1) | WO2021027529A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110889729A (zh) * | 2019-11-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的数据验证方法和装置 |
CN111159289A (zh) * | 2019-12-17 | 2020-05-15 | 深圳前海微众银行股份有限公司 | 一种区块同步的方法及装置 |
CN111277645A (zh) * | 2020-01-16 | 2020-06-12 | 深圳市网心科技有限公司 | 主备节点热切换方法、区块链系统、区块链节点及介质 |
CN111507840A (zh) * | 2020-04-15 | 2020-08-07 | 财付通支付科技有限公司 | 区块链共识方法、装置、计算机以及可读存储介质 |
CN111667371A (zh) * | 2020-06-30 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 基于区块链的资源聚合方法、系统、设备及存储介质 |
WO2021027529A1 (zh) * | 2019-08-12 | 2021-02-18 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
CN112417038A (zh) * | 2020-11-10 | 2021-02-26 | 深圳百纳维科技有限公司 | 一种基于海洋运输的异步区块构造方法、装置及存储介质 |
WO2022121612A1 (zh) * | 2020-12-08 | 2022-06-16 | 腾讯科技(深圳)有限公司 | 区块链网络的信息处理方法、装置、设备及存储介质 |
WO2022152114A1 (zh) * | 2021-01-18 | 2022-07-21 | 腾讯科技(深圳)有限公司 | 基于节点内存的数据处理方法、装置、设备以及介质 |
WO2023109040A1 (zh) * | 2021-12-15 | 2023-06-22 | 达闼科技(北京)有限公司 | 联盟链出块方法、装置、电子设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022182303A1 (en) * | 2021-02-26 | 2022-09-01 | Cloudpeer Global Teknoloji A. S. | A block chain system |
CN113037852B (zh) * | 2021-03-22 | 2022-08-09 | 中国人民银行数字货币研究所 | 一种区块链节点同步方法和装置 |
CN115277733B (zh) * | 2022-07-29 | 2024-02-20 | 北京智融云河科技有限公司 | 一种区块头同步方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107807951A (zh) * | 2017-09-18 | 2018-03-16 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
WO2018207064A1 (en) * | 2017-05-08 | 2018-11-15 | nChain Holdings Limited | Systems and Methods For Parallel Verification of Blockchain Transactions |
CN109213828A (zh) * | 2018-09-18 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | 区块生成方法、装置、设备及存储介质 |
CN109255057A (zh) * | 2018-09-18 | 2019-01-22 | 百度在线网络技术(北京)有限公司 | 区块生成方法、装置、设备及存储介质 |
CN109447810A (zh) * | 2018-11-29 | 2019-03-08 | 杭州秘猿科技有限公司 | 并行区块链共识方法、系统、电子设备和计算机可读存储介质 |
US20190081793A1 (en) * | 2017-09-12 | 2019-03-14 | Kadena, LLC | Parallel-chain architecture for blockchain systems |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897353B (zh) * | 2016-12-29 | 2020-11-10 | 北京瑞卓喜投科技发展有限公司 | 中心型多维拓展的区块链的生成方法及系统 |
CN109885258B (zh) * | 2019-02-01 | 2023-02-21 | 立旃(上海)科技有限公司 | 基于区块链的数据删除装置及方法 |
CN110493148B (zh) * | 2019-08-12 | 2022-04-01 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
-
2019
- 2019-08-12 CN CN201910741064.XA patent/CN110493148B/zh active Active
-
2020
- 2020-07-24 WO PCT/CN2020/104618 patent/WO2021027529A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018207064A1 (en) * | 2017-05-08 | 2018-11-15 | nChain Holdings Limited | Systems and Methods For Parallel Verification of Blockchain Transactions |
US20190081793A1 (en) * | 2017-09-12 | 2019-03-14 | Kadena, LLC | Parallel-chain architecture for blockchain systems |
CN107807951A (zh) * | 2017-09-18 | 2018-03-16 | 联动优势科技有限公司 | 一种区块链生成方法、数据验证方法、节点及系统 |
CN109213828A (zh) * | 2018-09-18 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | 区块生成方法、装置、设备及存储介质 |
CN109255057A (zh) * | 2018-09-18 | 2019-01-22 | 百度在线网络技术(北京)有限公司 | 区块生成方法、装置、设备及存储介质 |
CN109447810A (zh) * | 2018-11-29 | 2019-03-08 | 杭州秘猿科技有限公司 | 并行区块链共识方法、系统、电子设备和计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
ZIHUAN XU 等: ""CUB, a Consensus Unit-Based Storage Scheme for Blockchain System"", 《2018 IEEE 34TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING (ICDE)》 * |
韩璇 等: ""区块链安全问题:研究现状与展望"", 《自动化学报》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021027529A1 (zh) * | 2019-08-12 | 2021-02-18 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
CN110889729A (zh) * | 2019-11-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的数据验证方法和装置 |
CN110889729B (zh) * | 2019-11-29 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的数据验证方法和装置 |
CN111159289B (zh) * | 2019-12-17 | 2024-03-01 | 深圳前海微众银行股份有限公司 | 一种区块同步的方法及装置 |
CN111159289A (zh) * | 2019-12-17 | 2020-05-15 | 深圳前海微众银行股份有限公司 | 一种区块同步的方法及装置 |
CN111277645A (zh) * | 2020-01-16 | 2020-06-12 | 深圳市网心科技有限公司 | 主备节点热切换方法、区块链系统、区块链节点及介质 |
CN111277645B (zh) * | 2020-01-16 | 2023-02-10 | 深圳市迅雷网络技术有限公司 | 主备节点热切换方法、区块链系统、区块链节点及介质 |
CN111507840A (zh) * | 2020-04-15 | 2020-08-07 | 财付通支付科技有限公司 | 区块链共识方法、装置、计算机以及可读存储介质 |
CN111507840B (zh) * | 2020-04-15 | 2024-03-26 | 财付通支付科技有限公司 | 区块链共识方法、装置、计算机以及可读存储介质 |
CN111667371A (zh) * | 2020-06-30 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 基于区块链的资源聚合方法、系统、设备及存储介质 |
CN111667371B (zh) * | 2020-06-30 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 基于区块链的资源聚合方法、系统、设备及存储介质 |
CN112417038A (zh) * | 2020-11-10 | 2021-02-26 | 深圳百纳维科技有限公司 | 一种基于海洋运输的异步区块构造方法、装置及存储介质 |
WO2022121612A1 (zh) * | 2020-12-08 | 2022-06-16 | 腾讯科技(深圳)有限公司 | 区块链网络的信息处理方法、装置、设备及存储介质 |
US11899652B2 (en) | 2020-12-08 | 2024-02-13 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for processing information of blockchain network, device and storage medium |
WO2022152114A1 (zh) * | 2021-01-18 | 2022-07-21 | 腾讯科技(深圳)有限公司 | 基于节点内存的数据处理方法、装置、设备以及介质 |
WO2023109040A1 (zh) * | 2021-12-15 | 2023-06-22 | 达闼科技(北京)有限公司 | 联盟链出块方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110493148B (zh) | 2022-04-01 |
WO2021027529A1 (zh) | 2021-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110493148A (zh) | 一种区块处理、区块共识和区块同步方法及装置 | |
CN107169865B (zh) | 基于区块链技术的资产数据处理系统 | |
CN110868440B (zh) | 区块链公链 | |
CN109150972B (zh) | 一种双层分片的高效区块链的共识机制的工作方法 | |
Zhang et al. | A storage optimization scheme for blockchain transaction databases. | |
CN108648084B (zh) | 一种区块链网络的数据处理方法、装置、设备及存储介质 | |
CN110321074B (zh) | 基于区块链和分布式存储系统的安全存储证明的共识方法 | |
US20230109969A1 (en) | Data processing method and apparatus based on node internal memory, device and medium | |
CN109508968A (zh) | 区块链系统以及其控制方法 | |
CN109447603B (zh) | 一种基于区块链的海洋数据资源共享方法 | |
CN107526775A (zh) | 一种区块链数据归档的方法 | |
US11522673B2 (en) | Method and device for blockchain full sharding based on a P2P storage network and a multi-layer architecture | |
CN110245956A (zh) | 一种基于异步多链的区块链交易确认方法及系统 | |
KR102337760B1 (ko) | 심층강화학습 기반 적응적 샤드 블록체인 네트워크 관리 장치 및 방법 | |
CN111047445B (zh) | 一种完全去中心化的侧链跨链方法 | |
KR102217987B1 (ko) | 블록체인 관리시스템 | |
CN111163148B (zh) | 一种区块链系统的共识状态的同步方法及相关设备 | |
CN109872156A (zh) | 一种联盟链共识系统及方法 | |
CN111046109A (zh) | 一种跨链任务处理方法、装置、设备及可读存储介质 | |
Lee et al. | Poster: A proof-of-stake (PoS) blockchain protocol using fair and dynamic sharding management | |
US20230017790A1 (en) | Graphic-blockchain-orientated hybrid consensus implementation apparatus and implementation method thereof | |
CN114726517A (zh) | 一种区块链上产生随机数种子的方法、系统和共识节点 | |
CN109242676A (zh) | 区块发布方法及装置、电子设备 | |
Xi et al. | A comprehensive survey on sharding in blockchains | |
CN111861459A (zh) | 一种基于DPoS共识算法的Iota账本优化系统及方法 |
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 |