理解驗證者的生命周期

發表於 2023-02-17 20:18 作者: ETH中文

來源:attestant.io

作者:Jim McDonald

理解驗證者 (Validator) 的生命周期

以太坊 2.0 使用權益證明來確保其網絡安全性, 被稱爲“驗證者”的計算機進程將對即將被打包的下一個區塊進行投票(下文稱“見證”),同時他們也會提議讓自己的區塊被打包進去。但是,驗證者不是僅處於“开”與“關”的狀態:他們會在他們的生命周期裏歷遍一系列的交易。這篇文章將深度剖析驗證者的生命周期,展示每個狀態和狀態轉換之際發生的事情,什么觸發了狀態轉換,以及每次狀態轉換所需要的時間(注解 1)。

時間上的一個符號

在以太坊 2.0 裏,時間通常是以 epoch 爲單位,一個 epoch 包括了 384 秒即大概是 6 分半。爲了方便理解,以這種方式計量的時間被粗略地翻譯成分鐘,小時和天,並伴有可用的准確信息在相對應的腳注裏。

生命周期概覽

在深入分析細節之前,先來看看驗證者的生命周期概覽,以及用來描述其不同狀態的術語。

圖表 1:驗證者生命周期概覽

以下是狀態標籤:

  • 已存款 - 存款協議已被以太坊(Ethereum)1.0 網絡接受

  • 待處理 - 存款協議已被以太坊(Ethereum)2.0 網絡接受

  • 活躍中 - 驗證者正在見證和提議區塊

  • 退出中 - 驗證者正處在中止見證和提議區塊的進程

  • 罰沒中 - 驗證者被發現作弊,正處在中止見證和提議區塊的進程中

  • 已退出 - 驗證者不再參與見證

一個元狀態同樣被定義了: 見證, 即所有驗證者要參與進來見證和提議區塊的狀態(活躍中,退出中的,罰沒中)。這個狀態是重要的,因爲當驗證者處於這些狀態時需要去訪問以太坊(Ethereum)2.0 網絡來與其職責保持同步以免被懲罰。

圖表 2:見證的元狀態

定義了這些狀態之後就是詳細分析每一個狀態以及它們之間的交易的時候了。

已存款的狀態

接受存款協議就是驗證者生命周期的开始。接受發生在以太坊 1.0 鏈上, 因爲那就是驗證者資金的來源。在這時以太坊 2.0 的鏈還不知曉這筆存款。

驗證者會保持大概 7 個半小時在這個存款狀態裏(注解 2 ),以確保不會有一個鏈的重組影響到以太坊 1.0 交易並有可能使存款協議無效。這之後驗證者就會去到待處理狀態(注解 3 )。

圖表 3 :從已存款狀態轉換到准備狀態

待處理狀態

一旦這筆存款在以太坊 1.0 的鏈上存在了足夠長的時間後,它就會被添加到以太坊 2.0 的鏈上去。這標志着這個驗證者已經正式被以太坊(Ethereum) 2.0 所認可。假如最少 32 個 ETH 已經被存進去的話(注解 4),驗證者現在就會准備开始見證。

准備中的驗證者會被放在一個隊列裏:以太坊(Ethereum) 2.0 一次只允許一小部分驗證者开始或停止驗證(注解 5),以保證驗證者的集穩定。如果隊列是空的則准備中的驗證者會在大約 25 分鐘後變成活躍狀態(注解 6):如果這是一個非常繁忙的時段則有可能經過數天甚至數星期之後驗證者才會被激活。但是一旦驗證者從等候隊列中出來,它就會變成活躍狀態。

圖表 4 :從准備狀態到活躍狀態的過渡

活躍中狀態

驗證者理應在活躍狀態下度過它們主要的生命周期。活躍的驗證者會以 6 分鐘一次的頻率參與當時的見證,偶爾還會有提議區塊鏈的工作(注解 7)。驗證者會保持活躍狀態直到以下其中一種事情發生:

  • 驗證者由於在需要其參與見證時沒有履行職責被懲罰,導致資金下降到 16 個 ETH 以下。

  • 用戶通過發送一筆合適的交易來要求停止驗證(在這個驗證者變成活躍狀態的頭 9 天裏無法發起這種交易)。

  • 驗證者被證明作弊。

在前兩種情況裏,驗證者被添加到希望停止驗證的驗證者隊列裏(將要離开活躍狀態的驗證者和將要進入活躍狀態的驗證者一樣,數量是被限制的,大概幾分鐘才有 1 個)

圖表 5:從活躍狀態到正在退出狀態的過渡

在第三種情況裏,驗證者被加入到一個被發現在作弊的驗證者的隊列裏以接受懲罰。

圖表 6:從活躍狀態到罰沒中狀態的過渡

請注意,通過發送包括了相同驗證者信息的額外存款協定來向一個活躍驗證者充值額外的 ETH 是有可能會發生的情況(永遠要記住有效的余額不能超過 32 個 ETH)。這有助於避免驗證者的資金降到 16 個 ETH 以下並且被添加到退出隊列的情況。

退出中的狀態

當網絡現有的驗證者表明了自己想要停止驗證的意圖之後,無論他是自愿的還是非自愿的,他都不會馬上這樣做而是會進入退出中的狀態,和以往的活躍狀態一樣繼續同樣多地參與見證和提議。這保證了網絡的穩定性,避免了一個驗證者決定離开時就馬上停止履行職責的情況。

與一個驗證者想要從准備狀態變成活躍狀態時類似,要離开的驗證者要進入一個一次只能允許少數通過的一個隊列。又和加入時類似,在退出中狀態裏花費的時間取決於驗證者在隊列裏的排隊數量。

圖表 7:從退出中到已退出狀態的過渡

罰沒中(Slashing)狀態

一個被發現作弊的驗證者會馬上受到 1 個 ETH 的懲罰,從余額裏扣除。然後他會進入到一個罰沒中的隊列裏去,這個罰沒中隊列類似於一個退出中隊列,但是它會被標記爲需要額外的懲罰,我們會在接下來的“已退出”狀態裏討論這個問題。

圖表 8:從罰沒中狀態過渡到已退出狀態

一個驗證者在退出中的時候以及甚至在退出之後都有可能被罰沒(但在他能取回自己的資金之前)。這避免了這種情況的發生:驗證者作弊之後,通過常規的退出機制,在自己的作弊行爲被發現之前就退出,從而逃脫了懲罰。這帶來了一個略微復雜的狀態模型。

圖表 9:擴展罰沒條件

已退出狀態

當一個驗證者去到已退出狀態,他就已經正式完成了自己的使命。他不用再參與見證或提議區塊,並且不再需要擁有關於以太坊 2.0 鏈的狀態信息。

在退出之後,在資金能被轉離驗證者之前有一個大約 1 天(注解 8)的最後延遲。但是,如果這個驗證者被標記爲經過了罰沒中狀態,那么他會承受兩個額外的懲罰。

第一,在已退出狀態裏能轉移資金之前花費的時間會更長,是 36 天(注解 9)。第二,在這個 36 天周期的中途,他會承受進一步的扣款,扣款金額取決於這個驗證者被發現作弊之前 18 天被罰沒的驗證者數量以及這個驗證者被發現作弊之後的 18 天被罰沒的驗證者數量。下圖展示了一個驗證者的有效余額損失(注解 10)的總百分比

圖表 10:在大致相同的時間裏,被罰沒的有效余額與網絡被罰沒驗證者數量的百分比對比

一旦 36 天到期,被罰沒的驗證者們的剩余資金就可以被轉移了。

正如生命周期圖表裏所能看到的一樣,一個已退出的驗證者無法再通過任何機制重新進入活躍狀態。就是說,一旦一個驗證者退出了,他的資金會在被轉移之前保持休眠狀態。注意,你無法在以太坊 2.0 的 0 階段轉移資金 - 所有已退出的驗證者的資金會一直保留在驗證者中,直至資金轉移操作被引入。缺少轉移操作的原因是缺乏可以轉移 ETH 的用戶账戶。

擴展的驗證者生命周期

結合以上所有信息考慮將帶來一副更加全面的驗證者生命周期圖景

圖表 11:擴展的驗證者生命周期

了解不同狀態之間的轉換所要求的條件以及消耗的時間,對於確保以太坊 2.0 質押基礎設施的成功運行至關重要。從一开始的存款到資金的提出,生命周期展現了每個狀態裏可能發生的事情並對驗證者在任何時候的行爲進行了明確的解釋。

腳注

腳注 1:值得注意的是,以太坊 2.0 並沒有設置一個明確的狀態機制;也就是說,狀態的名字是筆者提出來方便理解的。

腳注 2:1,024 個以太坊 1.0 的區塊加 32 個以太坊 2.0 的 epoch。

腳注 3:這假設了存款協議需要完整的 32 個 ETH。要是存款協議少於這個閾值,驗證者將停留在已存款狀態中,直到有更多的存款協議把驗證者的余額提高到至少 32 個 ETH。

腳注 4:若不,則另一筆存款可以被添加以增加這個驗證者的余額到這個數量。

腳注 5:每 epoch 爲 (活躍中+退出中+罰沒中的驗證者)/65536,最小值爲 4。

腳注6:4 個epoch。

腳注7:每一個epoch內一個驗證者只能見證一次,每一個slot內只有一個指定的驗證者履行提議者的職責。

腳注8:256 個epoch

腳注9:8192 個epoch

腳注10:注意因爲懲罰最高可達到有效余額的百分之百,一個驗證者的最大懲罰永遠不會超過 32 個 ETH,無論該名驗證者的真實余額如何。

標題:理解驗證者的生命周期

地址:https://www.coinsdeep.com/article/10553.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

你可能還喜歡
熱門資訊