Testnets

信標鏈充值合約儀式需要什麼?

  • March 3, 2020

為了引導乙太坊 2.0 信標鏈,存款合約必須部署在工作量證明遺留鏈上。對於信標鍊主網,我們正在談論一個可能涉及許多參與者的*儀式。*

最初的計劃是在 DevCon 的儀式上部署它

$$ … $$

我的問題是,

  • 成功部署存款合約需要什麼?
  • 結束儀式的步驟是什麼?儀式需要什麼?
  • 任何人都可以參加嗎?誰可以參加?
  • 引導信標鏈需要多少存款?

這看起來像多個問題,但主要是一個問題分解成不同的想法。另請參閱這篇文章

但是,只有在註冊了最低數量的存款並且至少有三個生產就緒的客戶端后,才能啟動。

這也適用於測試網的啟動嗎?

我的問題具有實際意義,因為我想幫助引導不同的 ETH 2.0 信標鏈測試網。測試網甚至需要儀式還是我可以只使用假存款?任何指針都非常感謝。

我將嘗試通過生成與問題具有不同結構但應在此過程中勾選所有必要點的響應來回答這個問題。希望我沒有錯過任何一個。

背景:我是 Lighthouse 的首席開發人員,Lighthouse 是 Eth2 客戶端之一,將在 Genesis 啟動。我已經建構了大部分 Lighthouse 測試網工具並啟動了每個 Lighthouse 測試網。

啟動信標鏈需要什麼?

啟動信標鏈需要三個主要值(如下所列)。eth2-testnets repo 包含一組包含這些值的標準化目錄。

1.DEPOSIT_CONTRACT_ADDRESS

eth1 鏈上“存款合約”的地址。

對於信標主網,這將是乙太坊基金會(EF)在某個公開儀式上部署在 eth1 主網上的合約。

對於目前的信標測試網,通常是其中一位開發人員在沒有任何重大儀式的情況下部署在 Goerli 上的契約。

2.config.yaml

這是一個定義eth2 規範中所有“常量”的文件。它包括基本的東西,例如觸發創世所需的最小驗證者數量以及每個插槽有多少秒。

對於信標測試網,通常會減少MAX_EFFECTIVE_BALANCE1 倍,10因此只需要 3.2 ETH 來存入(而不是 32 ETH,這對於 Goerli 來說更難獲得)。此外,MIN_GENESIS_ACTIVE_VALIDATOR_COUNT它被修改以確定引導信標鏈需要多少存款。

例子:

3. 引導節點

這是一些執行節點的 IP 地址和 libp2p 身份列表,可用於播種 p2p 網路(與 eth1 中的概念相同)。

在我們的測試網中,我們有四個專門用作引導節點的節點。我們有一些用於此目的的靜態、眾所周知的 IP 地址。

儀式:它意味著什麼?

當談到使用者參與的儀式時,它分為兩個階段:

  1. 部署存款合約
  2. 驗證人向存款合約進行存款。

1 點左右的儀式是關於獲得社會共識,即(a)部署了“正確的”存款合約程式碼,以及(b)該合約的地址是眾所周知的。關於誰可以參與,只有一個實體可以真正部署合約,但任何人都可以驗證它。一個非常簡單的例子是 Vitalik Buterin 部署合約並將地址發佈在他的網站上,然後 Bokky 發推文表示他同意 Vitalik 的地址具有正確的字節碼。

由於步驟 (2) 是在 eth1 區塊鏈上進行的,其行為由存款合約程式碼明確定義,我們可以使用我們對 eth1 的現有信任來生成驗證者的有序列表。任何擁有MIN_DEPOSIT_AMOUNT(1 ETH)的人都可以參與並成為驗證者。

您會注意到我提到的儀式僅確定DEPOSIT_CONTRACT_ADDRESS但無法找到config.yaml引導節點。我認為社會共識config.yaml是一個長期的事情,是在幾個月的反复而不是在“儀式”中決定的。關於引導節點,我認為它們只會由客戶端開發人員選擇,並被任何不同意的人覆蓋。客戶團隊有使用良好引導節點的動機,所有使用者都同意相同的引導節點並不重要。

儀式:如何開始?

首先,您需要就**config.yaml**. 對於測試網,您可能關心選擇兩件事:

  1. MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: 在信標鏈啟動之前,需要多少個驗證人在 eth1 鏈上成功存入?
  2. MAX_EFFECTIVE_BALANCE(+其他):驗證者需要存入多少才能成為 Eth2 驗證者(主網將此設置為 32 ETH,大多數測試網使用 3.2 ETH)。

然後,您需要在 eth1 上部署您的存款合約(測試網通常使用 Goerli)。此合約的原始碼在此處定義。如果您使用的是主網規範(例如,32 eth 存款),那麼您可以按原樣部署。但是,如果您使用的是測試網,您可能希望將其更改為 (a) 允許不同的存款金額,以及 (b) 可能添加一個集中式方法,以便在您完成測試網後“竊取”所有 eth . 對於 Lighthouse 測試網,我們使用位於sigp/unsafe-eth2-deposit-contract的合約程式碼。

一旦你完成了部署儀式/過程,eth1 賬戶就可以開始存款並承諾成為驗證者。使用者可以開始啟動他們的信標節點(Nimbus、Lighthouse、Prysm 等),這些節點將開始觀察 eth1 鏈。押金儀式正在進行中。

存款儀式:如何結束?

一旦部署了存款合約,信標節點就可以通過連接到 eth1 節點(例如,parity-ethereum、geth 等)並從存款合約中讀取日誌來開始“監視”eth1 鏈。

信標節點將自動且無需使用者輸入,觀察合約直到MIN_GENESIS_ACTIVE_VALIDATOR_COUNT達到(或超過)。一旦發生這種情況,節點將等待 1-2 天 ( MIN_GENESIS_DELAY) 直到 UTC 午夜,然後信標鏈將產生它的第一個塊。耶!

此時,eth2 正在執行,並且額外的創世後驗證者可以像以前一樣存款(使用存款合約)。

引用自:https://ethereum.stackexchange.com/questions/80258