Tag: ethereum

ERC-1484简述

在区块链世界中,身份管理一直是核心挑战之一。传统互联网通过中心化平台(如社交媒体账号)来管理用户身份,而区块链的匿名性反而加剧了身份验证和声誉构建的复杂性。
尽管早期以太坊社区提出了多个身份协议(如 ERC-725、ERC-1056),但它们各自存在互操作性差、功能局限、扩展性不足等问题。

ERC-1056简介

概要

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

使用 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)可能需要特定镜像或参数。

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

Kurtosis:构建本地开发网络

一、Kurtosis 核心价值

Kurtosis 是一款基于 Starlark 脚本语言的临时化包执行工具,专为开发者打造零配置的应用程序测试环境。其核心优势体现在:

PoA 共识下的ethereum如何引入出块奖励?

在之前的文章中介绍了通过修改源码的方式来实现PoA共识下的出块奖励,在只有一个节点的情况下,这种方式并不会有什么问题;一旦有新的节点加入网络,那新增的节点就会卡在数据同步的阶段。那为什么会出现这种情况呢?

PoA Clique共识下新增验证者节点

在前一篇文章中,我们介绍了PoA Clique共识下如何新增同步节点。本文将介绍如何在PoA Clique共识下新增验证者节点。

PoA Clique共识下新增同步节点

1. 背景

增加同步节点(Full Nodes)对于区块链网络,尤其是基于 PoA(Proof of Authority)Clique 共识机制的私链,具有重要意义。以下是增加同步节点的主要原因及其优势:

UUPS 代理使用示例

UUPSUpgradeable

UUPSUpgradeable 是 OpenZeppelin 提供的用于实现可升级合约的一种标准。UUPS 代表“Universal Upgradeable Proxy Standard”,是以太坊社区推动的一种可升级合约方式。与传统的代理模式相比,UUPS 提供了更为灵活和高效的合约升级机制。以下是关于 UUPSUpgradeable 的详细介绍:

UUPS代理:以轻量化和灵活性为核心的智能合约升级模式

随着区块链技术的快速发展,可升级智能合约成为开发者的重要需求。合约升级不仅需要保证业务逻辑的延续性,还需降低复杂度和成本。UUPS(Universal Upgradeable Proxy Standard)代理模式应运而生,它提供了一种轻量、灵活且安全的合约升级机制。

replacement transaction underpriced

在与以太坊区块链进行交互时,特别是在发送交易时,你可能会遇到一个错误信息:replacement transaction underpriced。这个错误通常出现在试图替换已经在交易池中的交易时,新的交易的 gasPrice 太低。下面将解释为什么会出现这个错误,介绍它的背景,以及如何避免这个问题。

EIP-1599简介

EIP-1559 是以太坊网络上的一项重要升级,它是 伦敦硬分叉(London Hard Fork) 的一部分,于 2021年8月5日 在以太坊主网生效。EIP-1559 引入了一种全新的 交易费用模型,旨在改善以太坊交易的 可预测性效率,并通过 销毁一部分交易费用 来减少以太坊的 通货膨胀

only replay-protected (EIP-155) transactions allowed over RPC

在使用以太坊节点进行 RPC 调用时,常常会遇到 only replay-protected (EIP-155) transactions allowed over RPC 的错误提示。这个错误通常出现在试图发送不符合 EIP-155 标准的交易时。本文将解释为什么会出现这个错误,同时还会简单介绍 EIP-155 标准以及它的背景。

部署自己的 Ethereum 浏览器

1. Blockscout 简介

Blockscout 允许用户搜索交易、查看账户和余额、验证和与智能合约互动,并查看和与以太坊网络上的应用程序进行交互,包括许多分叉、侧链、L2 和测试网。

PoA 验证者也能获取出块奖励吗?

1. 出块奖励

出块奖励是指在区块链网络中,节点(如矿工或验证者)成功创建和添加一个新的区块到区块链上时所获得的奖励。这种奖励通常以加密货币的形式发放,目的是激励节点参与网络的维护和安全。

Solidity、Geth、EVM 三者之间的关系

在以太坊开发生态系统中,Solidity 版本Geth 版本EVM(Ethereum Virtual Machine)版本 之间有密切的关系。理解它们的关系对于智能合约开发、部署和执行至关重要。以下是对这些版本关系的详细介绍:

多验证者节点PoA私链搭建

多验证者节点部署

注意:本文档仅适用于POA共识的多验证者节点部署。 geth自1.14.x之后不再支持Clique共识,所以编译solidity合约时,evm最高只支持到London