ZILLIQA白皮书中文翻译 第五部分 网络层

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

现在,ZILLIQA的已经将POW1和POW2合并为一个POW,但是白皮书还没有更新,所以这个第5部分,其实是已经废弃了,至少是不准确了,希望大家了解。本文仍然是翻译的之前的旧版本白皮书,译者会在官方更新白皮书之后,及时修改。

第五部分  网络层

ZILLIQA旨在对交易率进行扩展。 主要思想是分片,即将挖掘网络划分为小分片,每个分片能够并行处理事务。在本节中,我们将介绍网络分片交易分片

A. 网络分片

网络分片,即将节点网络划分为更小的子网络。其包括两步,首先,选择一组称为目录服务委员会的专用节点(DS委员会),然后对网络进行分片,并将其他节点分配给各个分片。下面我们会详细介绍此过程。

1. 目录服务(DS)委员会

为了便于网络分片,我们首先要选定一组DS节点,这组节点组成了DS委员会。DS节点的选择,是基于我们称为PoW1的工作量证明谜题。其算法如下:

                                                        

比其他节点更快地为POW1生成有效nonce值的每个节点,都为新DS块提出了一个区块头。前面说过,一个DS区块包含一个头部和签名。当一个节点完成Pow1,它仅仅生成了DS区块头。随后,这个区块头被广播到DS委员会的其他节点。然后,DS委员会就提议的DS块头部达成共识,然后构建签名部分。一旦 2/3 的DS节点对DS区块头签名,此DS块将会被提交到DS区块链上。

在引导阶段成功完成之后,后面的任何时间里,DS节点数目被限制为n0。最近时间成功挖出DS块的n0个节点,组成了DS委员会。

两个连续的DS块的出块平均时间称为DS周期(DS-epoch)。以某种方式设置DS-epoch的大小,尽量减少两个竞争块出现的机率。在DS-epoch开始时,一个新的DS节点将加入了DS委员会,而加入时间最久的成员将被移除。在DS-epoch期间,DS委员会的数量被锁定为n0。DS委员会的最新成员将成为领导者并领导在此DS-epoch间达成共识(具体见本文的第6部分)。这进一步导致对DS委员会成员的严格排序(译者注:尽力了,真翻译不出来这句到底是什么意思)。

可以确定,如果DS委员会的节点数目足够大(比如800以上),那么在委员会的n0个成员中,拜占庭节点所占比例能超过1/3的概率将会很低。

2. 解决冲突

我们的共识协议(将在第6节中介绍)不允许DS区块链分叉。当多个节点同时完成工作量证明时,可能会出现分叉。为了解决这种冲突情况,每个DS节点从接收的头中检索nonce字段,并按递增顺序对它们进行排序。我们假设第i个DS节点最大的nonce是.

DS委员会的领导者提出他自己的区块头(对应它见过的最大的nonce)并运行共识协议,以在此DS区块头上达成共识。然后,只有当相应的随机数大于或等于时,第i个DS节点才会接受所提出的区块头。一旦达成共识,DS区块的签名部分就会建立起来,最后商定的获胜者就会成为领导者。

3. 创建分片

DS委员会选举完后,就开始进行网络分片。节点为了参与共识协议,必须完成工作量证明(PoW2)。在每个DS-epoch开始时,重复分片协议。POW2的算法如下:

                                                                

然后,将计算出的PoW2的有效nonce值(和mixhash)广播到DS委员会各成员。DS节点将共同接受足够多的PoW解决方案,分成L个共识委员会或分片,每个委员会或分片有n0个节点以达成共识。一旦DS委员会领导者收到足够多的PoW2解决方案,他就会启动一个共识协议,对方案达成一致。在共识协议结束时,领导者生成由DS节点签名的EC-Schnorr超级签名。为了进行下一步,必须有超过2/3的DS节点就可接受的PoW2的结果达成一致。

分片程序通过一个确定的方法将节点分配给分片。 我们假设需要有L个节点数量为n0的分片。之后我们将按照nonce值的递增顺序给每个节点排序,并将前n0个节点分配给第一个分片,将下一个n0数量的节点分配给下一个分片,依此类推。在分片中,最大nonce值的节点被选为领导者。这进一步促使对分片中各节点成员的严格排序。

我们都清楚这一点,如果n0足够大(比如800以上),那么在每个分片中,拜占庭节点所占比例超过1/3的概率将会很低。

B. 公共频道

DS节点在公共频道上发布确定的信息,包括DS节点的身份和连接信息,每个分片中的节点列表,以及交易的分片逻辑(在本文D小节中详述)。公共信道是不可信的,并且假定所有节点都可以访问。 在我们的实现中,我们的广播原语实现了这样的公共频道。

在我们区块链上提交交易的用户,可以在处理此交易的分片上获取信息来验证此交易。在公共频道上发布的信息,将由超过2/3的DS节点签名,任何节点和用户都可以对此信息进行验证。

C. 新加入ZILLIQA节点的节点

新节点加入网络,可以尝试完成PoW1成为DS节点或完成PoW2成为分片中的成员。为此,需要从区块链获得关于PoW1或PoW2所需的随机性的信息(译者注:这里理解为POW的计算结果)。一旦得到了此随机性信息,新节点就可以将其提交给DS委员会。

D. 交易分片和处理

如第五部分A节所述,网络分片创建了分片,每个分片都能并行处理交易。在本节中,我们将介绍如何将特定交易分配给分片以及如何处理交易。为此,我们使用式子B:表示帐户A发送n个 ZIL到帐户B的交易。

1. 交易分配

任何像交易B都可以由单个分片处理。假设共有L个分片,它们的编号是从0到L-1。 每个交易都要分配给确定的分片,而这个分片是通过发送者地址(即示例中帐户A的地址)的最右边的(log2L )+ 1位来确定的。由于帐户地址是160位整数,L被限定为:

                                                                            

实际上,L的值会小于100.

一旦识别到指定的分片,交易将被广播到分片中的多个节点中,然后这些节点会进一步地广播它。一旦交易到达所分配的分片的领导者节点,领导者会将此交易包含在TX块中,然后运行共识协议。

通过每个交易中存在的随机数nonce,可以轻松检测双重花费(或重放攻击)。前面提到过,每个交易都有一个nonce,用于计录帐户发送的交易数量。一旦交易进入交易区块链,帐户中的nonce状态将会更新,从而处于全局状态。nonce值小于或等于全局状态中值的交易将被矿工拒绝。

交易分片按照交易发送者的账号地址来划分,来自同一发送者的所有交易都将在同一个分片中处理,允许每个分片成员检测其是否双花。

2. 交易处理

委员会中的所有节点都可以发起交易(译者注:这里应该是指整个ZILLIQA网络的节点)。这些交易被发送给领导者,以运行共识协议,其中的一些交易会构成下一个TX块。每个分片提出的块称为微块(其类型值由0X00表示),每个微块都包含一个分片中超过2/3的节点签名的多重签名。领导者还构建了一个位图B,用于标识签名者的公钥。如果此分片中的第i个节点在TX区块头里面签名了,那么B[i]=1。当分片在TX块上达成共识时,其领导者将向一些DS节点多次广播区块头和签名(译者注:这里应该是指微块,包括区块头、数据、签名3部分)。随后,DS节点将在DS委员会里面广播,此块将会找到DS的领导者。块的数据部分可以异步发送到各个节点。

DS委员会汇总所有微块,并在它们之间运行另一轮共识协议,然后以最终块的形式达成共识。最终块是TX块的一种,其类型用0x01表示。最终块有一个超过DS委员会2/3的节点签名的多重签名。DS委员会的领导者构建了一个位图B,用于识别签名者的公钥。如果此分片中的第i个节点在TX区块头里面签名了,那么B[i]=1。然后将最终的块头和签名多播到每个分片中的一些节点。DS节点不发送实际的TX块数据。

在每个分片中,采取以下步骤来处理最终块:

  1. 分片中的每个节点使用DS节点的公钥验证EC-Schnorr多重签名。如果签名对位图表示的2/3以上的公钥有效,则节点执行下一个检查。
  2. 对于最终块区块头中包含的每个交易哈希,节点将检查其对应的交易内容是否可用。如果相应的交易是由节点所属的分片提出的,那么交易数据的哈希值将与最终块头中包含的哈希值进行比较。如果交易是由其他分片提出的,则交易数据将跨片共享。
  3. 一旦交易数据可用,就重建最终块的数据部分,并将TX块附加到本地交易区块链。相应地,帐户状态和全局状态会更新。
  4. 如果交易内容不可用,则该节点会在其本地帐户视图中,暂时使该交易的发送帐户无效,从而拒绝该帐户的任何其他待处理的交易,直到本地交易内容可以与全局状态同步为止。这种被拒绝的交易将由发送节点重试。

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

译者个人总结

1. 网络分片分为两步,一是通过POW1选出DS委员会,二是将其余节点通过POW2分在不同分片上。现在已知这个POW1和POW2已经合并为一个POW了,也就是,通过一次POW,能选出DS委员会,且能将其余节点分在不同分片上。

2.交易首先由分片打包,生成微块,然后上传给DS委员会,如果幸运,能被DS节点确认并签名,生成最终块。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值