當 Nethermind 開始顯示 “Processed” 的時候,就說明你的節點已經完成同步了。這裡有張截圖,已同步好 Goerli 測試網的 Nethermind 節點就是這樣的:
Lighthouse
Lighthouse 是由 Sigma Prime 團隊開發的 Eth2 客戶端,是用 Rust 語言寫的。所以你得跳轉到 rustup.rs 網頁找個簡易的安裝指南裝一下 Rust。稍微劇透一下,安裝 Rust 可能很花時間、佔用很多計算機資源(譯者注:此言不虛,在 Windows 安裝完整的 Rust 非常麻煩。)
裝好 Rust、確保能執行之後,下一步就是下載和構建 Lighthouse 程式碼。build(構建)操作會花一些時間,我上次嘗試的時候,執行時間超過半個小時。
git clone https://github.com/sigp/lighthouse.git
cd lighthouse
cargo build — release
Lighthouse 預設加入 Witti 測試網,所以你需要下載 Witti 程式碼庫。找個資料夾,輸入下面這個命令列就可以了:
git clone https://github.com/goerli/witti
(譯者注:現在 Witti 測試網已經關停了。現正在執行的多客戶端測試網叫 Altona。可在此處檢視詳情:https://github.com/goerli/altona )
第一步是讓信標鏈節點(Beacon Node)連上 Goerli 測試網並同步區塊鏈。下面整個命令列是假設 Witti 被克隆到了 home 目錄,不然的話你要替換成你用的地址:
lighthouse bn –http –testnet-dir ~/witti/lighthouse –eth2-endpoint http://127.0.0.1:8545
注意:要是你光輸入 lighthouse 沒用的話(比如程式出錯,顯示 bash: lighthouse: command not found ),你可能需要換成 ~/lighthouse/target/release/lighthouse ,而且可能每次用到 lightho
如果你的 Nethermind 還在 terminal 視窗裡輸出,你應該能看到好多個 RPC 請求出現:
我們會使用 Lighthouse 來建立用於 Staking 的錢包。建立一個口令檔案(包含你所設定的口令),放到一個你選定的地方。我這裡用的檔案命名為 password.txt,假定把它放在 home 目錄下,你可以根據需要傳入不同的輸入。這裡的錢包我也直接命名為 witti,這只是因為本教程所用的 Witti Lighthouse 使用者必讀檔案中建議這麼做,但實際上你可以隨自己高興來命名。類似地,生成的助記詞檔案我們也直接放到 home 目錄裡面。這樣做其實不安全。只不過,這樣可以讓我寫文章的時候容易一點。我希望你在閱讀的時候能更小心一些,弄清楚自己需要做什麼。
lighthouse account_manager wallet create \
--name “witti” \
--passphrase-file ~/password.txt \
--testnet-dir ~/witti/lighthouse \
--mnemonic-output-path ~/menmonic.txt
這樣做就能生成一個錢包了。你會看到一套由 12 個單片語成的助記詞出現在螢幕上,還附有如何保管助記詞的建議。我就不截圖放出來了,因為,正如一些建議所說:永遠不要跟人分享你的助記詞(譯者注:因為助記詞即意味著對一個賬戶的完全控制權)。
下一步我們要建立一個驗證者賬戶。
lighthouse account_manager validator create \
--at-most 1 \
--testnet-dir ~/witti/lighthouse \
--wallet-name “witti” \
--wallet-passphrase ~/password.txt
這時會產生一串 16 進位制的數字。
現在我們需要為我們的驗證者存入保證金。基本上有兩種辦法,要麼用 MetaMask,要麼用 Nethermind CLI。
使用 MetaMask:你先要將 MetaMask 連線到你的節點,就是在右上角選擇所用網路的下拉選項裡選擇 localhose:8545(如果你使用的是另一個埠,你就需要選擇 “Custon RPC(自定義 PRC)”,然後輸入你的埠號)。你也可以在選項裡直接選擇 Goerli 測試網,不過,你明明自己電腦上已經有一個 Goerli 節點了,為什麼還要去用 Infura 的節點呢?
你需要存入至少 32 GoETH(也就是 Goerli 測試網上的 ETH,沒有實際價值),才能成為驗證者。如果你有 Twitter 或者 Facebook 賬號,你可以使用 https://faucet.goerli.mudit.blog 水龍頭。輸入你的 MetaMask 地址,跟隨指引完成操作即可。要等待一些時間才能收到 GoETH,但應該不會等待超過 1 分鐘。
(譯者注:訪問 https://prylabs.net/participate 這個網站並連線自己的 Metamask 錢包可一次性領到 32 個測試網 ETH。)
在網頁瀏覽器內訪問 Lighthouse 的文件。點選 “upload” 按鈕。Lighthouse 需要的檔案應該放在 ~/.lighthouse/validators/0x... 處,也就是 home 目錄裡一個叫做 .lighthouse 的隱藏資料夾裡(注意那個開頭的 .)。你要找到一個叫做 eth2-deposit-data.rlp 的檔案。上傳這個檔案會生成一筆 MetaMask 交易,傳送 32 GoETH 到 Goerli 測試網上的保證金合約。
(譯者注:使用此方法最好再檢驗一下 MetaMask 交易的目標地址,確保是 Altona 測試網的保證金合約地址。因為現在 Witti 網路已經關閉了)。
使用命令列:首先,需要使用額外的一個引數來啟動 Goerli 節點:
--Init.EnableUnsecuredDevWallet true
在 Nethermind 目錄裡面,啟動 CLI(./Nethermind.Cli),輸入 personal.listAccounts 會給你一個測試賬戶列表。要是沒出現這樣的列表,那這個教程剩下的部分可能也沒法正常執行,那我就要推薦你使用上面的 MetaMask 方法了。如果有用,你可以輸入下列命令列、建立一個新賬戶,password 就是這個賬戶的口令,換成一個你喜歡的就行:
personal.newAccount(“password”)
記下執行這個命令所產生的新地址,使用 https://faucet.goerli.mudit.blog 水龍頭往這個地址裡打錢(需要你用 Twitter 或者 Facebook 賬號給他們做宣傳)。你需要至少 32 GoETH(Goerli 測試網 ETH)才能成為驗證者。你還需要從 Nethermind CLI 中解鎖你的賬號:
personal.unlockAccount({your address}, “{your password}”)
在撰寫本文之時,Lighthouse 仍需要一個 IPC 端點來發起存款,雖然我聽說已經有人提了 PR 要換成 http 端點了。下面這段就是關於如何發起存款交易的一個有根據的猜測:
lighthouse account_manager validator deposit \
--eth2-http http:127.0.0.1:8545 \
--from-address {put your address here without the 0x} \
--testnet-dir ~/witti/lighthouse \
--validator all
信標鏈節點應該一直在同步。你可以在信標鏈同步期間啟動驗證者客戶端,但在完成同步之前,驗證者客戶端什麼都不會幹。我會建議你先等著。完成信標鏈同步之後,軟體的輸出會像下圖所示:
完成同步之後,信標鏈節點也不能關閉,要繼續執行。在新的命令列視窗裡,輸入下列命令以啟動驗證者客戶端:
lighthouse vc –auto-register –testnet-dir ~/witti/lighthouse
只有第一次執行驗證者的時候才需要這些引數,而 --auto-register 如果不是在首次執行時使用甚至還會產生問題,所以,在你需要重啟驗證者客戶端的時候,只要用下面這個簡單的命令就好了:
lighthouse vc
整個教程就是這樣啦。如果你能完整做到這一步,真是恭喜你!你現在執行著信標鏈節點和驗證者客戶端,穩妥地站在以太坊 2.0 的前沿世界裡了。
一些提醒
在本文撰寫之時,Witti 測試網上還沒有驗證者新人的排隊機制,所以當你啟動驗證者之後,馬上就能看到軟體的輸出如下圖:
每隔一段時間,你就會看到不是上圖這樣的另一種輸出,要麼是產生了一條區塊見證訊息(attestation),要麼是釋出了一個新區塊。我還沒看到我的客戶端釋出新區塊的情況,但下面這種就是產生見證訊息時候的場景:
見證訊息的內容是對某個區塊的投票支援。釋出新區塊則是實際上為區塊鏈提議一個新區塊,當然這種機會要少得多。
離線的驗證者會被懲罰,在本文寫作之時(2020 年 6 月),這個懲罰力度被設成很小的值,大概要超過 1 年才會損失掉 32 個 ETH。因此,估計大家也會時不時離線(為了升級、更新等等)。
遵循教程的操作,可能也會有搞不定的情況。你的基本設定可能與我的並不相同,另外,這個領域是全新的,軟體也很稚嫩。所以請求幫助的時候不用覺得不好意思!客戶端團隊基本上都有 discord 頻道,雖然你們可能生活在地球的兩端,但他們其實很樂意幫助你,也很希望能得到反饋。不要害羞啦!
使用其它客戶端
Lighthouse 並不是唯一的以太坊 2.0 客戶端軟體。你可以使用 Nethermind 來同步 Goerli 測試網,再搭配任意的以太坊 2.0 客戶端軟體。本教程只是拿 Lighthouse 來舉例。我們會在下文列舉其它的一些客戶端。
此外,據我所知,你可以同時執行多個以太坊 2.0 客戶端。可能你得自己調整一些預設設定,比如客戶端所用的網路埠;另外就是注意自己的電腦效能夠不夠。不過,不管怎麼做,你只需要一個 Goerli 節點。
Teku 客戶端
Teku 客戶端正式文件:https://docs.teku.pegasys.tech/
Witti Teku 文件:https://github.com/goerli/witti/tree/master/teku
Teku 是一款用 Java 寫成的軟體,由 PegaSys 開發。跟隨這些指令就能安裝 Teku 客戶端軟體(還有 Java SDK)。Teku 的文件假定使用者使用 Besu 客戶端來同步 Goerli 測試網,(但我們這裡告訴你可以用 Nethermind),所以相關的段落是可以跳過的。
我自己沒有嘗試過使用 Teku 配合 Netherminde,但我覺得應該是沒問題的。你需要用 Nethermind 來生成錢包(根據我的理解是這樣),所以你要確保使用 -Init.EnableUnsecuredDevWallet 引數來執行 Nethermind。
Lodestar 客戶端
Lodestar 客戶端的安裝指南見:https://github.com/ChainSafe/lodestar
我也沒有嘗試過使用 Lodestar 配合 Netherminde,但我也覺得問題不大。嘗試的時候多看看 Witti 的文件應該會有所幫助。
Prysm 客戶端
Prysm 測試網指南:https://prylabs.net/participate
Witti(Schlesi)Prysm 文件:https://github.com/goerli/witti/tree/master/prysm
(譯者注:現在 Schlesi 測試網也關停了。Prysm 客戶端團隊發起的最新單客戶端測試網名為 Onyx,不過文件也都是公開的)。
Prysm 執行自己的 Goerli 節點叢集,並使 Prysm 客戶端預設與叢集相連。在寫這篇文章的時候,一些技術問題使得 Prysm 無法連線到 Nethermind 部署在本地的 Goerli 節點。它是最著名的以太坊 2.0 客戶端,所以我覺得我有必要批評幾句。