随机分配(shuffling)验证者,即每个分片区块都有一个随机选择的验证者委员会,确保如果攻击者控制的验证者少于总数的三分之一,其想要攻击单个分片在数学上是不可能的。
欺诈证明(fraud proofs),数据托管证明 (custody proofs) 和数据可用性检查 (data availability checks) 也是重要的安全组件。 目前的 eth2 计划是使用 64 个分片。虽然分片与信标链是独立运作,但我们还是会对整个系统的关键部分进行讲解。
分片已经揭示了以太坊信标链的作用和需求。我们也理解为什么要在传统区块链上增加新的元素。分片式公链的新兴领域总是欢迎有灵感的开发者创新。
以太坊 2.0 阶段
简而言之,以太坊 2.0 分为三个阶段:
阶段 0-信标链
阶段 1-分片
阶段 2-执行
与管弦乐队乐队进行类比:
阶段 0-指挥
阶段 1-乐器
阶段 2-乐手
所有阶段都是系统的重要组成部分,具有不同的特点。阶段 0 是以太坊 2020 年计划的一部分。阶段 1 一般来说比其他阶段更静态。阶段 2 一般是关于执行和代理的。
时隙 (slots) 和时段 (epochs)
信标链是以太坊 2.0 的心脏。它为系统的和谐与共识奠定了节奏。每个时隙是 12 秒,一个周期是 32 个时隙:6.4 分钟。
时隙 (slots) 是一个将区块添加到信标链和分片的机会。您可以想象,信标链和分片链是按步调编排的。当系统以最佳状态运行时,每 12 秒添加一个信标(链)块和 64 个分片区块。验证程序需要与该时间同步。
时隙 (slots) 类似于区块生产时间,但时隙 (slots) 可以是空的。信标链和分片的创世区块都在时隙 0 (slot 0)中产生。分片将在信标链时段 0(Epoch0) 的下一个时段开始运作,但无论是分片链还是信标链,都有自己的时段 0(Epoch0),且包含其创世区块。
验证者(Validators)、证明(Attestations)和信标链
虽然工作证明(PoW)与矿工相关联,但在以太坊 2.0 中,验证者是权益证明的 " 虚拟矿工 "。验证者积极参与以太坊 2.0 协议的共识。他们的激励机制将在后面的信标链验证者奖惩制度中讨论。
区块打包者(block proposer)是被随机挑选出来生产区块的验证者。 大多数情况下,验证者是对信标块分片区块进行投票的证明人(attester)。这些投票记录在信标链中。投票决定信标链和分片的头部。
在每一个时段(epoch)中,验证者被随机分配到一个时隙(slot)和分片中。该验证者参与到他所被分配的分片的共识中,从而他可以对该分片的分片头部进行投票。然后验证者将该时隙 (slot) 上的分片头和信标区块连接起来。
证明(attestation)是验证者的投票,通过验证者的余额进行加权。除区块之外,证明也会由验证者在系统中进行广播。
验证者也会互相监督,对举报其他验证者进行矛盾的投票或提出多个区块的验证者给予奖励。
信标链的内容主要是验证者地址、每个验证者状态、证明和到分片的链接。验证者由信标链激活,可以转换状态,这部分内容稍后将在信标链验证激活和生命周期中简要描述。
质押验证者(Staking Validators):语义
验证者是虚拟的,是由质押者激活的。在 PoW 中,用户购买硬件成为矿工。在以太坊 2.0 中,用户质押 ETH 以激活成为验证者。 我们可以将质押者(stakers)和质押金 (stake),验证者 (validators))和余额 (balance)联系起来。每个验证者拥有的余额最多为 32 个 ETH。不过,质押者可以质押他们所有的 ETH。每质押 32 个 ETH,就会激活一个验证者。
验证者通过利用信标(链)节点的验证者客户端运行。一个信标节点具有跟踪和读取信标链的功能。一个验证者客户端可以实现信标节点功能,也可以对信标节点进行调用。一个验证者客户端可以执行一个或多个验证者。
交联(crosslinks):将分片连接到信标链
交联是将信标链和分片链相连。在一个交联中,信标链紧跟分片链的头。由于有 64 个分片,每个信标块可以包含最多 64 个交联。一个信标块可能只有一个交联(如果在那个时隙中,没有验证者为其他 63 个分片提议区块的话)。eth2 第 1 阶段计划进行交联,将分片链连接到信标链,作为分片叉选择、分片链最终性和交叉分片通信的基础。所有分片链在任何时候都紧跟信标链。
委员会(Committees):介绍
一个委员会就是一组验证者。为了安全起见,每个 slot (在信标链和每个分片中)的委员会都有至少 128 个验证者。恶意攻击者控制一个委员会的 2/3 的概率不到万亿分之一。 以太坊信标链的概念来源于随机信标(randomness beacon)—— 为公众散发随机数这一概念。信标链在一个随机的过程(RANDAO)中达成共识。
RANDAO 随机过程根据验证者余额的权重,选择区块打包者(Proposers)。验证者可能是同一 slot 的提议者和委员会成员,但这不是常态。出现这种情况的概率为 1/32.因此我们大概会在每个 epoch 碰到一次。上图情景中的验证者不到 8192 个,不然每个 slot 就至少包含两个委员会。
这篇信标链的解释主要是关于信标链委员会:服务于信标链的验证者。一个(信标)委员会被随机地分配了一个分片,以便交叉链接到一个信标区块。没有固定的委员会。负责交联一个区块的委员会随每个区块的变化而变化。
单独构建区块链区块的分片链委员会将留作日后讨论。 许多分片区块可以由不与信标链交互的分片链验证者来构建,但是,一个分片要想与其他分片进行通信,就需要一个信标链委员会将其与信标区块进行交联。
该图是对三个 slot 中发生的情况的描述。
在 slot1 中,一个区块被提出,然后由两个验证者验证,而委员会 A 中的一个验证者离线。slot1 的验证和区块在网络中传播并到达许多验证者。
在 slot2 中,一个区块被提出,而委员会 B 中的一个验证者没有看到它,因此它证明信标链头就是 slot1 的块。注意这个验证者与 slot1 中的离线验证者不同。证明信标链头的验证者被称为 LMD GHOST 投票。在 Slot3 中,委员会 C 中的所有验证者都运行 LMD GHOST 分叉选择规则,并独立地验证同一个头。
在每个 epoch 中,验证者只能在一个委员会中。通常,有超过 8.192 个验证者 : 即每个 slot 有多个委员会。所有委员会的规模相同,并且至少有 128 个验证者。当验证者者少于 4.096 时,安全概率会降低,因为委员会的验证者少于 128 个。
委员会 (Committees):关键
在每个 epoch 中,验证者被均匀地划分为各个 slot,然后再细分为适当大小的委员会。来自该 slot 的所有验证者都对信标链头进行验证。该 slot 中的每个委员会都试图交叉连接一个特定的分片。随机分配 (shuffling) 算法会按比例增加或减少每个 slot 的委员会数量,以使每个委员会至少得到 128 个验证者。
举个例子,假定有 16384 名验证者,其中 512 名验证者被随机分配到 slot 1 中,另外 512 名被分配到 slot 2 中,以此类推。slot 1 中的 512 名验证者被进一步分成 4 个委员会,并被随机分配到分片中。
假设分片 33、55、22、11 是这四个委员会所分配到的分片。所有 512 名验证者都要在 slot 1 中发起 LMD GHOST 投票;其中一个委员会的 128 名验证者试图和分片 33 产生交联;另一个委员会的 128 名验证者试图与分片 55 产生交联;剩余两个委员会则试图与分片 22 和分片 11 产生交联。
在 slot 2 中,这个过程会重复一遍,512 名验证者同样分成 4 个委员会,然后被随机分配到分片中。假定他们被分配到分片 41、20、17、15 中。所有的 512 名验证者都要在 slot 2 中投票选出信标链头;同时这几个委员会也试图与分片 41、20、17、15 产生交联。 这个过程也会在该 epoch 剩下的 slot 中再三重复。
每个验证者在自己所处的 slot 中,可以进行投票、证明以及交联。在该 epoch 结束之后,所有 16384 名验证者都已发出过投票并且和分片进行过交联。
但到目前为止,验证者投票都是特定于 slot 而不是特定于 epoch 的。这就像给当地政府投票,而不是在更广泛的全国选举中投票。所有的验证者都没有对同一件事进行投票。接下来关于检查点 (checkpoints) 和最终性 (finality) 的部分,描述了验证者投下的特定于 epoch 的选票。在指定的时间段,所有的 16.384 个验证者也将对 epoch 的检查点进行投票。
信标链检查点(Beacon Chain Checkpoints)
检查点 (checkpoints) 是位于 epoch 第一个 slot 里的区块。如果这个 slot 内没有产生区块,则最近的前一个区块即为检查点。每个 epoch 都会有一个检查点区块;一个区块可能同时是多个 epoch 的检查点。
需要注意的是,从 slot 65 到 slot 128 之间是空缺的。Epoch2 的检查点本来应该是位于 slot 128.但因为该 slot 丢失了,所以 epoch 2 的检查点还是 slot 64 处产生的区块。Epoch 3 同理,slot 192 处空缺,因此 epoch 3 的检查点为 slot 180 处产生的区块。 时段边界区块(epoch boundary block)是一些文献(比如 Gasper 论文,也是上图的来源)中用到的一个术语,可以认为是检查点的同义词。
在发起一次 LMD GHOST 投票时,验证者也要为最近的 epoch 的检查点投票,投票者希望确立的新检查点叫做 “目标检点”(target)。这种投票叫做 Casper FFG 投票,而且投票中也会包含投票者认定的上一个检查点,叫做 “来源检查点”(source)。
在上图中,epoch1 中的一个验证者的投票将创世块作为来源检查点,然后推举 slot64 处产生的区块为目标检查点。在 epoch2.同一个验证者又为相同的检查点投票了 只有被分配到某个 slot 的验证者才需要为该 slot 的区块投票,但是,所有验证者都要为每一个 epoch 的检查点发起 FFG 投票。
绝对多数(Supermajority)
由所有活跃验证者总余额的 2/3 所支持的投票内容就是绝对多数(Supermajority)。 举例说明,假设有三个活跃的验证者 : 两个验证者的余额为 8ETH,一个验证者的余额为 32 ETH,绝对多数投票必须包含拥有 32 个 ETH 验证者的投票 : 尽管其他两个验证者的投票可能与该验证者不同,但它们没有足够的余额形成绝对多数。
最终性(Finality)
当一个 epoch 结束之后,如果其检查点得到了 2/3 余额的票数,也就是形成了绝对多数,那么该检查点就被证明 (justified) 了。 如果检查点 B 已经被证明,且位于其下一个 epoch 的检查点也被证明了,那么 B 就被最终确定了 (finalized)。一般来说,一个检查点会在两个 epoch 内得以最终确定,即 12.8 分钟。
平均来看,用户的交易总是发生在一个 epoch 的中间部分,那么距下一个检查点就还有半个 epoch 的时间,因此,一笔交易经过 2.5 个 epoch (16 分钟)就可以得到最终性(finality)。理想化情况下,超过 2/3 的证明会在一个时段的前 22 个 slot 内完成打包。因此,交易确认的平均时长是 14 分钟(16 + 32 + 22 个 slot)。区块确认则从区块证明,到被证明,再到最终性。用户可以自己选择是否等待交易最终确定,或者较低一点的安全性对他们也足够了。
信标链头发生了什么?
一个时段边界区块 (EBB) 在 slot96 处被提议,且包含了对 epoch2 中检查点的证明。Epoch 2 检查点的证明投票现达到了 2/3 的绝对多数,这意味着 epoch 2 的检查点被证明了,因此 epoch1 的检查点也得到了最终性。slot32 的最终性保证了之前所有区块的最终性。 当对检查点进行确定时,对确定的区块的数量并没有限制。虽然最终性仅在时段边界的时候产生,但证明 (attestations) 是逐个区块累加的,下文的“从创世区块到区块链头会发生什么”提供了另一种描述。 从 slot1 到 slot32 的信标块中包含的所有交联将导致分片链的确定。换句话说,当一个分片区块被交联到一个完成的信标块中时,它就得到了最终性。交联本身不足以使分片区块被确定,但有助于分片链的分叉选择。
从创世区块到区块链头会发生什么
用同样的方法,我们可以从创世区块发现一条故事线。从 slot1 到 slot63 的所有提议者都提议了一个区块,并且这些区块都被添加到链上。对于 Epoch1 中的每个块,它的检查点 (在 Slot 32 处的块) 累积了 55% 的验证者证明。验证者提议 slot64 的区块的同时也包括了 Epoch 1 检查点的认证。现在,70% 的验证者已经验证了 Epoch 1 检查点 : 这导致了它被证明。epoch2 的检查点 (slot64) 在 epoch2 的证明达不到 2/3 的绝对多数。验证者在 slot 96 处提议区块时,同时也对 epoch 2 处的检查点发起投票,所以这时候,epoch 2 检查点的投票达到了 2/3 的多数要求,也就是被证明了。Epoch 2 的检查点被证明的同时,epoch 1 的检查点以及所有此前的区块被最终确定了。
还有一种可能性,我们只考虑到 epoch1.epoch 1 的检查点可能在 epoch2 提议之前已经获得了绝对多数投票。譬如说,当 slot 32 和 slot 54 的区块被提议出来时,slot 32 的检查点的证明投票可能已经达到多数要求了。因而在这种情况下,检查点可能在 epoch 2 之前就已经被证明了。 最后一点,检查点可以在它现在的 epoch 中被证明,但是至少隔一个 epoch 才能被最终确认。 有时,一个区块被证明意味着两个甚至多个 epoch 以前的区块被最终确定。Gasper 论文里讨论了一些情形,只有在网络高延迟、网络隔离或遭遇强大攻击的情况下会出现这种状况。 对于分片及以太坊区块上的用户来说,最终性是非常重要的,它保证用户们的交易安全,降低了跨分片通信的复杂性。如果没有最终性,分片内部和分片之间的交易回滚会具有破坏性,甚至会使分片的好处作废。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//zqkj/3593.html