跳至內容
0%

什麼是 Ethereum 承諾層級?

Alchemy team headshot

作者 Alchemy

發布於 2022年9月13日閱讀時間 2 分鐘

Beacon Chain 引入了兩種新的 Ethereum 承諾等級(commitment level),safefinalized,用來標記區塊,與 PoW 鏈既有的 latest 標籤並存。latest 區塊標籤是指最近被加入 Ethereum 區塊鏈的區塊,也稱為「head」;safe 承諾等級是落後目前 epoch 一個 epoch(即 32 個 slot);finalized 承諾等級則是落後最近被標記為 safe 的區塊一個 epoch。

Ethereum 承諾等級之所以有用,是因為它們為 web3 開發者提供了實用的基礎工具,可以查詢那些因 Ethereum 的 Proof-of-Stake 演算法變更而不太可能發生重組(reorg)的區塊。

由於開發者對 justifiedfinalized 區塊不太可能被重組有更高的保證,他們可以在智慧合約與去中心化應用程式中建立更強的假設。

什麼是區塊編號?

區塊編號是用來標示區塊被加入區塊鏈順序的數值。 例如,如果正在建構和驗證中的待處理區塊編號為 100,那麼最近一次驗證完成的區塊(即 latest 區塊)編號會是 99。

什麼是鏈重組(re-org)?

鏈重組是指已被加入正典鏈(canonical chain,即主鏈或最長鏈)的區塊被移除並替換為另一個區塊。重組會影響結算最終性(settlement finality),因為已加入正典鏈的區塊有可能因重組而被更改。

由於重組可能因漏洞攻擊,以及最大可提取價值(Maximal Extractable Value,MEV)而發生,開發者若假設最新區塊已經結算,是一個難以成立的假設。

隨著從 Proof-of-Work 遷移至 Proof-of-Stake,Ethereum 的 Beacon chain 引入了 safefinalized 區塊承諾等級,為開發者提供更強的保證。

什麼是 epoch?

在合併後(post-merge)的 Ethereum 環境中,Beacon Chain 引入了 slot(新區塊被建構的機會)以及等於 32 個 slot 的 epoch。 由於新區塊每 12 秒即可完成一次驗證,一個 epoch 等於 6.4 分鐘。

在每個 epoch 中,Beacon Chain 會隨機選出一組驗證者委員會,對加入區塊鏈的區塊有效性進行驗證(attest)。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 三分之二驗證者集合證明(attestation)的區塊。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 的證明(attestation)(即驗證者投票表示提議的正典區塊頭為真),一旦 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 開發者產品與工具,並提供資源、社群與卓越的支援。