部署ETH2.0测试网搭建教程(geth+prysum)
系统配置:
cpu: 8核
内存: 16G及以上
系统盘: 60G
数据盘: 2T及以上
系统: centos 7 (64位)
带宽: 独享 100M
1.下载geth
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.12.0-e501b3b0.tar.gz
tar zxf geth-linux-amd64-1.12.0-e501b3b0.tar.gz
cd geth-linux-amd64-1.12.0-e501b3b0
cp geth /usr/bin
geth version
Geth Version: 1.12.0-stable Git Commit: e501b3b05db8e169f67dc78b7b59bc352b3c638d Git Commit Date: 20230525 Architecture: amd64 Go Version: go1.20.3 Operating System: linux GOPATH= GOROOT=
2.安装prysum
mkdir -p /data/prysm && cd /data/prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
3.生成JWT令牌
./prysm.sh beacon-chain generate-auth-secret
- 会在当前目录下生成1个jwt.hex文件,不要删了,这个文件在后面很重要
- 使用客户端创建jwt token. jwt token将用来帮助验证共识层和执行层的客户端的数据交互.
4.启动geth
- 让执行层节点在goerli测试网上的运行
nohup geth --goerli --http.api "eth,net,engine,admin" --http --http.addr "0.0.0.0" --authrpc.addr "0.0.0.0" --cache 8192 --maxpeers 30 --allow-insecure-unlock --authrpc.jwtsecret /data/prysm/jwt.hex --datadir /data/eth_data > /data/output.log 2>&1 &
5.使用Prysm运行共识层节点
-
将goerli测试网的原始状态数据下载到/data/prysm目录下
cd /data/prysm wget https://github.com/eth-clients/eth2-networks/raw/master/shared/prater/genesis.ssz
-
运行Prysm启动共识层客户端
./prysm.sh beacon-chain --prater --execution-endpoint=http://localhost:8551 --genesis-state=genesis.ssz --jwt-secret=/data/prysm/jwt.hex --suggested-fee-recipient=0x4xxxxxxxxxxxxxx
- 第一次运行时,需要输入确认命令,如果没有报错,就可以放入后台执行了.
nohup ./prysm.sh beacon-chain --prater --execution-endpoint=http://localhost:8551 --genesis-state=genesis.ssz --jwt-secret=/data/prysm/jwt.hex --suggested-fee-recipient=0x4xxxxxxxxxxxxxxxx >> /data/prysm.log 2>&1 &
-
因为要做验证节点,所以我加上参数:
–suggested-fee-recipient=<接收质押收益的钱包地址>接收质押收益的钱包地址>
6.加速共识层数据同步速度
- 获取可信检查点: Ethereum Beacon Chain checkpoint sync endpoints,你们自己找个喜欢的节点.
- 这里我们是要同步goerli测试网络的,所以不要找错了.
nohup ./prysm.sh beacon-chain --checkpoint-sync-url=https://beaconstate-goerli.chainsafe.io --genesis-beacon-api-url=https://beaconstate-goerli.chainsafe.io --prater --execution-endpoint=http://localhost:8551 --genesis-state=genesis.ssz --jwt-secret=/data/prysm/jwt.hex --suggested-fee-recipient=0x4xxxxxxxxxxx >> /data/prysm.log 2>&1 &
- 等同步一天后,就可以进行验证
curl -s http://127.0.0.1:3500/eth/v1/beacon/headers/finalized | jq .'data.header.message'
- 如果报没有jq的话,那就要执行
yum -y install jq
- 好了,到这里如果你不做验证节点的话,你就已经完成以太坊的节点部署,同步到最新区块高度的话大概需要2天的时间.
7.生成助记词和公私钥
-
安装以太坊质押客户端Ethereum Staking CLI,这里我们使用docker来安装以太坊质押客户端:
docker pull rocdk890/staking-deposit-cli:2.5.0 docker run -it --rm --net=host -v /data/validator_keys:/app/validator_keys rocdk890/staking-deposit-cli:2.5.0 new-mnemonic --num_validators 1 --chain goerli --eth1_withdrawal_address 0x4xxxxxxxxxxxx
- 跟随页面进行操作,之后会生成助记词,注意这里一定要好好保存.
- 此命令会生成 validator_keys 文件夹,里面包括:
- deposit_data-.json - 包含存储数据,之后要上传到Ethereum launchpad
- keystore-m_.json - 包含公钥和加密后的私钥
8.将validator keys保存到共识层客户端和以太坊lanuchpad
-
将validator_keys 文件夹移动到/data/prysm文件夹下
cd /data cp -r validator_keys /data/prysm/
-
再将钥匙保存到共识层客户端中,方法是输入以下指令:
cd /data/prysm/ ./prysm.sh validator accounts import --keys-dir=/data/prysm/validator_keys --prater
-
在跟随操作的步骤,如果一切顺利,会收到导入成功的消息:
Successfully imported 1 accounts, view all of them by running accounts list
-
检查导入了的验证者节点钱包信息可以输入以下指令:
cd /data/prysm/ ./prysm.sh validator accounts list --wallet-dir=/data/prysm
-
然后前往以太坊的launchpad网站质押以太币.按照上面的步骤,最终将deposit_data-*.json 文件上传,并绑定存有32个测试网以太坊的MetaMask,并将32个以太币进行质押.
主网:
测试网:
-
做完之后,网站会告诉你需要等待 16-24小时.之所以要等这么长时间,是为了确保32以太币质押被信标链最终确认.具体介绍看下面这个网址:
9.运行验证节点并添加质押收益的钱包地址
cd /data/prysm/
./prysm.sh validator --wallet-dir=/data/prysm --suggested-fee-recipient=0x4xxxxxxxxxxxxxxxxxx --wallet-password-file=/data/prysm/wallet_pwd.txt --prater
-
–wallet-password-file 字段则保存了钱包密码,这里假设密码保存在 /data/prysm/wallet_pwd.txt
-
如果没有报错,可以调整至后台持续运行:
nohup ./prysm.sh validator --wallet-dir=/data/prysm --suggested-fee-recipient=0x4xxxxxxxxxxxxxxx --wallet-password-file=/data/prysm/wallet_pwd.txt --prater > /data/validator.txt 2>&1 &
-
将质押获得收益的钱包地址输入prysm beacon-chain的命令中:
- 重新运行./prysm.sh beacon-chain 的命令行,并增加以下字段:
--suggested-fee-recipient=<接收质押收益的钱包地址>
-
因为我在步骤5的时候已经加了,所以这里就不用去重新运行了.
-
至此,用户已经已经完成了以太坊测试网的验证节点,并可以生成区块和获得奖励!
10.防火墙设置
- 阻止8545/tcp, 3500/tcp, 8551/tcp, 4000/tcp
- 允许13000/tcp, 12000/udp, 30303/tcp+udp