Skip to content

Latest commit

 

History

History
711 lines (481 loc) · 22.5 KB

JeasonZhang.md

File metadata and controls

711 lines (481 loc) · 22.5 KB

Jeason Zhang

  1. 自我介绍:大家好,我是 Jeason Zhang,以太坊爱好者,全栈工程师,独立开发者,很开心参加今年的 EPF 残酷共学。
  2. 你认为你会完成本次残酷学习吗?会的!

Notes

2025.02.06

今天是残酷共学的第一天,参加了 chloe 主持的第一周周会,会后看了一下 epf wiki 中的内容,并用 deepseek - R1 总结了一下内容如下:

EPF WIKI WEEK1

I. 核心学习目标

主题:以太坊协议基础与研发生态全景 目标:理解以太坊设计哲学、技术架构、开发流程及社区协作模式。


II. 核心学习模块

1. 历史与哲学基础

2. 以太坊协议设计
  • 设计原则
    • 五大核心:简洁性、通用性、模块化、非歧视性、敏捷性
    • 技术文档
  • 网络架构
    • 分层结构
      • 执行层(EL):处理交易与智能合约(EVM)
      • 共识层(CL):PoS机制与区块确认
    • 节点类型:全节点、轻节点、归档节点
    • 扩展阅读

3. 实现与开发
  • 客户端多样性
    • 执行层客户端:Geth、Nethermind、Besu
    • 共识层客户端:Lighthouse、Prysm、Teku
    • 开发语言:Go、Rust、Java、C#等
    • 资源

4. 测试与安全

5. 社区协作机制

III. 学习路径建议

1. 入门阶段

2. 技术深化
  • 实践任务
    • 运行测试网节点:使用Geth + Lighthouse组合
    • 参与测试:通过Hive提交客户端兼容性报告
  • 代码研读

3. 社区参与

IV. 扩展资源

  • 书籍推荐
    • 《The Infinite Machine》(以太坊早期史)
    • 《Mastering Ethereum》(技术细节解析,需注意版本)
  • 高级学习

V. 学习评估

2024.02.07

EPF WIKI WEEK2

I. 核心学习目标

主题: 以太坊执行层(Execution Layer)深度解析 目标: 掌握执行层节点架构、状态转换机制、EVM运行原理及网络通信协议。


II. 课程大纲重点

1. 执行层节点架构
  • 区块验证(Block Validation)
    • 处理状态转换(State Transition),将交易结果记录到状态树(Merkle Patricia Trie)
    • 维护动态机制更新:EIP-1559基础费用、EIP-4844 Blob Gas、信标链提款等
    • 提供快速同步机制(Snap Sync)帮助新节点快速接入网络
  • 区块构建(Block Building)
    • 基于P2P交易池(Tx Pool)构建新区块
    • 交易广播与验证的双向流程
2. 状态转换函数
  • 区块头验证:
    • 校验默克尔根(交易根、状态根、收据根)
    • 验证Gas限制与时间戳合法性
  • 区块验证代码实践:
3. EVM运行机制
  • 栈式虚拟机原理:
    • 操作码分类解析:
      • 堆栈操作码(如PUSH, POP
      • 内存操作码(如MLOAD, MSTORE
      • 系统级操作(如CALL, DELEGATECALL
  • 实战工具推荐:
4. P2P网络协议
  • 三大核心功能:
    • 历史区块数据传输
    • 未确认交易(Pending Transactions)广播
    • 状态数据同步
  • Snap Sync技术:
    • 阶段一:下载快照数据块(Snapshot Tiles)
    • 阶段二:状态修复(State Healing)
5. JSON-RPC接口
  • 设计目标:
    • 统一所有客户端的API标准,实现工具链无缝集成
    • 目前接近实现但仍有细微差异
  • 关键RPC方法:
    • eth_getBlockByNumber
    • eth_sendRawTransaction
    • eth_call

III. 核心学习资源

必读材料
进阶工具
代码研究

IV. 学习实践建议

  1. 代码调试:在本地运行Geth节点,观察state_processor.go的区块处理流程
  2. 网络模拟:使用devp2p工具包模拟P2P交易广播
  3. RPC实验:通过Postman调用JSON-RPC接口获取链上数据

2025.02.09

EPF WIKI WEEK3

I. 核心学习目标

主题: 以太坊共识层(Consensus Layer)技术解析 目标: 掌握权益证明(PoS)机制、Gasper协议架构及信标链安全模型。


II. 课程大纲重点

1. 共识机制基础
  • 拜占庭容错(BFT):
    • 区块链通过分布式网络实现数字稀缺性,需解决节点作恶问题
    • 比特币通过工作量证明(PoW)首次实现BFT
  • PoS机制创新:
    • 以太坊转向权益证明,使用内生经济信号(质押ETH)实现女巫攻击防护
    • 通过**罚没(Slashing)**机制惩罚拜占庭行为
2. Gasper协议架构
  • 混合共识机制:
    • LMD-GHOST分叉选择规则:基于最新消息(Latest Message Driven)确定主链
    • Casper FFG:负责最终性确认(Finality),确保链活性(Liveness)
  • 关键特性:
    • 每32个区块(Epoch)进行最终性确认
    • 支持动态验证者集合调整
3. 信标链安全模型
  • 密码经济学保障:
    • 验证者需质押32 ETH,作恶将面临罚没
    • 罚没条件:双重签名、违反分叉规则等
  • 抗攻击能力:
    • 1/3质押量攻击可导致链暂停
    • 2/3质押量攻击可导致链重组

III. 核心学习资源

必读材料
深度分析

IV. 实践建议

  1. 客户端运行

    • 组合运行执行层(如Geth)与共识层客户端(如Lighthouse)
    • 观察日志中的attestation(见证)与proposal(区块提议)流程
  2. 时隙分析

    • 研究

      时隙解剖视频

      ,理解12秒时隙内的操作序列:

      • 区块提议 → 见证打包 → 最终性投票
  3. 安全实验

    • 在测试网模拟双重签名场景,观察罚没机制触发过程

V. 关键概念对照表

英文术语 中文解释
Finality 最终性
Justification 合理性证明
Checkpoint 检查点
Attestation 见证
Sync Committee 同步委员会

2025.02.10

EPF WIKI WEEK4

I. 核心学习目标

主题: 以太坊测试框架与安全实践 目标: 掌握以太坊核心测试工具链、安全漏洞发现方法及网络升级测试流程。


II. 课程大纲重点

1. 核心测试工具链
  • 执行层测试套件
  • 网络仿真工具
    • Hive: 多客户端测试框架,支持创建定制化测试网
    • Kurtosis: 分布式测试环境编排平台
  • 模糊测试工具
    • FuzzyVM: EVM字节码模糊测试器
    • tx-fuzz: 交易生成与异常检测工具
2. 安全测试实践
  • 合并测试经验:
    • 通过影子分叉(Shadow Fork)模拟主网环境
    • 使用**eth_tools**监控网络异常
  • 漏洞挖掘案例:
    • 共识层分叉规则漏洞(如LMD-GHOST边缘场景)
    • 客户端同步协议缺陷(如LibP2P消息处理)
3. 测试方法论
  • 分层测试策略:
    • 单元测试:验证单个功能模块
    • 集成测试:多客户端交互验证
    • 压力测试:高负载场景模拟(如Dencun升级的blob处理)
  • 自动化流水线:
    • 持续集成(CI)触发测试套件
    • 测试结果可视化与回归分析

III. 关键学习资源

必读材料
深度实践
经典案例研究

IV. 实践建议

  1. 本地测试环境搭建:

    # 使用Hive创建多客户端测试网
    hive --client=geth,lighthouse --sim=eth2/merge
  2. 模糊测试执行:

    # 运行FuzzyVM检测EVM异常
    go run ./cmd/fuzzy --test=evm_opcodes
  3. 自定义测试开发:

    • ethereum/tests中新增状态转换测试用例
    • 通过retesteth验证客户端兼容性

V. 测试类型对照表

测试类型 工具示例 检测目标
状态转换测试 retesteth 区块处理逻辑正确性
网络协议测试 Hive P2P消息兼容性
模糊测试 FuzzyVM EVM执行边界条件
RPC接口测试 rpctestgen JSON-RPC规范符合性

通过本课程的系统学习,开发者将掌握以太坊核心测试框架的运作机制,具备参与网络升级测试和安全审计的能力。建议从标准测试集入手,逐步深入定制化测试开发。

2025.02.11

EPF WIKI WEEK5

I. 核心学习目标

主题: 以太坊研究生态与路线图演进 目标: 掌握以太坊六大发展阶段(Merge/Surge/Scourge/Verge/Purge/Splurge)的技术规划及当前研究热点。


II. 以太坊路线图解析

1. 六大发展阶段
阶段 核心目标 关键技术
Merge PoS共识完善 单槽最终性(SSF)、秘密领导者选举(SLE)、提款机制优化
Surge 扩容与数据可用性 EIP-4844(Blob交易)、数据可用性采样(DAS)、ZK Rollup互操作性
Scourge MEV治理与抗审查 ePBS(Enshrined PBS)、MEV销毁、质押上限机制
Verge 状态验证效率提升 Verkle树、SNARK化(信标链状态转换、EVM验证)
Purge 协议简化 EIP-4444(历史数据修剪)、状态过期机制
Splurge 用户体验优化 账户抽象(ERC-4337)、EIP-1559最终形态、深度密码学整合

III. 当前研究热点

1. 密码学前沿
  • KZG多项式承诺:用于Blob数据验证(KZG仪式
  • Verkle树结构:替代Merkle Patricia Trie,提升状态证明效率(Vitalik解析
2. 扩容技术
  • 数据可用性采样(DAS):通过随机抽样验证数据可用性
  • 跨Rollup互操作:标准化跨链消息协议
3. 抗MEV机制
  • 包含列表(Inclusion Lists):防止交易审查
  • MEV-Burn:通过协议内拍卖销毁MEV收益

IV. 关键升级进展

1. 近期里程碑
  • Dencun升级:EIP-4844实施,降低Layer2成本
  • Pectra升级:Verkle树预编译合约部署
2. 开发者工具
  • Helios轻客户端:Rust实现的快速同步客户端(构建指南
  • EVM对象格式(EOF):优化合约代码存储结构

V. 学习资源推荐

必读材料
实践指南

VI. 技术术语对照

英文术语 中文解释
Single Slot Finality 单槽最终性
Data Availability Sampling 数据可用性采样
Enshrined PBS 协议内提议者-构建者分离
Verkle Proofs Verkle树证明
MEV Burn MEV销毁机制

通过本课程的系统学习,开发者可全面把握以太坊技术演进的宏观框架,深入参与核心协议研究。建议结合Ethresear.ch论坛跟踪最新提案,通过节点工作坊实践客户端运维。

2025.02.12

EPF WIKI Node Workshop

I. 核心学习目标

主题: 以太坊客户端实践操作 目标: 掌握执行层(EL)与共识层(CL)客户端的部署、配置及运维技能。


II. 环境准备

1. 系统要求
  • 推荐系统: Debian 12(支持Ubuntu/macOS,建议使用虚拟机统一环境)

  • 硬件配置: 测试网节点无需高性能硬件(2核CPU/4GB RAM/50GB存储)

  • 基础工具安装:

    sudo apt update && sudo apt install -y curl git gpg docker.io build-essential
2. 前置知识

III. 客户端部署流程

1. 客户端选择与获取
  • 推荐组合: Geth(EL) + Lighthouse(CL)

  • 二进制验证(以Geth为例):

    # 下载签名文件
    curl -O https://geth.ethereum.org/geth-linux-amd64-1.13.0-6c74b4e6.sig
    # 验证签名
    gpg --verify geth-linux-amd64-1.13.0-6c74b4e6.sig
2. Docker快速部署
# 启动Geth测试网节点
docker run -d -p 8545:8545 -v /data/geth:/root/.ethereum \
  ethereum/client-go --goerli --http --http.addr 0.0.0.0

# 启动Lighthouse共识客户端
docker run -d -p 9000:9000 -p 9001:9001 -v /data/lighthouse:/root/.lighthouse \
  sigp/lighthouse lighthouse beacon --network holesky
3. 测试网配置
  • Holesky测试网:

    geth --holesky --syncmode snap --http
    lighthouse beacon --network holesky
  • Ephemery自定义创世块:

    geth init --datadir ./ephemery ephemery-genesis.json

IV. 节点运维实践

1. RPC接口使用
  • 基础访问:

    curl -X POST -H "Content-Type: application/json" \
      --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
      http://localhost:8545
  • 控制台交互:

    geth attach http://localhost:8545
    > eth.syncing
2. 验证者管理
  • 质押存款:

    lighthouse account validator deposit \
      --network holesky \
      --keystore ./validator_keys \
      --deposit-value 32
3. 系统服务配置
  • systemd服务文件示例(Geth):

    [Unit]
    Description=Geth Execution Client
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/geth --http --syncmode snap --cache 2048
    Restart=always
    User=geth
    
    [Install]
    WantedBy=multi-user.target

V. 进阶实践建议

1. 节点监控
  • Prometheus+Grafana方案:

    # 安装Prometheus
    docker run -d -p 9090:9090 -v /prometheus-data:/prometheus prom/prometheus
    # 配置Grafana仪表盘(参考Coincashew指南)
2. 网络诊断
  • P2P网络分析:

    # 使用devp2p工具检查节点连接
    devp2p discv5 nodes -bootnodes enr://...
3. 客户端切换实验
  • 执行层切换

    (Geth → Erigon):

    erigon --chain holesky --datadir ./erigon-data --http
  • 共识层切换

    (Lighthouse → Nimbus):

    nimbus_beacon_node --network=holesky --web3-url=http://localhost:8545

VI. 关键资源推荐


通过本工作坊的系统实践,开发者将具备独立部署和维护以太坊全节点的能力,为参与网络验证或协议开发奠定基础。建议从测试网开始,逐步过渡到主网节点运维。

2025.02.13

EPF WIKI WEEK6