BBFT和FBFT/hot tuff有什么区别?

技术BBFT与FBFT/HotStuff的区别有哪些本篇内容介绍了“BBFT与FBFT/HotStuff的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这

本文介绍了关于“BBFT和FBFT/hot tuff有什么区别”的知识。很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

00-1010近日,BYTOM技术团队发布了Bystack区块链BaaS平台,其中包含了针对侧链的共识算法BBFT(Bystack Bystack拜占庭容错)。在本文中,作者将阐述BBFT试图解决的问题,并分析BBFT与其他共识协议的主要区别。BBFT是PBFT的变形,原理和PBFT一样。要想深刻理解BBFT的匠心,必须进入PBFT的语境。早在区块链比特币流行之前,PBFT就作为一项共识协议存在于世界上。由卡斯特罗和利斯科夫于1999年发明,是一个有着20年历史的经典设计。它的发明是为了解决分布式系统中的一个经典问题:拜占庭一般问题。时至今日,PBFT仍然包含着许多值得反复推敲的巧妙思想,不断激励后人发明更好的协议。

前言

PBFT是一个有两轮投票的三阶段协议。每个视图将有一个特定的节点作为主要/领导者,负责通知所有节点进入投票过程。每个节点将经历预准备/准备/提交三个阶段,并根据收到的消息决定是否投票/进入下一阶段。每个节点投票后,它会将消息发送给所有其他节点。如果每个节点在两阶段投票后达成多数共识,则每个节点可以更新该机器的状态并结束这一轮。视图更改仅在大多数节点启动时执行。当前领导节点不正常执行任务时,可以替换当前领导节点,保证协议正常运行。

PBFT基本的运作流程

PBFT与中本聪共识(区块链)有着截然不同的特点:PBFT是一个共识协议,具有许可制度、基于领导者节点、基于沟通和对活动的安全性。

Permissioned):PBFT不是完全开放的,因为PBFT需要让节点能够验证彼此的消息,准确掌握节点数量,区块链是一个不允许的系统,对所有人开放。

以领导为基础:即先决定领导,再由领导发出建议。这样做最直接的好处是,你不需要浪费自己的计算资源来获得成为领导者的机会。但缺点是只有眼界变了,成为领导的机会才不公平,没有加入网络的动力。区块链是在几个方案中选择工作证明难度最大的区块作为共识。虽然这会造成计算资源的浪费,但成为区块制造者的概率大致是公平的,与计算能力成正比。

基于通信:PBFT的安全基于三阶段投票。虽然不需要像工作证书那样消耗大量的计算资源,但是巨大的通信量也造成了可扩展性的瓶颈。——,即使是最实用的PBFT,也不能扩展到1000多个节点。不仅如此,PBFT使用消息认证码(MAC),要求每个节点每次投票都要验证一次消息,大量的签名/验证是另一个潜在的瓶颈。

Safety over Liveness):PBFT可以保证任何网络假设(同步/异步)下的安全性,分叉几乎不可能,因此具有即时终结的特点;另一方面,区块链是一个活动比安全更重要的网络,它的安全依赖于同步。而且,有多个共识(和分歧)是相当常见的,需要一定数量的块来“确认”以保证没有分歧的概率足够大。

00-1010首先,PBFT的每个节点在每一轮投票中都需要进行n-n的沟通。假设N为1000,每个共识至少需要100,000次通信。虽然PBFT已经是BFT家族中最实用的协议,但如此庞大的通信需求依然是扩容的瓶颈。

PBFT的特性

聚合签名

为了提高效率,一个直观的想法是避免n-n通信。我们可以在网络中指定一个节点作为协调器来发送/接收每个节点的投票,这样每个节点只需要向协调器发送消息,从而避免了n-n通信。但是,在这种情况下,协调器可能会作恶,因为协调器可以在实际收到指定数量的消息之前执行下一轮投票或更新状态。因此,我们可以使用门限签名来保证协调者的正确行为。门限签名可以保证超过门限数(t-of-n)的签名是有效的。也就是说,我们可以指定,只有当协调器收集到2f 1阈值签名时,协调器才能继续推进具有合法签名的共识。Harmony FBFT是一个BFT家族协议,它使用聚合签名来提高效率。

BBFT与FBFT/HotStuff的区别有哪些

图1: FBFT签名聚合

p>

管线设计

每个内容都必须经过二轮投票/三个阶段才能达成共识,如果有m个内容就需要执行2m次投票。管线设计(Pipelining)可以减少投票的次数,它的基本思路如下:让每个节点在投第 i 轮的prepare阶段时,同时也是对其前一个内容 i-1 的commit阶段投票。这样做便可以节省对同一个内容重复投票的冗余,大幅提升效率。这样的思路首见于2018年发表的HotStuff协议。

BBFT与FBFT/HotStuff的区别有哪些

图2:HotStuff Pipelining

只让部分节点参与共识:最小生成树

另外一种提高效率的方法,就是避免使所有的节点参与共识,这也正是比原链BBFT采取的作法。在BBFT中,节点分为三种:Consensus Node/Gateway Node/Leader Node,这些节点形成树的结构,树为网络中节点的最小生成树(Minimal Spanning Tree),可能由分布式算法得出,或是由外部服务提供。树叶的节点即为Consensus Node;树根为Leader Node;其他部分为Gateway Node。每种节点都有分别的任务:Consensus Node负责进行投票;Gateway Node则不需参与投票,但必须负责聚合由Consensus Node送来的签章;Leader Node负责与其他Leader Node交换讯息。BBFT的运作流程如下图所示,BBFT的共识过程,便是讯息由树根向树叶传播再回到树根的过程。

BBFT与FBFT/HotStuff的区别有哪些

图3:BBFT: Minimal Spanning Tree

BBFT与FBFT/HotStuff的区别有哪些

图4:BBFT Process

如何确保正确性(Safety and Liveness)?

在为PBFT带入新技术以提升效率的同时,也必须确保协议本身的安全性与活跃性。接下来我们来看看,上述的协议是如何确保这两者。

视域变换(View-change)

FBFT沿用了PBFT的视域变换,即在正常情况下并不更换领导节点,仅有当超过2f+1个节点发起视域变换才会更迭领导节点。视域变换虽然本身是一个能够替换作恶领导节点的机制,但它同时要求协议必须具有3个阶段,才能保证协议的安全性(即不分岔)。

领导节点轮替(Rotating Leader)

HotStuff另一方面则引入了领导节点轮替的机制,在每个回合都更换领导节点,如此来回避视域变换高额的通讯成本。领导节点轮替也常见于许多BFT家族的协议,算是目前保障安全性机制的主流。

混合式(Hybrid)

比原链BBFT则取各家所长,同时应用了视域变换与领导节点轮替,等于是上了双重保险。不过值得注意的是,目前的BBFT技术白皮书仅有一轮投票的模型,并未提出两轮投票/三阶段共识的模型。另外,领导节点轮替的顺序也将基于各节点的权益(Stake),若节点出现违反协议的行为则该节点会遭受惩罚。

“BBFT与FBFT/HotStuff的区别有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153660.html

(0)

相关推荐

  • 如何在添加新板时配置u-boot-env

    技术openwrt19.07添加新板时u-boot-env如何配置这篇文章主要介绍openwrt19.07添加新板时u-boot-env如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.在

    攻略 2021年12月17日
  • 一次性遍历当前文件夹下的所有Excel文件并导出为Flutter的ListData格式文档。

    技术一次性遍历当前文件夹下的所有Excel文件并导出为Flutter的ListData格式文档。 一次性遍历当前文件夹下的所有Excel文件并导出为Flutter的ListData格式文档。一次性遍历当

    礼包 2021年11月13日
  • 刷抖音点赞网网址,点赞下单平台?

    技术刷抖音点赞网网址,点赞下单平台?抖音粉丝排行榜,抖音粉丝是怎么来的,抖音粉丝多了怎么赚钱,抖音粉丝怎么变多,抖音粉丝怎么涨,抖音粉丝多少钱一个,抖音粉丝最多的人,抖音粉丝量怎么增加,抖音粉丝少怎么办?
    抖音上有很多人

    测评 2021年10月26日
  • 怎样结合Jexus+Kestrel 部署asp.net core生产环境

    技术怎样结合Jexus+Kestrel 部署asp.net core生产环境本篇文章为大家展示了怎样结合Jexus+Kestrel 部署asp.net core生产环境,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过

    攻略 2021年11月19日
  • mysql与sql的区别有哪些

    技术mysql与sql的区别有哪些这篇文章给大家分享的是有关mysql与sql的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql与sql的区别是

    攻略 2021年12月2日
  • 三、七天入门django开发

    技术三、七天入门django开发 三、七天入门django开发 - Django模型层前言
    Django 提供了完善的模型(model)层用来创建和存取数据,不需要我们直接对数据库进行操作。
    模型层是什

    礼包 2021年12月9日