惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
U
Unit 42
The Register - Security
The Register - Security
S
Security Affairs
博客园 - 【当耐特】
Latest news
Latest news
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
F
Full Disclosure
C
Cisco Blogs
宝玉的分享
宝玉的分享
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
P
Privacy & Cybersecurity Law Blog
腾讯CDC
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Vulnerabilities – Threatpost
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
Recorded Future
Recorded Future
Scott Helme
Scott Helme
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
AWS News Blog
AWS News Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hacker News: Front Page
J
Java Code Geeks
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
Last Week in AI
Last Week in AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
Attack and Defense Labs
Attack and Defense Labs

追梦人物的博客

0x05:Merkle Tree & Patricia Trie 0x04:ECDSA - 以太坊设计与实现 LeetCode 105 从前序与中序遍历构造二叉树 迭代算法原理 + 完整证明 0x03:Address - 以太坊设计与实现 0x02:Secp256k1 - 以太坊设计与实现 0x01:RLP 编码 - 以太坊设计与实现 Bellman-Ford 算法原理及其在 DeFi 套利中的应用 - 追梦人物的博客 迪杰斯特拉(Dijkstra)最短路径算法原理、实现与证明 - 追梦人物的博客 实战:CEX-DEX 稳定币套利监控程序开发 - 追梦人物的博客 CEX-DEX 稳定币套利模型 - 追梦人物的博客 Uniswap 手续费和协议费机制剖析 - 追梦人物的博客 Uniswap 流动性机制及相关数学原理分析 - 追梦人物的博客 uv 替代 pyenv + pipx + poetry 环境管理实践 Rust 项目从创建到发布 - 追梦人物的博客 VS Code 调试 Python - 追梦人物的博客 比特币跨市场套利的数学模型 - 追梦人物的博客 ERC-20 相关知识点总结 - 追梦人物的博客 Django 老项目如何从 SQLite 迁到 PostgreSQL 自动生成接口文档 - HelloDjango - django REST framework 教程 单元测试 - HelloDjango - django REST framework 教程 限制接口访问频率 - HelloDjango - django REST framework 教程 API 版本管理 - HelloDjango - django REST framework 教程 如何在 Windows 下搭建高效的 django 开发环境 拓展Python Markdown - 追梦人物的博客 加缓存为接口提速 - HelloDjango - django REST framework 教程 基于 drf-haystack 实现文章搜索接口 - HelloDjango 评论接口 - HelloDjango - django REST framework 教程 实现分类、标签、归档日期接口 - HelloDjango - django REST framework 教程 在接口返回Markdown解析后的内容 - HelloDjango - django REST framework 教程 文章详情接口 - HelloDjango - django REST framework 教程 分页 - HelloDjango - django REST framework 教程 使用视图集简化代码 - HelloDjango - django REST framework 教程 用类视图实现首页 API - HelloDjango - django REST framework 教程 实现博客首页文章列表 API - HelloDjango - django REST framework 教程 初始化 RESTful API 风格的博客系统 - HelloDjango django-rest-framework 是什么鬼? - HelloDjango - django REST framework 教程 结束 or 开始? - HelloDjango Coverage.py 统计测试覆盖率 - HelloDjango - Django博客教程(第二版) 单元测试:测试评论应用 - HelloDjango - Django博客教程(第二版) 单元测试:测试 blog 应用 - HelloDjango Django Haystack 全文检索与关键词高亮 - HelloDjango Django 博客实现简单的全文搜索 - HelloDjango - Django博客教程(第二版) 开启 Django 博客的 RSS 功能 - HelloDjango 统计各个分类和标签下的文章数 - HelloDjango - Django博客教程(第二版) 稳定易用的 Django 分页库,完善分页功能 - HelloDjango 通过 Django Pagination 实现简单分页 - HelloDjango 在脚本中使用 ORM:Faker 批量生成测试数据 - HelloDjango Django 官方推荐的姿势:类视图 - HelloDjango - Django博客教程(第二版) Django 使用 union 合并不同模型(Model) 的查询集(QuerySet) 开发博客文章阅读量统计功能 - HelloDjango - Django博客教程(第二版) 使用 Docker 让部署 Django 项目更加轻松 - HelloDjango 使用 Certbot 向 Let's Encrypt 免费申请 HTTPS 证书 - HelloDjango 使用 Fabric 自动化部署 - HelloDjango 博客代码开源啦 - 追梦人物的博客 (赠书)推荐一本django书籍:Django企业开发实战 - 追梦人物的博客 Nginx+Gunicorn+Supervisor 部署 Django 博客应用 - HelloDjango 优化博客功能细节,提升使用体验 - HelloDjango - Django博客教程(第二版) 交流的桥梁:评论功能 - HelloDjango - Django博客教程(第二版) 分类、归档和标签页 - HelloDjango - Django博客教程(第二版) 页面侧边栏:使用自定义模板标签 - HelloDjango - Django博客教程(第二版) 自动生成文章摘要 - HelloDjango - Django博客教程(第二版) Markdown 文章自动生成目录,提升阅读体验 - HelloDjango - Django博客教程(第二版) 让博客支持 Markdown 语法和代码高亮 - HelloDjango 开发博客文章详情页 - HelloDjango - Django博客教程(第二版) 创作后台开启,请开始你的表演 - HelloDjango - Django博客教程(第二版) 博客从“裸奔”到“有皮肤” - HelloDjango - Django博客教程(第二版) Django 的接客之道 - HelloDjango - Django博客教程(第二版) Django 迁移、操作数据库 - HelloDjango - Django博客教程(第二版) 创建 Django 博客的数据库模型 - HelloDjango 开始进入 django 开发之旅 - HelloDjango "空空如也"的博客应用 - HelloDjango - Django博客教程(第二版) 一种自顶而下的Python装饰器设计方法 - 追梦人物的博客 Python提取支付宝和微信支付二维码 - 追梦人物的博客 2018 - 我的学生生涯最后一年回顾 - 追梦人物的博客 批量清除todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 筛选练习参考答案 - Vue 2.x Todo 教程练习参考答案 删除todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 编辑todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 添加todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 标为完成练习参考答案 - Vue 2.x Todo 教程练习参考答案 入门仪式_Hello_Vue练习参考答案 - Vue 2.x Todo 教程练习参考答案 组件化todo应用 - Vue 2.x Todo 教程 批量清除todo - Vue 2.x Todo 教程 本地存储 - Vue 2.x Todo 教程 筛选 - Vue 2.x Todo 教程 还剩多少todo未完成 - Vue 2.x Todo 教程 自定义指令实现自动聚焦 - Vue 2.x Todo 教程 全部标为完成 - Vue 2.x Todo 教程 删除todo - Vue 2.x Todo 教程 编辑todo - Vue 2.x Todo 教程 添加todo - Vue 2.x Todo 教程 标为完成 - Vue 2.x Todo 教程 UI - Vue 2.x Todo 教程 显示todo列表 - Vue 2.x Todo 教程 入门仪式:Hello Vue - Vue 2.x Todo 教程 在学习django-rest-framework时收集的学习资料推荐 - 追梦人物的博客 区块链理论与应用研究小组成员招募书 - 追梦人物的博客 Python界网红,豆瓣工程师董伟明加了我的QQ后 - 追梦人物的博客 招募Django学习小组项目组核心成员 - 追梦人物的博客
0x00:专栏开篇 - 以太坊设计与实现
2026-01-20 · via 追梦人物的博客

写作动机与背景

最近看到月之暗面(即开发 Kimi 大模型的公司)的招聘要求,其中一条为:

能够说出任意软件的任意操作的全链路过程并根据需要无限细化。

我用这条要求自省了一下,发现自己虽一直在学习和研究各类 DeFi 协议,但对承载这些协议的底层公链技术细节,了解得并不全面。比如,若没有深入掌握以太坊的交易(transaction)细节、出块机制等,要开发一款以太坊生态的 DEX 套利程序,几乎是无法实现的。

网上随手一搜,能找到大量以太坊学习资料,但我在学习时发现,这些资料大多呈现 “两极分化”:一类是从高抽象层面做概览式讲解,只点到核心概念,缺乏深入拆解;另一类则默认读者已有充足背景知识,直接切入源码细节,对新人不够友好。

这让我萌生了撰写此专栏的想法:一方面,记录自己的学习过程,方便后续查阅;另一方面,希望在理论与实践间找到平衡 —— 既从抽象层面讲透设计思想及来龙去脉,又深入 go-ethereum 源码,拆解设计如何落地为具体的代码实现。

我期望的目标是:读者在阅读完这个专栏后,能够深入理解以太坊的所有核心设计原理与实现细节。假设有一天以太坊的代码突然消失了,我们也能够从零开始重新设计并构建出一套完整的以太坊系统——至少在理论层面上知道如何实现。

目标读者定位

专栏主要面向以下两类读者:

最适合的读者:计算机相关专业的读者。在已有知识(如数据结构、操作系统、网络等)的辅助下,可以毫无障碍地跟进专栏内容。

也能读的读者:已经在使用 Web3 应用(如钱包转账)的人,想了解底层机制和原理。专栏内容尽可能自包含,大部分情况下都能跟上节奏。只有涉及到过于基础的专业知识时,可能需要跳出去自己补一下。不过 AI 时代这也不再是难事,在 AI 工具的帮助下,几分钟之内便能快速了解一个概念。

无论你的背景如何,只要愿意学习,都能跟上这个专栏的节奏。

关于编程语言

研究以太坊系统具体的实现时,专栏分析的对象是以太坊官方使用 Go 语言开发的客户端(go-ethereum)。代码会有详细注解,遇到不熟悉的语法也可以用 AI 工具快速了解。因此即使没有 Go 语言基础,也能理解代码逻辑和设计思路。

专栏框架

渐进式讲解

以太坊是一套复杂系统,包含大量精心设计的数据结构、算法与协议。高效的学习方法在于先理解 “设计背后的原因”,再结合设计逻辑去看具体实现。

为帮助读者更好地掌握以太坊的设计思路与实现原理,对于多数核心概念,我们将采用以下结构讲解:

  1. 明确问题:先界定需要解决的核心需求或待处理的关键问题;
  2. 分析局限:解释常规解决方案为何无法满足以太坊的特殊需求;
  3. 拆解设计:介绍以太坊的设计是如何针对性解决上述问题的;
  4. 落地实现:深入 go-ethereum 源码,拆解设计思路具体实现;
  5. 未来演进:探讨当前设计存在的不足,及社区提出的改进提案与发展方向。

以讲解以太坊状态存储系统为例,我们将按照以下步骤展开:

  1. 以太坊需要记录 address → 余额的映射
  2. Hash table 虽然可以实现 key-value 存储,但无法满足可验证性需求
  3. 引入 Merkle Trie 结构,结合前缀树和 Merkle Tree 的优势,实现可验证的状态存储
  4. 分析 go-ethereum 中如何通过 Trie 结构实现账户状态的存储和查询
  5. 探讨 Trie 的性能瓶颈,以及 Verkle Tree 提案如何改进

通过这种方式,读者不仅知道"代码是这样写的",更理解"为什么这样设计",以及"未来会如何演进"。

DAG 知识构建

可以对以太坊的知识体系按层级拆解:底层核心概念相对独立,上层复杂概念则由底层概念组合衍生而成。为降低学习时的理解负担,专栏采用有向无环图(DAG) 式的知识组织逻辑,从底层基础概念开始,逐步向上搭建完整知识框架。其核心思路可概括为:

  • 自底向上,逐层构建:底层技术模块(如 RLP 编码、加密算法、Trie 数据结构等)具备独立功能,是搭建上层组件的‘基础砖块’;上层组件(如交易 Transaction、以太坊虚拟机 EVM)则是对底层技术模块的整合与应用。
  • 避免循环依赖:每个概念在讲解时,其依赖的前置知识已在之前的文章中讲清楚。学习某个概念时,不会被突然冒出的新概念打断思路,也不需要跳出去补充其他知识。
  • 心智负担最小化:这种组织方式符合系统构建的自然过程。就像盖房子,先准备砖块、水泥等材料,再用这些材料搭建墙体、屋顶,最后建成完整建筑。

以下是专栏知识体系的层级结构示意:

graph TD ETH[以太坊系统] --> Consensus[共识机制] ETH --> Client[客户端] Client --> TX[Transaction 交易] Client --> EVM[EVM 虚拟机] TX --> RLP[RLP 编码] TX --> State[状态管理] TX --> Crypto[加密算法] EVM --> State EVM --> Crypto EVM --> Opcode[操作码] State --> Trie[Merkle Patricia Trie] State --> DB[键值存储] Trie --> Merkle[Merkle Tree] Trie --> Patricia[Patricia Trie 前缀树] Crypto --> Hash[哈希函数 Keccak-256] Crypto --> Signature[数字签名 ECDSA] Crypto --> Curve[椭圆曲线 secp256k1]

专栏文章将按照自底向上的顺序撰写,先讲解 RLP、加密算法、Trie 等基础组件,再逐步展开 Transaction、EVM 等核心概念,最后深入客户端和共识机制。

专栏规划

本专栏将按照 DAG 知识地图的层次结构,从底层往上逐步展开:

  • 基础组件层:RLP 编码、加密算法(哈希、签名、椭圆曲线)、Merkle Patricia Trie 等
  • 核心概念层:交易(Transaction)、以太坊虚拟机(EVM)、状态管理机制等
  • 系统层:客户端架构、共识机制、P2P 网络协议等

以太坊是一套复杂的系统,包含大量精心设计的组件与机制 —— 仅其 Go 语言版本的实现代码就超过 30 万行。要完整剖析整套系统并非易事,需要较长的讲解周期。

本专栏将以不定期更新的形式持续撰写,直至把以太坊系统的设计逻辑与实现细节讲解透彻。如有兴趣,欢迎订阅关注 👀。此外,文章规划可能会根据实际情况调整,以便更清晰地呈现内容。

版本说明

以太坊是一个快速发展的项目,代码库持续迭代更新。为了避免不同版本之间的代码差异导致读者困惑,本专栏所有代码示例和分析均基于以下特定版本:

  • 代码仓库ethereum/go-ethereum
  • 版本号v1.16.7
  • Commit Hashb9f3a3d964ed3d31e710ec7dd66da9181477ecb2
  • 对应 Fork:Fusaka

锁定版本可以确保文章中的代码示例、函数签名、实现逻辑与描述保持一致。读者如果在本地阅读源码,建议 checkout 到上述 commit,以获得最佳阅读体验。

👏欢迎通过各种方式交流反馈,共同探讨以太坊的设计与实现。

-- EOF --