CN113761071A - 一种共识方法、区块链系统和共识节点 - Google Patents

一种共识方法、区块链系统和共识节点 Download PDF

Info

Publication number
CN113761071A
CN113761071A CN202111178779.2A CN202111178779A CN113761071A CN 113761071 A CN113761071 A CN 113761071A CN 202111178779 A CN202111178779 A CN 202111178779A CN 113761071 A CN113761071 A CN 113761071A
Authority
CN
China
Prior art keywords
message
consensus
nodes
node
data block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111178779.2A
Other languages
English (en)
Other versions
CN113761071B (zh
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202111178779.2A priority Critical patent/CN113761071B/zh
Publication of CN113761071A publication Critical patent/CN113761071A/zh
Priority to PCT/CN2022/124074 priority patent/WO2023056967A1/zh
Application granted granted Critical
Publication of CN113761071B publication Critical patent/CN113761071B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种共识方法、区块链系统和共识节点,该共识方法包括:第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点发送第一消息至其它共识节点;接收到所述第一消息的共识节点广播第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的投票后,广播第三消息,第三消息包括收集到的签名集合;其它共识节点在收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。

Description

一种共识方法、区块链系统和共识节点
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种共识方法、区块链系统和共识节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种共识方法、区块链系统和共识节点,包括:
一种区块链系统中的共识方法,包括:
第一轮:第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点保留一份数据块,并发送第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
第二轮:共识节点广播第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;其中第一共识节点广播的数据块包括所述保留的数据块,其它共识节点广播第一轮中收到的数据块;
第三轮:所述其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的投票后,广播第三消息,第三消息包括所述收集到的签名集合;
所述其它共识节点在收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
一种区块链系统,包括共识节点,其中:
第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点保留一份数据块,并发送第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
共识节点广播第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;其中第一共识节点广播的数据块包括所述保留的数据块,其它共识节点广播第一轮中收到的数据块;
所述其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的投票后,广播第三消息,第三消息包括数据块、所述摘要值以及收集到的签名集合;
所述其它共识节点在收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
一种区块链系统中的共识节点,包括:
数据块生成单元,用于将共识提议的交易集合采用纠删码生成多个数据块,并保留一份数据块;
第一消息广播单元,用于广播第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
第二消息广播单元,用于广播第二消息至其它共识节点,第二消息中包括所述保留的数据块,并包括第一共识节点的签名;
第二消息接收单元,用于接收第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三消息广播单元,当第二消息接收单元收集到至少Quorum个来自于不同共识节点的一致的投票后广播第三消息,第三消息包括所述收集到的签名集合;
第三消息收集单元,用于收集来自于不同共识节点的第三消息;
输出单元,在第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
一种区块链系统中的共识节点,包括:
第一消息接收单元,用于接收第一共识节点广播的第一消息,第一消息中包括提议的交易集合的一个数据块和第一共识节点的签名;
第二消息广播单元,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括所述数据块、对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第二消息接收单元,用于接收第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三消息广播单元,当第二消息接收单元收集到至少Quorum个来自于不同共识节点的一致的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
第三消息收集单元,收集来自于不同共识节点的第三消息;
恢复单元,基于第二消息接收单元接收到的数据块采用所述纠删码恢复出所述交易集合;
输出单元,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
上述实施例中,在一定前提下缩短至3个轮次完成一次共识的基础上,采用纠删码对共识提议的交易生成若干个数据块,提议的共识节点不必传输较大的数据包至其它的每一共识节点,而是将数据包的不同数据块传输至不同的共识节点,从而可以降低网络传输的数据量。在第二轮中转发提议的共识节点发来的数据块,可以充分利用网络中节点之间的带宽资源,从而整体上提升共识协议的性能。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一实施例中实用拜占庭容错算法常规阶段的示意图;
图2是一实施例中实用拜占庭容错算法视图切换阶段的示意图;
图3是一实施例中蜜獾拜占庭容错算法的示意图;
图4是本说明书一实施例中共识算法的流程图;
图5是本说明书一实施例中共识算法的示意图;
图6是本说明书一实施例中共识算法的示意图;
图7是本说明书一实施例中共识算法的示意图;
图8是本说明书一实施例中共识算法的示意图;
图9是本说明书一实施例中共识算法的示意图;
图10是本说明书一实施例中共识节点的架构图;
图11是本说明书一实施例中共识节点的架构图;
图12是本说明书一实施例中纠删码的原理图;
图13是本说明书一实施例中Merkle Tree的原理图;
图14是本说明书一实施例中Merkle Tree的原理图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
区块链系统中,不同参与方通过部署的节点(Node)可以建立一个分布式的区块链网络。利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上。这样的区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,并将交易及执行结果打包生成区块。当前主流的共识机制包括:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等。
以PBFT为例,该算法是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。该论文发表在1999年的操作系统设计与实现国际会议上(OSDI99)。PBFT算法中,所有的副本(replica)在一个被称为视图(View)的轮换过程(succession of configuration)中运行。在某个视图中,一个副本作为主节点(primary),其他的副本作为备份节点(backups)。视图是连续编号的整数。主节点由公式p = v mod |R|计算得到,这里v是视图编号,p是副本编号,|R|是副本集合的个数。该算法中假设,当最多存在f个副本(即节点)失效时,如果存在总数为至少3f+1个副本,就能保证在异步系统中提供安全性和活性。为了能够确保所有副本的数据一致性要求和容错要求而需要的一定数量副本的集合,一般是分布式系统中的大多数节点构成的集合,构成大多数(Quorum)。例如在总节点数n为3f+1(n=3f+2或n=3f的情况一般不会对容错效果带来提升)的情况下,Quorum为2f+1。这样,对于包含四个节点的分布式系统,任意三个节点可以构成一个Quorum。
PBFT包括Normal Case Phase和View Change Phase两个过程,图1为Normal CasePhase(常规阶段)过程的流程图。Normal Case Phase中主要包括PRE-PREPARE(预准备)、PREPARE(准备)和COMMIT(提交)三个阶段,其中3号节点例如可以表示宕机的节点(图1中以×表示)。当主节点失效的时候(图2中以×表示,如更换视图前主节点Primary也就是Replica 0(副本0)失效)就需要启动视图更换(view change)过程,从而在系统存在故障时进行状态调整,更换新的主节点(如更换视图后Replica 1为主节点Primary)。图2为ViewChange Phase(视图切换)的示意图。如果主节点掉线或者作恶而不广播客户端的请求等,客户端可以设置超时机制。如果超时的话,客户端可以向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线后,也可以发起View Change协议阶段,以更换主节点(经常简称为“换主”)。此外,也可能由于主节点发起错误的提议导致PRE-PREPARE、PREPARE和COMMIT三阶段共识过程失败,或者,PREPARE、COMMIT阶段可能达不成 Quorum 数量(如3f+1个节点中的2f+1个,也称为法定数量)的一致,也都无法完成共识。这些情况下也可能发起View Change协议阶段,以更换主节点。
PBFT协议属于半同步(partial synchronous)协议,其特点是假设网络一开始是异步的,但是能够从某一时刻开始同步。要在网络中让不同节点对同一提议达成共识,最简便的方式是设置主节点,由主节点来统一各个节点的意见。通过设置定时器,可以防止主节点出错。PBFT中,如果在有限时间内没有完成 Normal Case Phase,会触发 Backups 发起View Change Phase,以更换主节点。PBFT将主节点固定在一个位置,所有请求都可以先发送到主节点,再由主节点广播到其他共识节点。除了引入额外的、将请求发送到主节点的延迟之外,主节点的出入口带宽也可能成为性能瓶颈。与此相对的,HoneyBadgerBFT(也常简称为HBBFT)算法属于一种异步(asynchronous)协议。异步协议适用于异步网络,也就是这个网络中节点间的消息可以被任意延迟,但最终会到达。HoneyBadgerBFT中去掉了定时器,而是通过消息来驱动协议的执行。同时,HoneyBadgerBFT算法中所有节点都是对等的,没有主节点和备份节点之分,也就没有换主的过程。HBBFT等异步网络共识协议无主节点的概念,各节点都可提议请求,尝试构造区块,因此异步网络协议在一定程度上缓解了公平性和单节点瓶颈的问题。
图3为HoneyBadgerBFT算法单节点角度的流程图。实际上,如前所述,HoneyBadgerBFT算法中所有节点都是对等的,也就是说,所有节点都可以执行图3所示的流程。如图3所示,从单节点的视角来看,HoneyBadgerBFT主要包括两个阶段,分别为可靠广播(Reliable BroadCast, RBC)和异步共识(Asynchronous Binary Agreement, ABA,异步二进制协议,也称为“01异步共识”)。RBC阶段至少包括Rval、Echo、Ready三轮消息交互,ABA阶段至少包括Bval、Aux和Coin三轮消息交互。RBC使用三轮消息交互保证可靠的提议广播。ABA首先进行两轮投票(Bval和AUX消息),然后借助抛硬币(Coin)对各节点的提议统一认识,从而绕开半同步协议对网络同步的要求。一次HoneyBadgerBFT共识,要经过RBC阶段和至少一次ABA阶段。最好的情况下,存在1/2的概率可以结束本次HoneyBadgerBFT共识过程,这样,需要经过6个轮次完成一次共识。此外,有1/4概率会进入再一次的ABA过程,如图3中第二次ABA过程(7、8、9轮次表示的ABA过程),有1/4概率会在第二轮结束,且存在至少1/4的概率可以结束本次HoneyBadgerBFT共识过程,这样,需要经过9个轮次完成一次共识。在第二次ABA过程后,整体上有1/8的概率会进入再一次的ABA过程……以此类推。
综上所述,HoneyBadgerBFT至少包括一次RBC(三轮)和一次ABA(三轮),如果ABA的投票结果与抛币结果不一致,协议进入新一轮的ABA(至少额外三轮)。抛币给共识的轮次带来不确定性,可能增加延迟。
本申请提供一种共识算法实施例,如图4所示,具体包括:
S41:【第一轮】第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点保留一份数据块,并发送第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名。
本申请一种共识算法实施例中,可以包括3轮的交互。与HBBFT类似的,图5所示实施例的共识算法,也属于一种异步协议,即假设网络中节点间的消息可以被任意延迟,但最终会到达。类似的,图5实施例中也去掉了定时器,通过消息来驱动协议的执行;同时,所有节点可以都是对等的,没有主节点和备份节点之分,任一共识节点都可以发起共识提议,每一个共识节点也都可以参与其他节点提起共识提议的共识过程。一次共识的结果,可以包括本次共识中所有节点提起且获得至少Quorum数量投票一致的共识提议中的交易集合的总和。
以一个节点的视角来看,例如以
Figure 807293DEST_PATH_IMAGE001
发起共识提议的视角来看,交互过程如图5 所示。在一次共识中,
Figure 255592DEST_PATH_IMAGE001
可以发起共识提议,这个共识提议中可以包括打包的交易集 合,例如标记为
Figure 300908DEST_PATH_IMAGE002
Figure 978009DEST_PATH_IMAGE002
中可以包括一系列的交易构成的集合{
Figure 589118DEST_PATH_IMAGE003
}。进而,
Figure 942739DEST_PATH_IMAGE001
可以将共识提议的交易集合
Figure 757243DEST_PATH_IMAGE002
采用纠删码(Erasure Coding)生成多个数据块。一般 的,采用纠删码生成的数据块的数量n可以等于共识节点的总数。例如在包括4个共识节点 的区块链系统中,
Figure 752881DEST_PATH_IMAGE001
Figure 952918DEST_PATH_IMAGE002
采用纠删码生成4个数据块(data blocks),分别是
Figure 228172DEST_PATH_IMAGE004
Figure 513660DEST_PATH_IMAGE005
Figure 781831DEST_PATH_IMAGE006
Figure 570795DEST_PATH_IMAGE007
。对于这4个生成的数据块,可以分别具有对应的hash值,例如
Figure 266219DEST_PATH_IMAGE004
对应的hash值 为
Figure 789735DEST_PATH_IMAGE008
Figure 596017DEST_PATH_IMAGE005
对应的hash值为
Figure 301805DEST_PATH_IMAGE009
Figure 184441DEST_PATH_IMAGE006
对应的hash值为
Figure 241259DEST_PATH_IMAGE010
Figure 867543DEST_PATH_IMAGE007
对应的hash值 为
Figure 896679DEST_PATH_IMAGE011
,如图12所示。纠删码是一种编码容错技术,最早用于通信行业中数据传输中的 数据恢复。通过在原始数据中加入校验数据,使拆分后的各个数据产生关联。在一定范围的 数据出错情况下,通过纠删码技术可以进行恢复。可以将数据m通过EC生成N个data blocks。在一种常用的设计中,这N个data blocks中一般包括将数据m拆分后的p个data blocks,此外还增加了用来存储erasure编码的q个data blocks。这样,能通过p+q份中的任 意p份数据,还原出原始数据m。
Figure 199485DEST_PATH_IMAGE001
还可以为生成的数据块构建Merkle Tree(默克尔树,通常也被称作Hash Tree)。如前所述,4个数据块
Figure 494331DEST_PATH_IMAGE004
Figure 907995DEST_PATH_IMAGE005
Figure 339107DEST_PATH_IMAGE006
Figure 78393DEST_PATH_IMAGE007
的hash值分别是
Figure 47486DEST_PATH_IMAGE008
Figure 749994DEST_PATH_IMAGE009
Figure 753722DEST_PATH_IMAGE010
Figure 398330DEST_PATH_IMAGE011
,两两构建hash值,可以得到
Figure 589140DEST_PATH_IMAGE012
Figure 360918DEST_PATH_IMAGE013
。其中,
Figure 687994DEST_PATH_IMAGE012
可以是通过对
Figure 237924DEST_PATH_IMAGE014
Figure 181609DEST_PATH_IMAGE015
顺序拼接后计算hash得到,
Figure 475188DEST_PATH_IMAGE013
可以是通过对
Figure 922349DEST_PATH_IMAGE016
Figure 393913DEST_PATH_IMAGE017
顺序拼接后计 算hash得到。进一步,可以将
Figure 559315DEST_PATH_IMAGE012
Figure 391005DEST_PATH_IMAGE013
顺序拼接后计算hash,从而得到
Figure 223832DEST_PATH_IMAGE018
。如图 13所示。
进而,针对每个数据块,
Figure 849985DEST_PATH_IMAGE001
可以生成对应的merkle proof(默克尔证明)。例 如,对于
Figure 518995DEST_PATH_IMAGE005
,生成的默克尔证明包括
Figure 419955DEST_PATH_IMAGE014
Figure 576130DEST_PATH_IMAGE013
Figure 904343DEST_PATH_IMAGE018
;对于
Figure 778758DEST_PATH_IMAGE006
,生成的默克尔证明 包括
Figure 217830DEST_PATH_IMAGE017
Figure 244823DEST_PATH_IMAGE012
Figure 743937DEST_PATH_IMAGE018
;对于
Figure 105648DEST_PATH_IMAGE007
,生成的默克尔证明包括
Figure 348411DEST_PATH_IMAGE016
Figure 479178DEST_PATH_IMAGE012
Figure 883614DEST_PATH_IMAGE018
。可 见,默尔克证明是一个hash值的有序集合,通过这样的有序集合,可以计算得到默尔克树的 根节点的hash值。
第一共识节点发送第一消息至其它共识节点,该其他共识节点为区块链系统中区 别于第一共识节点的剩余共识节点,发送至不同共识节点的第一消息中包括不同的所述数 据块、对应的默克尔证明。第一共识节点
Figure 748933DEST_PATH_IMAGE001
可以发送第一消息Val消息至
Figure 608436DEST_PATH_IMAGE019
,该Val 消息中可以包括数据块
Figure 859289DEST_PATH_IMAGE005
,并包括该数据块对应的默克尔证明
Figure 434627DEST_PATH_IMAGE014
Figure 302089DEST_PATH_IMAGE013
Figure 621074DEST_PATH_IMAGE018
Figure 20043DEST_PATH_IMAGE001
可以发送第一消息Val消息至
Figure 766282DEST_PATH_IMAGE020
,该Val消息中可以包括数据块
Figure 589882DEST_PATH_IMAGE006
,并包括该数 据块对应的默克尔证明
Figure 712559DEST_PATH_IMAGE017
Figure 672424DEST_PATH_IMAGE012
Figure 605877DEST_PATH_IMAGE018
Figure 244668DEST_PATH_IMAGE001
可以发送第一消息Val消息至
Figure 187348DEST_PATH_IMAGE021
,该Val消息中可以包括数据块
Figure 1720DEST_PATH_IMAGE007
,并包括该数据块对应的默克尔证明
Figure 152079DEST_PATH_IMAGE016
Figure 684691DEST_PATH_IMAGE012
Figure 165482DEST_PATH_IMAGE018
。如图5中所示。第一共识节点可以保留一份数据块,例如保留上述的数据块
Figure 834361DEST_PATH_IMAGE004
此外,
Figure 358883DEST_PATH_IMAGE001
发送至
Figure 378792DEST_PATH_IMAGE019
的Val消息中还可以包括
Figure 646962DEST_PATH_IMAGE001
的签名,例如记为
Figure 435926DEST_PATH_IMAGE022
。 一般地,
Figure 413241DEST_PATH_IMAGE001
可以用自身的私钥对消息的payload(净荷)部分签名,这里例如对包括
Figure 920446DEST_PATH_IMAGE005
及其对应的默克尔证明签名,得到
Figure 726727DEST_PATH_IMAGE022
。此外,
Figure 901357DEST_PATH_IMAGE001
也可以是先对消息的净荷(payload) 部分进行hash计算,得到hash值(即摘要值),进而再用自身的私钥对该hash值签名,从而得 到
Figure 252835DEST_PATH_IMAGE022
Figure 512915DEST_PATH_IMAGE001
发送至其它Node的Val消息与此类似,不再赘述。
Val消息的格式可以如< r,
Figure 122888DEST_PATH_IMAGE005
,
Figure 152024DEST_PATH_IMAGE005
对应的默克尔证明,
Figure 923671DEST_PATH_IMAGE022
>,其中r可以表 示第r次共识。例如这里对
Figure 421779DEST_PATH_IMAGE002
的共识提议是第r次共识,则下一个共识提议的交易集合
Figure 569864DEST_PATH_IMAGE023
可 以对应第r+1次共识。所述
Figure 187927DEST_PATH_IMAGE022
,也可以是采用自身私钥对包括r和
Figure 661634DEST_PATH_IMAGE005
及其对应的默克尔 证明在内的数据的签名。类似的,也可以是先对
Figure 365147DEST_PATH_IMAGE005
及对应的默克尔证明进行hash计算,得 到hash值,进而再用自身的私钥对该hash值和r在内的数据进行签名,从而得到
Figure 51344DEST_PATH_IMAGE022
S43:【第二轮】共识节点广播第二消息,第二消息中包括数据块,并包括交易集合 的投票和签名;所述投票包括所述交易集合
Figure 540225DEST_PATH_IMAGE002
的摘要值。
在第一轮的末尾,接收到第一消息的共识节点可以验证接收到的第一消息的正确 性。例如,
Figure 919254DEST_PATH_IMAGE019
可以采用
Figure 110064DEST_PATH_IMAGE001
的公钥对第一消息中的
Figure 599951DEST_PATH_IMAGE001
的签名进行验证。此外,第一 消息中还可以包括所述接收到的数据块对应的默克尔证明。这样,在第一轮的末尾,接收到 第一消息的共识节点还可以对接收到的第一消息中的数据块和对应的默克尔证明进行验 证。具体的,在第一轮的末尾,收到Val消息的共识节点,可以计算Val消息中共识提议的数 据块的hash值。例如,
Figure 458185DEST_PATH_IMAGE019
接收到第一共识节点
Figure 24427DEST_PATH_IMAGE001
发送的Val消息后,可以计算该Val 消息中包括的数据块
Figure 702533DEST_PATH_IMAGE005
的hash值,例如是
Figure 996111DEST_PATH_IMAGE015
。收到的Val消息,如前所述,还包括所包 含的数据块对应的merkle proof。例如,
Figure 443273DEST_PATH_IMAGE019
接收到第一共识节点
Figure 164104DEST_PATH_IMAGE001
发送的Val消息 中,还包括数据块
Figure 329506DEST_PATH_IMAGE005
对应的默克尔证明
Figure 177508DEST_PATH_IMAGE014
Figure 479176DEST_PATH_IMAGE024
Figure 370909DEST_PATH_IMAGE018
。接收到Val消息的共识节 点,可以通过Val消息中包含的默克尔证明来验证数据的正确性。例如,
Figure 289186DEST_PATH_IMAGE019
在前述计算 得到Val消息中
Figure 658988DEST_PATH_IMAGE005
的hash值
Figure 80742DEST_PATH_IMAGE015
后,进一步与该Val消息中的默克尔证明一并计算,包 括将
Figure 425267DEST_PATH_IMAGE014
Figure 565261DEST_PATH_IMAGE015
计算得到
Figure 4333DEST_PATH_IMAGE025
,再由
Figure 546172DEST_PATH_IMAGE025
Figure 796019DEST_PATH_IMAGE013
计算得到
Figure 157730DEST_PATH_IMAGE026
,从而通过比 较
Figure 869334DEST_PATH_IMAGE026
Figure 531260DEST_PATH_IMAGE018
是否一致来确定
Figure 935696DEST_PATH_IMAGE005
是否正确。这是因为,一般来说发生哈希碰撞的概率 是极低的,消息的发起方很难伪造一连串hash值,同时保持这些hash值与数据块存在对应 关系。因此,如果比较
Figure 50283DEST_PATH_IMAGE026
Figure 581890DEST_PATH_IMAGE018
是一致的,则可以进入后续处理;如果不一致,则不认 可接受到的Val消息,即不认可其中的包含的数据块。
如果通过验证,则进入S43。S43中共识节点广播第二消息,第二消息中包括数据 块。其中第一共识节点广播的数据块可以包括所述保留的数据块,其它共识节点可以广播 第一轮中收到的数据块。具体如图5中,第一共识节点广播的数据块可以包括所述保留的数 据块,例如
Figure 832742DEST_PATH_IMAGE001
广播第一轮中保留的数据块
Figure 673659DEST_PATH_IMAGE004
。其它共识节点可以广播第一轮中收到的 数据块,具体的,第二轮次的消息交互中,
Figure 9963DEST_PATH_IMAGE019
Figure 594528DEST_PATH_IMAGE020
Figure 450620DEST_PATH_IMAGE021
各自可以分别广播第二消 息至其它共识节点,例如
Figure 196859DEST_PATH_IMAGE019
广播第一轮中接收到的数据块
Figure 20458DEST_PATH_IMAGE005
Figure 143135DEST_PATH_IMAGE020
广播第一轮中接 收到的数据块
Figure 368580DEST_PATH_IMAGE006
Figure 302032DEST_PATH_IMAGE021
广播第一轮中接收到的数据块
Figure 144086DEST_PATH_IMAGE007
这个广播的第二消息可以记为Bval。
Figure 336033DEST_PATH_IMAGE019
Figure 166717DEST_PATH_IMAGE020
Figure 317076DEST_PATH_IMAGE021
可以通过广播第二消息来告诉其他共识节点自身对
Figure 380847DEST_PATH_IMAGE001
发起的共识提议的投票,投票可以是对共识提议表示认可或者不认可。如果共识节点认可 该次共识中
Figure 849919DEST_PATH_IMAGE001
提议的交易集合,可以在第2轮次的消息交互中广播该交易集合的hash 值,如上述的
Figure 49956DEST_PATH_IMAGE018
。相反的,如果共识节点不认可该次共识中
Figure 387528DEST_PATH_IMAGE001
提议的交易集合,可以 在第2轮次的消息交互中广播0。
本轮次中,
Figure 673015DEST_PATH_IMAGE001
可以不广播投票,这是因为
Figure 754235DEST_PATH_IMAGE001
在第一轮次中发起共识提议, 本身即可以代表
Figure 74358DEST_PATH_IMAGE001
对共识提议中的消息集合是认可的。当然,
Figure 35361DEST_PATH_IMAGE001
在第二轮中也可以 广播投票,例如广播该交易集合的hash值,如上述的
Figure 558877DEST_PATH_IMAGE018
共识节点广播的第二消息中还可以包括广播的数据块对应的默克尔证明。例如, 在第一轮中第一共识节点针对每个数据块生成对应的默克尔证明,并在第一消息中将所述 默克尔证明与数据块一并发送的情况,在第一轮的末尾,接收到第一消息的共识节点可以 接收到数据块及该数据块对应的默克尔证明。这样,在第二轮中,
Figure 630738DEST_PATH_IMAGE019
Figure 274209DEST_PATH_IMAGE020
Figure 406113DEST_PATH_IMAGE021
广 播的第二消息中,还可以包括该数据块对应的默克尔证明。再例如,第二轮中第一共识节点 针对广播的数据块生成对应的默克尔证明,并在第二消息中将所述默克尔证明与数据块一 并发送。此外,第二消息中还可以包括对所述交易集合的签名。前述提到,在第一轮的末尾 接收到第一消息的共识节点可以验证接收到的第一消息的正确性,例如
Figure 151347DEST_PATH_IMAGE019
验证
Figure 761319DEST_PATH_IMAGE001
的签名是否正确。
类似的,Bval消息的格式可以如< r,
Figure 790455DEST_PATH_IMAGE005
,
Figure 827681DEST_PATH_IMAGE005
对应的默克尔证明,
Figure 575058DEST_PATH_IMAGE018
,
Figure 739454DEST_PATH_IMAGE027
>,其中r可以表示第r次共识,
Figure 623096DEST_PATH_IMAGE018
Figure 565644DEST_PATH_IMAGE002
的hash值,表示对
Figure 534737DEST_PATH_IMAGE002
的投票观点是认同。则 所述
Figure 486513DEST_PATH_IMAGE027
,也可以是采用自身私钥对包括r、
Figure 975394DEST_PATH_IMAGE005
,
Figure 354423DEST_PATH_IMAGE005
对应的默克尔证明以及
Figure 545233DEST_PATH_IMAGE018
在内 的数据的签名。类似的,也可以是先对r、
Figure 300699DEST_PATH_IMAGE005
,
Figure 893355DEST_PATH_IMAGE005
对应的默克尔证明以及
Figure 459596DEST_PATH_IMAGE018
在内的数 据进行hash计算,得到hash值,进而再用自身的私钥对该hash值进行签名,从而得到
Figure 872123DEST_PATH_IMAGE027
类似的,
Figure 431280DEST_PATH_IMAGE020
收到
Figure 878442DEST_PATH_IMAGE001
发来的Val消息后,类似的,也可以验证
Figure 599274DEST_PATH_IMAGE001
的签名是 否正确,以及对接收到的数据块
Figure 30255DEST_PATH_IMAGE006
和对应的默克尔证明进行验证。如果验证正确,
Figure 878256DEST_PATH_IMAGE020
可以用自己的私钥对自身接收到的第一消息中的
Figure 445504DEST_PATH_IMAGE018
进行签名,或者采用自身私钥对包 括r、
Figure 337237DEST_PATH_IMAGE018
在内的数据签名,从而得到
Figure 724356DEST_PATH_IMAGE028
,进而也可以广播Bval消息。Bval消息中可以包 括r、
Figure 625315DEST_PATH_IMAGE006
,
Figure 63381DEST_PATH_IMAGE006
对应的默克尔证明、
Figure 126015DEST_PATH_IMAGE018
以及签名
Figure 266009DEST_PATH_IMAGE028
类似的,
Figure 439502DEST_PATH_IMAGE021
收到
Figure 997653DEST_PATH_IMAGE001
发来的Val消息后,类似的,也可以验证
Figure 231188DEST_PATH_IMAGE001
的签名是 否正确。如果验证正确,
Figure 858479DEST_PATH_IMAGE021
可以用自己的私钥对自身接收到的第一消息中的
Figure 101241DEST_PATH_IMAGE018
数据 块
Figure 763167DEST_PATH_IMAGE007
进行签名,或者采用自身私钥对包括r、
Figure 183915DEST_PATH_IMAGE018
在内的数据签名,从而得到
Figure 32922DEST_PATH_IMAGE029
,进而 也可以广播Bval消息。Bval消息中可以包括r、
Figure 79376DEST_PATH_IMAGE007
,
Figure 330229DEST_PATH_IMAGE007
对应的默克尔证明、
Figure 921878DEST_PATH_IMAGE018
以及签 名
Figure 258181DEST_PATH_IMAGE029
第二轮中,
Figure 842746DEST_PATH_IMAGE001
也可以用自己的私钥对
Figure 213685DEST_PATH_IMAGE018
进行签名,或者采用自身私钥对包 括r、
Figure 976236DEST_PATH_IMAGE004
,
Figure 65414DEST_PATH_IMAGE004
对应的默克尔证明、
Figure 188091DEST_PATH_IMAGE018
在内的数据签名,从而得到
Figure 679115DEST_PATH_IMAGE028
,进而也可以广 播Bval消息。Bval消息中可以包括r、
Figure 612568DEST_PATH_IMAGE004
,
Figure 923463DEST_PATH_IMAGE004
对应的默克尔证明、
Figure 584252DEST_PATH_IMAGE018
以及签名
Figure 195362DEST_PATH_IMAGE022
S45:【第三轮】其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的摘要值后,广播第三消息,第三消息包括所述摘要值以及收集到的签名。
第二轮执行后,接收到Bval消息的共识节点可以收集Bval消息中的数据块。
对于
Figure 299715DEST_PATH_IMAGE019
,从第二轮Bval消息中接收到
Figure 363486DEST_PATH_IMAGE001
发来的交易集合
Figure 827965DEST_PATH_IMAGE002
的一个数据块
Figure 293582DEST_PATH_IMAGE004
,从第二轮Bval消息中接收到
Figure 580555DEST_PATH_IMAGE020
发来的交易集合
Figure 866043DEST_PATH_IMAGE002
的一个数据块
Figure 399792DEST_PATH_IMAGE006
,从第三轮 的Bval消息中接收到
Figure 454336DEST_PATH_IMAGE021
发来的交易集合
Figure 900492DEST_PATH_IMAGE002
的一个数据块
Figure 938855DEST_PATH_IMAGE007
。通过第一轮的Val消息,
Figure 10716DEST_PATH_IMAGE019
还接收到
Figure 670499DEST_PATH_IMAGE001
发来的
Figure 802403DEST_PATH_IMAGE005
。根据如前所述的纠删码中的p、q的设置(一般q至少为1, 而截止到第三轮的末尾,
Figure 796904DEST_PATH_IMAGE019
至少应收到p个不同的数据块),
Figure 672456DEST_PATH_IMAGE019
有较大概率可以从
Figure 186745DEST_PATH_IMAGE004
Figure 489550DEST_PATH_IMAGE005
Figure 705768DEST_PATH_IMAGE006
Figure 119432DEST_PATH_IMAGE007
中解码出
Figure 737495DEST_PATH_IMAGE002
,从而能够恢复得到完整的
Figure 227513DEST_PATH_IMAGE001
的提议的交易集合。
类似的,对于
Figure 196606DEST_PATH_IMAGE020
,从第二轮Bval消息中接收到
Figure 413961DEST_PATH_IMAGE001
发来的交易集合
Figure 152110DEST_PATH_IMAGE002
的一 个数据块
Figure 281871DEST_PATH_IMAGE004
,从第二轮Bval消息中接收到
Figure 738260DEST_PATH_IMAGE019
发来的交易集合
Figure 493727DEST_PATH_IMAGE002
的一个数据块
Figure 617541DEST_PATH_IMAGE005
,从 第三轮的Bval消息中接收到
Figure 918203DEST_PATH_IMAGE021
发来的交易集合
Figure 861888DEST_PATH_IMAGE002
的一个数据块
Figure 421046DEST_PATH_IMAGE007
。通过第一轮的 Val消息,
Figure 133787DEST_PATH_IMAGE020
还接收到
Figure 605350DEST_PATH_IMAGE001
发来的
Figure 770752DEST_PATH_IMAGE006
。根据如前所述的纠删码中的p、q的设置,
Figure 868021DEST_PATH_IMAGE020
有较大概率可以从
Figure 700848DEST_PATH_IMAGE004
Figure 608893DEST_PATH_IMAGE005
Figure 261591DEST_PATH_IMAGE006
Figure 162551DEST_PATH_IMAGE007
中解码出
Figure 584305DEST_PATH_IMAGE002
,从而能够恢复得到完整的
Figure 912518DEST_PATH_IMAGE001
的提议的交易集合。
类似的,对于
Figure 803245DEST_PATH_IMAGE021
,从第二轮Bval消息中接收到
Figure 976737DEST_PATH_IMAGE001
发来的交易集合
Figure 518577DEST_PATH_IMAGE002
的一 个数据块
Figure 17691DEST_PATH_IMAGE004
,从第二轮Bval消息中接收到
Figure 395714DEST_PATH_IMAGE019
发来的交易集合
Figure 638477DEST_PATH_IMAGE002
的一个数据块
Figure 769244DEST_PATH_IMAGE005
,从 第二轮Bval消息中接收到
Figure 439259DEST_PATH_IMAGE020
发来的交易集合
Figure 553846DEST_PATH_IMAGE002
的一个数据块
Figure 351032DEST_PATH_IMAGE006
。通过第一轮的Val 消息,
Figure 336305DEST_PATH_IMAGE021
还接收到
Figure 177222DEST_PATH_IMAGE001
发来的
Figure 513526DEST_PATH_IMAGE007
。根据如前所述的纠删码中的p、q的设置,
Figure 114403DEST_PATH_IMAGE021
有 较大概率可以从
Figure 485341DEST_PATH_IMAGE004
Figure 497159DEST_PATH_IMAGE005
Figure 586338DEST_PATH_IMAGE006
Figure 459747DEST_PATH_IMAGE007
中解码出
Figure 685192DEST_PATH_IMAGE002
,从而能够恢复得到完整的
Figure 133491DEST_PATH_IMAGE001
的提议 的交易集合。
这样,其它共识节点在第二轮的末尾可以基于接收到的数据块采用所述纠删码恢 复出所述交易集合。而
Figure 444387DEST_PATH_IMAGE001
自身具有数据块
Figure 121487DEST_PATH_IMAGE004
,并可以从第二轮Bval消息中接收到
Figure 467018DEST_PATH_IMAGE019
发来的交易集合
Figure 820639DEST_PATH_IMAGE002
的一个数据块
Figure 618830DEST_PATH_IMAGE005
,从第二轮Bval消息中接收到
Figure 99621DEST_PATH_IMAGE020
发来的交 易集合
Figure 299658DEST_PATH_IMAGE002
的一个数据块
Figure 824181DEST_PATH_IMAGE006
,从第三轮的Bval消息中接收到
Figure 109669DEST_PATH_IMAGE021
发来的交易集合
Figure 382432DEST_PATH_IMAGE002
的 一个数据块
Figure 436975DEST_PATH_IMAGE007
。因此,
Figure 132399DEST_PATH_IMAGE001
有较大概率可以从这些
Figure 905183DEST_PATH_IMAGE004
Figure 445886DEST_PATH_IMAGE005
Figure 371247DEST_PATH_IMAGE006
Figure 971993DEST_PATH_IMAGE007
中解码出
Figure 232073DEST_PATH_IMAGE002
,从 而能够恢复得到完整的
Figure 576467DEST_PATH_IMAGE001
的提议的交易集合。此外,
Figure 605603DEST_PATH_IMAGE001
作为发起共识提议的共识节 点,自身具有交易集合,因此也可以不必基于第二轮的Bval消息恢复出交易集合,从而可以 省去解码的工作。
如前所述,共识节点广播的第二消息可以包括数据块对应的默克尔证明。此外,也 可以是共识节点广播的第三消息中包括数据块对应的默克尔证明。这样,在第二轮或第三 轮的末尾,接收到数据块的共识节点还可以结合对应的默克尔证明进行验证。可以在通过 验证之后再恢复原始数据,即前述解码得到
Figure 659140DEST_PATH_IMAGE002
,并从中恢复得到完整的
Figure 875358DEST_PATH_IMAGE001
的提议的交 易集合。例如,具体的,在第二轮的末尾,收到Bval消息的共识节点,可以计算Bval消息中的 数据块的hash值。例如,
Figure 289022DEST_PATH_IMAGE019
接收到第一共识节点
Figure 907085DEST_PATH_IMAGE001
发送的Bval消息后,可以计算该 Bval消息中包括的数据块
Figure 380792DEST_PATH_IMAGE004
的hash值,例如是
Figure 835038DEST_PATH_IMAGE014
。如前所述,
Figure 521234DEST_PATH_IMAGE019
发送的Bval消息 中还可以包括所包含的数据块
Figure 524962DEST_PATH_IMAGE004
对应的merkle proof,例如包括
Figure 903991DEST_PATH_IMAGE015
Figure 94801DEST_PATH_IMAGE013
Figure 866579DEST_PATH_IMAGE018
。这样,
Figure 459234DEST_PATH_IMAGE019
在前述计算得到Prom消息中
Figure 274744DEST_PATH_IMAGE004
的hash值
Figure 218429DEST_PATH_IMAGE014
后,进一步与该默克尔证明 一并计算,包括将
Figure 512007DEST_PATH_IMAGE014
Figure 975480DEST_PATH_IMAGE015
计算得到
Figure 430733DEST_PATH_IMAGE025
,再由
Figure 861714DEST_PATH_IMAGE025
Figure 958983DEST_PATH_IMAGE013
计算得到
Figure 542542DEST_PATH_IMAGE026
,从而通过比较
Figure 699854DEST_PATH_IMAGE026
Figure 618131DEST_PATH_IMAGE018
是否一致来确定
Figure 519091DEST_PATH_IMAGE005
是否正确。这是因为,一般来说发生哈希 碰撞的概率是极低的,消息的发起方很难伪造一连串hash值,同时保持这些hash值与数据 块存在对应关系。因此,如果比较
Figure 425999DEST_PATH_IMAGE026
Figure 754212DEST_PATH_IMAGE018
是一致的,则可以进入后续处理;如果不一 致,则不认可接收到的Bval消息,即不认可其中的包含的数据块。
第二轮中的共识节点广播第二消息Bval消息,这样,在第二轮的末尾,接收到第二消息的共识节点可以收集第二消息中的数据块和对该共识提议的投票。
例如
Figure 628627DEST_PATH_IMAGE001
,在第二轮的末尾可以收集Bval消息中的投票。假设
Figure 333278DEST_PATH_IMAGE001
收集到
Figure 875117DEST_PATH_IMAGE019
Figure 124964DEST_PATH_IMAGE020
Figure 752255DEST_PATH_IMAGE021
分别广播的Bval消息中的投票都是所述交易集合
Figure 729438DEST_PATH_IMAGE002
的hash值,即
Figure 125784DEST_PATH_IMAGE018
,且
Figure 546533DEST_PATH_IMAGE001
在第一轮中广播的Val消息中也包括
Figure 395540DEST_PATH_IMAGE018
,则
Figure 176414DEST_PATH_IMAGE001
在本轮次中收集到至 少Quorum个一致的摘要值(例如此时f=1,Quorum=3,实际收集到4)。
例如
Figure 427267DEST_PATH_IMAGE019
,在第二轮的末尾可以收集Bval消息中的投票,假设
Figure 268184DEST_PATH_IMAGE019
收集到
Figure 620799DEST_PATH_IMAGE020
Figure 205364DEST_PATH_IMAGE021
分别广播的第二消息中的投票都是所述交易集合
Figure 310723DEST_PATH_IMAGE002
的hash值
Figure 56962DEST_PATH_IMAGE018
,且
Figure 880562DEST_PATH_IMAGE019
在第二轮中广播的第二消息中的投票如果也是所述交易集合
Figure 19550DEST_PATH_IMAGE002
的hash值
Figure 979416DEST_PATH_IMAGE018
(也 表示对所述交易集合的认可),且在第一轮中接收到的
Figure 896556DEST_PATH_IMAGE001
发出的Val消息中也包括同样 的hash值
Figure 473031DEST_PATH_IMAGE018
,则
Figure 133820DEST_PATH_IMAGE019
在本轮次中收集到至少Quorum个一致的摘要值(例如此时f=1, Quorum=3,实际收集到4)。
Figure 948192DEST_PATH_IMAGE020
Figure 318125DEST_PATH_IMAGE021
Figure 116316DEST_PATH_IMAGE019
类似,不再赘述。
此外,共识节点还可以在第二轮末尾收集到不同节点的签名,如前所述。通过签名 可以统计截止到第二轮所收集到的投票的数量。例如
Figure 846375DEST_PATH_IMAGE019
收集到分别有
Figure 515254DEST_PATH_IMAGE022
Figure 305355DEST_PATH_IMAGE027
(第 二轮中
Figure 75996DEST_PATH_IMAGE019
广播的Bval消息中包含了
Figure 344167DEST_PATH_IMAGE019
的投票,也被收集签名)、
Figure 133131DEST_PATH_IMAGE028
Figure 94134DEST_PATH_IMAGE029
签名的 内容中包括同一hash值,则说明对该hash共有4个表示认可的投票(
Figure 617650DEST_PATH_IMAGE022
可以是在第一轮 从
Figure 689511DEST_PATH_IMAGE001
发送的Val消息中接收到的,也可以是在第二轮从
Figure 598561DEST_PATH_IMAGE001
发送的Bval消息中接收到 的,上述两种情况不重复计算,则对同一hash值一共收集到总数4个的签名)。
对于
Figure 464886DEST_PATH_IMAGE019
,如果收集到至少Quorum个来自于不同共识节点的一致的hash值,则广 播第三消息。第三消息可以记为Prom消息,意思是承诺不会对提议
Figure 724966DEST_PATH_IMAGE002
更改观点。如前所述,
Figure 85672DEST_PATH_IMAGE002
的hash值可以表示认可,0可以表示不认可。
Figure 849228DEST_PATH_IMAGE020
Figure 886454DEST_PATH_IMAGE021
也是类似的。
广播的第三消息中,可以包括收集到的对
Figure 368251DEST_PATH_IMAGE002
的投票,例如上述第一轮和第二轮中 收集到的hash值和签名。
这样,Prom消息的格式可以如<r,
Figure 781915DEST_PATH_IMAGE018
, <签名集合>>。
例如
Figure 428009DEST_PATH_IMAGE001
,假设
Figure 901715DEST_PATH_IMAGE001
在第二轮中收集到
Figure 605229DEST_PATH_IMAGE019
Figure 557005DEST_PATH_IMAGE020
Figure 295154DEST_PATH_IMAGE021
分别广播的Bval 消息中的投票都是所述交易集合
Figure 159335DEST_PATH_IMAGE002
的hash值,这样也就收集到
Figure 615725DEST_PATH_IMAGE019
Figure 105612DEST_PATH_IMAGE020
Figure 963846DEST_PATH_IMAGE021
各自 分别对
Figure 513776DEST_PATH_IMAGE002
(或
Figure 208194DEST_PATH_IMAGE002
的hash值)的签名是
Figure 236193DEST_PATH_IMAGE027
Figure 948934DEST_PATH_IMAGE028
Figure 935345DEST_PATH_IMAGE029
的投票,且
Figure 366326DEST_PATH_IMAGE001
在第一轮中广播的 Val消息中也包括自身对
Figure 948748DEST_PATH_IMAGE002
(或
Figure 781575DEST_PATH_IMAGE002
的hash值)的签名为
Figure 673308DEST_PATH_IMAGE022
的hash值。这样,
Figure 326006DEST_PATH_IMAGE001
在本轮 次中收集到至少Quorum个一致的摘要值(例如此时Quorum=3)。进而,
Figure 961386DEST_PATH_IMAGE001
在第三轮中广 播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合
Figure 399452DEST_PATH_IMAGE002
表 示认可的hash值及签名集合,签名集合例如为
Figure 462086DEST_PATH_IMAGE022
Figure 336501DEST_PATH_IMAGE027
Figure 41152DEST_PATH_IMAGE028
Figure 317413DEST_PATH_IMAGE029
例如,假设
Figure 567259DEST_PATH_IMAGE019
在第二轮中收集到
Figure 928971DEST_PATH_IMAGE001
Figure 906154DEST_PATH_IMAGE020
Figure 302500DEST_PATH_IMAGE021
分别广播的Bval消息中 的投票都是所述交易集合
Figure 972516DEST_PATH_IMAGE002
的hash值,这样也就收集到
Figure 837835DEST_PATH_IMAGE001
Figure 353130DEST_PATH_IMAGE020
Figure 869562DEST_PATH_IMAGE021
各自分别 对
Figure 444900DEST_PATH_IMAGE002
(或
Figure 46782DEST_PATH_IMAGE002
的hash值)的签名是
Figure 382080DEST_PATH_IMAGE022
Figure 753018DEST_PATH_IMAGE028
Figure 499257DEST_PATH_IMAGE029
的投票(或
Figure 322857DEST_PATH_IMAGE001
在第一轮中广播的Bval 消息中包括其对
Figure 445534DEST_PATH_IMAGE002
(或
Figure 421711DEST_PATH_IMAGE002
的hash值)的签名是
Figure 338852DEST_PATH_IMAGE022
的投票),且
Figure 915326DEST_PATH_IMAGE019
在第二轮中广播的 Bval消息中也包括其对(或
Figure 841694DEST_PATH_IMAGE002
的hash值)的签名是
Figure 656066DEST_PATH_IMAGE027
的投票。这样,
Figure 25999DEST_PATH_IMAGE019
截止到第二轮 收集到至少Quorum个一致的摘要值(例如此时Quorum=3)和不同节点的签名。进而,
Figure 558611DEST_PATH_IMAGE019
在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交 易集合
Figure 23091DEST_PATH_IMAGE002
表示认可的hash值及签名集合,签名集合例如包括
Figure 223128DEST_PATH_IMAGE022
Figure 13229DEST_PATH_IMAGE027
Figure 518291DEST_PATH_IMAGE028
Figure 786462DEST_PATH_IMAGE029
Figure 841005DEST_PATH_IMAGE020
Figure 270850DEST_PATH_IMAGE021
也类似于
Figure 43634DEST_PATH_IMAGE019
需要说明的是,上述签名集合,也可以用聚合签名或门限签名替代。
S47:其它共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
第三轮执行后,接收到Prom消息的共识节点可以统计收集的Prom消息的数量。共 识节点在第三轮中发出Prom消息的条件是第二轮中收集到至少Quorum个来自于不同共识 节点的一致的投票,且自身针对该提议没有广播过不同的投票,即相当于第二轮末尾该共 识节点确认总计至少Quorum数量的共识节点(包括自身)对该提议
Figure 849916DEST_PATH_IMAGE002
的投票都是认同的。 但是,第二轮结束之后还不能马上输出共识结果,而是还需要观察其他节点是否也是在第 二轮末尾收集到至少Quorum数量的对提议
Figure 509698DEST_PATH_IMAGE002
的表示认同的投票,因此需要通过第三轮的 Prom消息来确认,并且通过该Prom消息承诺自身不会再针对同一提议
Figure 376023DEST_PATH_IMAGE002
的表示不同的观 点。
例如
Figure 104945DEST_PATH_IMAGE001
在第二轮中收集到至少Quorum个一致的摘要值,进而,
Figure 714917DEST_PATH_IMAGE001
在第三轮 中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合
Figure 744053DEST_PATH_IMAGE002
表示认可的hash值及签名集合,签名集合例如包括
Figure 515700DEST_PATH_IMAGE022
Figure 13809DEST_PATH_IMAGE027
Figure 161893DEST_PATH_IMAGE028
Figure 779957DEST_PATH_IMAGE029
例如
Figure 988084DEST_PATH_IMAGE019
在第二轮中收集到至少Quorum个一致的摘要值,进而,
Figure 691598DEST_PATH_IMAGE019
在第三轮 中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合
Figure 643373DEST_PATH_IMAGE002
表示认可的hash值及签名集合,签名集合例如包括
Figure 132255DEST_PATH_IMAGE022
Figure 511283DEST_PATH_IMAGE027
Figure 967672DEST_PATH_IMAGE028
Figure 457560DEST_PATH_IMAGE029
Figure 315794DEST_PATH_IMAGE020
Figure 616457DEST_PATH_IMAGE021
也类似于
Figure 28983DEST_PATH_IMAGE019
这样,通过第三轮,例如
Figure 588141DEST_PATH_IMAGE001
可以收集到至少Quorum个Prom消息。通过Quorum个 Prom消息,
Figure 35303DEST_PATH_IMAGE001
可以确认至少Quorum个共识节点中的每一个都收集到了对该提议的交易 集合
Figure 21713DEST_PATH_IMAGE002
表示认可的至少Quorum数量的投票,且发出Prom消息的每一个共识节点都承诺不 再会更改投票的观点,这样,
Figure 203427DEST_PATH_IMAGE001
可以进一步完成本次共识,即将所述摘要值对应的交易 集合
Figure 35117DEST_PATH_IMAGE002
作为共识结果的至少一部分输出。
Figure 336785DEST_PATH_IMAGE019
Figure 494097DEST_PATH_IMAGE020
Figure 146795DEST_PATH_IMAGE021
也类似。类似的,其它共识 节点如
Figure 782176DEST_PATH_IMAGE019
Figure 208523DEST_PATH_IMAGE020
Figure 271157DEST_PATH_IMAGE021
也可以进一步完成本次共识,即将所述摘要值对应的交易集 合
Figure 411151DEST_PATH_IMAGE002
作为共识结果的至少一部分输出。
第三轮的Prom消息可以增加签名。例如
Figure 584643DEST_PATH_IMAGE019
在第三轮中广播的Prom消息中可以 包括
Figure 126483DEST_PATH_IMAGE019
对Prom消息中<r, hash, <签名集合>>的签名。
前述提到的附图13中生成Merkle Tree的方式,一般对于二叉的Merkle Tree来 说,底层叶子节点的数量是
Figure 110751DEST_PATH_IMAGE030
个。而采用纠删码(Erasure Coding)生成的数据块的数量并 不一定是
Figure 738041DEST_PATH_IMAGE030
个。这种情况下,可以采用最后一个数据块的hash重复若干次的方式,补齐 Merkle Tree的
Figure 980804DEST_PATH_IMAGE030
叶子节点。例如,在总计有5个共识节点
Figure 377150DEST_PATH_IMAGE001
Figure 47166DEST_PATH_IMAGE019
Figure 646905DEST_PATH_IMAGE020
Figure 427780DEST_PATH_IMAGE021
Figure 944212DEST_PATH_IMAGE031
的情况下,
Figure 50708DEST_PATH_IMAGE001
将共识提议的交易集合
Figure 137744DEST_PATH_IMAGE002
采用纠删码生成5个数据块
Figure 987888DEST_PATH_IMAGE004
Figure 624406DEST_PATH_IMAGE005
Figure 386957DEST_PATH_IMAGE006
Figure 476135DEST_PATH_IMAGE007
Figure 864391DEST_PATH_IMAGE032
,而构建的Merkle Tree可以如图14所示,
Figure 89836DEST_PATH_IMAGE004
对应的hash值为
Figure 23288DEST_PATH_IMAGE033
Figure 334184DEST_PATH_IMAGE005
对应的hash值为
Figure 260552DEST_PATH_IMAGE034
Figure 622394DEST_PATH_IMAGE006
对应的hash值为
Figure 710436DEST_PATH_IMAGE035
Figure 774207DEST_PATH_IMAGE007
对应的hash值为
Figure 769845DEST_PATH_IMAGE036
Figure 720614DEST_PATH_IMAGE032
对应的hash值为
Figure 245136DEST_PATH_IMAGE037
。最底层的叶子节点的数量一般是大于数据块数量的最小的
Figure 530624DEST_PATH_IMAGE030
,这里数据块数量是5,
Figure 877423DEST_PATH_IMAGE038
。多出的3个Merkle Tree的叶子节点,可以取最后一 个数据块对应的hash值。如图所示,
Figure 745016DEST_PATH_IMAGE039
Figure 440440DEST_PATH_IMAGE040
Figure 213224DEST_PATH_IMAGE041
,可以都是取
Figure 285085DEST_PATH_IMAGE032
的hash 值。这样,同样可以构建Merkle Tree及默克尔证明。
上述图5的实施例,可以由如图中的
Figure 210447DEST_PATH_IMAGE001
来执行,也可以扩展到由
Figure 342351DEST_PATH_IMAGE001
Figure 336851DEST_PATH_IMAGE019
Figure 963136DEST_PATH_IMAGE020
Figure 726693DEST_PATH_IMAGE021
均执行。前者的情况,实际上,每一收集到至少Quorum个来自于不同节点的 第三消息后的共识节点,各自均可以将所述摘要值对应的交易集合作为共识结果的全部来 输出,除了图5以外,也可以是图6、7、8、9中的任一。
对于后者,即由
Figure 29498DEST_PATH_IMAGE001
Figure 776874DEST_PATH_IMAGE019
Figure 941270DEST_PATH_IMAGE020
Figure 559334DEST_PATH_IMAGE021
均执行的情况,图5是以
Figure 33040DEST_PATH_IMAGE001
这一 个节点的发起共识提议的视角,实际上
Figure 2133DEST_PATH_IMAGE019
Figure 970220DEST_PATH_IMAGE020
Figure 442790DEST_PATH_IMAGE021
中的任一也可以发起提议而 其它共识节点配合完成上述类似的过程,这样整体上是图5、6、7、8、9的叠加。
对于后者的情况,例如
Figure 87398DEST_PATH_IMAGE001
发起共识提议的交易集合为
Figure 543787DEST_PATH_IMAGE002
Figure 581144DEST_PATH_IMAGE019
发起共识提 议的交易集合为
Figure 439379DEST_PATH_IMAGE023
Figure 989309DEST_PATH_IMAGE020
发起共识提议的交易集合为
Figure 932994DEST_PATH_IMAGE042
Figure 508463DEST_PATH_IMAGE021
发起共识提议的交易集 合为
Figure 221204DEST_PATH_IMAGE043
,这样,
Figure 473194DEST_PATH_IMAGE002
可以对应
Figure 401047DEST_PATH_IMAGE018
Figure 498316DEST_PATH_IMAGE023
可以对应
Figure 331143DEST_PATH_IMAGE044
Figure 504767DEST_PATH_IMAGE042
可以对应
Figure 891886DEST_PATH_IMAGE045
Figure 58425DEST_PATH_IMAGE043
可以对应
Figure 745758DEST_PATH_IMAGE046
。如果正常执行,大概率上每个共识节点本次共识的输出结果为{
Figure 824704DEST_PATH_IMAGE002
Figure 964698DEST_PATH_IMAGE023
Figure 403769DEST_PATH_IMAGE042
Figure 211188DEST_PATH_IMAGE043
}, 至于输出结果中
Figure 195456DEST_PATH_IMAGE002
Figure 822747DEST_PATH_IMAGE023
Figure 65509DEST_PATH_IMAGE042
Figure 461855DEST_PATH_IMAGE043
的顺序,可以按照一定规则来排序,例如按照对应hash值 的大小顺序来排序。
上述实施例中,可以在一定前提下缩短至3个轮次完成一次共识,相对于HBBFT中的至少6轮,大大降低了共识过程带来的延迟。实际上,本申请实施例中,相当于采用前瞻投票和数字签名技术将HBBFT中RBC过程的后两轮和ABA过程的前两轮进行了合并,从而缩短了所需的轮次。所述前瞻投票,是指上述实施例中第二轮次的Bval中进行投票,而HBBFT在ABA过程中需要在第五轮次的Bval中才投票。所述数字签名,指上述实施例中第一轮次和第二轮次中采用的数字签名。
而且,采用纠删码对共识提议的交易生成若干个数据块,提议的共识节点不必传输较大的数据包至其它的每一共识节点,而是将数据包的不同数据块传输至不同的共识节点,从而可以降低网络传输的数据量。在第二轮中转发提议的共识节点发来的数据块,可以充分利用网络中节点之间的带宽资源,从而整体上提升共识协议的性能。
本申请还提供一种区块链系统实施例,包括共识节点,其中:
第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点保留一份数据块,并发送第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
共识节点广播第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;其中第一共识节点广播的数据块包括所述保留的数据块,其它共识节点广播第一轮中收到的数据块;
其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的投票后,广播第三消息,第三消息包括数据块、所述摘要值以及收集到的签名集合;
所述其它共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
其中,第一共识节点将共识提议的交易集合采用纠删码生成n个数据块,所述n等于共识节点的总数。
其中,第一轮中第一共识节点针对每个数据块生成对应的默克尔证明,所述发送的第一消息中还包括所述默克尔证明;
相应的,在第一轮的末尾接收到所述第一消息的共识节点还对所述接收到的数据块和默尔克证明进行验证;验证通过后进入第二轮。
其中,广播的第二消息或第三消息中还包括广播的数据块对应的默克尔证明。
其中,第二轮的末尾,接收到第二消息的共识节点还对第二消息中的默克尔证明进行验证。
其中,第三轮的末尾,接收到第三消息的共识节点还对所述接收到的数据块和对应的默克尔证明进行验证;验证通过后进入采用纠删码恢复交易集合的处理。
其中,在第三轮的末尾还验证第三消息的正确性,包括验证第三消息的签名集合中包括至少Quorum个签名。
其中,在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点。
本申请还提供一种区块链系统中的共识节点实施例,也可以如图10所示,包括:
数据块生成单元101,用于将共识提议的交易集合采用纠删码生成多个数据块,并保留一份数据块;
第一消息广播单元102,用于广播第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
第二消息广播单元107,用于广播第二消息至其它共识节点,第二消息中包括所述保留的数据块,并包括第一共识节点的签名;
第二消息接收单元103,用于接收第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三消息广播单元104,当第二消息接收单元收集到至少Quorum个来自于不同共识节点的一致的投票后广播第三消息,第三消息包括所述收集到的签名集合;
第三消息收集单元105,用于收集来自于不同共识节点的第三消息;
输出单元106,在第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
其中,所述数据块生成单元101将共识提议的交易集合采用纠删码生成n个数据块,所述n等于共识节点的总数。
所述数据块生成单元101还针对每个数据块生成对应的默克尔证明,第一消息广播单元发送的第一消息中还包括所述默克尔证明。
广播的第二消息或第三消息中还包括所述发送的数据块对应的默克尔证明。
其中,还包括验证单元,用于在第二消息接收单元接收到第二消息后,对第二消息中的数据块和对应的默克尔证明进行验证。
或者,还包括验证单元,用于在第三消息收集单元接收到第三消息后,对数据块和对应的默克尔证明进行验证。
本申请还提供一种区块链系统中的共识节点实施例,可以如图11所示,包括:
第一消息接收单元111,用于接收第一共识节点广播的第一消息,第一消息中包括提议的交易集合的一个数据块和第一共识节点的签名;
第二消息广播单元112,用于当第一消息接收单元111接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第二消息接收单元113,用于接收第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三消息广播单元114,当第二消息接收单元113收集到至少Quorum个来自于不同共识节点的一致的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
第三消息收集单元115,收集来自于不同共识节点的第三消息;
恢复单元116,基于第三消息收集单元115接收到的数据块采用所述纠删码恢复出所述交易集合;
输出单元117,当第三消息收集单元115收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
其中,第一消息接收单元111接收的第一消息中还包括所述默克尔证明;
相应的,第一消息接收单元111还对所述接收到的数据块和默尔克证明进行验证。
其中,广播的第二消息中还包括所述数据块对应的默克尔证明;所述共识节点还包括验证单元,用于在第二消息接收单元接收到第二消息后,对第二消息中的数据块和对应的默克尔证明进行验证。
其中,广播的第三消息中还包括所述数据块对应的默克尔证明;所述共识节点还包括验证单元,用于在第三消息收集单元接收到第三消息后,对数据块和对应的默克尔证明进行验证。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (21)

1.一种区块链系统中的共识方法,包括:
第一轮:第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点保留一份数据块,并发送第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
第二轮:共识节点广播第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;其中第一共识节点广播的数据块包括所述保留的数据块,其它共识节点广播第一轮中收到的数据块;
第三轮:所述其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的投票后,广播第三消息,第三消息包括所述收集到的签名集合;
所述其它共识节点在收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
2.如权利要求1所述的方法,第一共识节点将共识提议的交易集合采用纠删码生成n个数据块,所述n等于共识节点的总数。
3.如权利要求1所述的方法,第一轮中第一共识节点针对每个数据块生成对应的默克尔证明,所述发送的第一消息中还包括所述默克尔证明;
相应的,在第一轮的末尾接收到所述第一消息的共识节点还对所述接收到的数据块和默尔克证明进行验证;验证通过后进入第二轮。
4.如权利要求3所述的方法,广播的第二消息或第三消息中还包括广播的数据块对应的默克尔证明。
5.如权利要求4所述的方法,第二轮的末尾,接收到第二消息的共识节点还对第二消息中的默克尔证明进行验证。
6.如权利要求4所述的方法,在第三轮的末尾,接收到第三消息的共识节点还对所述接收到的数据块和对应的默克尔证明进行验证;验证通过后进入采用纠删码恢复交易集合的处理。
7.如权利要求1所述的方法,在第三轮的末尾还验证第三消息的正确性,包括验证第三消息的签名集合中包括至少Quorum个签名。
8.如权利要求1所述的方法,广播第三消息的共识节点不再更改针对同一提议的交易集合的投票观点。
9.如权利要求1-8中任一项所述的方法,所述签名集合用聚合签名或门限签名替代。
10.如权利要求1所述的方法,在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行权利要求1的方法。
11.一种区块链系统,包括共识节点,其中:
第一共识节点将共识提议的交易集合采用纠删码生成多个数据块;第一共识节点保留一份数据块,并发送第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
共识节点广播第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;其中第一共识节点广播的数据块包括所述保留的数据块,其它共识节点广播第一轮中收到的数据块;
所述其它共识节点基于接收到的数据块采用所述纠删码恢复出所述交易集合,并在收集到至少Quorum个来自于不同共识节点的一致的投票后,广播第三消息,第三消息包括数据块、所述摘要值以及收集到的签名集合;
所述其它共识节点在收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
12.一种区块链系统中的共识节点,包括:
数据块生成单元,用于将共识提议的交易集合采用纠删码生成多个数据块,并保留一份数据块;
第一消息广播单元,用于广播第一消息至其它共识节点,发送至不同共识节点的第一消息中包括不同的所述数据块以及第一共识节点的签名;
第二消息广播单元,用于广播第二消息至其它共识节点,第二消息中包括所述保留的数据块,并包括第一共识节点的签名;
第二消息接收单元,用于接收第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三消息广播单元,当第二消息接收单元收集到至少Quorum个来自于不同共识节点的一致的投票后广播第三消息,第三消息包括所述收集到的签名集合;
第三消息收集单元,用于收集来自于不同共识节点的第三消息;
输出单元,在第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
13.如权利要求12所述的共识节点,所述数据块生成单元将共识提议的交易集合采用纠删码生成n个数据块,所述n等于共识节点的总数。
14.如权利要求12所述的共识节点,所述数据块生成单元还针对每个数据块生成对应的默克尔证明,第一消息广播单元发送的第一消息中还包括所述默克尔证明。
15.如权利要求12所述的共识节点,广播的第二消息或第三消息中还包括所述发送的数据块对应的默克尔证明。
16.如权利要求15所述的共识节点,还包括验证单元,用于在第二消息接收单元接收到第二消息后,对第二消息中的数据块和对应的默克尔证明进行验证。
17.如权利要求15所述的共识节点,还包括验证单元,用于在第三消息收集单元接收到第三消息后,对数据块和对应的默克尔证明进行验证。
18.一种区块链系统中的共识节点,包括:
第一消息接收单元,用于接收第一共识节点广播的第一消息,第一消息中包括提议的交易集合的一个数据块和第一共识节点的签名;
第二消息广播单元,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括所述数据块、对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第二消息接收单元,用于接收第二消息,第二消息中包括数据块,并包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三消息广播单元,当第二消息接收单元收集到至少Quorum个来自于不同共识节点的一致的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
第三消息收集单元,收集来自于不同共识节点的第三消息;
恢复单元,基于第二消息接收单元接收到的数据块采用纠删码恢复出所述交易集合;
输出单元,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
19.如权利要求18所述的共识节点,第一消息接收单元接收的第一消息中还包括默克尔证明;
相应的,第一消息接收单元还对所述接收到的数据块和默尔克证明进行验证。
20.如权利要求18所述的共识节点,广播的第二消息中还包括所述数据块对应的默克尔证明;所述共识节点还包括验证单元,用于在第二消息接收单元接收到第二消息后,对第二消息中的数据块和对应的默克尔证明进行验证。
21.如权利要求18所述的共识节点,广播的第三消息中还包括所述数据块对应的默克尔证明;所述共识节点还包括验证单元,用于在第三消息收集单元接收到第三消息后,对数据块和对应的默克尔证明进行验证。
CN202111178779.2A 2021-10-09 2021-10-09 一种共识方法、区块链系统和共识节点 Active CN113761071B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111178779.2A CN113761071B (zh) 2021-10-09 2021-10-09 一种共识方法、区块链系统和共识节点
PCT/CN2022/124074 WO2023056967A1 (zh) 2021-10-09 2022-10-09 共识方法、区块链系统和共识节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111178779.2A CN113761071B (zh) 2021-10-09 2021-10-09 一种共识方法、区块链系统和共识节点

Publications (2)

Publication Number Publication Date
CN113761071A true CN113761071A (zh) 2021-12-07
CN113761071B CN113761071B (zh) 2023-07-11

Family

ID=78799019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111178779.2A Active CN113761071B (zh) 2021-10-09 2021-10-09 一种共识方法、区块链系统和共识节点

Country Status (2)

Country Link
CN (1) CN113761071B (zh)
WO (1) WO2023056967A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114782047A (zh) * 2021-12-29 2022-07-22 张海滨 数据共识方法及分布式系统
CN115174574A (zh) * 2022-06-30 2022-10-11 蚂蚁区块链科技(上海)有限公司 区块链系统中的数据广播方法、节点和区块链系统
WO2023056967A1 (zh) * 2021-10-09 2023-04-13 支付宝(杭州)信息技术有限公司 共识方法、区块链系统和共识节点

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107341660A (zh) * 2017-05-27 2017-11-10 唐盛(北京)物联技术有限公司 一种区块链底层共识机制以及基于该共识机制的区块链系统
CA3048743A1 (en) * 2017-04-28 2018-11-01 Alibaba Group Holding Limited Consensus verification method and device
CN109359223A (zh) * 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
CA3041463A1 (en) * 2018-11-07 2019-04-18 Alibaba Group Holding Limited Facilitating practical byzantine fault tolerance blockchain consensus and node synchronization
CN109871366A (zh) * 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
CN110246038A (zh) * 2019-04-26 2019-09-17 众安信息技术服务有限公司 一种区块链交易快速确认方法及系统
WO2020042792A1 (zh) * 2018-08-31 2020-03-05 阿里巴巴集团控股有限公司 基于区块链的交易共识处理方法及装置、电子设备
WO2020042805A1 (zh) * 2018-08-31 2020-03-05 阿里巴巴集团控股有限公司 基于区块链的交易共识处理方法及装置、电子设备
CN111104460A (zh) * 2019-12-02 2020-05-05 远光软件股份有限公司 一种区块链共识方法、系统、电子设备、存储介质
CN111177263A (zh) * 2019-12-27 2020-05-19 中思博安科技(北京)有限公司 一种区块链共识方法及节点
CN111327414A (zh) * 2020-01-20 2020-06-23 布比(北京)网络技术有限公司 一种区块链共识方法、系统及计算机存储介质、电子设备
CN111414373A (zh) * 2020-03-18 2020-07-14 深圳市网心科技有限公司 一种共识方法和共识系统
CN111526217A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种区块链中的共识方法和系统
CN111526219A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种联盟链的共识方法及联盟链系统
CN111522800A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统
WO2020169061A1 (zh) * 2019-02-21 2020-08-27 腾讯科技(深圳)有限公司 数据区块在区块链上记录的方法、领导记账节点和介质
US20200403776A1 (en) * 2019-06-18 2020-12-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
CN112767152A (zh) * 2021-01-18 2021-05-07 中国工商银行股份有限公司 应用于联盟链的双园区灾备系统及方法
US20210314162A1 (en) * 2020-07-03 2021-10-07 Alipay (Hangzhou) Information Technology Co., Ltd. Consensus methods and systems in consortium blockchain

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020000011A1 (en) * 2018-06-25 2020-01-02 Commonwealth Scientific And Industrial Research Organisation Blockchain system and method
CN112506671B (zh) * 2021-02-03 2021-05-07 支付宝(杭州)信息技术有限公司 区块链中的交易处理方法、装置及电子设备
CN113377798A (zh) * 2021-07-07 2021-09-10 支付宝(杭州)信息技术有限公司 一种区块链一致性处理方法、区块链节点和区块链系统
CN113761071B (zh) * 2021-10-09 2023-07-11 支付宝(杭州)信息技术有限公司 一种共识方法、区块链系统和共识节点

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3048743A1 (en) * 2017-04-28 2018-11-01 Alibaba Group Holding Limited Consensus verification method and device
CN107341660A (zh) * 2017-05-27 2017-11-10 唐盛(北京)物联技术有限公司 一种区块链底层共识机制以及基于该共识机制的区块链系统
WO2020042792A1 (zh) * 2018-08-31 2020-03-05 阿里巴巴集团控股有限公司 基于区块链的交易共识处理方法及装置、电子设备
WO2020042805A1 (zh) * 2018-08-31 2020-03-05 阿里巴巴集团控股有限公司 基于区块链的交易共识处理方法及装置、电子设备
CN109359223A (zh) * 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
CA3041463A1 (en) * 2018-11-07 2019-04-18 Alibaba Group Holding Limited Facilitating practical byzantine fault tolerance blockchain consensus and node synchronization
CN109871366A (zh) * 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
WO2020169061A1 (zh) * 2019-02-21 2020-08-27 腾讯科技(深圳)有限公司 数据区块在区块链上记录的方法、领导记账节点和介质
CN110246038A (zh) * 2019-04-26 2019-09-17 众安信息技术服务有限公司 一种区块链交易快速确认方法及系统
US20200403776A1 (en) * 2019-06-18 2020-12-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
CN111104460A (zh) * 2019-12-02 2020-05-05 远光软件股份有限公司 一种区块链共识方法、系统、电子设备、存储介质
CN111177263A (zh) * 2019-12-27 2020-05-19 中思博安科技(北京)有限公司 一种区块链共识方法及节点
CN111327414A (zh) * 2020-01-20 2020-06-23 布比(北京)网络技术有限公司 一种区块链共识方法、系统及计算机存储介质、电子设备
CN111414373A (zh) * 2020-03-18 2020-07-14 深圳市网心科技有限公司 一种共识方法和共识系统
CN111526217A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种区块链中的共识方法和系统
CN111526219A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种联盟链的共识方法及联盟链系统
CN111522800A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统
US20210314167A1 (en) * 2020-07-03 2021-10-07 Alipay (Hangzhou) Information Technology Co., Ltd. Methods and systems for consensus in blockchains
US20210314162A1 (en) * 2020-07-03 2021-10-07 Alipay (Hangzhou) Information Technology Co., Ltd. Consensus methods and systems in consortium blockchain
CN112767152A (zh) * 2021-01-18 2021-05-07 中国工商银行股份有限公司 应用于联盟链的双园区灾备系统及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHUNLIN LI等: "Lightweight blockchain consensus mechanism and storage optimization for resource-constrained IoT devices", INFORMATION PROCESSING AND MANAGEMENT, pages 1 - 24 *
王海勇;郭凯璇;潘启青;: "基于投票机制的拜占庭容错共识算法", 计算机应用, no. 06, pages 216 - 221 *
赵国锋等: "基于纠删码的区块链系统区块文件存储 模型的研究与应用", 信息网络安全, pages 28 - 35 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023056967A1 (zh) * 2021-10-09 2023-04-13 支付宝(杭州)信息技术有限公司 共识方法、区块链系统和共识节点
CN114782047A (zh) * 2021-12-29 2022-07-22 张海滨 数据共识方法及分布式系统
CN114782047B (zh) * 2021-12-29 2023-06-30 张海滨 数据共识方法及分布式系统
CN115174574A (zh) * 2022-06-30 2022-10-11 蚂蚁区块链科技(上海)有限公司 区块链系统中的数据广播方法、节点和区块链系统

Also Published As

Publication number Publication date
CN113761071B (zh) 2023-07-11
WO2023056967A1 (zh) 2023-04-13

Similar Documents

Publication Publication Date Title
CN113645044B (zh) 一种共识方法、区块链系统和共识节点
CN113630258B (zh) 一种共识方法、区块链系统和共识节点
CN113630257B (zh) 一种共识方法、区块链系统和共识节点
CN110730204B (zh) 区块链网络中删除节点的方法和区块链系统
EP3780553B1 (en) Blockchain-based transaction consensus processing method and apparatus, and electrical device
CN114401150B (zh) 区块链网络中加入节点的方法和区块链系统
CN113761071A (zh) 一种共识方法、区块链系统和共识节点
CN113610531B (zh) 一种共识方法、区块链系统和共识节点
EP3809356A1 (en) Blockchain-based transaction consensus processing method and apparatus, and electronic device
CN113630259B (zh) 一种共识方法、区块链系统和共识节点
CN113609515B (zh) 一种共识方法、区块链系统
Yanovich et al. Exonum: Byzantine fault tolerant protocol for blockchains
WO2023185045A1 (zh) 一种区块链上产生随机数种子的方法、系统和共识节点
CN114884652A (zh) 一种区块链上产生随机数种子的方法、系统和共识节点
CN114640451A (zh) 区块链上实现分布式密钥生成的方法、系统和共识节点
CN114640452B (zh) 启动区块链上分布式密钥生成过程的方法和系统
CN115174090A (zh) 区块链共识方法及装置
Yin Scaling the Infrastructure of Practical Blockchain Systems
CN116846912A (zh) Pbft算法中的视图切换方法、共识节点和区块链系统
CN116823463A (zh) 区块链系统中的交易提议方法、共识节点和区块链系统
CN116527694A (zh) 一种区块链系统中的共识方法和共识节点、区块链系统
CN116823466A (zh) 区块链系统中的交易提议方法、共识节点和区块链系统
CN116846907A (zh) 一种共识方法、区块链节点
Miloslavskaya et al. Blockchain redacting algorithm with storing votes inside the chain
CN116823465A (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