以太坊 POS(权益证明)网络进入 2025 年后,开发者迫切需要一条既轻量又可复现的测试链。ethereum-package 借助 Kurtosis 的容器编排能力,可在 5 分钟内拉齐执行层(EL)与共识层(CL)。本文将系统拆解环境准备、单节点启动、自定义配置、Shadowfork 高级玩法与常见陷阱,帮助你快速落地本地或云端开发网络。
一、动手前:环境最小门槛
关键词:Docker、Kurtosis CLI、ubuntu、macOS
部署前只需两项基础依赖,其余全部托管给 Kurtosis。
安装并启动 Docker
# Ubuntu/Debian sudo apt update && sudo apt install -y docker.io sudo systemctl start docker && sudo systemctl enable docker # macOS 用官方 Installer 即可,完成后验证 docker version # 显示版本即正常安装 Kurtosis CLI
macOS
brew install kurtosis-tech/tap/kurtosis-cliUbuntu/Debian
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | \ sudo tee /etc/apt/sources.list.d/kurtosis.list sudo apt update && sudo apt install kurtosis-cli小贴士:CLI 新增了
kurtosis feedback命令,可随时反馈 Bug。
验证安装:
kurtosis version
# 输出版本号即成功👉 如何 3 分钟把 Kurtosis CLI 更新到最新版本,随时随地不掉链子?
二、一条命令跑通单节点测试链
关键词:单节点、Geth、Lighthouse、holesky
Kurtosis 已预设好默认参数,最快路径如下:
kurtosis run --enclave my-pos github.com/ethpandaops/ethereum-packageenclave指隔离环境,删除或重跑都不会污染主机。- 默认使用 Geth + Lighthouse,随机端口暴露,本地浏览器可直接
http://localhost:4000查看 Grafana 面板。
首次拉取镜像需耐心等待,成功后看到:
SUCCESS: Ethereum network is UP
Discovered 1 participant
EL: Geth v1.14.x
CL: Lighthouse v5.x如果你想在同一台机器跑多条链,只需更换 enclave 名称,即可并行互不干扰。
三、自定义配置:从测试网到 Shadowfork
关键词:network_params.yaml、holesky-shadowfork、持久化、reth、teku
单节点 只能临时代码调试,真实需求往往需要:
- 用 Nethermind 或 Reth 替换 Geth
- 接入 holesky-shadowfork 测试即将到来的 Electra 升级
- 启用持久化,避免节点重启即重新同步
1. 创建网络参数文件
新建 network_params.yaml:
participants:
- el_type: reth # 面向高性能的执行层客户端
el_image: ghcr.io/paradigmxyz/reth:latest
cl_type: teku
cl_image: consensys/teku:latest
network_params:
network: "holesky-shadowfork"
persistent: true # Shadowfork 强制需持久卷
electra_fork_epoch: 2 # 手动提前叉
additional_services:
- prometheus
- grafana
- apache # 便于下载创世文件2. 一键拉起
kurtosis run --enclave holesky-shadow github.com/ethpandaops/ethereum-package \
--args-file network_params.yaml🕹️ Tips:文件改动无需重打镜像,Kurtosis 只会重启变更的服务,速度飞快。
👉 深度比较 Geth vs Reth 性能差距到底有多大?数据说话!
四、Kubernetes 云部署实战
关键词:TKE、EKS、GKE、存储卷、tolerations
本地测试通过后,进阶到 Kubernetes 生产环境。ethereum-package 天然兼容任何标准 K8s 集群。
1. 集群准备
- CPU&内存:4 CPU / 8 GiB 起步;跑 Full sync 建议 8 CPU / 32 GiB 以上。
- 存储:
el_volume_size: 500Gi起跳;SSD 类型(gp3)能显著降低同步延迟。 - 网络:开启 3500/4000/8545/8551 端口。
2. 调度策略示例
想利用活动 GPU 节点跑 MEV-Boost?可在 network_params.yaml 内添加:
participants:
- el_type: reth
el_tolerations:
- key: "nvidia.com/gpu"
operator: Exists
global_tolerations:
- key: node-role.kubernetes.io/control-plane
effect: NoSchedule部署命令:
# 确保本地 kubeconfig 已指向目标集群
kurtosis run --enclave k8s-pos github.com/ethpandaops/ethereum-package \
--args-file network_params.yaml --production五、监控与调试三板斧
关键词:日志、genesis、shell
| 需求 | Kurtosis 命令示例 |
|---|---|
| 实时日志 | kurtosis service logs k8s-pos el-1-reth-teku -f |
| 下载创世数据 | kurtosis files download k8s-pos el-genesis-data ~/genesis |
| 进入客户端容器 | kurtosis service shell k8s-pos cl-1-teku-reth |
Grafana 默认账号 admin / admin,Dashboard 路径 http://<NodeIP>:3000.
六、高级功能彩蛋
1. Shadowfork + Verkle 实战
把 主网状态 分叉到包含 Verkle 树的未来版本:
network_params:
network: "mainnet-shadowfork-verkle"
electra_fork_epoch: 1
persistent: true同步 20 GB+ 主网状态,第一次请预留 3–4 小时;磁盘随机 IOPS 需 ≥ 5k。
2. MEV-Boost 零配置接入
mev_params:
mode: full # 或 mock、custom-builder
mev_boost_image: flashbots/mev-boost:latest启用后所有验证者自动与 Relays 通讯,无需手动注册。区块奖励对比图可在 Grafana 面板实时追踪。
3. EIP-4844 Blobscan 分析器
ethereum-package 已集成 Blobscan 浏览器。在 additional_services 增加一项:
additional_services:
- blobscan访问 http://localhost:3001/blob 即可查看 Blob 交易吞吐量、费用与效用曲线。
七、清理与省流指令
kurtosis enclave rm -f holesky-shadow
kurtosis clean -a # 一键释放所有缓存镜像与网络云计价模式下,执行完及时 enclave rm 可节省 40% 以上费用。
常见问题 FAQ
Q1:部署几次后磁盘占满怎么办?
A:默认卷使用 emptyDir,如未启用持久化 (persistent: false),每次删除 enclave 都会清掉数据。对长期跑链建议在 Kubernetes 中预配 PersistentVolume,同时在 network_params.yaml 设置 el_volume_size。
Q2:能否切换为 Prysm 客户端?
A:可以,在 cl_type: prysm 并指定镜像 gcr.io/prysmaticlabs/prysm/beacon-chain:latest。注意 Prysm 需要额外的 --genesis-state 路径,即使用 ./kurtosis files download 步骤拿到 genesis.ssz。
Q3:同步卡在某高度无法前进?
A:大概率是磁盘 IOPS 不足。执行 iostat -x 1 观察 await 大于 20ms 时建议更换 SSD 或提升云盘规格。若日志出现 regen error,尝试重启该服务,Kurtosis 会尝试热替换。
Q4:ethereum-package 支持其他公链吗?
A:社区已衍生 Cosmos-package、Avalanche-package 等模板。关注 ethpandaops 组织 即可获取最新仓库。
Q5:生产网络不建议用 Kurtosis?
A:严格地说,ethereum-package 定位为“开发测试”。若用于公共验证者,请使用官方 Ansible 清单或 Kubernetes Helm Charts,确保日志、备份、哨兵节点符合社区规范。
Q6:如何在 CI 环境中自动化部署?
A:在 GitHub Actions 中调用:
- name: launch testnet
uses: addnab/docker-run-action@v3
with:
image: ethpandaops/ethereum-package:latest
options: --env KURTOSIS_API_KEY=${{ secrets.KURTOSIS_API_KEY }}并把 kurtosis run 命令写进脚本即可完成每夜构建。
结合 ethereum-package + Kurtosis,你可以在午餐前拥有 多客户端、可观测、带 MEV-Boost 的以太坊 POS 开发网络。现在就动手吧!