跳至内容
0%

什么是 Ethereum 承诺级别?

Alchemy team headshot

作者 Alchemy

发布于 2022年9月13日2 分钟阅读

Beacon Chain 引入了两种新的 Ethereum 承诺级别,safefinalized,用于标记区块,与 PoW 链上已有的 latest 标签并存。latest 区块标签指的是最近添加到 Ethereum 区块链上的区块,也称为"头部"(head);safe 承诺级别落后当前 epoch 一个 epoch(即 32 个 slot);finalized 承诺级别落后于最近标记为 safe 的区块一个 epoch。

Ethereum 承诺级别之所以有用,是因为它们为 web3 开发者提供了有效的原语,用于查询由 Ethereum 权益证明算法变更所带来的不易发生重组的区块。

由于开发者对 justifiedfinalized 区块不易被重组有更高的保证,他们可以在智能合约和去中心化应用中构建更强的假设。

什么是区块高度?

区块高度是用于标示区块添加到区块链上顺序的数值。 例如,如果正在构建和验证的待定区块的区块高度为 100,那么最近验证的区块(即 latest 区块)的区块高度将为 99。

什么是链重组(re-org)?

链重组是指已添加到规范链(即主链,或最长链)上的区块被移除并被另一个区块替代的情况。重组会影响结算终局性,因为添加到规范链上的区块可能通过重组被改变。

由于漏洞利用以及最大可提取价值(MEV)都可能导致重组发生,因此开发者若信任最新区块已经结算,是一个难以成立的假设。

随着从工作量证明迁移到权益证明,Ethereum 的 Beacon 链引入了 safefinalized 区块承诺级别,为开发者提供更强的保证。

什么是 epoch?

在合并后的 Ethereum 环境中,Beacon Chain 引入了 slot(构建新区块的机会)和 epoch(等于 32 个 slot)的概念。 由于新区块可以精确地每 12 秒验证一次,一个 epoch 等于 6.4 分钟。

在每个 epoch 中,Beacon Chain 会随机选出一组验证者委员会,对添加到区块链上的区块的有效性进行认证。safefinalized 区块承诺级别是基于 epoch 来确定的。

虽然每个 epoch 有 32 个 slot,但在极少数情况下(不到 1%),某个 slot 可能不会有区块被验证,因此有些 epoch 可能少于 32 个区块。一种可能的原因是被随机选中的验证者不在线。

什么是 Ethereum 承诺级别?

Ethereum 承诺级别是用于将已验证区块标记为 latest、justified 或 finalized 的标签,为开发者提供关于区块被重组可能性的某些保证。

1. Latest

‍_latest_ 区块是 Ethereum 验证者最近构建并验证的区块。使用 latest 区块时应保持谨慎,因为无法保证 Beacon Chain 不会发生重组,此时该区块会成为叔块(Uncle Block),即未被添加到规范链上的区块

2. Safe

‍_safe_ 区块是已收到 Ethereum 验证者集合三分之二认证的区块。safe 区块被认为不易被重组。

例如,safe 区块发生链重组的少数可能情形之一是网络遭受大规模、协调一致的攻击。

3. Finalized

finalized 区块是落后于最近一个 justified 区块一个 epoch 的 justified 区块。finalized 区块极不易被重组,唯一的例外是三分之二多数的验证者最终确定了一条竞争性区块链。

safe 和 finalized 承诺级别是如何确定的?

safe 和 finalized 承诺级别是根据 epoch 的完成情况来确定的。让我们以合并(The Merge)之后的前三个 epoch(epoch 0、1、2)为例,来说明 safe 和 finalized 区块是如何运作的。

  • Epoch 0 = 区块 0-31
  • Epoch 1 = 区块 32-63
  • Epoch 2 = 区块 64-95
  • Epoch 3 = 区块 96-127

假设当前最新区块是区块 96,它标志着 epoch 3 的开始和 epoch 2 的结束。

由于区块 96 包含了对区块 64 的认证(即验证者投票表明提议的规范区块头为真),一旦 Beacon Chain 收到三分之二验证者的认证,区块 64 就会被标记为 justified(safe)

一旦区块 64 被标记为 justified 并标记为 safe,此前的 justified 区块就会被标记为 finalized。由于 safe 和 finalized 区块都出现在 epoch 的开始处,区块 32(epoch 1 的第一个区块)会被标记为 finalized

如果当前区块高度为 96,还可以这样来理解:

  • 区块 96(epoch 3 的开始)= latest
  • 区块 64(epoch 2 的开始)= justifiedsafe
  • 区块 32(epoch 1 的开始)= finalized
Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。