在Eth2,最終敲定後會發生什麼?

來源 | @prysmaticlabs

作者 | Raul Jordan

區塊鏈的一個基本屬性是“最終確定性 (finality)”,它的大概意思是經過一定時間后,被打包到權威鏈的交易是極其困難,甚至幾乎不可能回滾的。Eth2 在協議上有一個“明確的”機制是關於鏈的最終確定性的,它區別於現在使用 PoW 機制的比特幣和以太坊上的“概率性”最終確定性。

在工作量證明中,共識從根本上說是一場全球競賽,其中第一個挖出有效區塊的幸運礦工會獲勝——比賽方式是找出計算難度問題的數學方案。因此,出塊時間是概率性的。越多的區塊被打包到區塊鏈上,回滾就越難,因為每個區塊都代表了構建區塊所需的電力和算力的累積總和。由於防止攻擊者能夠回滾今天的比特幣和以太坊區塊鏈是有切實的物理保證的,我們可以把超過一定時間的交易看作“被最終敲定了 (finalized)”。

然而,權益證明機制的以太坊不是基於概率性最終敲定來運作的。相反,它把最終確定在協議上作了明確規定——“如果超過三分之二的驗證者對區塊鏈頭正確投票了,經過一段很長的時間后,我們就認為這個特定檢查點以前的所有交易都被最終敲定了”。最終確定性是明確的,而遵循協議的節點將無法回滾最終敲定的檢查點 (checkpoint),因為不管共識權重如何,這在根本上是不可能的。

在 Eth2 里,最終確定性的機制是什麼樣的?

Eth2 是一個同步協議,它用“檢查點"機制進行記賬。本質上是一個驗證者集被分配到一個有 32 個 slot  的窗口,履行出塊或對區塊投票的職責。其中,每個 slot 是 12 秒,而 32 個 slot 構成一個 epoch。在一個 epoch 里,有 32 個驗證者被分配到擔當區塊提議者 (block proposer),其他驗證者都擔當證明者 (attester),他們要給每個 epoch 里被提議的區塊投票。

每個 slot 里只會分到一個區塊提議者,但會有多個“證明者”

例如,Alice 在 slot 4 被選為區塊提議者,而 Bob、James、Charlie 和 Susan 都被選為證明者,這意味着他們都要對 Alice 提議的權威區塊投票。

Eth2 使用 Casper 權益證明共識,特別是其中的”確定性小工具 (finality gadget)"。Eth2 最終敲定的過程定義如下:

1、如果在一個 epoch 里,大於 2/3 的驗證者對區塊鏈頭正確投票,我們說最新的 epoch 被證成了 (justified)。

2、如果連續兩個 epoch 被證成了,那麼 current_epoch - 2 (當前 epoch – 2)被認為被最終敲定了。

在正常的操作中,鏈的目的是一直做最終敲定。如果在被最終敲定的 epoch 後有超過 4 個 epoch,那麼所有驗證者都會開始受到懲罰,以激勵快速恢復敲定工作。

epoch 末會發生什麼?

在 eth2 的 epoch 末,狀態轉換函數執行重要的記賬功能,以弄清楚在這個時間段共識層確切發生了什麼,並為下一個 epoch 做準備。驗證者在每個 epoch 都會被混洗,分配新的任務,除非出現鏈重組,否則我們可以提前兩個 epoch 得知我們分配到的任務。

在 epoch 過渡中,我們會統計出鏈頭的所有票數。驗證者使用“有效餘額 (effective balance)"投票,以 gwei 計價。在談論 eth2 時,我們通常會提到驗證者參與率,它的定義是在一個 epoch 里用於區塊鏈頭正確投票所質押的總 gwei 與所有活躍驗證者所質押的總 gwei 的比值。

確定一個新被最終敲定的檢查點意味着什麼?

在 Eth2,確定一個最終敲定的檢查點是非常重要的,因為協議里很多明確定義的東西都以它為界限。也就是,在檢查點被最終敲定前,所有通過 p2p gossipsub 收到的信息都會被忽略和丟棄。此外,以下是在 eth2 一個新被最終敲定的檢查點會發生的事:

  • 所有從新被最終敲定的檢查點之前傳入 gossipsub 的信息都會被忽略
  • 分叉選擇規則的更新只認從最終敲定的檢查點開始的投票。這意味着,遵循協議的節點是不可能對被最終敲定的檢查點進行回滾的。
  • 被最終敲定的檢查點以前的存儲數據是可以被修剪的,沒有安全問題

激勵與重組

協議獎勵對維護我們所謂的”鏈的活性“有一個很強的激勵機制。自從 Eth2 的主網在 2020 年 12 月 1 日被激活以來,該鏈一直具有完美的活性,特別是每個 epoch 都按預期被最終敲定。而鏈的參與率,即正在給區塊鏈頭正確投票所質押的 ETH 占所有活躍驗證者質押量的百分比,一直保持在 90% 以上的高水平。

在Eth2,最終敲定後會發生什麼?

數據來源:https://beaconcha.in

除非大部分的質押者都離線了,或多人使用的客戶端實現出現嚴重漏洞,否則激勵機制會一直支持最終敲定 current_epoch - 2。鑒於在 eth2 里,epoch 時長為 6.4 分鐘,即 12.8 分鐘前的 epoch 應該總是被最終敲定的。

關於 MEV,我們當然還沒在區塊鏈里看到出現超過 12.8 分鐘的重組。那麼,我們是否可能通過信標鏈本身的數據獲得交易最終確定性的概率估值呢?

MEV

Eth2 里的每個區塊都包含關於共識的元數據,即每個區塊都包含如下信息:

  • 加入信標鏈的新驗證者 (eth1 的驗證者存款)
  • 證明 (attenstation),即其他驗證者對鏈上先前區塊的投票
  • 驗證者想要退出其職責的證明
  • 驗證者被罰沒和被強制逐出的證明

對於我們的目的來說,最重要的就是證明。由於每個 slot 都會出塊,時間是剛好 12 秒。對於我們收到的每個區塊,我們都可以計算目前為止對區塊鏈頭正確投票的驗證者所質押的 ETH 占所有活躍驗證者所質押的 ETH 的百分比。例如,如果在一個 epoch 結束前我們已經收到超過前 2/3 的投票了,且上一個 epoch 已經有超過 2/3 的驗證者正確投票了,我們能相當確定鏈的最終確定性很快能達成。也就是說,我們可以在最終確定性達成的前 6.4 分鐘就對這個結果很有信心了。

儘管這種”信心“是很有用的,但如果在權威鏈的分叉上有足夠多的投票權, 1 個甚至 2 個 epoch 內的重組仍然是可能的。就我們觀察到的情況,Eth2 上有大量投票權的小型分叉是很罕見的,並在當前的鏈上從未發生過。

關於 MEV 的問題:我們要多久才能知道最終確定性,使它對 MEV-geth 起作用呢?

對最終確定性的哲學討論

節點可以違反協議嗎?

最終確定性,說到底,是由對協議規則的社會共識執行的一個抽象概念。有一個誠實假設是,節點確實在遵循協議。這意味着即使一些行為不當的節點嘗試修改它們的客戶端軟件,以忽略關於最終確定性的規則,也不會影響整個網絡,因為所有其他節點都會遵循協議。

而決定重組的分叉選擇是從被最新最終敲定的 epoch 開始的,除非絕大多數的節點都違反協議,否則重組是不可能發生的。

參考文獻

  • eth2 規範specs
  • beaconcha.in

本文鏈接:https://www.8btc.com/article/6688080

轉載請註明文章出處

(0)
上一篇 2021-09-19 16:52
下一篇 2021-09-19 17:45

相关推荐