一种共识方法、区块链节点技术

技术编号:39035058 阅读:9 留言:0更新日期:2023-10-10 11:48
本说明书一个或多个实施例提供一种共识方法、区块链节点,区块链系统采用的共识协议为基于区块标识来发起共识提议的目标区块的异步共识协议,该方法包括:接收共识节点发送的第一消息;其中,第一消息包含待共识的目标区块的区块标识;以及,共识节点针对目标区块提议的交易列表;响应于接收到的第一消息,确定区块链系统中的目标共识节点的数量是否达到阈值;其中,目标共识节点为针对目标区块提议的交易列表已作为共识结果进行了输出的共识节点;如果区块链系统中的目标共识节点的数量达到阈值,则广播第六消息至其它共识节点;其中,第六消息包含区块标识,用于声明不再接受除了目标共识节点以外的其它共识节点针对目标区块提议的交易列表。目标区块提议的交易列表。目标区块提议的交易列表。

【技术实现步骤摘要】
一种共识方法、区块链节点


[0001]本说明书实施例属于区块链
,尤其涉及一种共识方法、区块链节点。

技术介绍

[0002]区块链系统中,不同参与方通过部署的节点(Node)可以建立一个分布式的区块链网络。利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上。这样的区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,并将交易及执行结果打包生成区块。
[0003]当前主流的共识协议包括:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等。
[0004]其中,以上列举的各种共识协议中,既包括异步共识协议,也包括非异步共识协议。例如,PBFT协议就属于半同步(partial synchronous)协议,而HoneyBadgerBFT算法属于一种异步(asynchronous)协议。
[0005]由于异步协议适用于异步网络,也就是这个网络中节点间的消息可以被任意延迟,但最终会达到,因此目前异步共识协议相对于非异步共识协议而言应用更加广泛。然而,目前的几种主流的异步共识协议,均存在一定的设计缺陷,对共识的轮次会存在不确定性,从而可能造成共识的延迟增加。

技术实现思路

[0006]本说明书提出一种区块链系统中的共识方法,其中所述区块链系统采用的共识协议为基于区块标识来发起共识提议的目标区块的异步共识协议,所述方法包括:
[0007]接收共识节点发送的第一消息;其中,所述第一消息包含待共识的目标区块的区块标识;以及,所述共识节点针对所述目标区块提议的交易列表;
[0008]响应于接收到的所述第一消息,确定所述区块链系统中的目标共识节点的数量是否达到阈值;其中,所述目标共识节点为针对所述目标区块提议的交易列表已作为共识结果进行了输出的共识节点;
[0009]如果所述区块链系统中的目标共识节点的数量达到阈值,则广播第六消息至其它共识节点;其中,所述第六消息包含所述区块标识,用于声明不再接受除了所述目标共识节点以外的其它共识节点针对所述目标区块提议的交易列表。
[0010]可选的,所述方法还包括:
[0011]响应于接收到的所述第一消息,运行所述区块链系统采用的所述异步共识协议对
所述第一消息中包含的交易列表进行共识;
[0012]其中,运行所述区块链系统采用的所述异步共识协议对所述第一消息中包含的交易列表进行共识对应的共识过程,包括:
[0013]第一轮:接收到所述第一消息的共识节点广播第二消息至其它共识节点;所述第二消息中包含所述目标区块的区块标识以及针对所述交易列表的投票;
[0014]第二轮,接收到所述第二消息的共识节点收集来自于不同共识节点的针对所述交易列表的投票;如果收集到至少Quorum个来自不同共识节点的表示认可所述交易列表的投票,并且自身针对该交易列表未广播过不同的投票,则广播用于承诺不再更改针对所述交易列表的投票的第三消息至其它共识节点;其中,所述第三消息包含表示认可所述交易列表的投票;
[0015]如果任一共识节点收集到至少Quorum个来自于不同共识节点的包含表示认可所述交易列表的投票的所述第三消息,则将所述交易列表作为与所述区块标识对应的目标区块的至少一部分共识结果进行输出。
[0016]可选的,在所述第一轮中,如果接收到所述第一消息的共识节点确定所述区块链系统中的目标共识节点的数量达到阈值,则该共识节点广播的所述第二消息中包含表示不认可所述第一消息包含的所述交易列表的投票;反之,如果接收到所述第一消息的共识节点确定所述区块链系统中的目标共识节点的数量未达到阈值,则该共识节点广播的所述第二消息中包含表示认可所述第一消息包含的所述交易列表的投票。
[0017]可选的,所述第一轮还包括:
[0018]如果接收到了f+1不同共识节点发送的包含表示认可所述交易列表的投票的所述第二消息,并且自身未广播过包含表示不认可所述交易列表的投票的所述第三消息,则继续向其它共识节点广播包含表示认可所述交易列表的投票的第二消息;其中,所述f表示所述区块链系统采用的共识协议所支持的容错节点数。
[0019]可选的,所述第二轮还包括:
[0020]如果接收到所述第二消息的共识节点收集到至少Quorum个来自不同共识节点的表示认可所述交易列表的投票,并且自身针对该交易列表广播过不同的投票,则广播第四消息至其它共识节点;其中,所述第四消息不用于承诺不再更改针对所述交易列表的投票;所述第四消息包含表示认可所述交易列表的投票。
[0021]可选的,所述方法还包括:
[0022]如果任一共识节点收集到至少Quorum个来自于不同共识节点的消息中,除了包含所述第三消息以外还包含所述第四消息,则运行二元共识协议对所述至少Quorum个消息中包含的投票集合进行二元共识。
[0023]可选的,运行二元共识协议对所述至少Quorum个消息中包含的投票集合进行二元共识之前,还包括:
[0024]广播第五消息至其它共识节点;其中,所述第五消息包括所述至少Quorum个消息中包含的投票集合;
[0025]所述运行二元共识协议对所述至少Quorum个来自于不同共识节点的投票集合进行二元共识,包括:
[0026]收集其它的共识节点广播的所述第五消息;
[0027]如果收集到至少Quorum个来自于不同共识节点的所述第五消息,计算所述至少Quorum个所述第五消息中包含的投票集合的并集得到目标投票集合,并运行二元共识协议对所述目标投票集合进行二元共识。
[0028]可选的,所述二元共识协议为公共抛硬币算法。
[0029]可选的,所述第二消息、第三消息、第四消息以及所述第五消息中还包括针对所述交易列表进行共识的轮次;所述至少Quorum个来自于不同共识节点的消息,包括至少Quorum个来自于不同共识节点的包含的所述轮次相同的消息。
[0030]可选的,在针对所述交易列表进行共识的第一轮次,所述投票包括表示认可所述交易列表的该交易列表的摘要值;以及,表示不认可所述交易列表的第二预设取值;在针对所述交易列表进行共识的第一轮次以外的其它轮次,针对所述交易列表的投票包括表示认可所述交易列表的第一预设值;以及,表示不认可所述交易列表的第二预设值。
[0031]可选的,所述第六消息中包括,发送该第六消息的共识节点本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链系统中的共识方法,其中所述区块链系统采用的共识协议为基于区块标识来发起共识提议的目标区块的异步共识协议,所述方法包括:接收共识节点发送的第一消息;其中,所述第一消息包含待共识的目标区块的区块标识;以及,所述共识节点针对所述目标区块提议的交易列表;响应于接收到的所述第一消息,确定所述区块链系统中的目标共识节点的数量是否达到阈值;其中,所述目标共识节点为针对所述目标区块提议的交易列表已作为共识结果进行了输出的共识节点;如果所述区块链系统中的目标共识节点的数量达到阈值,则广播第六消息至其它共识节点;其中,所述第六消息包含所述区块标识,用于声明不再接受除了所述目标共识节点以外的其它共识节点针对所述目标区块提议的交易列表。2.如权利要求1所述的方法,所述方法还包括:响应于接收到的所述第一消息,运行所述区块链系统采用的所述异步共识协议对所述第一消息中包含的交易列表进行共识;其中,运行所述区块链系统采用的所述异步共识协议对所述第一消息中包含的交易列表进行共识对应的共识过程,包括:第一轮:接收到所述第一消息的共识节点广播第二消息至其它共识节点;所述第二消息中包含所述目标区块的区块标识以及针对所述交易列表的投票;第二轮,接收到所述第二消息的共识节点收集来自于不同共识节点的针对所述交易列表的投票;如果收集到至少Quorum个来自不同共识节点的表示认可所述交易列表的投票,并且自身针对该交易列表未广播过不同的投票,则广播用于承诺不再更改针对所述交易列表的投票的第三消息至其它共识节点;其中,所述第三消息包含表示认可所述交易列表的投票;如果任一共识节点收集到至少Quorum个来自于不同共识节点的包含表示认可所述交易列表的投票的所述第三消息,则将所述交易列表作为与所述区块标识对应的目标区块的至少一部分共识结果进行输出。3.如权利要求2所述的方法,在所述第一轮中,如果接收到所述第一消息的共识节点确定所述区块链系统中的目标共识节点的数量达到阈值,则该共识节点广播的所述第二消息中包含表示不认可所述第一消息包含的所述交易列表的投票;反之,如果接收到所述第一消息的共识节点确定所述区块链系统中的目标共识节点的数量未达到阈值,则该共识节点广播的所述第二消息中包含表示认可所述第一消息包含的所述交易列表的投票。4.如权利要求3所述的方法,所述第一轮还包括:如果接收到了f+1不同共识节点发送的包含表示认可所述交易列表的投票的所述第二消息,并且自身未广播过包含表示不认可所述交易列表的投票的所述第三消息,则继续向其它共识节点广播包含表示认可所述交易列表的投票的第二消息;其中,所述f表示所述区块链系统采用的共识协议所支持的容错节点数。5.如权利要求2所述的方法,所述第二轮还包括:如果接收到所述第二消息的共识节点收集到至少Quorum个来自不同共识节点的表示认可所述交易列表的投票,并且自身针对该交易列表广播过不同的投票,则广播第四消息至其它共识节点;其中,所述第四消息不用于承诺不再更改针对所述交易列表的投票;所述
第四消息包含表示认可所述交易列表的投票。6.如权利要求5所述的方法,所述方法还包括:如果任一共识节点收集到至少Quorum个来自于不同共识节点的消息中,除了包含所述第三消息以外还包含所述第四消息,则运行二元共识协议对所述至少Quorum个消息中包含的投票集合进行二元共识。7.如权利要求6所述的方法,运行二元共识协议对所述至少Quorum个消息中包含的投票集合进行二元共识之前,还包括:广播第五消息至其它共识节点;其中,所述第五消息包括所述至少Quorum个消息中包含的投票集合;所述运行二元共识协议对所述至少Quorum个来自于不同共识节点的投票集合进行二元共识,包括:收集其它的共识节点广播的所述第五消息;如果收集到至少Quorum个来自于不同共识节点的所述第五消息,计算所述至少Quorum个所述第五消息中包含的投票集合的并集得到目标投票集合,并运行二元共识协议对所述目标投票集合进行二元共识。8.如权利要求7所述的方法,所述二元共识协议为公共抛硬币算法。9.如权利要求7所述的方法,所述第二消息、第三消息、第四消息以及所述第五消息中还包括针对所述交易列表进行共识的轮次;所述至少Quorum个来自于...

【专利技术属性】
技术研发人员:徐文博
申请(专利权)人:蚂蚁区块链科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1