- 自我介绍:大家好,我是 Jeason Zhang,以太坊爱好者,全栈工程师,独立开发者,很开心参加今年的 EPF 残酷共学。
- 你认为你会完成本次残酷学习吗?会的!
今天是残酷共学的第一天,参加了 chloe 主持的第一周周会,会后看了一下 epf wiki 中的内容,并用 deepseek - R1 总结了一下内容如下:
主题:以太坊协议基础与研发生态全景 目标:理解以太坊设计哲学、技术架构、开发流程及社区协作模式。
- UNIX哲学
- 自由软件运动
- 密码朋克与加密无政府主义
- 设计原则
- 网络架构
- 客户端多样性
- 测试工具链
- 核心仓库
- 通用测试集
- Retesteth工具(状态转换测试)
- Hive测试框架(多客户端仿真)
- 测试类型:单元测试、模糊测试、影子分叉
- 核心仓库
- 安全实践
- 协调流程
- 核心会议
- ACD会议(All Core Devs):双周例会
- PM仓库(ethereum/pm)记录议程
- 提案流程:EIP(EIPs仓库)
- 核心会议
- 讨论平台:
- EthResearch论坛(技术研究)
- Ethereum Magicians(提案讨论)
- R&D Discord(需邀请)
- 视频学习:
- Mario Havel讲座(以太坊协议基础)
- Richard Stallman演讲(自由软件理念)
- 基础阅读:
- 跟踪开发动态:
- 订阅ACD会议纪要
- 加入EPF Discord参与讨论
- 贡献方式:
- 提交EIP改进提案
- 参与ETHGlobal黑客松
- 书籍推荐:
- 《The Infinite Machine》(以太坊早期史)
- 《Mastering Ethereum》(技术细节解析,需注意版本)
- 高级学习:
- Devcon演讲存档(技术深度内容)
- 形式化验证案例(Aleth项目)
主题: 以太坊执行层(Execution Layer)深度解析 目标: 掌握执行层节点架构、状态转换机制、EVM运行原理及网络通信协议。
- 区块验证(Block Validation):
- 处理状态转换(State Transition),将交易结果记录到状态树(Merkle Patricia Trie)
- 维护动态机制更新:EIP-1559基础费用、EIP-4844 Blob Gas、信标链提款等
- 提供快速同步机制(Snap Sync)帮助新节点快速接入网络
- 区块构建(Block Building):
- 基于P2P交易池(Tx Pool)构建新区块
- 交易广播与验证的双向流程
- 区块头验证:
- 校验默克尔根(交易根、状态根、收据根)
- 验证Gas限制与时间戳合法性
- 区块验证代码实践:
- 分析go-ethereum代码库中
core/state_processor.go
的Process()
函数
- 分析go-ethereum代码库中
- 栈式虚拟机原理:
- 操作码分类解析:
- 堆栈操作码(如
PUSH
,POP
) - 内存操作码(如
MLOAD
,MSTORE
) - 系统级操作(如
CALL
,DELEGATECALL
)
- 堆栈操作码(如
- 操作码分类解析:
- 实战工具推荐:
- evm.codes:交互式EVM操作码解析工具
- ethervm.io:EVM指令集速查表
- 三大核心功能:
- 历史区块数据传输
- 未确认交易(Pending Transactions)广播
- 状态数据同步
- Snap Sync技术:
- 阶段一:下载快照数据块(Snapshot Tiles)
- 阶段二:状态修复(State Healing)
- 设计目标:
- 统一所有客户端的API标准,实现工具链无缝集成
- 目前接近实现但仍有细微差异
- 关键RPC方法:
eth_getBlockByNumber
eth_sendRawTransaction
eth_call
- 执行层规范(Python实现)
- ETH2术语更新说明
- 合并对应用层的影响
- Engine API可视化指南(Daniel Ramirez)
- Lightclient开发环境配置
- 核心代码库:
- 执行层API规范:
- 代码调试:在本地运行Geth节点,观察
state_processor.go
的区块处理流程 - 网络模拟:使用devp2p工具包模拟P2P交易广播
- RPC实验:通过Postman调用JSON-RPC接口获取链上数据
主题: 以太坊共识层(Consensus Layer)技术解析 目标: 掌握权益证明(PoS)机制、Gasper协议架构及信标链安全模型。
- 拜占庭容错(BFT):
- 区块链通过分布式网络实现数字稀缺性,需解决节点作恶问题
- 比特币通过工作量证明(PoW)首次实现BFT
- PoS机制创新:
- 以太坊转向权益证明,使用内生经济信号(质押ETH)实现女巫攻击防护
- 通过**罚没(Slashing)**机制惩罚拜占庭行为
- 混合共识机制:
- LMD-GHOST分叉选择规则:基于最新消息(Latest Message Driven)确定主链
- Casper FFG:负责最终性确认(Finality),确保链活性(Liveness)
- 关键特性:
- 每32个区块(Epoch)进行最终性确认
- 支持动态验证者集合调整
- 密码经济学保障:
- 验证者需质押32 ETH,作恶将面临罚没
- 罚没条件:双重签名、违反分叉规则等
- 抗攻击能力:
- 1/3质押量攻击可导致链暂停
- 2/3质押量攻击可导致链重组
- Gasper协议白皮书
- LMD-GHOST优化解析
- Eth2规范注释版(技术细节宝典)
- Slashing场景详解(Dankrad Feist)
- 信标链设计反思(Justin Drake演讲)
-
客户端运行:
- 组合运行执行层(如Geth)与共识层客户端(如Lighthouse)
- 观察日志中的
attestation
(见证)与proposal
(区块提议)流程
-
时隙分析:
-
研究
时隙解剖视频
,理解12秒时隙内的操作序列:
- 区块提议 → 见证打包 → 最终性投票
-
-
安全实验:
- 在测试网模拟双重签名场景,观察罚没机制触发过程
英文术语 | 中文解释 |
---|---|
Finality | 最终性 |
Justification | 合理性证明 |
Checkpoint | 检查点 |
Attestation | 见证 |
Sync Committee | 同步委员会 |
主题: 以太坊测试框架与安全实践 目标: 掌握以太坊核心测试工具链、安全漏洞发现方法及网络升级测试流程。
- 执行层测试套件:
- ethereum/tests: 标准状态转换测试集
- execution-spec-tests: 执行层规范验证测试
- retesteth: 动态测试生成与执行工具
- 网络仿真工具:
- 模糊测试工具:
- 合并测试经验:
- 通过影子分叉(Shadow Fork)模拟主网环境
- 使用**eth_tools**监控网络异常
- 漏洞挖掘案例:
- 共识层分叉规则漏洞(如LMD-GHOST边缘场景)
- 客户端同步协议缺陷(如LibP2P消息处理)
- 分层测试策略:
- 单元测试:验证单个功能模块
- 集成测试:多客户端交互验证
- 压力测试:高负载场景模拟(如Dencun升级的blob处理)
- 自动化流水线:
- 持续集成(CI)触发测试套件
- 测试结果可视化与回归分析
- RPC测试生成器:自动化生成JSON-RPC接口测试
- Dencun测试教程:分片blob处理测试案例
- The Merge测试回顾(Devcon6演讲)
- Layer1共识漏洞挖掘(Marius Van Der Wijden)
-
本地测试环境搭建:
# 使用Hive创建多客户端测试网 hive --client=geth,lighthouse --sim=eth2/merge
-
模糊测试执行:
# 运行FuzzyVM检测EVM异常 go run ./cmd/fuzzy --test=evm_opcodes
-
自定义测试开发:
- 在
ethereum/tests
中新增状态转换测试用例 - 通过
retesteth
验证客户端兼容性
- 在
测试类型 | 工具示例 | 检测目标 |
---|---|---|
状态转换测试 | retesteth | 区块处理逻辑正确性 |
网络协议测试 | Hive | P2P消息兼容性 |
模糊测试 | FuzzyVM | EVM执行边界条件 |
RPC接口测试 | rpctestgen | JSON-RPC规范符合性 |
通过本课程的系统学习,开发者将掌握以太坊核心测试框架的运作机制,具备参与网络升级测试和安全审计的能力。建议从标准测试集入手,逐步深入定制化测试开发。
主题: 以太坊研究生态与路线图演进 目标: 掌握以太坊六大发展阶段(Merge/Surge/Scourge/Verge/Purge/Splurge)的技术规划及当前研究热点。
阶段 | 核心目标 | 关键技术 |
---|---|---|
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最终形态、深度密码学整合 |
- 数据可用性采样(DAS):通过随机抽样验证数据可用性
- 跨Rollup互操作:标准化跨链消息协议
- 包含列表(Inclusion Lists):防止交易审查
- MEV-Burn:通过协议内拍卖销毁MEV收益
- Dencun升级:EIP-4844实施,降低Layer2成本
- Pectra升级:Verkle树预编译合约部署
- Helios轻客户端:Rust实现的快速同步客户端(构建指南)
- EVM对象格式(EOF):优化合约代码存储结构
- EthRoadmap.com:交互式路线图可视化
- 执行票据提案:参与协议改进讨论
英文术语 | 中文解释 |
---|---|
Single Slot Finality | 单槽最终性 |
Data Availability Sampling | 数据可用性采样 |
Enshrined PBS | 协议内提议者-构建者分离 |
Verkle Proofs | Verkle树证明 |
MEV Burn | MEV销毁机制 |
通过本课程的系统学习,开发者可全面把握以太坊技术演进的宏观框架,深入参与核心协议研究。建议结合Ethresear.ch论坛跟踪最新提案,通过节点工作坊实践客户端运维。
主题: 以太坊客户端实践操作 目标: 掌握执行层(EL)与共识层(CL)客户端的部署、配置及运维技能。
-
推荐系统: Debian 12(支持Ubuntu/macOS,建议使用虚拟机统一环境)
-
硬件配置: 测试网节点无需高性能硬件(2核CPU/4GB RAM/50GB存储)
-
基础工具安装:
sudo apt update && sudo apt install -y curl git gpg docker.io build-essential
-
推荐组合: 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
# 启动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
-
Holesky测试网:
geth --holesky --syncmode snap --http lighthouse beacon --network holesky
-
Ephemery自定义创世块:
geth init --datadir ./ephemery ephemery-genesis.json
-
基础访问:
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
-
质押存款:
lighthouse account validator deposit \ --network holesky \ --keystore ./validator_keys \ --deposit-value 32
-
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
-
Prometheus+Grafana方案:
# 安装Prometheus docker run -d -p 9090:9090 -v /prometheus-data:/prometheus prom/prometheus # 配置Grafana仪表盘(参考Coincashew指南)
-
P2P网络分析:
# 使用devp2p工具检查节点连接 devp2p discv5 nodes -bootnodes enr://...
-
执行层切换
(Geth → Erigon):
erigon --chain holesky --datadir ./erigon-data --http
-
共识层切换
(Lighthouse → Nimbus):
nimbus_beacon_node --network=holesky --web3-url=http://localhost:8545
- 节点维护指南: EthStaker Holesky指南
- 验证者监控: Grafana仪表板配置
- 故障排查: 合并后节点FAQ
通过本工作坊的系统实践,开发者将具备独立部署和维护以太坊全节点的能力,为参与网络验证或协议开发奠定基础。建议从测试网开始,逐步过渡到主网节点运维。