注意:
-在本教程将在 Pyrmont 测试网上设置、安装和运行 ETH 2.0 验证器节点。
-测试网和主网上部署验证器节点的过程是相似的。
前置条件
搭建 ETH 2.0 节点,需要:- Eth 1.0 节点
- 验证者客户端
- 信标链客户端
软硬件要求:
- 操作系统: 64位Linux(即Ubuntu 20.04 LTS Server or Desktop)
- 处理器: 四核 CPU、Intel Core i7–4770 或 AMD FX-8310 或更好
- 内存: 16GB RAM或更多
- 存储: 2TB SSD 或更多(普通HDD不可用)
- 钱包:已安装 Metamask,并至少获得32个ETH,以及微量的ETH用于手续费
实施步骤
现在,我们将完成设置验证器节点的必要步骤。第 1 步:获取测试网 ETH
每个验证者需要 32 ETH,有两种选择:
- 测试网通过水龙头,例如使用https://faucet.goerli.mudit.blog/。
- 主网则需要CEX平台直接购入,或者在DEX的Uniswap中交易获取。
第 2 步: 设置一个用户,这样我们就不用root用户了,以下命令应以 root 身份运行
#创建用户
sudo useradd -m -s /bin/bash validato
#禁止登录
passwd -l validator
#添加权限
sudo usermod -aG sudo validator #use the user su validator
第 3 步: 下载 eth2deposit-cli 以生成密钥对
此步骤涉及下载 eth2deposit-cli 以生成用于通过启动板网站创建存款的密钥对。本教程使用的是预构建的二进制文件,其校验和和二进制文件可以从此发布页面获得。
#下载二进制包
cd $HOME
wget https://github.com/ethereum/eth2.0-deposit-cli/releases/download/v1.2.0/eth2deposit-cli-256ea21-linux-amd64.tar.gz
#执行校验
echo "825035b6d6c06c0c85a38f78e8bf3e9df93dfd16bf7b72753b6888ae8c4cb30a *eth2deposit-cli-256ea21-linux-amd64.tar.gz" | shasum -a 256 --check
#确保以下输出可见
eth2deposit-cli-256ea21-linux-amd64.tar.gz: OK
校验和完成后,将提取二进制文件
#提取文件
tar -xvf eth2deposit-cli-256ea21-linux-amd64.tar.gz
mv eth2deposit-cli-256ea21-linux-amd64 eth2deposit-cli
rm eth2deposit-cli-256ea21-linux-amd64.tar.gz
cd eth2deposit-cli
第 4 步:生成密钥对
此步骤涉及生成两组密钥对,然后用于通过启动板网站创建存款。
#创建密钥
./deposit new-mnemonic --chain pyrmont
最后一个命令将提示输入 KEYSTORE 密码 ,该密码应与生成的 助记符 一起 安全 保存。
此外,它将在 $HOME/eth2deposit-cli 中名为 validator_keys 的文件夹中生成文件。再一次,这些应该被备份并保持安全。
第 5 步:通过 Launchpad 存入 ETH 来注册成为验证者
要成为 ETH 2.0 验证者,必须通过启动板的网站进行存款。
以下是根据可用的不同网络列出的启动板链接列表:
- 主网 — https://launchpad.ethereum.org/en/overview
- 普拉特 — https://prater.launchpad.ethereum.org/en/overview
- Pyrmont — https://pyrmont.launchpad.ethereum.org/en/overview
A) 将您的deposit_data-#########.json
(在validator_keys
目录中找到)上传到启动板网站
上传您的 deposit_data- #########.json file
连接你的钱包
C) 确认交易。每个验证者有一笔 32 ETH 的存款交易。第 6 步:检查应用程序的状态
遵循上述步骤之后,可以通过此链接监控验证人的申请流程
https://pyrmont.beaconcha.in/validator/0x 。 (Pyrmont 可改为 Prater 或主网)
当应用程序仍处于待处理状态时,它将如下所示
待定申请
应用程序准备就绪后,输出应如下所示
活跃的验证者
第 7 步:设置 ETH 1.0 节点
为了设置 ETH 2 节点,您需要连接到 ETH 1.0 节点,教程中将使用 Geth 来执行此操作。
以下命令可用于设置节点
#安装Geth
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update -y
sudo apt-get install ethereum -y
#配置文件
cat > $HOME/eth1.service << EOF
[Unit]
Description = geth eth1 service
Wants = network-online.target
After = network-online.target
[Service]
User = $(whoami)
ExecStart = /usr/bin/geth --http --goerli --metrics --pprof
Restart = on-failure
RestartSec = 3
TimeoutSec = 300
[Install]
WantedBy = multi-user.target
EOF
#启动服务
sudo mv $HOME/eth1.service /etc/systemd/system/eth1.service
sudo chmod 644 /etc/systemd/system/eth1.service
sudo systemctl daemon-reload
sudo systemctl enable eth1
sudo systemctl start eth1
第 8 步:下载 Prysm 并导入验证器密钥
Prysm 用于设置 ETH 2.0 信标链节点和验证器,下载 Prysm 并导入在前面步骤中生成的验证器密钥
#安装prysm客户端
mkdir ~/prysm && cd ~/prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
#导入密钥
$HOME/prysm/prysm.sh validator accounts import --pyrmont --keys-dir=$HOME/eth2deposit-cli/validator_keys
#验证是否生效
$HOME/prysm/prysm.sh validator accounts list --pyrmont
第 9 步:启动信标链节点
#systemctl配置文档
cat > $HOME/beacon-chain.service << EOF
[Unit]
Description = eth2 beacon chain service
Wants = network-online.target
After = network-online.target
[Service]
Type = simple
User = $(whoami)
ExecStart = $(echo $HOME)/prysm/prysm.sh beacon-chain --pyrmont --p2p-max-peers=45 --monitoring-host="0.0.0.0" --http-web3provider=http://127.0.0.1:8545 --accept-terms-of-use
Restart = on-failure
[Install]
WantedBy = multi-user.target
EOF
#启动服务
sudo mv $HOME/beacon-chain.service /etc/systemd/system/beacon-chain.service
sudo chmod 644 /etc/systemd/system/beacon-chain.service
sudo systemctl daemon-reload
sudo systemctl enable beacon-chain
sudo systemctl start beacon-chain
第 10 步:存储 Prysm 密码,用于提取、解密并加载验证器
#修改权限
echo 'my_password_goes_here' > $HOME/.eth2validators/validators-password.txt
sudo chmod 600 $HOME/.eth2validators/validators-password.txt
第 11 步:启动验证器
#systemctl配置文档
cat > $HOME/validator.service << EOF
[Unit]
Description = eth2 validator service
Wants = network-online.target beacon-chain.service
After = network-online.target
[Service]
User = $(whoami)
ExecStart = $(echo $HOME)/prysm/prysm.sh validator --pyrmont --accept-terms-of-use --wallet-password-file $(echo $HOME)/.eth2validators/validators-password.txt
Restart = on-failure
[Install]
WantedBy = multi-user.target
EOF
#启动服务
sudo mv $HOME/validator.service /etc/systemd/system/validator.service
sudo chmod 644 /etc/systemd/system/validator.service
sudo systemctl daemon-reload
sudo systemctl enable validator
sudo systemctl start validator
可以通过验证验证器的公钥是否出现在日志中来验证验证器是否启动,如下所示:
INFO Enabled validator voting_pubkey: 0x2374.....7121