本文將介紹什麼是提款,其工作機制,以及這個新特性的使用方法。

原文:Understanding Withdrawals(Attestant)

作者:Jim McDonald

翻譯: John, ECN

審閱: Franci, ECN

原用標題(譯後)理解以太坊質押提款

封面: Photo by Shubham's Web3 on Unsplash

提款 (withdrawals)是驗證者生命週期(validator lifecycle)中缺失的一部分,從 2020 年 12 月以太坊共識鏈一開始啟動以來就在開發當中,現在將隨上海昇級而來。由於上海昇級將在今年上半年啟動,所以值得注意和理解什麼是提款,其工作機制,以及這個新特性的使用方法。

歷史

當共識鏈第一次在 2020 年 12 月啟動時,你無法從共識鏈上發送任何信息到執行鏈上去。也就是說,儘管餘額能在共識鏈上累積,你也無法通過執行鏈去提現,因為技術上在當時提款是不可能的。經年累月過後以太坊的結構已經被改變得可以容納新的研究成果,轉變為當前以 layer 2 為中心的擴容模型,並且很大程度上保持了執行鏈的原貌。在 2022 年的 9 月,執行鏈與共識鏈合併了,執行區塊變成了共識區塊里數據的一個子集。這時信息從共識鏈上轉移到執行鏈上就是可行的了,其中一個例子就是驗證者獎勵。

你可以在” 理解合併後的獎勵 “(”Understanding post-merge rewards”)一文中找到共識鍊和執行鏈互動以及合併的區塊如何構建的詳細細節。關鍵點在於只有在合併之後提款才變成可能。

驗證者在做些什麼?

自從 2020 年 12 月的共識鏈創世以來,驗證者一直在產生區塊並維護鏈的安全。具體來說,他們一直在提議新的區塊,並參與對它們自己和其他驗證者提議的區塊的投票(註解 2)。當被正確執行時,這些行為會為驗證者帶來獎勵。共識鏈啟動時只有 2 萬多名驗證者,但在筆者撰文時已經約有 52 萬名活躍的驗證者在確保其安全性。從 2020 年 12 月到 2022 年 9 月,共識鏈只維護了其自身的安全,但是這為合併的到來鋪平了道路(註解 3),從 2022 年 9 月之後執行鏈就已經僅由驗證者們保證其安全性。

為了回報他們維護區塊鏈安全性的行動,這些驗證者被許諾以根據以太坊協議直接產生的獎勵,這些獎勵被記錄在共識鏈上。

驗證者的獎勵怎麼樣了?

因為共識鏈本身沒有執行能力,所以積累在上面的 ETH 無法從一個賬號被轉移到另一個。確實共識鏈甚至沒有賬戶的概念,鏈上唯一有餘額的實體是驗證者本身。這意味著這些驗證者的獎勵雖然在過去兩年穩定增長,但是卻沒有提取它們的方法。

在所有驗證者中,共識鏈已經產生了超過 1 百萬的 ETH 作為累計的獎勵。就個人的驗證者而言,他們的獎勵取決於一系列的因素,但最明顯的莫過於他們作為活躍驗證者的時間。有很多驗證者已經積累了一筆數量巨大的獎勵:

大多數驗證者獲得了只有少於 2 個 ETH 的獎勵, 有些高達 5 個 ETH,儘管這些獎勵被登記在在共識鏈上,但是它們無法在執行鏈上被實例化,直到提款的功能就位。

注意,自從合併之後,除了上述的獎勵,提議區塊的驗證者會獲得一部分交易費。這些費用會直接在執行鏈上被支付,因此下文不會再論述它們。

上海昇級改變了什麼

上海昇級(註解 4)提供了一個從共識鏈上轉移獎勵到執行鏈上的機制,每一個執行區塊都會包括大約 16 次把 ETH 轉移到執行鏈賬號上的提款(註解 5)的數據。提款有以下數據結構:

圖表 3:一筆提款

一筆提款的單個組成部分分別為:

提款索引(Withdrawal index)  提款的唯一標識符,便於引用。

驗證者索引(Validator index)  共識鏈上一筆提款來源的驗證者的索引

地址(Address)  提款將會被匯集到的地址

數目(Amount)  將會被添加到賬戶的 ETH 數目,單位是 Gwei(註解 6)

當區塊被導入到執行鏈中時,提款將會根據給定的數量進行處理,相應地址的餘額會增加。注意提款不是交易,它們不消耗 gas,它們也不會在提現地址觸發任何智能合約的操作。一旦區塊被處理完畢,相應的餘額將會增加,但不會再有其他的事情發生。

被提款的 ETH 是從哪裡來的?

上述的信息描述了什麼是提款,但是提款發生時的 ETH 是從哪來的呢?

儘管一個驗證者的信息被創建時,需要向以太坊存款合約存入 32 個 ETH,但是不能以提款為目的訪問這些 ETH,因為合約裡沒有任何允許代幣轉移的機制。這些賬目總和的使用也最終會導致合約出現負的餘額,因為現在驗證者的在共識鏈上的餘額總和超過了一開始存款的總和。

提款是用根據以太坊協議產生的資金(即新增發的 ETH)來支付的,而不是從已有的賬戶上轉移。這保證了提款可以一直被支付,即使從共識鏈上提出的總數目高於存入的總數目。

提款時鐘

在內部,共識層的軟件持有一個存有驗證者信息的簡單列表:

每一個驗證者實體的獨立組成部分分別為:

索引(Index)  對應這個驗證者及其列表內位置的唯一索引

狀態(State)  目前這個驗證者的狀態,比如 “活躍中” 或 “退出中”(註解 7)

餘額(Balance)  目前該名驗證者的餘額,單位為 Gwei

提款憑證(Withdrawal credentials)  該名驗證者的提款憑證

上述這些概念大多數都是不言自明的,然而提款憑證卻需要一些解釋。每一個驗證者都有一組提款憑證。這些憑證控制了共識層資金的流向,包括初始的存款和接下來的獎勵。

目前有兩種提款憑證:

  • 從 BLS 公鑰產生的,被稱為 “type 0” 提款憑證
  • 從執行地址產生的,被稱為 “type 1” 提款憑證。

我們待會再來詳細地探索這些概念,但是,目前的重大區別在於,type 1 的提款憑證允許共識資金被提款到執行鏈上去,而 type 0 提款憑證不行。

共識鏈按順序處理提款,從索引 0 開始一直處理到某一集合中最後那個索引,然後再從頭開始。你可以用一個單指針的模擬時鐘作為類比提款進程的一種思考方式。每一個鐘上的刻度代表一個驗證者,從驗證者索引 0 開始到最後那個(目前大概是 52 萬個)。

圖表 4 提款時鐘

一旦上海昇級上線,區塊就會包含提款信息。為了選擇哪些驗證人可以提款,時鐘指針圍繞驗證人轉動,每當它指向一個有資格提款的驗證者時,該名驗證者的部分或全部餘額將根據以下規則被提出:

  • 如果驗證者擁有 type 1 憑證,並處於” 活躍 “ 狀態(註解 8),並有超過 32 個 ETH 的餘額,那麼超過 32 個 ETH 的部分會被提出。
  • 如果驗證者擁有 type 1 憑證,並處於 “可提款” 狀態,餘額不為 0,那麼剩餘的所有餘額都會被提出。

如果上述其中一條規則適用,就會有一筆提款產生並被添加到區塊裡;如果上述兩條都不適用,那麼驗證者就會被認為不符合條件,指針會繼續往下走。指針會繼續跳動直到它找夠 16 個符合條件的驗證者(註解 9),這時單個區塊所需的提款筆數足夠了,提款信息就會被包含進區塊中。

時鐘指針走完一輪的時間取決於符合資格的驗證者數量。

在筆者撰文時有大約 520,000 名驗證者處於活躍狀態。若每個區塊有 16 筆提款,每天 7,200 個區塊,則每處理一輪符合資格的驗證者集將需要大概 4.5 天。但正如上圖所示,這個時間將隨著符合資格的驗證者數量改變而改變。

修改提款憑證的過程

正如上文所述,要成為符合資格的驗證者必須擁有 type 1 的提款憑證。筆者撰文時有大概 40% 的驗證者擁有 type 1 的憑證,其餘的則擁有 type 0 憑證。上海昇級會帶來從 type 0 升級到 type 1 提款憑證的能力,如此驗證者便能接收獎勵。修改提款憑證需要創建一個在共識鏈上廣播的簽名操作。這個操作的結構如下圖:

圖表 6:修改提款憑證的操作

操作的組成部分分別為:

  • 驗證者索引(Validator index)  該操作所適用的驗證者的索引
  • 提款的 BLS 公鑰(Withdrawal BLS public key)  目前 BLS 提款憑證的 BLS 公鑰
  • 執行地址(Execution address)  用於新提款憑證的執行地址
  • 簽名(Signature)  由當前 BLS 提款憑證的私鑰在操作的其他字段上所作的簽名。

信標鏈上的操作過程如下:

“就每一個被驗證者索引所定義的驗證者而言,檢查給定的 BLS 公鑰是否可以轉換為匹配當前驗證者的 type 0 提款憑證。若可以,則把給定執行地址轉換成 type 1 的提款憑證並為驗證者更新。”

因此,修改憑證的操作只能發生一次。一旦修改憑證的操作被處理完畢,鏈上驗證者的定義就會包含 type 1 提款憑證,所以就據上文所述就沒有 type 0 提款憑證可供匹配了。也就是說,type 1 憑證一旦被設定就將在其生命週期內保持不變。(註解 11)

選擇執行地址

修改提款憑證的第一步就是選擇用來接收提款的以太坊執行地址。正如上文所描述的,你只能作一次改變,所以你必須保證你在做設置之前已經確保了地址私鑰的控制權。若你有多個驗證者身份那麼你需要考慮是否要為每一個驗證者身份提供一個不同的提款地址,或者為所有的驗證者身份使用相同的地址:

  • 設置相同的地址方便了你,獎勵會更快地累積到這個地址去,因此消耗的 gas 會更少。
  • 設置不同的地址,保持它們互不關聯則增加了你的驗證者身份的安全性,若這些驗證者身份本身就是互不關聯的(不同的儲蓄地址,不同的或者本來就沒有的區塊提議塗鴉等)

創建操作

一旦執行地址被選定,則需要為每一個驗證者創建並簽署一個操作。由於暴露與提款憑證相關的私人信息的敏感性(可能是私鑰或者助記詞),我們推薦離線創建。操作方法超出了這篇文章論述的範圍,但你可以參考使用 ethdo 工具這麼做的詳細指南,或者使用未來其他可用的工具和嚮導。

廣播操作

在創建操作之後,你需要把它們廣播在共識鏈上。若操作是在上海昇級之後才被提供給共識節點的,那麼它會在下一次機會被廣播到網絡中以打包進區塊。若操作是在上海昇級之前被提供給共識節點的,那麼它會被儲存起來並在升級完成後被廣播到網絡。注意這需要你連接到一個可以識別上海昇級的共識節點上;就目前來看這些共識節點預計將在 2 月的某個時候可用,為主網升級提供了良好的時機。

在線/離線進程

正如上文所述,創建憑證修改操作應該在離線狀態下進行。這避免了提款的私鑰被暴露給不安全的電腦從而導致私鑰被竊取的情況。然而,訪問一台在線的電腦需要從信標節點上獲取信息,並最終廣播憑證修改操作。因此,我們推薦用一個在線/離線的進程來創建並廣播修改操作。

圖表 7:在線和離線的配置中創建和廣播修改提款憑證操作

有不少的工具都遵循這個過程,比如 ethdo 就有他們自己的文檔交代如何進行這個過程,下文是每一步的概覽,講述其作用和意義。

1. 獲取鏈上信息

要創建有效的已簽名的憑證修改操作,你需要從鏈上獲取不同的信息,這些信息應該從鏈本身獲取以保證是正確的信息。我們同樣推薦獲取一份包含目前所有驗證者信息的列表。因為這樣可以更容易地創建操作,同時驗證創建的操作是否適合驗證者。

這些信息來自一個活躍中的共識節點,因此需要從一台聯網的電腦上獲取這些資料。大多數運行驗證者程序的實體應該都有訪問共識節點的權限,但是如果它們將質押過程委託給一個服務商,那它們應該設法從服務商獲取必要信息。

這將產生一份包含鏈上信息的文件。文件本身不會帶有私鑰或其他敏感信息。

2. 轉移鏈上信息

一旦鏈的信息被收集完成,那就需要把它從一台在線的電腦轉移到一台離線的電腦。目前的普遍做法是通過 USB 存儲,USB 存儲允許兩台電腦不需要直連就能完成信息的轉移。這意味著離線的電腦可以完全與互聯網斷開連接,極大地增加了私鑰或者助記詞的安全性。

3. 創建憑證修改操作(Credentials Operations)

一旦離線的電腦上有了鏈的信息,那就可以進行憑證修改操作的創建了。這要求對創建了目前提款憑證的助記詞和私鑰的訪問權,所以在離線的電腦上運行這個進程更加安全。

私鑰和助記詞有可能創建了多個驗證者的憑證,因此創建進程可能會產生多個修改操作。

這會產生一個包含了修改憑證操作的文件,文件自身不會包含私鑰或者其他敏感信息。

4. 轉移憑證修改操作

一旦憑證修改操作的文件被創建完成,就需要把它從離線的電腦上轉移到在線的電腦上。再說一次,USB 存儲或類似的方式是普遍的最優做法。

5. 廣播憑證修改操作

一旦在線的電腦上有了憑證修改操作的文件,就可以通過將這些操作發送到某個共識節點來向以太坊網絡廣播。最有可能是發送到下載鏈信息回來的那個節點上。

一旦操作被提交到共識節點上,節點就會把它們在全網範圍內廣播,一旦共識區塊打包了這些操作那麼修改就會隨之生效。每一個區塊都有容納 16 個修改操作的空間, 所以有可能需要 4 天才能讓一個操作被添加到一個區塊裡去,但是更有可能的是 1 到 2 個小時就可以添加。

總結

提款功能將隨著上海昇級推出,自從共識鏈啟動以來第一次使用戶的共識獎勵變得可用。一旦設置好之後,它們就會自動地為任何驗證者所用,而升級也帶來了一個機制來配置那些尚未準備好提款的驗證者。

驗證者生命週期完成之後,共識鏈就履行了對質押者們從 2020 年 12 月以來許下的承諾,並准許驗證者離開這個他們此前覺得可能離開不了的系統。額外的驗證者將為以太坊帶來更強的安全性以及一條更強大的鏈。

1. 以太坊有多條鏈,通常被稱為共識鏈(或稱信標鏈)和執行鏈,欲了解更多信息請參考文章” 理解合併後的獎勵 “。

2. 他們同樣參與到同步委員會中,但這些都是見證的另一種形式。

3. 就是用俗話解釋以太坊從工作量證明共識機製到權益證明共識機制的遷移。

4. 與共識鏈上的 Capella 升級同時進行。

5. 嚴格意義上最高可以達到 16 筆提款,除極端情況外,所有 slot 都應該是滿的。

6. 共識鏈上的所有數值都是以 Gwei 為單位的,因此從共識鏈到執行鏈的任何代幣轉移都是一個以 Gwei 為單位的整數。

7. 狀態實際上來自驗證者信息中的其他字段,所以它不會呈現在驗證者的定義裡,但是由於它在文章其他地方被引用了,所以把它展示在這。

8.“活躍中” 和” 可提款 “的狀態定義可參考文章 “理解驗證者生命週期”

9. 在 16384 名驗證者之後提款時鐘的指針就會停止跳動,即使找不夠 16 名符合資格的驗證者,儘管這種情況不太可能在測試網以外發生。

10. 筆者撰文時這個數字實際上大約是 7160,因為一些區塊沒被提議或者在提議後變成了孤塊。

11. 這可能隨著新的操作的引入而在未來改變,但在筆者撰文時尚無這樣的計劃。

12. 預計在升級後的頭幾天會有一波驗證者修改他們憑證的初始高峰期,在這之後排隊的人將會很少,因為大多數符合資格修改憑證的驗證者都已經修改完。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。