一、环境准备
- 安装Docker
Kurtosis依赖Docker作为底层容器运行时。需根据操作系统安装Docker并启动服务:$ systemctl start docker # 启动Docker $ systemctl enable docker # 设置开机自启
- 安装Kurtosis CLI
根据操作系统选择安装命令:- MacOS:
$ brew install kurtosis-tech/tap/kurtosis-cli
- Ubuntu/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
- 验证安装:
$ kurtosis version
- MacOS:
二、部署默认配置的以太坊网络
- 启动单节点测试链
使用默认配置快速启动一个本地以太坊网络(包含执行层和共识层客户端):$ kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package
enclave
参数指定隔离环境名称(如my-testnet
)。- 默认使用Geth(执行层)和Lighthouse(共识层)客户端。
- 验证启动成功
成功后会输出各服务状态,例如:Successfully added 1 EL participants Service 'el-1-geth-lighthouse' added with service UUID...
三、自定义配置部署
- 创建配置文件
编写network_params.yaml
文件,定义网络参数。例如:
```yaml participants:- el_type: geth cl_type: lighthouse network_params: network: “holesky-shadowfork” # 支持Shadowfork模式 persistent: true # 启用持久化存储(Shadowfork必需) additional_services:
- apache # 启用文件共享服务 ```
- 关键参数:
el_type
/cl_type
:指定执行层(Geth、Nethermind等)和共识层客户端(Lighthouse、Teku等)。network
:支持公共测试网(如holesky
)或Shadowfork(如holesky-shadowfork
)。persistent
:启用持久化存储,防止数据丢失。
- 运行自定义配置
$ kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package --args-file network_params.yaml
四、Kubernetes部署(可选)
- Kubernetes集群要求
- 推荐使用云服务(如AWS EKS、GCP GKE)或自建集群。
- 确保存储卷性能(通过
el_volume_size
和cl_volume_size
调整存储大小)。
- 调整容器调度策略
在network_params.yaml
中定义Kubernetes容忍(Tolerations):
```yaml participants:- el_type: reth
cl_type: teku
el_tolerations: # 覆盖全局配置
- key: “gpu-node” operator: “Exists” global_tolerations:
- key: “node-role.kubernetes.io/master” effect: “NoSchedule” ```
- el_type: reth
cl_type: teku
el_tolerations: # 覆盖全局配置
五、管理与调试
- 访问服务日志
$ kurtosis service logs my-testnet el-1-geth-lighthouse
- 下载创世文件
$ kurtosis files download my-testnet el-genesis-data ~/Downloads
- 进入容器Shell
$ kurtosis service shell my-testnet el-1-geth-lighthouse
六、高级功能
- Shadowforking
通过配置文件模拟主网分叉环境:network_params: network: "mainnet-shadowfork-verkle" # Verkle树测试 electra_fork_epoch: 1 # 指定分叉区块 persistent: true
- MEV-Boost集成
启用Flashbot的MEV基础设施:mev_params: mode: "full" # 或 "mock" 模拟模式
- 监控与工具
默认集成Prometheus、Grafana和Blobscan(用于分析EIP-4844 Blob交易)。
七、清理资源
$ kurtosis enclave rm -f my-testnet # 删除整个环境
$ kurtosis clean -a # 清理所有资源
注意事项
- 云环境部署:建议使用高性能存储(如SSD),避免因磁盘速度导致同步问题。
- 客户端兼容性:不同客户端(如Prysm)可能需要特定镜像或参数。
通过以上步骤,可以灵活部署一个多客户端、可观测性强的以太坊开发网络。更多配置细节可参考官方文档。

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特
—