引言
孟斌的小站
技术博客与学习记录
概要
ERC‑1056(Ethereum Lightweight Identity)是一个针对以太坊上轻量级身份管理的ERC标准,旨在提供一个通用的身份注册表,用于管理身份的公钥代理(delegates)和属性(attributes),并实现完全的W3C去中心化标识符(DID)兼容性。它的核心设计目标是让身份创建“即插即用”且零成本(无需额外合约部署或Gas花费),同时支持离线环境下的身份管理,并允许在不改变主标识符的情况下对密钥进行安全轮换。本文将分章节详细解读其动机、核心概念、规范细节、实现方式、安全考量及生态展望。
在Go语言中,golang.org/x/crypto/ssh 是一个官方维护的第三方库,用于实现 SSH 客户端和服务器功能。本文我们将学习如何使用该库建立 SSH 连接、执行远程命令、模拟终端交互等常见操作。
一、环境准备
- 安装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-packageenclave参数指定隔离环境名称(如my-testnet)。- 默认使用Geth(执行层)和Lighthouse(共识层)客户端。
- 验证启动成功
成功后会输出各服务状态,例如:Successfully added 1 EL participants Service 'el-1-geth-lighthouse' added with service UUID...
三、自定义配置部署
- 创建配置文件
编写network_params.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):participants: - el_type: reth cl_type: teku el_tolerations: # 覆盖全局配置 - key: "gpu-node" operator: "Exists" global_tolerations: - key: "node-role.kubernetes.io/master" effect: "NoSchedule"
五、管理与调试
- 访问服务日志
$ 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)可能需要特定镜像或参数。
通过以上步骤,可以灵活部署一个多客户端、可观测性强的以太坊开发网络。更多配置细节可参考官方文档。
一、Kurtosis 核心价值
Kurtosis 是一款基于 Starlark 脚本语言的临时化包执行工具,专为开发者打造零配置的应用程序测试环境。其核心优势体现在:
Foundry v1.0 版本引入了多项破坏性变更,使用旧版本的项目可能需要相应调整。本指南记录了从旧版本迁移时的最佳实践建议。
Foundry 作为 Solidity 开发的瑞士军刀,其配置文件 foundry.toml 是开发者实现高效工作流的核心枢纽。本文将从基础配置到高级优化,介绍 50+ 关键参数的配置逻辑,帮助我们更好地构建智能合约开发体系。
在之前文章中,我们介绍了如何使用Foundry将我们的合约部署到区块链上,现在简单介绍如何对已部署的合约进行测试。
在之前的文章里,我们介绍了如何使用Foundry来对我们的合约进行测试。现在合约测试完成后,我们需要将合约部署到本地网络上,以便其他用户可以调用。
合约的可升级性
智能合约在部署后,通常无法像传统软件一样直接进行修改或更新。这是因为区块链上的智能合约一旦被部署,就会被记录在区块链上,并且其代码是不可更改的。这种不可变性是区块链的一个重要特性,但也带来了一些问题,尤其是在智能合约的升级和维护方面。