区块链是伴随着虚拟货币的诞生而产生的区域性块状链接。它的出现使许多企业开始亲自投资或走出去。区块链也有很多专业术语,BFT就是其中之一。在区块链的语义中,BFT共识是一种试图让N个验证节点(其中最多有F个拜占庭节点)就一个无限增长的提议(块或事务集)序列达成一致的机制。
众所周知,基于BFT的经典一致性算法,无论是PBFT还是改进的HotStuff,在网络不稳定的情况下,通信复杂度高、扩展性差、时延大。
近年来,随着DAG技术在区块链的广泛应用,基于DAG的BFT共识被提出并不断完善。DAG的高效实现及其天然的异步通信机制在提高共识的可扩展性、缩短确认时间和提高事务吞吐量方面具有明显的优势。但DAG作为一种异步操作,没有全局排序机制,运行一段时间后很可能导致节点间存储的数据出现偏差。在这种背离下,如何最终就序列达成一致,是DAG共识的关键。
基于发展议程的BFT共识
DAG,英文全称有向无环图,中文意思是有向无环图。
图由两部分组成:顶点和边。所谓有向无环图,其实就是有向边,不会在图中形成闭环。
以上是有向树、DAG图、有向图的示意图,从中可以看出它们之间的区别:
1.有向树:每个顶点只能指向一个之前的顶点,整个数据有明显的流向。
2.DAG图:每个顶点可以指向多个之前的顶点,整个数据流也有明显的方向性。
3.有向图:与DAG不同,有向图允许数据回流,整个结构的数据流方向不明显。
DAG在共识中的应用
在基于DAG的共识中,每个共识消息包含一个提议(一个块或一组事务集)和一组对先前消息的引用。这里的引用可以理解为:每条新消息必须明确指向之前的几条消息,对某条消息的引用表示对该消息的赞同和投票。
在DAG图中,消息是一个顶点,它的引用是一条边。因此,所有共识消息一起形成一个增长的DAG图。
基于DAG的共识可以分为两层:
1.网络通信层:负责可靠地传播和接收提案和投票消息,并将消息绘制成DAG图。
2.零通信开销的排序层:在不发送额外消息的前提下,每个验证节点仅通过解析其本地DAG副本就能独立提取提案的公开顺序,并能保证所有验证节点最终就提案的串行提交顺序达成一致。
从消息的生成到消息的最终提交,由于网络的异步性,不同验证节点上的DAG视图随时可能略有不同,因此如何保证所有验证节点最终在提交顺序上达成一致是所有基于DAG一致性算法的重点和难点。
与传统BFT的比较
基于BFT的经典共识算法,无论是PBFT还是改进的HotStuff,都需要一个领导节点来收集事务生成的块,广播并接收其他节点的投票。经过三个阶段的交互(预准备、准备和提交),最终就块提交达成共识,协议依赖于节点间共识消息的可靠传递。
基于DAG的一致性,利用DAG图抽象出网络通信层,将消息传播与一致性逻辑(提议排序)分离。这种分离的好处是每个节点可以异步计算共识状态和提交顺序,从而减少通信过程中的延迟和网络开销。此外,DAG的高效实现使得基于DAG的共识具有良好的可扩展性和高吞吐量。
基于车轮的BFT共识
在基于循环的DAG中,每个顶点都与一个循环数相关联。每个验证节点每轮只广播一条消息,每条消息至少引用前一轮的NF条消息。也就是说,为了晋级R轮,验证节点首先需要从r-1轮中的不同验证节点获取NF个消息。
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信(j7hr0a@163.com),我们会及时处理和回复。
原文地址"bft0,bft3":http://www.guoyinggangguan.com/qkl/150718.html。
微信扫描二维码关注官方微信
▲长按图片识别二维码