在以太坊向权益证明(PoS)转型的过程中,测试网是验证系统稳定性和用户操作能力的重要环节。本文将以官方多客户端公共测试网Medalla为例,详细介绍如何在标准Linux环境中完成信标链节点与验证者客户端的部署与运行。整个流程涉及多个核心技术组件,包括基于Go Ethereum的Eth1节点、Prysmatic Labs开发的Prysm客户端、MetaMask钱包以及系统级服务管理工具systemd,全面覆盖从环境准备到验证者激活的全链路操作。
### 部署前的关键准备条件
本指南要求读者具备基本的Linux命令行操作能力、对以太坊生态有初步了解,并已准备好一台运行Ubuntu 20.04 LTS的64位服务器实例。推荐硬件配置为Intel Core i5或更高处理器、至少4GB内存(建议8GB)、不低于20GB的SSD空间。若计划长期运行,应预留扩展硬盘容量的余地。此外,需提前安装并配置好MetaMask浏览器扩展程序,用于接收测试币和管理验证者密钥。
### 第一步:系统安全加固与基础设置
为保障节点运行环境的安全性,必须进行基础防护措施。首先启用UFW防火墙,开放必要的端口:SSH(22/tcp)、Go Ethereum节点通信端口(30303/tcp and udp)、Grafana监控服务(3000/tcp),以及Prysm客户端默认使用的13000/tcp和12000/udp端口。通过`ufw enable`开启防火墙后,使用`ufw status numbered`确认规则已正确加载。同时,创建一个非root的普通用户账户并赋予sudo权限,避免直接使用root登录带来的风险。该账户将作为后续所有服务的运行主体,提升整体安全性。
### 第二步:同步Goerli测试网节点
由于信标链需要连接至以太坊1.0链来获取存款合约信息,因此必须先启动并同步一个Goerli测试网节点。通过PPA源安装Go Ethereum(geth)后,创建专用系统用户`goeth`,并为其分配数据目录`/var/lib/goethereum`的读写权限。随后编写`/etc/systemd/system/geth.service`服务文件,指定使用`--goerli --http --datadir`参数运行节点。启动服务并持续观察`journalctl -f -u geth.service`输出,确保节点成功连接对等节点并开始同步。如遇延迟,可手动添加最新节点列表以加速过程。
### 第三步:构建Prysm客户端核心组件
Prysm由信标链节点(beacon-chain)和验证者客户端(validator)两部分组成。为编译它们,需先安装Bazel构建工具,通过官方GPG密钥与APT源
注册方式获取。执行`apt update && apt install bazel bazel-3.2.0`安装所需版本。接着克隆Prysm主代码库,使用`bazel build //beacon-chain:beacon-chain`和`bazel build //validator:validator`命令分别编译两个核心二进制文件。此过程耗时较长,建议在后台运行并适时检查进度。
### 第四步:配置并启动信标链节点服务
创建独立用户`beaconchain`,建立数据目录`/var/lib/prysm/beaconchain`并授权。将编译好的`beacon-chain`二进制文件复制至`/usr/local/bin`,并修改其所有权。编写`/etc/systemd/system/beaconchain.service`服务文件,配置`ExecStart`参数指向本地Eth1节点(`http://127.0.0.1:8545`),并通过环境变量动态获取公网IP地址以解决P2P连接问题。启动服务后,使用`journalctl -f -u beaconchain.service`监控同步状态,直至节点完成信标链数据同步。
### 第五步:生成验证者密钥并导入钱包
在信标链节点正常运行的前提下,进入Eth2 Launch Pad官网,按照指引生成验证者密钥对。每个验证者对应一个独立的JSON密钥文件,存放于本地`$HOME/eth2.0-deposit-cli/validator_keys`目录。随后使用Prysm的`accounts-v2 import`命令将这些密钥导入新创建的钱包中。此过程需输入钱包密码及原始密钥口令,完成后可通过`accounts-v2 list`命令确认导入结果。该钱包将用于后续验证者客户端的身份认证与签名操作。
### 第六步:部署验证者客户端服务并激活账户
创建`validator`系统用户,建立数据目录`/var/lib/prysm/validator`并赋予权限。将编译好的`validator`二进制文件复制至`/usr/local/bin`。编写`/etc/systemd/system/validator.service`服务文件,指定数据路径、钱包路径、密码文件位置,并可选添加自定义标语(graffiti)以获得特殊POAP奖章。特别注意,必须创建`password.txt`文件并写入钱包密码,否则服务无法启动。启动服务后,通过`journalctl -f -u validator.service`跟踪日志,等待信标链正式启动,此时验证者将进入“等待激活”状态。最终可通过beaconcha.in等区块浏览器查询公钥状态,确认是否已成功加入测试网验证池。
至此,完整的以太坊2.0测试网节点部署流程已完成。该方案不仅适用于Medalla测试网,也为后续主网质押提供了坚实的技术参考。对于希望深入理解以太坊2.0架构与分布式共识机制的开发者而言,这是一次极具价值的实践体验。