CN114936253A - 区块链的共识方法及装置、电子设备、存储介质 - Google Patents
区块链的共识方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN114936253A CN114936253A CN202210281603.8A CN202210281603A CN114936253A CN 114936253 A CN114936253 A CN 114936253A CN 202210281603 A CN202210281603 A CN 202210281603A CN 114936253 A CN114936253 A CN 114936253A
- Authority
- CN
- China
- Prior art keywords
- block
- new
- blocks
- consensus
- tertiary
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种区块链的共识方法及装置、电子设备、存储介质,该方法包括:当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;根据所述叔区块的信息,生成第二区块高度的新区块;在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。该方案无需人工干预分叉问题,当出现分叉区块时,共识仍可继续进行,增加联盟链对作恶节点的容错能力。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种区块链的共识方法及装置、电子设备、计算机可读存储介质。
背景技术
联盟链中主要采用PBFT(实用拜占庭容错算法)或在PBFT基础上优化的BFT(拜占庭容错算法)共识算法,实现方式也不相同。其中 FISCO-BCOS联盟链直接采用PBFT算法。
在PBFT理论中,假设网络中一共有3f+1个节点,拜占庭节点不超过f个。共识的可用性由viewChange(视图切换)协议保障,此可用性的前提条件是拜占庭节点不超过f个。如果拜占庭节点超过f,将不在此算法的讨论范围。
如果作恶节点超过f个,恶意节点成为出块节点时同时打包两个合法区块广播,区块链系统仍然会产生分叉,产生分叉后下一个共识高度的出块节点无法判断应该以哪个区块为父区块进行打包新区块。这时只能通过人为干预解决分叉问题,系统才能继续运行。
发明内容
本申请实施例提供了一种区块链的共识方法,无需人工干预分叉问题,共识仍可继续进行,增加联盟链对作恶节点的容错能力。
本申请实施例提供了一种区块链的共识方法,包括:
当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;
根据所述叔区块的信息,生成第二区块高度的新区块;
在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。
在一实施例中,在所述当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块之前,所述方法还包括:
若所述第一区块高度存在至少两个区块的投票数量超过节点总数的三分之二,将所述至少两个区块同时上链存储,得到至少两个分叉区块。
在一实施例中,所述根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块,包括:
根据每个分叉区块的随机数,选取随机数最小的分叉区块作为所述父区块,剩余的分叉区块作为所述叔区块。
在一实施例中,所述新区块包括随机数字段和叔块引用字段。
在一实施例中,所述根据所述叔区块的信息,生成第二区块高度的新区块,包括:
根据所述叔区块的个数和每个叔区块的哈希值,得到所述叔块引用字段的参数值;
生成一个随机数赋值所述随机数字段,并将生成的随机数与所述参数值加入打包的第二区块高度的新区块中。
在一实施例中,所述验证所述新区块的正确性,包括:
校验所述新区块中包含的叔区块的信息与所述共识节点本地区块链的叔区块的信息是否相同。
在一实施例中,所述验证所述新区块的正确性,还包括:
校验所述新区块指向的父区块的正确性和校验所述新区块包含的交易数据的正确性。
在一实施例中,所述校验所述新区块指向的父区块的正确性和校验所述新区块包含的交易数据的正确性,包括:
校验所述新区块的区块头中包含的哈希值与所述父区块的哈希值是否相同;
校验所述新区块的区块头中包含的根哈希值与所述新区块的区块体中包含的交易信息的默克尔树根值是否相同。
在一实施例中,若验证通过,进入所述新区块的共识投票流程,包括:
若验证通过,所述共识节点在区块链网络中广播对所述新区块的投票信息;
若所述新区块的投票数量超过节点总数的三分之二,进行所述新区块的上链存储。
在一实施例中,所述方法还包括:
若验证不通过,所述共识节点发起视图更换请求,选举新的出块节点。
本申请实施例还提供了一种区块链的共识装置,包括:
区块选取模块,用于当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;
新区块生成模块,用于根据所述叔区块的信息,生成第二区块高度的新区块;
区块共识模,用于在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。
本申请实施例还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述区块链的共识方法。
本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述区块链的共识方法。
本申请实施例提供的方案,当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;根据叔区块的信息,生成第二区块高度的新区块;在区块链网络中广播所述新区块,使区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入新区块的共识投票流程。该方案无需人工干预分叉问题,在出现分叉区块时,共识仍可继续进行,增加联盟链对作恶节点的容错能力。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的PBFT算法的基本流程的示意图;
图2是本申请实施例提供的区块链的共识方法的应用场景示意图;
图3是本申请实施例提供的电子设备的结构示意图;
图4是本申请实施例提供的区块链的共识方法的流程示意图;
图5为本申请一实施例示出的一种区块链的共识装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
PBFT算法介绍:PBFT算法基于拜占庭故障模型,能够在存在故障节点的情况下正常节点间正常共识。故障节点分为两种,一种是宕机节点,节点不会发出任何响应消息。第二种是恶意节点,会产生不正确的行为,例如恶意的投票。故障节点的行为可以是任意的,包括节点失败、延迟通信、联合恶意节点共同协商、发送错误信息等。网络中的节点使用加密技术来彼此验证身份和消息。所有节点都保存有其他节点的公钥,通过公钥去验证其他节点的消息签名。网络中没有攻击者可以伪造签名。
PBFT算法能够容忍f=(n-1)/3的拜占庭节点,n表示网络节点总数,f表示容忍拜占庭节点的最大数量。具体的说,网络中的拜占庭节点在不超过(n-1)/3的情况下,算法提供网络共识的安全性和可用性。安全性是指无论恶意的节点产生什么样的行为,哪怕是联合产生恶意行为,统一发送错误消息,也不会影响网络其他正常节点的共识。网络是同步网络还是异步网络不影响算法的安全性。但是算法的可用性依赖于弱同步网络,如果是异步网络,节点间的通信无限延迟,将会影响网络共识的进程。只要正确节点的通信延迟时间t不是无限大,共识进程就不会停止,算法保持可用性。
PBFT的共识是客户端服务器架构,大致过程是客户端向服务器网络发送请求,服务器网络对请求在网络内进行广播,达成共识后执行请求,在将执行结果反馈给客户端。客户端收到f+1个服务器的执行完成后可以确认请求被执行,因为网络最多有f个故障服务器,有一个正常节点执行请求说明网络对请求达成共识。
PBFT算法的基本流程如图1所示。算法的核心三个阶段分别是 pre-prepare阶段(预准备阶段)、prepare阶段(准备阶段)、commit阶段 (提交阶段)。
客户端向主节点发起请求,主节点收到客户端请求,会向其它节点(不包括主节点)发送pre-prepare消息,其它节点就收到了pre-prepare消息,就开始了这个核心三阶段共识过程了。pre-prepare阶段:其他节点收到 pre-prepare消息后,会有两种选择,接受和不接受;Prepare阶段:节点同意请求后会向其它节点发送prepare消息(签名包)。在一定时间范围内,如果收到至少2f+1个不同节点的prepare消息,就代表prepare阶段已经完成。于是进入commit阶段,向其他节点广播commit消息;当收到至少 2f+1个commit消息后(包括自己),代表大多数节点已经进入commit阶段,这一阶段已经达成共识,于是节点就会执行请求,写入数据。
在FISCO(联盟链)的PBFT工程实现中,考虑了超过f个节点宕机的解决方案;因为现实中并不能保证拜占庭节点数量不超过f个,可能会有超过f个节点断电宕机或者网络消息传输故障,这时区块链系统在某个区块高度上失去可用性,不能基于此区块高度继续进行区块的共识和存储。只能通过人工干涉等待所有拜占庭节点恢复正常在重启区块链系统,但此时区块链可能会产生分叉。具体可能产生分叉的情况如下:
假设有4个节点abcd对高度为h的区块M进行共识,在abcd节点刚刚完成prepare阶段进入commit阶段并发出commit消息后,此时节点bcd 宕机,没能收到其他节点的commit消息,因此不会对区块M进行上链。而节点a会收到足够的commit消息,让区块M上链,并开始高度为h+1 的共识,由于节点bcd宕机,a在高度h+1的共识不会成功。当节点bcd恢复正常工作,如果此时bcd认为当前共识高度h的主节点为a,a广播高度为h的区块N,则节点bcd会对区块N达成共识,同时又会同步a的高度为h的区块M,因此区块链在高度h产生分叉区块M和N。
FISCO针对这种情况的解决方案是当节点在prepare阶段收到对区块X 足够的prepare投票后进入commit阶段前,先将区块X持久化存储,当节点宕机后再重启时先从数据库中取出区块X,继续对区块X进行共识,从而保证了区块链不会产生分叉。
在共识阶段完成prepare阶段后对共识区块做持久化存储,是对大规模节点宕机情况下的容错方案,使得联盟链系统在超过f个节点宕机后在重启,也可以正常继续对区块共识。本质上是对宕机节点超过f个的情况做的容错处理。
PBFT中的故障节点有两种类型,一种是宕机类型,不会发送任何消息和回应。另一种是作恶节点,会发送不正确的信息给正确节点。现有技术方案只考虑了宕机类型节点超过f个的容错情况,没有考虑作恶节点超过f 个节点的容错情况。
如果作恶节点超过f个,恶意节点成为共识leader时同时打包两个合法区块广播,区块链系统仍然会产生分叉,产生分叉后下一个共识高度的 leader无法判断应该以哪个区块为父区块进行打包新区块。这时只能通过人为干预解决分叉问题,系统才能继续运行。
故本申请实施例旨在,当系统中的作恶节点超过f个,区块链产生分叉后,不需要人为干预,共识仍然可以继续进行。从而增加了联盟链系统对作恶节点的容错能力。
在联盟链的业务场景中,联盟链主要充当了账本记录的不可篡改特性。由于采用PBFT类算法的区块链在容错范围内不会产生分叉,目前的大部分联盟链定义没有产生分叉的区块链才是有效的,因为不分叉的区块链保证了数据的不可篡改性,但运用PBFT共识的区块链系统每个区块都会存有节点对区块的共识签名集合,从而保证了区块中的交易是合法有效的。并且 PBFT共识的本质是保证所有节点的状态机一致,因此即使联盟链产生了分叉,只要所有节点的状态机一致,并且分叉区块中的交易都是有效的,从联盟链的业务角度并不影响账本记录的正确性和不可篡改性。
以太坊中引入“叔块”的引用规则,使得产生分叉的孤块也变得有效。故本申请实施例根据以太坊叔块的概念和引用规则,首先重新定义联盟链产生分叉区块后的分叉部分仍然是有效的,其次提供了区块链分叉后共识的处理方法,使得联盟链在产生分叉后仍然可以继续进行共识流程,从而间接的增加了联盟链的容错能力。下面对区块链分叉后共识的处理方法展开详细描述。
图2是本申请实施例提供的区块链的共识方法的应用场景示意图。如图 2所示,该应用场景包括多个节点110,多个节点110互相连接,构成区块链网络。节点110可以是台式电脑、笔记本电脑、服务器等智能终端。该区块链网络可以是联盟链。多个节点110中可能存在一些作恶节点(黑圈表示)。以图2为例,一共7个节点,则最大的容错节点数量是2个,当存在3个作恶节点,4个正确节点时,假设2个正确节点对区块a投票,另外 2个正确节点对区块b投票,3个作恶节点同时对区块a和区块b投票,则区块a和区块b都会有足够的票数同时上链,由此产生分叉。目前需要人工干预解决分叉,区块链系统才能正常运行。本申请实施例提供的方法可以由多个节点110中的出块节点(又可以称为领导节点、主节点)执行,当区块链在第一区块高度h发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;根据所述叔区块的信息,生成第二区块高度h+1的新区块;在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。使得联盟链在产生分叉后仍然可以继续进行共识流程,从而间接的增加了联盟链的容错能力。
图3是本申请实施例提供的电子设备的结构示意图。该电子设备可以作为上述节点110,该电子设备200可以用于执行本申请实施例提供的区块链的共识方法。如图3所示,该电子设备200包括:一个或多个处理器202、一个或多个存储处理器可执行指令的存储器204。其中,所述处理器202被配置为执行本申请下述实施例提供的区块链的共识方法。
所述处理器202可以是包含中央处理单元(CPU)、图像处理单元(GPU) 或者具有数据处理能力和/或指令执行能力的其它形式的处理单元的设备,可以对所述电子设备200中的其它组件的数据进行处理,还可以控制所述电子设备200中的其它组件以执行期望的功能。
所述存储器204可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM) 和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器202可以运行所述程序指令,以实现下文所述的区块链的共识方法。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
在一实施例中,图3所示电子设备200还可以包括输入装置206、输出装置208以及数据采集装置210,这些组件通过总线系统212和/或其它形式的连接机构(未示出)互连。应当注意,图2所示的电子设备200的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备200也可以具有其他组件和结构。
所述输入装置206可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。所述输出装置208可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。所述数据采集装置210可以采集对象的图像,并且将所采集的图像存储在所述存储器204中以供其它组件使用。示例性地,该数据采集装置210可以为摄像头。
在一实施例中,用于实现本申请实施例的区块链的共识方法的示例电子设备100中的各器件可以集成设置,也可以分散设置,诸如将处理器202、存储器204、输入装置206和输出装置208集成设置于一体,而将数据采集装置210分离设置。
在一实施例中,用于实现本申请实施例的区块链的共识方法的示例电子设备200可以被实现为诸如计算机、服务器等智能设备。
图4是本申请实施例提供的区块链的共识方法的流程示意图。该方法可以由出块节点执行,如图4所示,该方法包括以下步骤S410-步骤S430。
步骤S410:当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块。
区块高度是指区块链网络中第几个诞生的区块序号,例如第一个区块通常也被称为创世区块,高度为0,第十个产生的区块高度为9。区块并不是一下子就全有的,例如比特币区块就是每10分钟产生一个,也就说区块的“产生”都是有着先后顺序的,这个顺序会打上标签,这个标签就是区块高度。
第一区块高度是为了与下文的第二区块高度进行区分,第二区块高度是指第一区块高度之后下一个区块的区块序号,是相对第一区块高度而言的。举例来说,第一区块高度是h,则第二区块高度是h+1。
同一区块高度如果有不止一个区块上链,则同一区块高度上链的这几个区块可以称为分叉区块。
假设一共3f+1个节点,当作恶节点小于等于f个时,共识不会产生分叉,正常进行。当作恶节点大于f小于等于2f个,并且第一区块高度h的出块节点是作恶节点,如果此时出块节点基于区块h-1同时打包2个有效区块,则区块链在高度h有可能会产生2个分叉区块上链。当作恶节点大于 2f个,那么作恶节点可以伪造完全无效的交易组成的区块,对此区块投票共识并最终落盘。故现有PBFT算法的容错节点数是f个。而本申请可以提高到2f个。
在一实施例中,若第一区块高度存在至少两个区块的投票数量超过节点总数的三分之二,将所述至少两个区块同时上链存储,得到至少两个分叉区块。
基于PBFT算法,当节点总数是3f+1个节点时,每个节点收集commit 投票的数量到达2f+1,则会将对应投票的区块上链落盘存储。故如果在第一区块高度h存在两个区块的投票数量超过节点总数的三分之二,则第一区块高度h的这两个区块都会上链存储。这两个区块都被称为交叉区块。举例来说,作恶节点作为出块节点可能产生多个区块,此时如果同时打包并广播两个有效区块a和b,若有f个正确节点对区块a签名投票,另外f 个正确节点对区块b签名投票,f+1个作恶节点同时对区块ab投票,此时区块ab收集到足够的票数同时上链产生分叉。
多个交叉区块中仅有一个交叉区块作为父区块,下一个区块高度h+1 的新区块与此父区块连接。其余的交叉区块则均称为叔区块。
每个区块包括随机数字段,在一实施例中,根据每个分叉区块的随机数,可以选取随机数最小的分叉区块作为父区块,剩余的分叉区块作为叔区块。根据需要,在每次出现分叉区块时,也可以始终选择随机数最大的分叉区块作为父区块,其余分叉区块作为叔区块,产生下一个高度的新区块。
步骤S420:根据所述叔区块的信息,生成第二区块高度的新区块。
新区块包括叔块引用字段,用于表征引用的叔区块的信息。出块节点可以将交易数据打包生成h+1区块高度的新区块,并在新区块中加入叔块引用字段。叔区块的信息可以包括叔区块的个数和哈希值。叔块引用字段的参数值,可以根据叔区块的个数和每个叔区块的哈希值生成。
由于区块链在高度h+1仍然可能产生分叉。因为此时如果出块节点是作恶节点,同时广播2个有效区块,仍然有概率两个区块同时上链,故新区块还包括随机数字段。保证作恶节点始终基于随机数最小的同一个父区块来打包并广播多个分叉区块。如果没有此限制,作恶节点可能会在多个父区块上产生多个分叉区块,区块链的分叉结构会变得不可控。
故上述步骤S420可以包括:根据所述叔区块的个数和每个叔区块的哈希值,得到所述叔块引用字段的参数值;生成一个随机数赋值随机数字段,并将生成的随机数与参数值加入打包的第二区块高度的新区块中。由此,第二区块高度h+1的新区块在现有区块信息的基础上,还引用了叔区块的信息和随机数。此处对叔块的引用规则和以太坊不同,规定如下:
(1)每一个高度为h的区块只能引用上一个高度h-1的叔块。不能引用其他高度上的叔块。
(2)高度为h的区块引用的叔块数量必须为高度h-1全部分叉区块的数量-1。
(3)每一个叔块只能被引用1次。
步骤S430:在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。
出块节点可以在区块链网络中广播新区块,即将新区块发送给除自己以外的其余节点,为进行区分,除了出块节点外的其余节点可以称为共识节点。每个共识节点接收到新区块,可以对新区块进行验证,如果与自身的区块链相匹配,则表示验证通过,新区块正确性,向所有节点(包括出块节点)广播对新区块的投票信息。同理,对于一个共识节点来说,也会接收到其他共识节点的投票信息,对于任意一个节点来说,如果接收到新区块的投票数量超过节点总数的三分之二,则该节点可以进行新区块的上链存储,直到所有节点完成对区块链高度h+1区块的共识。之后可以进入对区块链高度h+2的共识流程。
相反的,如果共识节点对新区块进行验证,与自身的区块链不匹配,验证不通过,则会发起视图更换请求,即向其他节点发送更换出块节点的消息,共识节点可以选举自己为出块节点,如果三分之二以上的节点回复确认消息,则新的出块节点选举成功。新的出块节点可以将自己打包的新区块发起共识。新区块同样可以包括随机数字段和叔块引用字段。
由于本申请打包的新区块引用了叔区块的信息,故本申请对于新区块的校验不同于现有技术。本申请除了校验新区块指向的父区块的正确性和校验所述新区块包含的交易数据的正确性,还需要校验所述新区块中包含的叔区块的信息与所述共识节点本地区块链的叔区块的信息是否相同。
在一实施例中,校验所述新区块指向的父区块的正确性和校验所述新区块包含的交易数据的正确性,具体可以包括:(1)校验所述新区块的区块头中包含的哈希值与所述父区块的哈希值是否相同,从而确保父区块是区块高度h的随机数最小的区块。(2)校验所述新区块的区块头中包含的根哈希值与所述新区块的区块体中包含的交易信息的默克尔树根值是否相同;(3)计算交易数据的信息摘要值digest-1,根据出块节点的公钥,对新区块的签名信息进行解密,得到信息摘要digest-2,比较digest-1和digest-2 是否一致;(4)验证新区块的区块头中时间戳的正确性。
在一实施例中,校验所述新区块中包含的叔区块的信息与所述共识节点本地区块链的叔区块的信息是否相同,具体可以包括校验新区块中包含的叔区块的个数和叔区块的哈希值与自身区块链上的叔区块的个数和每个叔区块的哈希值是否相同。
当上述校验结果全是相同,即新区块的父区块的信息,新区块的交易,新区块引用的叔区块的信息,区块头全部校验通过后,才认为新区块有效。
需要说明的是,尽管联盟链会产生分叉,但数据的不可篡改性不会受到影响。因为每一个区块高度h产生的多个分叉区块的hash值会被记录在下一个高度h+1的区块中的叔块引用字段,如果高度h分叉区块中的数据被篡改,和高度h+1中区块的叔块引用字段将不匹配。由于每一个区块高度全部的分叉区块都会被下一个高度的区块记录,因此可以把每个高度的多个分叉区块当作一个逻辑上的整体区块。
联盟链中的节点是许可进入,作恶节点超过f个的情况比较小,产生分叉后只能通过人为干预协商的方式解决,本本申请实施例提供的方法,可以在作恶节点大于f小于等于2f的情况下,当出现分叉区块时,联盟链仍可以继续共识,增加了联盟链系统的容错能力,联盟链有效性定义保证了联盟链记录的交易数据的不可篡改性和交易数据的正确性。
下述为本申请装置实施例,可以用于执行本申请上述区块链的共识方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请区块链的共识方法实施例。
图5为本申请一实施例示出的一种区块链的共识装置的框图。如图5 所示,该装置包括:区块选取模块510、新区块生成模块520、区块共识模 530。
区块选取模块510,用于当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;
新区块生成模块520,用于根据所述叔区块的信息,生成第二区块高度的新区块;
区块共识模530,用于在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。
上述装置中各个模块的功能和作用的实现过程具体详见上述区块链的共识方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (13)
1.一种区块链的共识方法,其特征在于,包括:
当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;
根据所述叔区块的信息,生成第二区块高度的新区块;
在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。
2.根据权利要求1所述的方法,其特征在在于,在所述当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块之前,所述方法还包括:
若所述第一区块高度存在至少两个区块的投票数量超过节点总数的三分之二,将所述至少两个区块同时上链存储,得到至少两个分叉区块。
3.根据权利要求1所述的方法,其特征在于,所述根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块,包括:
根据每个分叉区块的随机数,选取随机数最小的分叉区块作为所述父区块,剩余的分叉区块作为所述叔区块。
4.根据权利要求1所述的方法,其特征在于,所述新区块包括随机数字段和叔块引用字段。
5.根据权利要求4所述的方法,其特征在于,所述根据所述叔区块的信息,生成第二区块高度的新区块,包括:
根据所述叔区块的个数和每个叔区块的哈希值,得到所述叔块引用字段的参数值;
生成一个随机数赋值所述随机数字段,并将生成的随机数与所述参数值加入打包的第二区块高度的新区块中。
6.根据权利要求1所述的方法,其特征在在于,所述验证所述新区块的正确性,包括:
校验所述新区块中包含的叔区块的信息与所述共识节点本地区块链的叔区块的信息是否相同。
7.根据权利要求6所述的方法,其特征在在于,所述验证所述新区块的正确性,还包括:
校验所述新区块指向的父区块的正确性和校验所述新区块包含的交易数据的正确性。
8.根据权利要求7所述的方法,其特征在在于,所述校验所述新区块指向的父区块的正确性和校验所述新区块包含的交易数据的正确性,包括:
校验所述新区块的区块头中包含的哈希值与所述父区块的哈希值是否相同;
校验所述新区块的区块头中包含的根哈希值与所述新区块的区块体中包含的交易信息的默克尔树根值是否相同。
9.根据权利要求1所述的方法,其特征在在于,若验证通过,进入所述新区块的共识投票流程,包括:
若验证通过,所述共识节点在区块链网络中广播对所述新区块的投票信息;
若所述新区块的投票数量超过节点总数的三分之二,进行所述新区块的上链存储。
10.根据权利要求1所述的方法,其特征在在于,所述方法还包括:
若验证不通过,所述共识节点发起视图更换请求,选举新的出块节点。
11.一种区块链的共识装置,其特征在于,包括:
区块选取模块,用于当区块链在第一区块高度发生分叉时,根据每个分叉区块的随机数,选取一个分叉区块作为父区块,剩余的分叉区块作为叔区块;
新区块生成模块,用于根据所述叔区块的信息,生成第二区块高度的新区块;
区块共识模,用于在区块链网络中广播所述新区块,使所述区块链网络中的共识节点收到所述新区块后,验证所述新区块的正确性,若验证通过,进入所述新区块的共识投票流程。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-10任意一项所述的区块链的共识方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-10任意一项所述的区块链的共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210281603.8A CN114936253A (zh) | 2022-03-21 | 2022-03-21 | 区块链的共识方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210281603.8A CN114936253A (zh) | 2022-03-21 | 2022-03-21 | 区块链的共识方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114936253A true CN114936253A (zh) | 2022-08-23 |
Family
ID=82861471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210281603.8A Pending CN114936253A (zh) | 2022-03-21 | 2022-03-21 | 区块链的共识方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114936253A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116684426A (zh) * | 2023-08-03 | 2023-09-01 | 南方科技大学 | 一种基于拜占庭共识协议的任务处理方法 |
CN116722989A (zh) * | 2023-06-20 | 2023-09-08 | 上海蚂蚁创将信息技术有限公司 | 区块链证书管理方法及装置、电子设备及存储介质 |
-
2022
- 2022-03-21 CN CN202210281603.8A patent/CN114936253A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116722989A (zh) * | 2023-06-20 | 2023-09-08 | 上海蚂蚁创将信息技术有限公司 | 区块链证书管理方法及装置、电子设备及存储介质 |
CN116684426A (zh) * | 2023-08-03 | 2023-09-01 | 南方科技大学 | 一种基于拜占庭共识协议的任务处理方法 |
CN116684426B (zh) * | 2023-08-03 | 2024-01-09 | 南方科技大学 | 一种基于拜占庭共识协议的任务处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI743881B (zh) | 用於在區塊鏈網路中添加節點的系統和方法 | |
TWI724678B (zh) | 共識系統停機時間恢復 | |
US11128522B2 (en) | Changing a master node in a blockchain system | |
EP3281115B1 (en) | Method and system for byzantine fault-tolerance replicating of data on a plurality of servers | |
CN108805570B (zh) | 数据处理方法、装置及存储介质 | |
JP6731123B1 (ja) | 合意システムのダウンタイムの回復 | |
US11200123B2 (en) | Consensus process recovery method and related node | |
CN114936253A (zh) | 区块链的共识方法及装置、电子设备、存储介质 | |
US20220004665A1 (en) | Consensus method and data verification method, apparatus, and system of consortium blockchain | |
WO2023020242A1 (zh) | 基于区块链的数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN111241589A (zh) | 一种数据库系统、节点和方法 | |
JP2014524204A (ja) | キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
WO2021184879A1 (zh) | 在区块链共识处理时进行处理消息同步的方法及装置 | |
CN111241590A (zh) | 一种数据库系统、节点和方法 | |
US20240097919A1 (en) | Consensus trusted cluster changing method, computer device and computer-readable storage medium | |
Feng et al. | A Low Communication Complexity Double‐layer PBFT Consensus | |
CN113362145A (zh) | 基于区块链的火车票销售方法及系统 | |
Charron-Bost | Agreement problems in fault-tolerant distributed systems | |
CN111756548A (zh) | 节点共识机制优化方法、系统、设备及存储介质 | |
CN116074328B (zh) | 区块链网络中的区块传输方法、装置、设备和介质 | |
CN117056131B (zh) | 基于区块链网络的数据处理方法及相关设备 | |
US20240291680A1 (en) | Consensus method, computer-readable medium, and electronic device | |
Wan et al. | Zebra: A cluster-aware blockchain consensus algorithm | |
CN113538138A (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 |