ZILLIQA白皮书中文翻译 第六部分 共识层

译者声明:本文内容为翻译ZILLIQA英文版白皮书,个人阐述均有注明。个人水平有限,如有错误,请不吝指正,谢谢!

共识层

前面提到过(译者注:好像是第5部分),分片DS委员会,分别在微块最终块上运行共识协议。在本节中,我们将介绍共识层,正是它定义了共识协议。在下面的阐述中,我们将分片和DS委员会统称为共识组。

A.  实用拜占庭容错(PBFT)

ZILLIQA共识协议的核心,依赖于Castro和Liskov提出的实用拜占庭容错(PBFT)协议。我们通过在PBFT协议中使用EC-Schnorr多重签名的来提高其效率。使用EC-Schnorr多重签名,可将正常情况下的通信延迟从O(n*n)【译者注:这里编辑不出平方,请大家见谅】降低到O(n),并将签名大小从O(n)减小到O(1),其中,n是共识组的大小(译者:应该可以理解为节点数量,下文中出现的n也是这个意思)。在本节中,我们只对PBFT进行简要的描述。

在PBFT中,共识组内的所有节点按顺序排序(译者注:这里的排序,应该是按照POW所计算的nonce值的递增排序)。这些节点里面,有一个主节点(或称为领导者),其他节点称为后补节点。每轮PBFT都有三个阶段,如下所述:

  1. 预备阶段: 在此阶段,领导者提出该组下一条应该达成共识的记录(本案例中是一个TX区块)
  2. 准备阶段: 在接收到预准备消息时,每个节点验证其正确性并向其他节点多播(译者注:本文中的多播,我理解为一对多的广播,一个节点向其他节点广播)一条准备消息。
  3. 提交阶段:当接收到超过个准备消息时,节点会向本组广播一条提交消息。最后,节点会等待超过个提交消息,以确保足够数量的节点做出相同的决定。因此,所有诚实节点都达成了相同的共识。

PBFT依靠一位正确的领导者开始每一阶段,并在(译者注:这里应该是指可靠的领导者数量)有足够多数的情况下继续进行。如果领导者是拜占庭节点(译者注:可以理解为作恶节点),它可以阻止整个共识协议。为了应付这种情况,PBFT提供了一种视图变更协议,用其他节点取代当前的拜占庭领导者节点。如果其他节点,在限定的时间内,没有看到任何进展,他们可以自主提出更换领导者的要求。如果超过的节点认定领导者是有问题的,那么很显然,此共识组将会被新的领导者将接管。

由于准备/提交阶段中每个节点的多播,正常情况下PBFT的通信复杂度为O(n*n)。

B.   提高效率

经典PBFT使用消息认证码(MAC)进行节点之间的认证通信。由于MAC需要在两两节点间共享密钥,因此,共识组中的节点要在同一记录上达成共识,每个节点的通信复杂度为O(n*n)。由于二次复杂性,当委员会有超过20个节点时,PBFT变得难以实现。

为了提高效率,我们借鉴了ByzCoin的点子:

  1. 我们用数字签名替换MAC,以便有效地将通信开销减少到O(n).
  2. 同时,为了允许其他节点验证协议,一种典型的做法是从多数诚实节点中收集签名并将其附加到协议中,这会导致协议大小与共识组的大小呈线性关系。为了改进这一点,我们采用EC-Schnorr将几个签名聚合成一个O(1)大小的多重签名。

尽管如此,我们不能在PBFT设置中直接使用经典的EC-Schnorr多重签名方案。这是因为在经典设置中,所有签名者都同意给指定的消息签名,并且签名仅在所有签名者都签名后才有效。在PBFT设置中,我们只要求消息由共识组中的超过个节点签名。所需的主要修改是,为参与签名的签名者维护一个位图B。如果第i个节点参与了此签名过程,B[i]=1, 否则B[i]=0。位图B由领导者创建。然后,任何验证者都可以使用此位图来验证签名。

C.   ZILLIQA共识

在ZILLIQA中,我们使用PBFT作为基础共识协议,并采用两轮EC-Schnorr多重签名来取代PBFT中的准备和提交阶段。下面解释对PBFT阶段的修改:

  1. 预备阶段: 与标准PBFT一样,领导者将TX块或语句(由领导者签名)分发给共识组中的所有节点。
  2. 准备阶段:所有诚实节点检查TX块的有效性,并且领导者收集超过个节点 的响应。这保证了领导者提出的陈述是安全的,并符合之前的历史。签名使用EC-Schnorr多重签名生成。领导者还创建了有关TX块上签名的节点的位图。
  3. 提交阶段:为了保证至少个节点掌握事实,超过的节点必须验证TX块。我们将执行第二轮EC-Schnorr多重签名。被签名的语句正是上一轮产生的多重签名。

在三个阶段结束时,领导者提出的TX块达成了共识。

D.   更换领导者

在我们的共识协议中,如果领导者是诚实的,它可以推动共识组中的节点不断地就新的交易集达成协议。但是,如果领导者是拜占庭式的,它可以故意延迟或丢弃来自诚实节点的消息,并减慢协议速度。为了惩罚这些恶意的领导者,协议会定期更改每个分片和DS委员会的领导者。从而防止拜占庭领导者永久地停止共识协议。 由于所有节点都是有序的,因此将在下一回合中选择领导者。

实际上,生成微块后,分片的领导者都会被更改,并且DS委员会的领导者也会在生成最终块之后进行更改。我们假设共识组的大小是n,然后在DS-epoch内,我们允许最多n个最终块,每个最终块聚合最多1个微块。(译者注:意思是最终块可以聚合0个微块吗?)

---------------------------------------------------------------------------------译文完 ----------------------------------------------------------------------------------------------------

译者个人总结

1. 分片在生成微块时的共识,DS委员会在生成最终块时的共识,是一个基于PBFT的共识协议。

2. ZILLIQA通过改进PBFT提高了节点间的通信效率,将通信复杂度从O(n*n)变为O(n)

3. 每轮生成微块和最终块后,分片和DS委员会的领导者均会被其他节点替换

4.每轮DS-epoch中,每个分片均提出的微块,DS委员会将其中的微块分别聚合成对应的最终块。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值