Alaya共识方案详解(三):初识Giskard共识协议

2020-11-17 10:54 栏目:经验之谈 来源:网络整理 查看()

在前面的内容中,我们分析了BFT共识协议和几种主流优化BFT共识协议存在的问题。这些BFT共识协议在降低通信复杂度和阻塞效率方面取得了良好的研究成果,但仍有一定的改进空间。

Alaya共识方案详解(三):初识Giskard共识协议

与之前的BFT算法相比,PBFT算法更加实用,但由于O (N)的视图切换开销,在可扩展性上存在很大问题。

嫩薄荷将轮换与正常流程相结合,简化了视图切换的逻辑,降低了视图切换到o (n)的通信复杂度,但需要等待很大的网络延迟才能保证其活动。与此同时,Tendermint仍在串行发布和确认块,一个块的投票需要等到前一个块的提交完成后才能开始。

在EOS的BFT-DPOS共识协议中,块生产者可以连续生成几个块,同时并行确认块,提高了块输出速度。BFT协议用于确认阻塞,但它仅适用于强同步的通信模型。

Hot Stuff创新性地提出了基于leader节点的BFT共识协议,并分三个阶段提交,吸收了Tendermint的优点,将视图变更与正常流程融合,将视图变更的通信复杂度降低为线性。同时,通过简化消息类型,可以通过管道确认块。但是引入新的投票阶段也会增加通信复杂度,同时在一个视图窗口中只确认一个块,这无疑对视图切换的通信复杂度要求更高。另外,基于leader节点收集和投票的星型拓扑结构更适合Libra这种网络环境较好的联盟链,在网络环境较弱的情况下更容易出现单点故障,导致Leader节点切换开销较大。

因此,我们提出了Giskard共识协议,并在上述共识协议的基础上进一步优化,可以大大降低通信复杂度,提高阻塞效率。

吉斯卡尔共识协议概述

Giskard一致性协议基于部分同步网状通信模型,提出了一种三阶段一致性并行拜占庭容错协议。网状通信模型更适合于公共网络的弱网络环境,该协议已在Alaya上作为共识算法使用。

吉斯卡尔共识协议的正常流程类似于Hotstuff,分为准备、预委员会、提交和决定阶段。但Giskard也做了关键改进:可以在一个视图窗口中连续提出多个块,下一个块不必等上一个块到达QC;而且每个节点在接收上一个块的投票的同时,可以并行执行下一个块的事务,并以流水线的方式为该块投票,大大提高了块输出速度。

Giskard rd consensus协议有一个自适应视图切换机制:在一个视图窗口中,当一个节点收到足够多的块并投赞成票(超过2/3的节点投赞成票,即QC)时,它会自动切换到下一个窗口,而不必投viewchange。只有当时间窗口超时时,节点才会启动viewchange进程。在视图切换阶段,引入了与Hotstuff相同的两阶段锁定投票规则,并使用了BLS聚合签名,可以在O (n)的通信复杂度内完成视图窗口切换。

根据上面的讨论,Giskard rd consensus协议将只在正常进程之外执行viewchange,因此它将比HotStuff具有更少的视图切换开销。

然后,先给出吉斯卡尔共识协议中涉及的相关概念及其含义,以便后面详细介绍吉斯卡尔共识协议。

与Giskard rd共识协议相关的条款:

提议者:吉斯卡尔研发共识协议中负责阻止的节点

时间窗,每个提议者只能在他自己的时间窗内阻塞

n:共识节点总数

F:拜占庭节点的最大数量

足够多的赞成票:这意味着至少收到了N-f票

验证器:共识节点中的非提议者节点

视图:当前提议者的时间窗口可以产生块的时间范围

视图号:每个时间窗口的序号,随时间窗口增加而增加

最高的选区:当地最高的选区

建议者索引:建议者的索引号

验证器的索引号

准备块:建议的块消息,主要包括块和建议者索引号

prepare投票:验证者对提出的块的准备进行投票,每个验证者需要在发送prepare投票之前执行该块。主要包括视图号、块哈希、块高度和ValidatorIndex

视图变更(ViewChange):当时间窗口到期时,提议者的块没有收集到N-f PrepareVote,视图变更将被发送给下一个提议者。视图变更包含提议者索引和最高确认块

锁定:锁定指定的块高度

超时:超时(时间窗到期可视为提议者超时)

法定:允许的最大值

同一视图:两个视图的视图号相等,可以是同一个视图

BLS签名

目前,业界采用的聚合签名方案主要是BLS聚合签名。BLS集合签名是基于BLS签名方案的扩展方案。波尼-林恩-沙哈姆(BLS)签名方案是由丹波尼、本林恩和霍瓦沙哈姆[9]在2001年提出的。目前,BLS签名已经在很多区块链项目中得到应用,如Dfinity、Filecoin和Libra。BLS集合签名可以将多个签名简化为一个集合签名,这对提高BFT共识协议的通信效率非常重要。

值得注意的是,BLS聚合签名方法是有缺陷的。在获得其他签名者的公钥和标准BLS签名信息后,被称为流氓公钥的攻击可以使攻击者有机会操纵聚合签名的输出。

针对这种攻击最直接的防御措施之一是,那些参与BLS聚合签名的人需要证明他们已经掌握了BLS的私钥信息并提前注册。这个过程可以通过使用简单高效的零知识证明技术(Schnorr非交互式零知识证明协议)来完成。参与者需要在聚合签名前给出一个零知识证明,证明自己持有公钥信息,掌握公钥对应的私钥信息。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发