掌桥专利:专业的专利平台
掌桥专利
首页

基于有向无环图的快速异步共识实现方法

文献发布时间:2023-06-19 19:14:59


基于有向无环图的快速异步共识实现方法

技术领域

本发明涉及的是一种分布式信息处理领域的技术,具体是一种基于有向无环图的快速异步共识实现方法。

背景技术

分布式系统依赖共识算法保证节点间信息的一致性。异步共识虽然对系统的时间假设没有要求,但也无法保证消息的时时性和有序性。现有的异步共识都是以非确定性的方式推进,让整个算法的终止会经历任意长的时间,致使系统的延迟增大。

基于有向无环图(DAG)实现异步共识,能让每个节点将收到的区块存储在本地,并单独根据自己的视角对区块进行排序。但现有的实现依旧存在定链耗时过长的问题。

发明内容

本发明针对现有技术对DAG进行排序定链的耗时过长的缺陷,提出一种基于有向无环图的快速异步共识实现方法,利用有向无环图(DAG)作为区块的拓扑结构,将半同步协议快速完成共识的方法应用到异步协议,实现基于DAG的具有快速共识路径的异步共识。

本发明是通过以下技术方案实现的:

本发明涉及一种基于有向无环图的快速异步共识实现方法,当节点提议投票后构建有向无环图(DAG),并在任一层的顶点数量满足条件后进行快速确认或硬币确认,最后以层为单位进行提交执行。

所述的快速确认是指:对任一层顶点的链接数进行统计,当该层顶点数量满足条件,则进行快速确认阶段,每个顶点均为积极状态或是消极状态中的一种。

所述的顶点数量满足条件是指:任一层中的3f+1个顶点均为积极状态或消极状态的任意一种,其中:

积极状态是指:下一层中存在至少2f+1个顶点与本顶点链接;

消极状态是指:下一层中存在至少2f+1个顶点没有与本顶点链接。

所述的硬币确认是指:任一层通过随机数随机决定一个主顶点(leader),由该主顶点对两层之前的顶点进行状态确认,即对于两层之前的顶点,当存在至少f+1条不同的通向主顶点的路径,则为积极状态;否则为消极状态。

本发明涉及一种实现上述方法的系统,包括:客户端交易处理模块、本地DAG构建模块、快速确认模块、硬币确认模块和交易提交执行模块,其中:客户端交易处理模块基于客户端请求生成区块并广播至其他分布式的系统节点;本地DAG构建模块接收来自其他节点的消息,并根据消息内容构建本地的DAG视图;快速确认模块判断DAG中的每一层是否满足快速确认条件,当满足则执行快速确认,确定该层节点是积极状态还是消极状态;否则该层的节点状态由硬币确认模块;硬币确认模块用来确认不符合快速确认条件的DAG层,根据硬币确认规则确定其节点状态;交易提交执行模块执行积极状态节点所对应区块的请求。

技术效果

本发明的快速确认路径让分布式共识系统的延迟大幅减小,客户请求只需经历三轮点对点的通信就能被执行。硬币确认路径确保那些不符合快速确任的层最终也能被执行,增大系统整体的吞吐量。

附图说明

图1为本发明系统示意图;

图2为实施例构建得到的DAG示意图;

图3为实施例快速确认示意图;

图4为实施例硬币确认示意图;

图5-图7为实施例效果示意图。

具体实施方式

本实施例涉及一种应用的分布式系统中的基于有向无环图的快速异步共识实现方法,基于n个共识节点,其中可以做出任意的攻击行为,但不能破坏密码学的原语的拜占庭节点数量为f,要求f

如图1所示,本实施例具体包括以下步骤:

步骤1、提议投票:每个节点在每轮开始时向所有节点发送预处理(pre-prepare)消息,其他节点收到后检验其中的信息,当符合投票要求,则广播准备(prepare)消息表示对该区块投票支持;当节点收到2f+1个针对同一区块的prepare消息后,发送完成(ready)消息,表示已经知晓大部分节点对该区块的认可,当节点收到2f+1个针对同一区块的ready消息后,该区块即完成提议投票阶段。

所述的预处理消息包括:本轮该节点所要提出区块的信息。

所述的提议投票,通过让节点完成对区块的广播和投票,确定每轮区块的唯一性。作为一个异步共识实现,本方法在该阶段需要发送两种投票信息(prepare和ready),能让节点在进入下一轮之前有更多时间构造本地的DAG视图,并尽可能完整的收到这一轮的区块信息,该设计和后续的DAG构建和快速确认阶段都有密切联系。

步骤2、每个节点的本地DAG构建:每个节点通过每一轮收到的消息按以下方式构建如图2所示的DAG,具体为:

a、每个区块对应DAG中的一个顶点(vertex),共识过程的每一轮对应DAG的一层,DAG每层最多存在3f+1个顶点;

b、一个区块在收到2f+1个prepare支持票后被加入到节点的DAG中;

c、第r层的顶点链接至少2f+1最多3f+1个r-1层的顶点,这些顶点是在r层区块被提出时在r-1层收集到至少2f+1个prepare支持票的区块对应的顶点。

当任一节点发现本地DAG中的一层中存在2f+1个顶点时,就可以进入下一轮,即返回步骤1,同时并行的进入步骤3的判断,判断DAG的上一层是否满足快速确认条件。

步骤3、以层为单位进行快速确认:当满足第r+1层中存在2f+1个顶点时,判断第r层是否满足快速确认条件,当满足则执行快速确认,之后执行步骤5;否则执行步骤4。

所述的快速确认,即对r层顶点的链接数进行统计,当第r层满足快速确认条件,并经过快速确认阶段后,每个顶点均为积极状态或是消极状态中的一种。

第r层能被快速确认的条件为:r层中3f+1个顶点都满足以下两种情况中的一种:

a、第r+1层中存在至少2f+1个顶点与其链接,即积极状态;

b、第r+1层中存在至少2f+1个顶点没有与其链接,即消极状态。

如图3所示,为快速确认的时机,第r层经过快速确认后,A、B、C三个顶点处于积极状态,顶点D处于消极状态。

步骤4、基于随机源的硬币确认:每一层都会通过随机数随机决定一个主顶点(leader),由该主顶点对两层之前的顶点进行状态确认,即第r+2层的主顶点确定第r层顶点的状态。

为防止随机主顶点不存在或者链接错误,当主顶点确定后需要先检验其合法性,只有当主顶点合法时,才以它来进行硬币确认。第r层主顶点合法的条件为:第r+1层中存在至少f+1个顶点链接它。当第r层的主顶点不合法,则硬币确认阶段暂缓,直到第r+2k(k>0)层的主顶点合法,通过递归的方式返回来确认。

所述的状态确认是指:对于第r层的每个顶点,当存在至少f+1条不同的通向r+2k(k>0)层合法主顶点的路径,则为积极状态;否则为消极状态。下图展示第r层的硬币确认过程。第r+2的灰色顶点为随机产生的主顶点,其被大于f+1个r+3层的顶点链接,因此是合法的主顶点,能对第r层进行硬币确认。第r层中的A、B、C三个顶点都存在至少f+1条不同的通向主顶点的路径,处于积极状态,而顶点D则是消极状态。

步骤5、以层为单位进行提交执行:第r层能被提交必须同时满足以下两个条件:

a、第r层完成确认阶段(无论快速确认或是硬币确认);

b、第r-1层完成提交执行阶段(第1层除外)。

当一层提交后,这一层中处于积极状态的顶点对应的区块就可以被执行,并且在DAG中向前追溯,所有被这一层中处于积极状态的顶点链接,且没有执行过的顶点也在此时被执行。条件b保证所有区块以层为顺序依次执行。

经过具体实际实验,在aws平台租用服务器部署上述系统,测试系统的吞吐量和延迟,并与现有的Tusk算法(Danezis G,Kokoris-Kogias L,Sonnino A,etal.Narwhal andTusk:a DAG-based mempool and efficient BFT consensus[C]//Proceedings oftheSeventeenth European Conference on Computer Systems.2022:34-50.)和BullShark算法(Giridharan N,Kokoris-Kogias L,Sonnino A,etal.Bullshark:Dag bftprotocolsmade practical[J].arXivpreprint arXiv:2201.05677,2022.)进行对比。

实验测试本系统在节点数量n=4、10、100不同规模下的性能。所有节点分布在俄亥俄、新加坡、东京、加拿大中部、法兰克福五个区域,相互之间的平均ping延迟在135ms左右。

测试结果如图5-图7所示(分别表示系统在节点数量n=4、10、100时吞吐量和延迟的变化曲线):图中纵坐标是延迟,横坐标是吞吐量,每条曲线表示:随着系统请求压力的增大,吞吐量不断增大,直到达到系统所能承受的极限,此时吞吐量不再上升,延迟增大。曲线前半段平坦的部分表示系统在轻负载下的延迟。曲线垂直向上的拐点表示系统的最大吞吐量。

本发明与Tusk算法的对比:

Tusk同样是基于DAG设计的共识协议,但没有快速确认机制,所有顶点的确认提交都需要依赖随机确认的主顶点。整体系统的期望延迟是本方法的3倍。Tusk每两层产生一个随机的主顶点,当系统中有节点故障时,主顶点不合法的可能性随之增大,整体延迟也进一步增大。本方法提供快速确认路径,该路径不受故障节点的影响。因此当系统中存在故障时,Tusk的期望延迟是本方法的5倍。本方法的鲁棒性明显优于Tusk。

当本方法的快速确认条件不满足,所有层的顶点都通过硬币确认阶段确认,整体系统延迟会比Tusk大1/2个轮次。

本发明与BullShark算法的对比:

BullShark的快速共识路径基于半同步的时间假设,需要预先设置超时参数和同步主顶点列表,在网络波动较大或者系统存在故障节点时,都依靠触发超时机制来推动协议进行。本方法是纯异步算法,与BullShark相比在广域网环境下有更强的自适应性和鲁棒性。在节点间延迟不对等的情况下,BullShark需要等待慢节点的投票,会使系统整体的共识延迟增大。而本方法的轮次推进只依赖于最快的2f+1个节点,系统不会被最慢的节点拖累。在节点间延迟相差很大的情况下,本方法比BullShark的延迟更低。

本方法不能保证所有节点提出的区块都被执行,而BullShark算法的DAG中,每个顶点可以链接更低轮次的尚未被链接的顶点,最终保证合法的区块一定能被执行。BullShark在节点公平性方面更有优势。

与现有技术相比,本方法中的快速确认阶段让大部分区块能在5个通信轮次后完成确定,并且跳过随机过程,极大程度地降低共识系统延迟。本方法使用纯异步的时间假设,不用预设超时参数,使系统更加适应广域网大延迟的应用场景。本方法利用DAG作为区块的拓扑结构,让共识节点行为更加协同,在大规模节点系统中时也能保证稳定的性能。本方法中对节点消极状态的判断使系统能快速发现故障节点,保证系统的强鲁棒性,当系统中有至多f个节点故障后,依旧能以快速确认的模式推进协议。本方法将部分传统共识协议中的投票、定序消息与DAG中的前后顶点链接相结合,使节点能通过本地的DAG视图得到共识信息,减少系统的信息交互负载。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

相关技术
  • 通过流言协议实现有向无环图共识算法的系统和方法
  • 基于有向无环图的支持合约的分布式账本共识方法与系统
技术分类

06120115847414