本文将演示如何通过质押以太坊,成为验证节点。
在上一篇文章(链接如下),介绍了如何运行以太坊的执行和共识节点。第一次运行时,通常节点同步要等待2-3天时间(共识链和执行层需要分别进行同步,但最慢的是共识层),这是由于共识层客户端需要从第一个区块开始重新验证和同步。
为了加快共识层的同步速度,可以选择使用checkpoint sync,即选择受信任的别的信标链最新确认区块开始同步,并假设此前的所有区块已经被验证:
添加checkpoint sync的方法也很简单,只要重新运行./prysm.sh,并添加两个额外参数,如果是goerli(prater)的话:
--checkpoint-sync-url=https://goerli.checkpoint-sync.ethpandaops.io
--genesis-beacon-api-url=https://goerli.checkpoint-sync.ethpandaops.io
上面的checkpoint sync节点来自:
更多的checkpoints,包括主网的可以选择下面的节点:
了解更多checkpoint sync的细节可以看这篇文章:
首先,可以通过Goerli Beacon Chain网站查看最新的slot:
再去查看运行prysm的日志:
tail -n 100 /home/master/ethereum/log/prysm.txt
可以看到slot是匹配的,因此证明节点已经完成了同步。
输入以下命令查询geth是否完成同步
geth attach http://127.0.0.1:8545
eth.syncing
如果返回的是false,则表示同步完成;true则表示仍在同步,同步尚未完成。
通常执行层同步需要几个小时时间,主网大概同步完会有600多G (通过在linux输入df -h 可以查看),通过打印geth.txt的log可以查看最新的同步到了哪个区块:
输入命令:
tail -n 100 geth.txt
number=15714797,而etherscan.io 网站上显示的最新区块为:
两者数字接近,就表示已经同步完成了。
要想质押以太币成为验证节点,需要准备至少32个以太币。测试网的以太币可以前往@ethstaker的discord获得(下面的链接):
首先,需要进行真人验证(注意,这里不是实名认证)。用户可以下载BrightID 软件并注册(图片、名字都可以是假的),然后前往discord 的 #testnet下面随便一个频道,输入 /verify 查询具体真人验证的流程。
用户需要通过参加BrightID的 zoom meeting来获得验证(下面的链接)。整个流程大概需要花费10分钟左右时间。
在BrightID获得验证后,返回discord,并扫描BrightID Bot提供的二维码即可绑定discord账号,之后前往 #request-goerli-eth 频道,手动输入命令:
/request-goeth <钱包地址>
几乎是在瞬间机器人便会发起32个以太币的转账交易。
用户可以用以下方法安装以太坊质押客户端Ethereum Staking CLI:
通常,用户只需要使用wget下载对应安装包,再解压即可(参考上一篇文章中安装geth的方法)。
wget https://github.com/ethereum/staking-deposit-cli/releases/download/v2.3.0/staking_deposit-cli-76ed782-linux-amd64.tar.gz
tar -xvf staking_deposit-cli-76ed782-linux-amd64.tar.gz
cd staking-deposit-cli-2.3.0
./deposit new-mnemonic --num_validators=1 --mnemonic_language=english --chain=prater
也可以使用docker进行安装以太坊质押客户端,其中--network host . 和--net=host 是用来防止docker的虚拟网络无法连接网络的问题。
wget https://github.com/ethereum/staking-deposit-cli/archive/refs/tags/v2.3.0.tar.gz
tar -xvf v2.3.0.tar.gz
cd staking-deposit-cli-2.3.0
docker build -t ethereum/staking-deposit-cli --network host .
docker run -it --rm --net=host -v $(pwd)/validator_keys:/app/validator_keys ethereum/staking-deposit-cli new-mnemonic --num_validators=1 --mnemonic_language=english --chain=prater
跟随页面进行操作,之后会生成助记词,注意这里一定要好好保存!
此外,命令还会生成 validator_keys 文件夹,文件夹里包括:
deposit_data-.json - 包含存储数据,之后要上传到Ethereum launchpad
keystore-m_.json - 包含公钥和加密后的私钥
首先,将validator_keys 文件夹移动到consensus文件夹下:
cp -r validator_keys /home/master/ethereum/consensus/
再将钥匙保存到共识层客户端中,方法是输入以下指令。其中,--keys-dir 是 consensus/validator_keys 的完整路径。
./prysm.sh validator accounts import --keys-dir=/home/master/ethereum/consensus/validator_keys --prater
在跟随操作的步骤中,选择将钱包地址的路径保存在:/home/master/ethereum/consensus
如果一切顺利,会收到导入成功的消息:
Successfully imported 1 accounts, view all of them by running
accounts list
检查导入了的验证者节点钱包信息可以输入以下指令:
./prysm.sh validator accounts list --wallet-dir=/home/master/ethereum/consensus
之后,前往以太坊的launchpad网站质押以太币。按照上面的步骤,最终将deposit_data-*.json 文件上传,并绑定存有32个测试网以太坊的MetaMask,并将32个以太币进行质押。
这时,网站会告诉你需要等待 16-24小时。之所以要等这么长时间,是为了确保32以太币质押被信标链最终确认,完整介绍可以查看下面的网址:
输入以下命令运行节点,其中 <YOUR_FOLDER_PATH> 是consensus文件夹的完整路径,这里假设是 /home/master/ethereum/consensus。
--wallet-password-file 字段则保存了钱包密码,这里假设密码保存在 /home/master/ethereum/consensus/wallet_pwd.txt,使用该命令行可以避免使用tmux指令(本文末尾)。
cd /home/master/ethereum/consensus
./prysm.sh validator --wallet-dir=<YOUR_FOLDER_PATH> --suggested-fee-recipient=<接收质押收益的钱包地址> --wallet-password-file=/home/master/ethereum/consensus/wallet_pwd.txt --prater
如果没有报错,可以调整至后台持续运行:
以nohup命令为例,将日志保存在log文件夹下面::
nohup ./prysm.sh validator --wallet-dir=<YOUR_FOLDER_PATH> --suggested-fee-recipient=<接收质押收益的钱包地址> --wallet-password-file=/home/master/ethereum/consensus/wallet_pwd.txt --prater > /home/master/ethereum/log/validator.txt 2>&1 &
重新运行./prysm.sh beacon-chain 的命令行,并增加以下字段:
--suggested-fee-recipient=<接收质押收益的钱包地址>
至此,用户已经已经完成了以太坊测试网的验证节点,并可以生成区块和获得奖励!
下一篇文章,将介绍如何更好地监测节点运行状况。
为了确保prysm保持运行,可以使用tmux。tmux是一个终端复用软件,用户即便关闭了窗口,也能让程序一直运行,当用户重新登录时,也能查看进程。
CentOS 系统需要首先安装:
yum install tmux
之后,新开一个终端并取名为eth
tmux new -s eth
前往consensus文件夹,并运行一遍之前的命令行以启动验证节点,并输入钱包地址。
如果想要关闭当前的窗口,可以输入ctrl +b,然后输入d即可。
如果想要查看所有终端的运行情况,可以新开一个窗口并输入:
tmux ls
如果想返回特定终端,可以使用attach命令行
tmux attach -t eth
如果要停止运行这个终端
tmux kill-session -t session-name
完整的tmux使用手册可以查看: