Engineering Notes

孟斌的小站

技术博客与学习记录

共 608 篇文章 标签与分类索引已启用

ERC-1056简介

概要

ERC‑1056(Ethereum Lightweight Identity)是一个针对以太坊上轻量级身份管理的ERC标准,旨在提供一个通用的身份注册表,用于管理身份的公钥代理(delegates)和属性(attributes),并实现完全的W3C去中心化标识符(DID)兼容性。它的核心设计目标是让身份创建“即插即用”且零成本(无需额外合约部署或Gas花费),同时支持离线环境下的身份管理,并允许在不改变主标识符的情况下对密钥进行安全轮换。本文将分章节详细解读其动机、核心概念、规范细节、实现方式、安全考量及生态展望。

继续阅读

golang中使用ssh

在Go语言中,golang.org/x/crypto/ssh 是一个官方维护的第三方库,用于实现 SSH 客户端和服务器功能。本文我们将学习如何使用该库建立 SSH 连接、执行远程命令、模拟终端交互等常见操作。

go
继续阅读

使用 ethereum-package 部署以太坊POS节点

一、环境准备

  1. 安装Docker
    Kurtosis依赖Docker作为底层容器运行时。需根据操作系统安装Docker并启动服务:
    $ systemctl start docker  # 启动Docker
    $ systemctl enable docker # 设置开机自启
    
  2. 安装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
      

二、部署默认配置的以太坊网络

  1. 启动单节点测试链
    使用默认配置快速启动一个本地以太坊网络(包含执行层和共识层客户端):
    $ kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package
    
    • enclave参数指定隔离环境名称(如my-testnet)。
    • 默认使用Geth(执行层)和Lighthouse(共识层)客户端。
  2. 验证启动成功
    成功后会输出各服务状态,例如:
    Successfully added 1 EL participants
    Service 'el-1-geth-lighthouse' added with service UUID...
    

三、自定义配置部署

  1. 创建配置文件
    编写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:启用持久化存储,防止数据丢失。
  2. 运行自定义配置
    $ kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package --args-file network_params.yaml
    

四、Kubernetes部署(可选)

  1. Kubernetes集群要求
    • 推荐使用云服务(如AWS EKS、GCP GKE)或自建集群。
    • 确保存储卷性能(通过el_volume_sizecl_volume_size调整存储大小)。
  2. 调整容器调度策略
    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"
    

五、管理与调试

  1. 访问服务日志
    $ kurtosis service logs my-testnet el-1-geth-lighthouse
    
  2. 下载创世文件
    $ kurtosis files download my-testnet el-genesis-data ~/Downloads
    
  3. 进入容器Shell
    $ kurtosis service shell my-testnet el-1-geth-lighthouse
    

六、高级功能

  1. Shadowforking
    通过配置文件模拟主网分叉环境:
    network_params:
      network: "mainnet-shadowfork-verkle"  # Verkle树测试
      electra_fork_epoch: 1                 # 指定分叉区块
    persistent: true
    
  2. MEV-Boost集成
    启用Flashbot的MEV基础设施:
    mev_params:
      mode: "full"  # 或 "mock" 模拟模式
    
  3. 监控与工具
    默认集成Prometheus、Grafana和Blobscan(用于分析EIP-4844 Blob交易)。

七、清理资源

$ kurtosis enclave rm -f my-testnet  # 删除整个环境
$ kurtosis clean -a                  # 清理所有资源

注意事项

  • 云环境部署:建议使用高性能存储(如SSD),避免因磁盘速度导致同步问题。
  • 客户端兼容性:不同客户端(如Prysm)可能需要特定镜像或参数。

通过以上步骤,可以灵活部署一个多客户端、可观测性强的以太坊开发网络。更多配置细节可参考官方文档

继续阅读

深入了解Foundry配置文件

Foundry 作为 Solidity 开发的瑞士军刀,其配置文件 foundry.toml 是开发者实现高效工作流的核心枢纽。本文将从基础配置到高级优化,介绍 50+ 关键参数的配置逻辑,帮助我们更好地构建智能合约开发体系。

继续阅读

Foundry之使用OpenZeppelin插件进行智能合约升级

合约的可升级性

智能合约在部署后,通常无法像传统软件一样直接进行修改或更新。这是因为区块链上的智能合约一旦被部署,就会被记录在区块链上,并且其代码是不可更改的。这种不可变性是区块链的一个重要特性,但也带来了一些问题,尤其是在智能合约的升级和维护方面。

继续阅读

Foundry单元测试之模拟地址

vm.startPrankvm.prank 都是 Foundry 中用于模拟(prank)不同地址执行合约操作的函数。它们的作用相似,但在使用场景和行为上有一些细微的区别。以下是这两个函数的对比。

继续阅读