详解以太坊POS工作原理:Epoch、Slot与信标区块

WB3交流加微信:WX-93588,⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

运用权益证明的以太坊的独特性在于参加者数量的最大化规划。它答应成百上千和不计其数的验证者活泼地参加决策进程。在笔者撰文时现已有大约 50 万的验证者实体(从协议的角度而言)在活泼地参加这个进程。

事实上,在约 384 秒(6 分 24 秒)内,一切活泼中的验证者将有时机投下一票或提议一个区块。在约 384 秒内至少有 50 万条信息播送,而且一切信息有必要在严厉的时刻范围内传递。据我所知,没有其他一致协议被规划来处理如此活泼和巨大的一致参加者集。

至于通讯模型方面,一致协议是为以下三种情况之一规划的(通常):

  • 同步通讯一个遍及赞同和已知的信息传递超时时刻。

  • 异步通讯信息传递所需时刻没有上限, 但它终究会被发送。

  • 部分同步通讯在大多数情况下,都有一个已知的超时时刻,但零散的事情或许会破坏信息传递,时刻长短不一。

大多数现代一致协议都是为部分同步通讯而规划的,由于它假定大部分时刻条件杰出,但由于事情或许会在短时刻内中止通讯,所以存在不可猜测的时期。另一方面,值得注意的是,权益证明的以太坊是为同步通讯规划的。

题外话–Casper FFG 是为部分同步通讯而规划的,但 LMD-GHOST 的严厉计时条件迫使整个体系有必要同步。咱们将在今后的文章中解说什么是 Casper 和 LMD-GHOST。

它假定在绝大多数的验证者中几乎没有中止,而且一切的信息有必要在固定的最终期限前被记录在信标区块链上,这些信息才干被计入/运用。假如呈现中止,导致信息推迟传递,那么发送者将依据其推迟程度而招致赏罚。在最坏的情况下,假如错过了最终期限,那么音讯将被忽略,信息发送者将受到不活泼的最大赏罚。赏罚政策将在未来的文章中介绍。

为了更好地了解同步通讯模型,咱们涵盖了 Epochs & Slots 的主题。它界说了验证者被答应参加的时刻,以及环绕音讯传递的严厉时刻窗口。假如违反了时刻窗口,不管是什么原因,那么就不能确保其他验证者会就迟到的音讯抵达时采取行动。最终,咱们将介绍验证者怎么被分配到一个时刻槽(time slot),以及音讯怎么被记录在信标区块链中。

假如你想深化了解各种通讯设置,那么我建议阅览这篇文章。这里也有关于 ETH2 是部分同步通讯仍是同步通讯的精彩评论。

Epoch 和 Slot

解读以太坊POS作业原理:Epoch、Slot 与信标区块

每个 epoch 有 32 个 slot,每个验证者在每个 epoch 正好被分配到一个槽位。一个 slot 是一个 12 秒的时刻窗口,期间验证者可以参加权益证明协议,对新的信标区块进行提议或投票。

slot 按 epoch 分组,epoch 和 slot 为验证者参加权益证明协议扮演一个时刻表的人物:

  • Epoch一个包含 32 个 slot 的周期。

  • Slot一个验证者委员会在为期 12 秒的时刻里完成任务的窗口期。

一个 epoch 代表了权益证明协议的一个完好的回合, slot 为验证者供给了一个参加该回合的时机。在一个 epoch 结束时,一切活泼的验证者都有时机参加。

Slot 委员会一个验证者在一个 epoch 中正好被分配到一个 slot,一切验证者被平均分配到各个 slot,组成委员会。

一个 slot 里有两种人物:

  • 区块提议者(Block proposer) 一个验证者有时机向委员会成员提议一个区块。

  • 见证者(Attester) 一切剩下的委员会成员会为一个区块投票,他们信任那个区块应该会成为新的区块链头。

每个 epoch 有 32 个区块提议者(每个 slot 一个),一切验证者都有时机参加权益证明协议,向他们认为应该是标准信标链(canonical beacon chain)的链头投出一票。

解读以太坊POS作业原理:Epoch、Slot 与信标区块

一个 slot 代表了一个严厉的时刻窗口,供一个验证者提议一个区块,委员会成员对一个区块进行投票,最终将一切该 slot 的活动播送给下一个 slot 的区块提议者。

Slot 和时刻条件一切 slot 都是按照时刻次序一个接一个地发生的。每一个 slot 都精确地按照 12 秒一个被分配出来,并被分红三个阶段:

  • 提议区块指定一个验证者提议一个区块,并在前 4 秒内将其播送给一切委员会成员。

  • 投票周期一切其他委员会的成员都为一个区块投票(见证),他们信任,接下来的四秒内他们的投票就要被这个区块承受。

  • 播送投票在最终的四秒里一切委员会成员的投票应该被聚合起来并发送给下个 slot 的区块提议者。

一切的区块和投票都是在一个 slot 的委员会内进行播送。在委员会中有一个额外的人物,叫做聚合者,他们会在将证明传递给下一个 slot 的区块提议者之前将其聚合。他们是自选的,这是一个自愿的人物,以削减通讯的成本。咱们将暂时越过详细细节–由于这将在未来的文章中触及。

假如一个提议的区块或见证是在截止日期之后发布的,那么就不能确保该活动会被其他验证者认可。例如,一个迟到的区块或许会被越过,由于这个 slot 的见证者或许现已为其父块投了票。一个迟到的见证将被其他见证者在一个 epoch 中处理,最多迟到 32 个 slot,并有不同程度的赏罚。假如它在 32 个 slot 之后被发布,那么它将不会被任何验证者处理。

最终提醒一下,这个严厉的时刻窗口确保了运行验证者所需的带宽和核算能力的下限,由于他们有必要要有按时接收、处理、发送见证/区块的能力。

验证者委员会的分配

咱们在一个 epoch 里考虑分配验证者到 slot 里的进程。一切的 slot 委员会的规划大致相同。他们依据一个随机信标的输出完成分配,而且提早两个 epoch 进行。这要求运用一个混洗协议和一个同带信号传输随机性的源。

混洗协议一切验证者都依据一个叫 swap-or-not 的混洗协议被分配到一个 slot 里去。咱们不会去评论这个混洗协议的细节,而是会把注意力会集到随机信标的核算方法上,这个方法奠定了混洗协议履行方式的根底。

随机信标一切验证者经过一个随机信标被分配,这个随机信标运用了一个叫 RANDAO 的协议。其目的是在新的区块被增加到标准链上时经过聚合随机性来形成随机信标。

关于每一个新的区块而言,有两个阶段:

  • 提议发生的随机性(每个区块)一个新的信标区块包含了一个叫 randao_reveal 的特别值。它是一个区块提议者的 BLS 签名,用以充任区块的随机信标。它是确认的以防止被验证者篡改,可是不可猜测。

  • 混合随机性(每个区块)一切验证者从新的区块里取出随机信标并把它和之前一切聚合起来的区块的随机性混合。它形成了一个新值 mix,有或许作为混洗协议的候选。

正如咱们所能看到的,每一个信标区块都包含了一个随机信标,增加并会聚了一切之前的区块的随机性。

解读以太坊POS作业原理:Epoch、Slot 与信标区块

验证者们经过第 N 个 Epoch 最终的随机信标被分配到第 N+2 个 Epoch 的 slot 里

/* * 区块提议者在当前 epoch 号码上进行一次 BLS 签名 * 以充任这个区块的随机信标 * 一个非常好的地方在于签名是确认的(验证者无法篡改它),可是直到签名被核算出来之前都是无法猜测的 */

DOMAIN_RANDAO = 0x02000000; // 一个签名里包含的奇特数字epoch_hash = hash(current_epoch_number, DOMAIN_RANDAO); // 要签署的哈希码randao_reveal = BLS.sign(epoch_hash, sk); // BLS 签名是 RANDAO

/* * 运用区块的随机性,进行哈希核算,然后把哈希码混合到现在集合起来的随机性里 */

previous_mix = get_previous_mix(parent_block); // 来自父块的混合(Mix)randao_reveal = new_block.randao_reveal; // 取得新区块的randao

mix = previous_mix XOR hash(randao_reveal); // 核算新的混合store_new_mix(new_block); // 把新的“混合”(mix)和新的区块联络在一起

分配会提早 2 个 epoch发生一切验证者都会运用最终那个被承受的区块会聚起来的 mix 值作为随机信标,并在混洗算法中运用它。它会核算得出未来两个 epoch 的验证者委员会。

所以,假如咱们考虑现在的 epoch 为第 N 个,那么这个 epoch 里的最终那个信标区块会作为随机信标决议第 N+2 个 epoch 的委员会分配。

验证者们有充足的时刻查找它们被分配到的 slot,由于它们提早两个 epoch 就知道了。换句话说,未来 64 个 slot 的验证者的分配是早就公之于众了的 (约 2 个 epoch)。

随机信标的可偏倚性(bias-ability)只要一个 mix 能被混洗协议运用,那便是一个 epoch 中最终一个被承受的区块的 mix 值。

最终一个被承受的区块不会总是那个在第 32 个 slot 被提议的区块。而是最终一个 slot 的区块,也便是被一切验证者认可为区块链链头的那个区块。举个比如,假如第 32 个 slot 没有区块被提议发生(或者它迟到了),那么第 32 个 slot 的验证者委员会就会为之前在第 31 个 slot 被提议发生的前一个区块投票。

攻击者可以使用这点来使随机信标呈现误差。让咱们假定攻击者是第 32 个 slot 的区块提议者。他可以决议这么干:

  • 按时开释区块攻击者的随机性被混合在信标里

  • 暂缓区块强迫一切验证者为上一个区块投票,则攻击者的随机性不会被混合在信标里。

这种决议权使得攻击者可以使随机信标呈现 1 个字节的偏倚,并终究决议究竟两个验证者分配组合里中的哪一个会在未来的一个 epoch 里被运用。实际上假如攻击者操控了一个 epoch 里最终 N 个区块的区块提议者们,那么它们可以使用这个时机开释或暂缓开释一个 N 个区块的组合。现在还缺乏一项严厉的研讨,来了解针对最终 N 个 slot 的偏倚能力的悉数范围及其影响。

查看一个信标区块

解读以太坊POS作业原理:Epoch、Slot 与信标区块

一个信标区块的数据结构

一个独自的信标区块包含了它在信标区块链里所处位置的元数据、履行链的数据、以及权益证明协议的一份副本。咱们会在下文评论更多细节。

解读以太坊POS作业原理:Epoch、Slot 与信标区块

一个 slot 的区块提议者会测验扩展标准链,而且只能选择一个父块。

信标父块一个区块的提议者的方针是提议并增加一个新的信标区块到一个标准链的头。若要这么做的话,它们只能选择一个父块来进行扩展。父块应该是当前的链头,它在元数据中的代表是 parent_root。

解读以太坊POS作业原理:Epoch、Slot 与信标区块

Epoch 和 slot 组织验证者发生唯一一条标准信标区块链。

Slot ≠ 信标区块一个信标区块记录了它的 slot 号码的元数据(一个 epoch 号码的倍数)。它答应其他验证者查看区块提议者是否的确被指定为这个 slot 提议一个区块,这个区块是否便是被提议的那个区块。假如 slot 的号码过错,那么区块会被回绝。

要点在于,一个区块在区块链里的位置不会与它在其中被提议的 slot 号码相对应。举个比如,假如咱们查看第 5184157 个 slot,那么咱们会看到第 16015362 个区块,这种不匹配是无法防止的,由于无法确保一个被分配的 slot 里被提议的区块会被一切其他验证者投票经过,而且以太坊从开端到现在运行了超越 7 年了。

履行链数据区块提议者会提议两个区块,它们提议一个履行区块,给用户的交易排序,并把它附加到新发生的信标区块上。这并不奇怪,由于一致层的终究目的就在于为履行层决议标准链。

区块提议者相同担任从履行层搬运信息到信标层上,并使其准备好为权益证明协议所用。这包含:

  • ETH1 数据一个来自履行层的附加区块的区块哈希码。

  • 存款存款合约地址和一连串未记录的存款。

这要求一切的验证者运行一个信标客户端和一个履行客户端。这是必要的,由于验证者们有必要查看对应的 ETH1 区块并依据履行层规矩验证其有效性。相同地,正如咱们在关于注册进程的文章里评论的相同,存款有必要在一个特定的区块间隔期内从履行层上被搬运到一个信标区块上,否则信标区块会被回绝。

  • 元数据slot 号码、epoch 号码、随机信标和区块提议者

  • 罚没事情包含其他验证者的恶意行为依据,这些依据可用于赏罚它们

  • 投票前史记录一连串在这个区块链分叉上针对之前提议的信标区块的未被记录的的投票

  • 区块链分叉它选择了一个父块,并反过来界说了这个区块所延伸的标准链。

  • 验证者退出一连串已注册验证者的退出恳求。

经过记录下副本,每一个人都可以独立地回忆整个协议,而且绝对信任现在信标链的状态是正确的。比如说,恶意的验证者会被及时罚没,slot 和 epoch 的时刻表受到全体验证者的认可,绝大多数验证者都会以这种方式投票并发生独自一条标准链。

题外话,由于弱主观性的原因,尽管权益证明的记录可以使咱们信服一切前史活动都是按照规矩进行的,可是尚不足以向一个外部集体阐明这的确是那条实在的信标区块链。简略来说便是它供给了一个查看前史活动完好性的方法。

原文标题:《Epochs, Slots and Beacon Blocks》

原文作者:Patrick McCorry

原文翻译:John, ECN

来历:星球日报

此时快讯

【Lido:超15%的ETH供应量已被质押】金色财经报道,据质押服务平台Lido在社交媒体披露数据显示,当前15.04%的ETH供应量已被质押,数量约为18,104,137 ETH。
版权声明:本文收集于互联网,如有侵权请联系站长删除。
转载请注明:详解以太坊POS工作原理:Epoch、Slot与信标区块 | 币百度

相关文章