來源 | someresat.medium.com
作者 | Somer Esat
本文基於 Prysmatic Labs 的 Prysm 客戶端,詳細講解如何參與以太坊 2.0 主網質押。主要基於以下幾個技術:
➤ Ubuntu v20.04 (LTS) x64 服務器
➤ Go Ethereum 節點 (Github)
➤ Prysmatic Labs ETH 2.0 客戶端 — Prysm (代碼分支)
➤ 瀏覽器插件加密錢包 MetaMask
提示:參與質押至少需要 32 ETH 以及額外的 gas 費。在搞清楚之前切記不要向任意地址發送 ETH。本教程介紹瞭如何安全地將你的 ETH 存入存款合約。請牢記不要將 ETH 發送給任何人。
致謝
本教程參考了網上的各種資料,感謝這些提供資料的貢獻者!
感謝 EthStaker 管理團隊和提供教程的社區成員、Eth2 客戶端團隊、以及質押社區的幫助和校對。
特別感謝 Eth2 客戶端團隊和以太坊基金會的研究員。他們經過幾年的不懈努力,將我們帶到這難以置信的時刻——Eth2.0 成功創世。
免責聲明
本文僅供參考,不構成專業建議。作爲本教程的作者。我本人不保證文中信息的準確性,對於那些參考了本文進行操作而產生的任何損失概不負責。文末有更加完整的免責聲明,請閱讀之後再進行操作。
支持
如需技術支持,請聯繫:
➤ EthStaker 社區是一個以太坊 2.0 Staking 社區,資源豐富且十分友好。
Reddit:
https://www.reddit.com/r/ethstaker/
Discord:
➤ Prysm 客戶端團隊,
Discord:https://discord.gg/GVM5TJwzkU
條件
使用本教程需要對以太坊、ETH、Staking、Linux、MetaMask (Portis 或 Fortmatic) 有一定的背景知識。
還需要準備:
➤ Ubuntu 服務器 v20.04 (LTS) amd64 或者一個較新的,在本地計算機或雲端安裝和運行的 Ubuntu 服務器。
➤ 已安裝或已配置的瀏覽器插件加密錢包 MetaMask (或 Portis、Fortmatic)。一臺裝有操作系統 (Mac、Windows、Linux 等) 和瀏覽器 (Brave、Safari、FireFox 等) 的計算機。
從測試網到主網
如果你從測試網設置轉到主網設置,那麼我強烈建議你在一個全新的 (新安裝的) 服務器實例上開始。本教程沒有對遷移場景進行測試,所以如果你使用的是此前安裝過的測試網軟件,那麼無法保證你的操作能成功。
要求
硬件要求是一個比較大的話題。總的來說:一個相對較新的 CPU、8 GB 內存的 RAM (16 GB 更佳)、一個內存至少 500 GB 的 SSD (1 TB 更佳)、穩定的網絡(足夠快的下載速度以及月度數據額度),這些性能都會讓質押過程更加安全順暢。
注意:檢查你的可用磁盤空間。儘管你有一個容量較大的 SSD,Ubuntu 也會出現僅剩 200 GB 可用空間的狀況。如果你遇到這種情況,請查看附錄 C —— 擴展邏輯卷。
概覽
下面這個簡化圖表標明瞭本篇教程所涉及的範圍,標黃的即是本文會覆蓋到的部分:
整個流程可以概念化表述爲:
➤ 生成驗證者密鑰對和存款數據
➤ 準備 Ubuntu 服務器 (防火牆、安全設置等)
➤ 設置一個 Eth1 節點並同步 Eth1 區塊鏈的數據
➤ 配置 Prysm 客戶端並同步 Eth1 節點數據
➤ 存款並激活驗證者密鑰對
那我們現在就開始吧!
第 1 步:生成質押數據
參與質押首先要決定你想要運行的驗證者節點的數量,並基於此生成一些數據文件。
注意:如果你的存款數據和驗證者密鑰對已經生成,可以跳過這一步。
一個驗證者節點需要存 32 ETH,你的 MetaMask 錢包裏要有相應足夠的 ETH。比如,如果你計劃運行 5 個驗證者節點,你將需要準備 160 ETH (32*5) 並且預留一些 gas 費。存款過程會稍後再講解,下面教大家怎麼把設備運行起來。
下載存款工具 (存款 CLI)
點擊此處下載最新發布的存款命令行界面 app (CLI app)。
下載鏈接:
https://github.com/ethereum/eth2.0-deposit-cli/releases/
在“Assets”那一欄選擇與你的設備 (如 Windows、Mac、Linux Desktop 等) 匹配的版本並下載。
運行存款工具 (Eth2 存款 CLI)
解壓文件,裏面應該有一個二進制文件 (可執行文件)。存款工具生成用於質押的文件和一組助記詞。這組助記詞需要安全地保存。下面有兩種選擇:
建議方案:將這份二進制文件複製粘貼到 USB 驅動器裏。連接到一臺此前從未連接過網絡的計算機,將文件複製到計算機裏並開始運行。
不建議方案:在當前使用的計算機上運行。但是網絡連接可能會導致你的助記詞密鑰泄漏。如果沒有未聯網的計算機,那就在開始運行之前斷開網絡。
準備好之後,在終端窗口 (或 windows 的命令提示符 CMD) 中運行這份文件以繼續使用下面列出的命令。確定好你要運行的驗證者節點的數量之後,用該數字替換 `。比如:
–num_validators 2`
Linux/Mac:
*
./deposit new-mnemonic --num_validators --chain mainnet
Windows:
*
deposit.exe new-mnemonic --num_validators --chain mainnet
在你選擇的計算機執行上面的步驟之後,你將被要求創建一個驗證者密鑰存儲庫(validator keystore) 密碼,並保存在一個安全的地方。在後面的步驟中,你將需要這個 keystore 來上傳驗證者密鑰到 Prysm 的驗證者錢包裏。
隨後會生成一組助記詞,請保存在一個安全的地方,這至關重要。因爲最終你需要助記詞來生成提款密鑰以提出質押的 ETH,並且增加驗證者節點時也需要使用助記詞。如果你丟失了助記詞,就無法將你的資產提出了。
一旦你點擊確認已經記好助記詞之後,你的驗證者密鑰對便會生成。
新創建的驗證者密鑰對和存款數據文件會放置在指定位置。文件夾的內容如下所示:
關於這些文件:
➤ 文件 deposit_data-[timestamp].json
包含驗證者公鑰和質押存款信息。該文件將用於完成隨後的 ETH 存款過程。
➤ 文件 keystore-m...json
包含經過加密的驗證者簽名密鑰。每一個驗證者節點對應一個“keystore-m”。該文件將被導入到 Prysm 驗證者錢包中以備質押時使用。隨後需要將這些文件複製粘貼到 Ubuntu 服務器中。
最後的步驟
現在你已經有了存款數據和密鑰存儲庫文件,接下來就可以設置 Ubuntu 服務器了。
注意:此時還不能進行存款。
首先完成並驗證你的質押設置非常重要。如果你的 ETH 存款激活了,但是質押設置還沒準備好的話,你將會受到怠工懲罰。
第 2 步:連接至服務器
使用一個 SSH 端口,連接至你的 Ubuntu 服務器。如果你用 root
登錄,最好是重新創建一個擁有管理權限的用戶賬戶,因爲使用 root 用戶登錄存在很大的風險。
注意:如果你不是用 root 登錄的便可以直接跳到第三步。
創建一個新賬戶。在 中填入你的用戶名,然後設置一個安全係數較高的密碼,並輸入其他可選信息。
*
# adduser
通過把新的用戶加入 sudo
羣組中,來授予其管理權限。這樣用戶在命令行前輸入 sudo
,便會以超級用戶的權限來執行操作。
*
# usermod -aG sudo
可選項:如果你使用 SSH 密鑰通過 root 用戶連接你的 Ubuntu 系統,你需要將新創建的賬戶和 root
用戶的 SSH 密鑰數據組合起來。
*
# rsync --archive --chown=: ~/.ssh /home/
最後,退出登錄你的 root
賬戶,然後使用你新創建的用戶名 “ 登入 Ubuntu 服務器。
第 3 步:升級服務器
確保系統更新至最新的軟件和安全設置。
*
$ sudo apt update && sudo apt upgrade$ sudo apt dist-upgrade && sudo apt autoremove$ sudo reboot
第 4 步:保護服務器
安全性十分重要。但由於本文不是針對安全性的指南,所有隻列出了一些基礎的設置。
修改 SSH 默認端口
SSH 默認端口是端口 22,也是易受攻擊的矢量,因此可以修改 SSH 端口來防止攻擊。
在 1024 — 49151 之間選擇一個端口號,然後運行以下命令以檢索尚未使用的端口號。沒有其他顯示便意味着該端口號未被使用;顯示紅色便意味着已被使用,請嘗試其他端口號。比如:sudo ss -tulpn | grep \':6673\'
*
$ sudo ss -tulpn | grep \':\'
確定端口號可用之後,通過升級 SSH 設置來修改默認端口。
*
$ sudo nano /etc/ssh/sshd_config
在文件中檢索或者添加 (如果沒有的話) Port 22 命令行。刪掉# (如果有的話) 並在下面的命令行中輸入端口號。
*
Port <YourSSHPortNumber>
參考下方的截圖。按 CTRL+x 然後選 ‘y’ ,按回車保存並退出。
重新啓動 SSH 服務以顯示上述所作的修改。
*
$ sudo systemctl restart ssh
登出並使用你的 SSH 端口號 “ 重新登入。
配置防火牆
Ubuntu 20.04 服務器可以使用默認的 UFW 防火牆來限制訪問該服務器的流量,不過要先設置其允許來自 SSH、Go Ethereum、Prysm 的入站流量。
安裝 UFW 防火牆
按照下面的命令行輸入以保證在默認情況下安裝 UFW。
*
$ sudo apt install ufw
應用 UFW 默認值
明確地應用默認值,拒絕入站流量,允許出站流量。
$ sudo ufw default deny incoming$ sudo ufw default allow outgoing
Allow SSH 允許 SSH
允許你此前設置的端口號 的入站流量。SSH 要求 TCP 協議。比如:
sudo ufw allow 6673/tcp
*
$ sudo ufw allow /tcp
**
**
拒絕 SSH 端口號 22
拒絕端口 22/TCP 的入站流量。
注意:當你完成了修改 SSH 默認端口之後再做這一步。
*
$ sudo ufw deny 22/tcp
允許 Go Ethereum
允許與 Go Ethereum 的對等節點 (端口 30303) 進行點對點 (P2P) 連接。如果你使用第三方託管的 Eth1 節點,則可以跳過這一步。
注意:如果你在本地託管你的 Ubuntu 服務器,你需要配置你的網絡路由以允許來自端口 30303 的入站流量。
*
$ sudo ufw allow 30303
允許 Prysm 客戶端
允許與 Prysm 的對等節點進行點對點連接,以便在信標鏈節點上 (Prysmatic Labs 的默認端口爲 13000/TCP 和 12000/UDP) 進行操作。
注意:如果你在本地託管你的 Ubuntu 服務器,你需要配置你的網絡路由以允許來自端口 13000 和 12000 的入站流量。
$ sudo ufw allow 13000/tcp$ sudo ufw allow 12000/udp
開啓防火牆並檢查是否已按上述步驟正確地配置。
$ sudo ufw enable$ sudo ufw status numbered
查看下面截圖以供參考。
第 5 步:配置定時器
Ubuntu 內置了時間同步,並默認使用 systemd‘s timesyncd 服務進行激活。驗證其是否正確運行。
*
$ timedatectl
激活 NTP service
,運行方式:
*
$ sudo timedatectl set-ntp on
參考下方的截圖:
只能使用單個定時器服務。如果你此前安裝過 NTPD,你需要檢查此文件是否還存在,如果存在請操作下面的命令行以刪除。
$ ntpq -p$ sudo apt-get remove ntp
第 6 步:設置一個 Eth1 節點
參與質押需要一個 Eth1 節點。你可以選擇運行一個本地 Eth1 節點,也可以使用第三方提供的節點。本教程會詳細講解如何運行 Go Ethereum,如果你選擇第三方服務的話,可以跳過這一步。
注意:檢查你的可用磁盤空間。一個 Eth1 節點需要大概 400 GB 的存儲空間。儘管你有一個容量較大的固態硬盤,Ubuntu 也可能顯示僅剩 200 GB 的可用空間。如果你遇到這種情況,請查看附錄 C —— 擴展邏輯卷。
安裝 Go Ethereum
使用 PPA (Personal Package Archives,個人安裝包存檔) 安裝 Go Ethereum 客戶端。
*
$ sudo add-apt-repository -y ppa:ethereum/ethereum$ sudo apt update$ sudo apt install geth
將 Go Ethereum 作爲後臺服務來運行,運行該服務需要創建一個賬戶。此種類型的賬戶無法登錄服務器。
*
$ sudo useradd --no-create-home --shell /bin/false goeth
爲 Eth1 區塊鏈創建數據目錄,用來存儲 Eth1 節點數據。
*
$ sudo mkdir -p /var/lib/goethereum
設置目錄的權限。goeth 賬戶需要權限來修改該數據目錄。
*
$ sudo chown -R goeth:goeth /var/lib/goethereum
創建一個 systemd 服務配置文件來對該服務進行配置。
*
$ sudo nano /etc/systemd/system/geth.service
將下列的服務配置複製粘貼到文檔中。
*
[Unit]Description=Go Ethereum ClientAfter=network.targetWants=network.target [Service]User=goethGroup=goethType=simpleRestart=alwaysRestartSec=5ExecStart=geth --http --datadir /var/lib/goethereum --cache 2048 --maxpeers 30 [Install]WantedBy=default.target
需要注意的 flags:
➤ flag --http
用來公開與 Prysm 信標鏈節點連接的一個 HTTP 端口 (http://localhost:8545)。
➤ flag --cache
指的是內部緩存的大小,以 GB 爲單位。數值的增減取決於你的可用系統內存。設置 2048
將大概需要使用 4-5 GB 的內存。
➤ flag --maxpeers
指的是所連接節點的最大數值。節點數量越多,意味着越多的網絡數據可用空間。所以記得不要將該數值設置得太低,否則你的 Eth1 節點將難以保持同步。
參考下方的截圖。按 CTRL+x 然後選 ‘y’ ,按回車保存並退出。
重新加載 systemd 以顯示上述的更改並啓動服務。檢查狀態以確保其正確運行。
*
$ sudo systemctl daemon-reload$ sudo systemctl start geth$ sudo systemctl status geth
參考下方的截圖:
如果你每一步都做對了,它會用綠色字體顯示”active (running)\”。如果沒有顯示,你需要倒回去重複上述步驟,修復問題。按 Q 退出 (此操作不會影響 geth 服務)。
允許 geth 服務在系統重啓時自動啓動。
*
$ sudo systemctl enable geth
Go Ethereum 節點將會開始同步。你可以運行下列命令來追蹤進程或檢查錯誤。按“CTRL+c”退出 (此操作不會影響 geth 服務)。
*
$ sudo journalctl -fu geth.service
參考下方的截圖:
查看同步狀態
要檢查 Eth1 節點同步狀態,請使用下列命令訪問控制檯。
geth attach http://127.0.0.1:8545> eth.syncing
如果顯示結果是 false
,表明你的同步已完成。如果顯示結果是同步數據,表明你仍在同步。作爲參考,大概有 7 億個已知狀態 knownStates
.
參考下方的截圖
完成時按“CTRL+d”以退出。
檢查連接的對等節點
要檢查你的 Eth1 節點所連接的對等節點,請使用下列命令訪問控制檯。
geth attach http://127.0.0.1:8545> net.peerCount
對等節點總數 peerCount
不會超過你所設置的最大對等節點總數 --maxpeers
。如果無法找到需要同步的對等節點,參閱下一部分。
完成後按“CTRL+d”以退出。
添加 bootnodes (可選)
有時可能要花點時間才能找到要同步的對等節點,可以添加 bootnodes 以改善這種情況。
訪問 https://gist.github.com/rfikki/a2ccdc1a31ff24884106da7b9e6a7453 獲得最新的清單並根據下列操作修改 geth 服務:
$ sudo systemctl stop geth$ sudo nano /etc/systemd/system/geth.service
修改 ExecStart 行,添加 --bootnodes
flag:在下方羅列出最新的對等點,並以逗號分割。
*
ExecStart=geth --http --datadir /var/lib/goethereum --cache 2048 --maxpeers 30 --bootnodes \"enode://d0b4a09d072b3f021e233fe55d43dc404a77eeaed32da9860cc72a5523c90d31ef9fab7f3da87967bc52c1118ca3241c0eced50290a87e0a91a271b5fac8d0a6@157.230.142.236:30303,enode://5070366042daaf15752fea340e7ffce3fd8fc576ac846034bd551c3eebac76db122a73fe8418804c5070a5e6d690fae133d9953f85d7aa00375d9a4a06741dbc@116.202.231.71:30303\"
保存文件之後退出。然後重啓服務並觀察。
*
$ sudo systemctl daemon-reload$ sudo systemctl start geth$ sudo journalctl -fu geth.service
注意:需要按照一系列特定的步驟來更新 Geth。更多信息請參見“附錄 A:更新 Geth”。
第 7 步:下載 Prysm
Prysm 客戶端由兩份二進制文件組成:信標鏈節點和驗證者客戶端。本步驟將講解如何下載 Prysm 和那兩份二進制文件。
首先,訪問
https://github.com/prysmaticlabs/prysm/releases 並找到最新發布的 Prysm 版本。通常在頁面的最頂部,比如:
在“Assets”那一欄(如果需要的話點擊展開) 將下載鏈接複製粘貼至文檔 beacon-chain-v…-linux-amd64 以及文檔 validator-v…-linux-amd64 中。請確保複製的鏈接是正確的。
操作下列命令來下載這些文件。將下方指令部分的 URL 改爲最新版本的下載鏈接。
$ cd ~$ sudo apt install curl$ curl -LO https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/beacon-chain-v1.0.0-linux-amd64$ curl -LO https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/validator-v1.0.0-linux-amd64
重命名文檔並使它們可執行。將他們複製到目錄 /usr/local/bin
中,Prysm 會在該處運行這些文件。根據需求修改文檔名。
$ mv beacon-chain-v1.0.0-linux-amd64 beacon-chain$ mv validator-v1.0.0-linux-amd64 validator$ chmod +x beacon-chain$ chmod +x validator$ sudo cp beacon-chain /usr/local/bin$ sudo cp validator /usr/local/bin
清理下載的文檔。
$ cd ~$ sudo rm beacon-chain && sudo rm validator
注意:需要按照一系列特定的步驟來更新 Prysm。更多信息請參見“附錄 B:更新 Prysm”。
第 8 步:導入驗證者密鑰對
導入你在第 1 步生成的密鑰對,以配置 Prysm 驗證者錢包。
複製驗證者密鑰存儲文件
如果你的驗證者存儲文件 keystore-m…json
不是在你的 Ubuntu 服務器上生成的,那麼你就需要將這些文件複製粘貼到你的本地目錄中。你可以用 USB 把文件拷過去 (如果你的服務器是本地的),也可以使用安全的 FTP (SFTP)。
將文件放置在:
$HOME/eth2deposit-cli/validator_keys
。如果需要的話創建文件目錄。
將密鑰存儲文件導入驗證者客戶端
創建一個目錄以存儲驗證者錢包數據,並授予當前用戶訪問該目錄的權限。當前用戶需要訪問權限來執行導入。在 “ 修改登入用戶名。
$ sudo mkdir -p /var/lib/prysm/validator$ sudo chown -R : /var/lib/prysm/validator
運行驗證者密鑰導入進程。你需要提供放置已生成的密鑰存儲庫文件的路徑。比如:$HOME/eth2deposit-cli/validator_keys
$ cd /usr/local/bin$ validator accounts import --keys-dir=$HOME/eth2deposit-cli/validator_keys
然後會出現一些使用條款,你需要輸入接受 accept
才能繼續下一步。
你將需要提供一個錢包目錄,在這裏你可以創建新的錢包。輸入:/var/lib/prysm/validator
然後創建一個錢包密碼並保存在一個安全的地方。稍後你配置驗證者時將需要使用這個密碼。
接下來你需要提供你在第 1 步生成的驗證者密鑰對。
如果輸入正確,密鑰將被導入。
創建一個錢包密碼文件
創建一個文件來保存錢包密碼,這樣 Prysm 驗證者服務就可以在不知道密碼的情況下訪問該錢包了。文件命名爲:password.txt
*
$ sudo nano /var/lib/prysm/validator/password.txt
將你的新錢包密碼導入文件中,用你的密碼替換掉 YourNewWalletPassword 。
參考下方的截圖。按 CTRL+x 然後選 ‘y’ ,按回車保存並退出。
接下來會講如何設置驗證者目錄以及密碼文件的訪問權限。
現在已經導入成功並且設置好錢包了。
第 9 步:配置 Prysm 信標節點
在這一步,你要把節點作爲服務那樣來配置並運行,因此如果系統重啓,這個過程將自動重新開始。
設置賬戶和目錄
爲信標節點的運行創建一個賬戶。這種賬戶不能用來登錄進入服務器。
*
$ sudo useradd --no-create-home --shell /bin/false prysmbeacon
爲信標節點的數據庫創建數據目錄和設置權限。
$ sudo mkdir -p /var/lib/prysm/beacon$ sudo chown -R prysmbeacon:prysmbeacon /var/lib/prysm/beacon$ sudo chmod 700 /var/lib/prysm/beacon$ ls -dl /var/lib/prysm/beacon
參考下方的截圖。
創建和配置服務
創建一個 systemd 服務的 config 文檔來配置服務
*
$ sudo nano /etc/systemd/system/prysmbeacon.service
將下面這段代碼複製粘貼到文檔裏
*
[Unit]Description=Prysm Eth2 Client Beacon NodeWants=network-online.targetAfter=network-online.target [Service]User=prysmbeaconGroup=prysmbeaconType=simpleRestart=alwaysRestartSec=5ExecStart=/usr/local/bin/beacon-chain --datadir=/var/lib/prysm/beacon --http-web3provider=http://127.0.0.1:8545 --accept-terms-of-use [Install]WantedBy=multi-user.target
需要注意的 flags:
—http-web3provider
如果你正在使用一個遠程或第三方的 Eth1 節點,你需要改變這個值。如果你是在本地創建 Eth1 節點的,這裏不需要改動。
—accept-terms-of-use
需要自動啓動服務。使用這個 flag 表示接受 Prysm 的使用條款。
參考下方的截圖。按 CTRL+x 然後 \’y\’,按回車保存然後退出。(譯註:此處原文無截圖)
重新加載 systemd 以顯示更改。
*
$ sudo systemctl daemon-reload
啓動服務並檢查,確保正確運行。
$ sudo systemctl start prysmbeacon$ sudo systemctl status prysmbeacon
參考下方的截圖
如果你每一步都做對了,它會用綠色字體顯示”active (running)\”。如果沒有顯示,你需要倒回去重複上述步驟,修復問題。按 Q 退出 (不會影響 prysmbeacon 的服務)。
允許服務隨系統重啓而自動重啓。
*
$ sudo systemctl enable prysmbeacon
如果 Eth2 鏈處於創世後的狀態,Prysm 的信標鏈會開始同步數據。它可能要花幾個小時才能完全實現同步。你可以通過運行 journalctl
命令來追蹤進程或檢查錯誤。按 CTRL+c 退出 (將不會影響 prysmbeacon 的服務)
*
$ sudo journalctl -fu prysmbeacon.service
日誌的截位視圖會顯示以下狀態信息。
*
Nov 27 06:20:48 ETH-STAKER-001 bash[44829]: time=\"2020-11-27 06:20:48\" level=info msg=\"Processing deposits from Ethereum 1 chain\" deposits=1024 genesisValidators=1019 prefix=powchain
當 Eth2 主網啓動,信標鏈和驗證者將自動開始處理數據。
注意:如果你的 Eth1 節點仍在同步,你將會出現以下報錯信息。當同步完成了,它會自動消失。
*
Nov 27 06:16:29 ETH-STAKER-001 bash[44747]: time=\"2020-11-27 06:16:29\" level=error msg=\"Could not connect to powchain endpoint\" error=\"could not dial eth1 nodes: eth1 node using incorrect chain id, 0 != 1\" prefix=powchain
第 10 步:配置 Prysm 驗證者客戶端
在這一步,你需要將你的驗證者客戶端作爲一項後臺服務來配置和運行,因此係統重啓時這個進程會自動重啓。
創建賬戶和目錄
爲驗證者客戶端的運行創建一個賬戶。這類賬戶無法登錄服務器。
*
$ sudo useradd --no-create-home --shell /bin/false prysmvalidator
這個驗證者數據目錄已經在第 8 步創建了。現在設置權限,使得這個 prysmvalidator
賬戶可以修改這個數據目錄。
*
$ sudo chown -R prysmvalidator:prysmvalidator /var/lib/prysm/validator$ sudo chmod 700 /var/lib/prysm/validator$ ls -dl /var/lib/prysm/validator
參考下方的截圖。
驗證者錢包的 password.txt 文檔在第 8 步已經創建了。現在設置權限,使得只有 prysmvalidator
的賬戶可以讀取這個文檔。
$ sudo chmod -R 700 /var/lib/prysm/validator/password.txt$ sudo ls -lh /var/lib/prysm/validator/
創建並配置服務
創建一個 systemd 服務文件來配置服務
*
$ sudo nano /etc/systemd/system/prysmvalidator.service
將下面這段代碼複製粘貼到文檔裏
*
[Unit]Description=Prysm Eth2 Validator ClientWants=network-online.targetAfter=network-online.target [Service]User=prysmvalidatorGroup=prysmvalidatorType=simpleRestart=alwaysRestartSec=5ExecStart=/usr/local/bin/validator --datadir=/var/lib/prysm/validator --wallet-dir=/var/lib/prysm/validator --wallet-password-file=/var/lib/prysm/validator/password.txt --graffiti=\"\" --accept-terms-of-use [Install]WantedBy=multi-user.target
需要注意的 flag:
--graffiti=\" \"
填上你的塗鴉字串符。出於安全和隱私,應避免使用能唯一辨識你的信息。比如 --graffiti \"Hello Eth2! From Dominator\"
。
參考下方的截圖。按 CTRL+x 然後選 ‘y’ ,按回車保存並退出。
重新加載 systemd 以顯示更改。
*
$ sudo systemctl daemon-reload
開啓服務並檢查,確保運行正確。
$ sudo systemctl start prysmvalidator$ sudo systemctl status prysmvalidator
參考下方的截圖
如果你每一步都做對了,它會用綠色字體顯示”active (running)\”。如果沒有顯示,你需要倒回去重複上述步驟,修復問題。按 Q 退出 (不會影響 prysmvalidator 的服務)。
允許服務隨系統重啓而自動重啓。
*
$ sudo systemctl enable prysmvalidator
你可以通過運行 journalctl 命令來追蹤進程或檢查錯誤。按 CTRL+c 來退出 (將不會影響 prysmvalidator 的服務)
*
$ sudo journalctl -fu prysmvalidator.service
日誌的截位視圖會顯示以下狀態信息。
*
ETH-STAKER-001 systemd[1]: Started Prysm Eth2 Validator Client.level=warning msg=\"Running on ETH2 Mainnet\" prefix=flagslevel=info msg=\"Opened validator wallet\" keymanager-kind=direct level=info msg=\"Checking DB\" databasePath=\"/var/lib/prysm/validator\" level=info msg=\"Starting validator node\" prefix=node ...level=info msg=\"Validating for public key\" prefix=validator publicKey=0x9072a8f02c18level=info msg=\"Validating for public key\" prefix=validator publicKey=0xaa5ff8b63560level=info msg=\"Waiting for beacon chain start log from the ETH 1.0 deposit contract\" prefix=validatorlevel=info msg=\"Beacon chain started\" genesisTime=2020-12-01 12:00:23 +0000 UTC prefix=validatorlevel=info msg=\"Waiting for deposit to be observed by beacon node\" prefix=validator pubKey=0x9072a8f02c18 status=\"UNKNOWN_STATUS\"
你可以在 beaconcha.in 查看你的驗證者狀態。只需要搜索你的驗證者公鑰或使用你的 MetaMask (或其他)錢包地址進行搜索。你的數據可能要過一段時間纔會在網站上顯示。
第 11 步:進行驗證者存款
現在你的節點已經設置好並開始運行,你將需要將 ETH 存入你的驗證者節點。
注意:如果你已經提交了你的質押存款,你可以跳過這一步。
這一步是關於將所需的 ETH 存入 Eth2.0 的存款合約。不要把 ETH 發送到存款合約。這需要在瀏覽器上通過 Eth2.0 的 Launchpad 網站啓動你的 MetaMask (或其他) 錢包。
注意:如果是在創世後進行的話,你需要在你的 Eth1 節點和信標鏈都完全同步完之前存入你的存款。如果你不這樣做,當你的 Eth1 節點或信標鏈在同步時,Prysm 會處於怠工狀態,而你可能要遭遇怠工懲罰。
以太坊 2.0 Launchpad:
https://launchpad.ethereum.org/
一直隨着屏幕切換點擊這些警告步驟,直到你到達密鑰對生成的部分。選擇你打算運行的驗證者數量。選擇一個與你在步驟 1 中生成的驗證者文件數量相匹配的值。
往下滾動,看這些內容你是否同意,然後點擊“Continue” (繼續)。
你會被要求上傳 deposit_data-[timestamp].json
文檔。這個文檔你是在步驟 1 生成的。瀏覽 / 選擇或拖拉這個文檔,然後點擊 Continue。
連接你的錢包。選擇 MetaMask (或者是其他支持的錢包),登錄,選擇存有你的 ETH 的錢包,然後點擊 Continue。
你的 MetaMask 餘額就會顯示出來。如果你選擇了主網且你有充足的 ETH 餘額,網站會允許你繼續下一步。
然後會出現一個 Summary (總結),顯示驗證者數和所需的 ETH 數量。如果你同意的話就給那些方框打勾,然後點擊 Continue。
如果你準備好去存款了,點擊 \”Initiate All Transactions\” (啓動所有交易)。
當你到了可以確認每筆交易那一步時,MetaMask (或其他錢包) 的窗口會自動彈出。
當所有的交易都成功完成時,你的質押也完成了!
恭喜你已經成功存入你的質押存款了!
查看你的驗證者存款狀態
新加入的驗證者需要等一下 (幾個小時到幾天不等) 才能激活。你可以以下幾步來查看你的密鑰狀態:
1. 複製你的 MetaMask (或其他)錢包地址。
2. 前往這裏 : beaconcha.in/
3. 用你的錢包地址搜索你的密鑰。
點進某個驗證者詳情,每個驗證者激活後你會看到在 Status 那一欄有預估時間。
現在你面前有一個條正在運作的信標鏈、一個驗證者節點以及你的主網存款。如果以太坊 2.0 主網處於運行中,一旦你的存款被激活,你將開始工作並賺取收益。
恭喜你:你終於正式成爲了一名以太坊質押者!
是時候來一頓肥宅水狂歡了。
第 12 步:監測
因爲一些還沒被解決的安全問題,監測這一部分將在未來補充到這份教程。
結束語及後續建議
感謝大家給我這個機會。希望這份教程能幫到大家。
後續步驟 :
➤ 檢查三次所有密鑰與密碼備份。
➤ 重啓你的電腦並確保服務都能自動啓動。
➤ 瞭解如何升級客戶端與服務器軟件。
➤ 使用 htop 來監測本地電腦的資源
➤ 熟悉 beaconcha.in ,這樣你就能監測你的驗證者情況,其提供警報功能 (通 過郵件發送,需要註冊)和最多 3 個 POAP。
➤ 加入 Ethstaker 和 Prysm 的 Discord,留意重要通知。
➤ 請在 Discord, Twitter, or Reddit 分享對這份教程的反饋。
➤ 在 Ethstaker 的 discord 上幫助其他人設置。
➤ 用 friend link 分享這份教程
➤ 支持一下:somer.eth
延伸閱讀
強烈建議大家從儘可能多的來源獲取信息,還有很多其他資源可以幫助你熟悉如何在 Eth2 上質押。
如果作者對這些資源還沒測試或驗證過,而你採用了的話,是要自己承擔風險的。
➤ 客戶端團隊的官方文檔 Prysm | Lighthouse | Teku | Nimbus
➤ /r/EthStaker Sticky
➤ 以太坊 2.0 客戶端的非官方 docker 環境
➤ 如何在 Ubuntu 上設置 Eth2 主網驗證者系統
➤ 指南 | 如何在 ETH2 主網設置驗證者
➤ 指南 | ETH2 驗證者信標鏈節點的安全最佳實踐
➤ 質押節點的額外監察
➤ 以太坊 2.0 質押的 Telegram 服務
Appendix 附錄 A — Geth 更新
如果你需要更新到 Geth 的最新版本,請按下列步驟:
*
$ sudo systemctl stop prysmvalidator$ sudo systemctl stop prysmbeacon$ sudo systemctl stop geth$ sudo apt update && sudo apt upgrade$ sudo systemctl start geth$ sudo systemctl status geth # <-- Check for errors$ sudo journalctl -fu geth # <-- Monitor$ sudo systemctl start prysmbeacon$ sudo systemctl status prysmbeacon# <-- Check for errors$ sudo journalctl -fu prysmbeacon.service # <-- Monitor$ sudo systemctl start prysmvalidator$ sudo systemctl status prysmvalidator# <-- Check for errors$ sudo journalctl -fu prysmvalidator.service # <-- Monitor
Appendix 附錄 B — 更新 Prysm
如果你需要更新到 Prysm 的最新版本,請按下列步驟進行:
首先,前往這裏找出最新的 Linux 發佈。在 asset 部分 (如果需要的話點擊展開) 複製下載連接到 beacon-chain-v…-linux-amd64 和 validator-v…-linux-amd64 文檔。注意要複製正確的鏈接。
將下方指令部分的 URL 改爲最新版本的下載鏈接。
$ cd ~$ sudo apt install curl$ curl -LO https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/beacon-chain-v1.0.0-linux-amd64$ curl -LO https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/validator-v1.0.0-linux-amd64
停止 Prysm 的服務。
$ sudo systemctl stop prysmvalidator$ sudo systemctl stop prysmbeacon
重命名文檔使其可執行。複製它們到 /usr/local/bin
目錄。需要的話修改下方的文檔名。
$ mv beacon-chain-v1.0.0-linux-amd64 beacon-chain$ mv validator-v1.0.0-linux-amd64 validator$ chmod +x beacon-chain$ chmod +x validator$ sudo cp beacon-chain /usr/local/bin$ sudo cp validator /usr/local/bin
重啓服務並檢查錯誤。
*
$ sudo systemctl daemon-reload$ sudo systemctl start prysmbeacon$ sudo systemctl status prysmbeacon# <-- Check for errors$ sudo journalctl -fu prysmbeacon.service # <-- Monitor$ sudo systemctl start prysmvalidator$ sudo systemctl status prysmvalidator# <-- Check for errors$ sudo journalctl -fu prysmvalidator.service # <-- Monitor
清理已下載的文檔。
$ cd ~$ sudo rm beacon-chain && sudo rm validator
Appendix 附錄 C — 擴展邏輯卷
很多時候 Ubuntu 只預配 200 GB 的較大固態硬盤,導致用戶在同步他們的 Eth1 節點時就耗盡存儲空間了。報錯信息近似於:
*
Fatal: Failed to register the Ethereum service: write /var/lib/goethereum/geth/chaindata/383234.ldb: no space left on device
爲了解決這個問題,假設你有一個大於 200 GB 的固態硬盤,你可以通過下列步驟爲 LVM (邏輯卷管理) 擴大容量。
$ sudo lvdisplay # <-- Check your logical volume size$ sudo lvm > lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv> exit$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv$ df -h # <-- Check results
這會重新調整你的硬盤至它的最大可用空間。
如果你在這方面需要支持,請在 EthStaker 的 Discord 上尋求幫助。
完整免責聲明
這篇文章(教程) 僅供參考,不構成專業建議。作者不保證文章中任何信息的準確性、質量、完整性、實效性與有效性。本文所有信息均按“原樣”提供,不作任何形式的保證,並可隨時更改,恕不另行通知。作者不因任何目的對任何形式的明示、暗示和法定保證負責,包括對文章內容的準確性、時效性、完整性或合適性的保證。作者也不對任何直接、間接、偶然、後果性或任何其他因使用本文或根據本文所提供的信息而造成的損害負責。這包括任何人身傷害、業務中斷、使用損失、數據丟失、利潤損失或任何其他金錢損失,無論是在合同、疏忽或其他不當使用中,即使作者已瞭解這種可能性。
點擊“閱讀原文”獲取文章內部鏈接!
原文鏈接:https://someresat.medium.com/guide-to-staking-on-ethereum-2-0-ubuntu-prysm-56f681646f74
ECN 的翻譯工作旨在爲中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及 ETH 中文站。若需長期轉載,請聯繫 [email protected] 進行授權。