从零到一学习以太坊
021 LEARN ETHREUM
作者:XiaoHai67890 全栈开发者 ZK研究员 |
TG:@XiaoHai489 WX:XiaoHai4890 X:@XiaoHai67890 |
|---|
由LXDAO、ETHPanda出版
2025年12月
LXDAO是一个专注研发的DAO组织,致力于探索构建支持公共物品和开源项目的无限循环。
扫码关注
ETHPanda是一个由华语建设者组成的以太坊社区,致力于通过教育、公共服务、活动和技术创新,连接华语建设者与国际以太坊生态,共同推动以太坊的持续发展与创新。
扫码关注
感谢 LXDAO 、ETHPanda 社区及以下伙伴对本书的贡献
(排名不分先后)
编排:@kelvin-秦默、@leopc999-乐乐、@Stariv-康康
读前必看 1
[第一章:认识以太坊 10](#以太坊的起源与发展)
[一、 以太坊的起源与发展 10](#以太坊的起源与发展)
[二、 以太坊平台定位与核心特性 12](#以太坊平台定位与核心特性)
[三、 Ether(ETH)的定义与系统职能 19](#ethereth的定义与系统职能)
[四、 以太坊为何被誉“全球可编程区块链” 26](#以太坊为何被誉全球可编程区块链)
[五、 以太坊与比特币的异同对比 29](#以太坊与比特币的异同对比)
[六、 以太坊 dApps 的概念与应用 33](#以太坊-dapps-的概念与应用)
[七、 以太坊的去中心化实现机制 37](#以太坊的去中心化实现机制)
[八、 网络结构的开放性与参与机制 42](#网络结构的开放性与参与机制)
[九、 行业应用案例:金融、游戏与社交 47](#行业应用案例金融游戏与社交)
[十、 生态系统创新:DeFi、NFT与DAO 51](#生态系统创新definft与dao)
[十一、 社区与开发生态扮演的角色 57](#社区与开发生态扮演的角色)
第二章:网络结构与节点类型 64
[一、 以太坊节点与客户端软件 64](#以太坊节点与客户端软件)
[二、 节点间的连接与通信方式 71](#节点间的连接与通信方式)
[三、 全节点、轻节点、归档节点的区别 75](#全节点轻节点归档节点的区别)
[四、 开发者或机构运行全节点的必要性 79](#开发者或机构运行全节点的必要性)
[五、 归档节点在数据查询中的优势 85](#归档节点在数据查询中的优势)
[六、 合并后执行与共识客户端的区别 88](#合并后执行与共识客户端的区别)
[七、 执行与共识客户端的协同配合 93](#执行与共识客户端的协同配合)
[八、 节点同步的目标与意义 96](#节点同步的目标与意义)
[九、 节点间交换的数据类型 101](#节点间交换的数据类型)
[十、 网络节点数量与去中心化保障机制 105](#网络节点数量与去中心化保障机制)
[十一、 Gossip 协议在节点传输中的作用 108](#gossip-协议在节点传输中的作用)
[十二、 个人节点的搭建与开发环境配置 112](#个人节点的搭建与开发环境配置)
[十三、 拓展:不跑节点的数据分析方法 118](#拓展不跑节点的数据分析方法)
第三章:账户类型与结构 125
[一、 EOA 的定义与控制方式 125](#eoa-的定义与控制方式)
[二、 合约账户的概念与创建流程 130](#合约账户的概念与创建流程)
[三、 以太坊地址“0x”开头的由来 135](#以太坊地址0x开头的由来)
[四、 EOA 与合约账户的控制方式对比 138](#eoa-与合约账户的控制方式对比)
[五、 可主动发起交易的账户类型 141](#可主动发起交易的账户类型)
[六、 合约账户的余额与状态存储 146](#合约账户的余额与状态存储)
[七、 EOA 与合约账户的互相调用机制 150](#eoa-与合约账户的互相调用机制)
[八、 MetaMask 钱包对 EOA 的管理 153](#metamask-钱包对-eoa-的管理)
[九、 ERC20 / ERC721 代币与合约账户的关系 158](#erc20-erc721-代币与合约账户的关系)
[十、 合约部署后的不可篡改性与销毁 160](#合约部署后的不可篡改性与销毁)
第四章:智能合约理论基础 166
[一、 智能合约的概念与功能 166](#智能合约的概念与功能)
[二、 Solidity 语言特性与优势 173](#solidity-语言特性与优势)
[三、 合约编译时产生的内容 178](#合约编译时产生的内容)
[四、 部署合约:地址与ABI获取 183](#部署合约地址与abi获取)
[五、 合约部署的成本核算 188](#合约部署的成本核算)
[六、 合约常见安全漏洞与防范措施 193](#合约常见安全漏洞与防范措施)
[七、 合约部署工具:Remix、Hardhat等 201](#合约部署工具remixhardhat等)
[八、 合约部署后的公开性与可审计性 206](#合约部署后的公开性与可审计性)
[九、 合约逻辑的修改与升级模式 209](#合约逻辑的修改与升级模式)
第五章:EVM 与 Gas 机制 212
[一、 EVM以太坊虚拟机 217](#evm以太坊虚拟机)
[二、 EVM 为何如此重要 221](#evm-为何如此重要)
[三、 合约代码在EVM中的运行机制 226](#合约代码在evm中的运行机制)
[四、 操作码(OpCode)的逐条执行 229](#操作码opcode的逐条执行)
[五、 操作码(OpCode)的 Gas 成本机制 235](#操作码opcode的-gas-成本机制)
[六、 Gas 计量单位:gwei 与 ETH 的关系 240](#gas-计量单位gwei-与-eth-的关系)
[七、 London 升级:BaseFee、销毁、Tip 等改变 243](#london-升级basefee销毁tip-等改变)
[八、 Gas机制:防止网络攻击与滥用 248](#gas机制防止网络攻击与滥用)
[九、 交易异常与Gas耗尽处理 253](#交易异常与gas耗尽处理)
[十、 降低Gas成本的合约代码设计 255](#降低gas成本的合约代码设计)
第六章:共识机制与生态展望 261
[一、 早期共识机制:工作量证明(PoW) 266](#早期共识机制工作量证明pow)
[二、 The Merge 的定义与重要性 268](#the-merge-的定义与重要性)
[三、 权益证明(PoS)的本质与变革 273](#权益证明pos的本质与变革)
[四、 验证者惩罚机制 Slashing 解析 283](#验证者惩罚机制-slashing-解析)
[五、 PoS 对能耗与发行速度的影响 285](#pos-对能耗与发行速度的影响)
[六、 历次升级对系统的改进 286](#历次升级对系统的改进)
[七、 分片 Sharding、Danksharding 与 Verkle 树 293](#分片-shardingdanksharding-与-verkle-树)
[八、 DeFi、NFT 与 Layer-2 生态的亮点 298](#definft-与-layer-2-生态的亮点)
[九、 企业支持以太坊的原因 306](#企业支持以太坊的原因)
[十、 以太坊未来发展的潜力 308](#以太坊未来发展的潜力)
应用二进制接口(ABI)
描述合约对外可调用的函数、事件和参数格式的 JSON 文档,前端和其它合约用它来正确编码/解码调用数据与返回值。
自动化做市商(AMM)
去中心化交易所里的合约类型,通过预设数学公式和池子(Liquidity Pool)自动定价、撮合交易,不依赖传统订单簿。
账户抽象(Account Abstraction)
让账户行为更灵活的概念,把钱包能力(例如批量签名、Gas 代付、合约控制策略)从 EOA 转向合约或标准化接口,以优化用户体验和安全性。
借贷协议(例如 Aave)
在链上实现的合约集合,允许用户存入资产获取利息或借入资产并抵押,通常由智能合约自动管理利率和清算逻辑。
信标链(Beacon Chain)
以太坊 PoS 架构中的共识层,负责管理验证者、最终性(Finality)与分片/共识相关的投票与协调,不直接执行用户交易的 EVM 逻辑。
Berlin 升级
以太坊历史上的一次网络升级(若干 EIP 的集合),包含对 Gas 定价和安全性的若干调整,旨在提升效率与兼容性。
Besu 客户端
一种以太坊执行客户端实现(由 Hyperledger 社区维护),可用于运行节点、企业级部署与 RPC 服务。
Byzantium 升级
以太坊早期的重要硬分叉之一,包含多项 EIP 改进(如隐私、效率与安全性相关改动)。
常量变量(constant / immutable)
在合约中声明后不可变或仅在构造时设定的变量,读取成本低(不占 storage),节省 Gas。
Constantinople 升级
另一轮历史性升级,调整 Gas 成本并引入多项执行层改进以提升性能。
CREATE2 操作码
EVM 的一种创建合约的方式,允许根据部署者地址、salt 等预先计算目标合约地址,从而支持可预见的部署与某些“可替换逻辑”模式。
去中心化自治组织(DAO)
由智能合约规则驱动、通过代币持有者投票治理的组织结构,用于社区决策、资金管理与自动化治理。
去中心化应用(dApp)
运行在区块链(或利用区块链服务)的应用,前端可能是网页/移动端,后端逻辑由智能合约实现,具有去中心化与公开可验证的特点。
数据可用性分片(Danksharding / EIP-4844 等)
为降低 Layer-2(rollup)上链成本而设计的方案:在区块中增加“blob”或专用数据承载方式,提升数据可用性但不把所有数据永久写入状态树。
去中心化金融(DeFi)
使用智能合约提供传统金融功能(借贷、交易、衍生品、保险等)的生态体系,强调无需许可、可组合与透明性。
Dencun (坎昆)升级
以太坊的一次复合升级(包含 Deneb + Cancun 等改动),引入/完善了与数据可用性、预编译、执行层优化相关的特性(不同阶段的集合名)。
以太坊改进提案(EIP)
描述网络建议、标准或协议变更的文档化流程;重要 EIP 经社区讨论后可能成为网络升级的一部分。
以太坊请求评论(ERC — Ethereum Request for Comments)
ERC是EIP的一种子类,专注于以太坊网络应用层的标准提案,主要用于定义智能合约接口和代币标准。
同质化代币标准(ERC-20)
用于发行可互换代币的合约接口标准,定义了 balanceOf、transfer、approve 等通用方法,方便钱包与交易所互操作。
非同质化代币标准(ERC-721)
NFT 的常用标准,定义了独一无二代币的铸造、转移与查询接口(如 tokenId 与 ownerOf)。
混合型代币标准(ERC-1155)
支持在同一合约内同时管理可替换(fungible)和不可替换(non-fungible)代币的标准,节省 Gas 并提高灵活性。
Erigon 客户端
一个以太坊执行客户端实现,强调高性能、存储与查询效率,经常用于数据密集型节点或索引服务。
以太坊虚拟机(EVM)
在每个节点上运行合约字节码的沙箱式虚拟机,确保所有节点以确定性方式执行相同逻辑并更新状态。
全同步模式(Full Sync)
节点从创世块开始逐区块执行所有交易并重建状态的方法,最安全但耗时耗资源。
Gas 费
EVM 中衡量和付费计算/存储资源的单位。每条 opcode 有对应的 Gas 消耗,交易总费 = GasUsed × GasPrice(或在 EIP-1559 之后按 BaseFee+Tip 计)。
Gwei(10⁹ Wei)
常用的 Gas 单位,1 Gwei = 10⁹ Wei,1 ETH = 10¹⁸ Wei,因此 Gwei 便于表示小额 Gas 价格。
Hardhat 开发框架
主流的 JavaScript/TypeScript 智能合约开发与测试框架,支持脚本化部署、单元测试、Gas 报告与插件体系。
Istanbul 升级
以太坊一次网络升级,包含多项 EIP,旨在改进兼容性、隐私与 Gas 定价。
基于 JSON 的 RPC 接口(JSON-RPC)
节点对外提供的标准远程调用接口,钱包和前端通过它发送查询或构建/广播交易。
Kademlia 分布式哈希表(DHT)
一种 P2P 节点发现与路由算法,用于高效定位网络中其他节点与资源,常用于以太坊的节点发现机制。
第一层协议(主链 / L1)
区块链的基础层,负责最终结算与安全(例如以太坊主网);Layer-2 建设依赖其安全保证。
第二层扩展协议(L2)
构建在主链之上的扩容方案(如 Rollups、State Channels),把大量计算/数据异步或压缩后提交至 L1,从而降低成本并提高吞吐。
轻节点同步模式(Light Sync / Light Client)
只下载并验证区块头、不保存全部状态的节点模式,依赖完整节点提供证明以节省资源,适合移动或受限设备。
London 升级
含 EIP-1559 的重要升级,改变了 Gas 市场模型并引入销毁机制,改善交易费用体验与货币经济学。
最大可提取价值(MEV)
区块构建者通过重新排序、包含或排除交易所能提取的额外价值(例如三明治攻击或套利),是矿工/验证者与前端竞价中的重要考量。
合并(The Merge,PoW→PoS)
以太坊将共识机制从工作量证明切换到权益证明的重大升级,显著减少能耗并为后续扩容奠定基础。
Metropolis 阶段
以太坊历史上的一个升级阶段名(包含 Byzantium、Constantinople 等在内的中间演进阶段),标识协议演进里程碑。
nonReentrant(防重入)
防止合约在外部调用返回前被递归重复调用的一种模式或修饰器(如 OpenZeppelin 的 ReentrancyGuard),用于防范重入攻击。
点对点网络(P2P)
节点之间直接连接与交换数据的网络架构,没有中心化服务器,网络通过邻居发现和 gossip 协议传播消息。
区块提议者与构建者分离(PBS)
一种提议将“谁构建区块”(builder)与“谁提出/签署区块”(proposer)分离的设计,旨在降低 MEV 负面影响并改进经济激励。
默克尔-帕特里夏树(Merkle-Patricia Trie)
以太坊用于存储账户与合约状态的树形数据结构,支持高效的状态证明与快速验证单条存储项。
权益证明(PoS)
共识机制类型,节点通过质押代币获得验证资格并按比例获得奖励,同时可因恶意行为被惩罚(slashing)。
工作量证明(PoW)
早期的共识机制,节点(矿工)通过计算哈希难题竞争出块,消耗大量电力与算力资源。
拉取付款模式(Pull Payment Pattern)
把付款从“推送”改为“记录可提取余额,由用户主动提取”的设计,避免在循环或大量受益者场景下的 Gas/DoS 风险。
原型数据可用性分片(Proto-Danksharding / EIP-4844)
Danksharding 的先行实现,通过引入可携带大量临时 blob 的交易类型,大幅降低 rollup 提交数据的成本并改善扩容路径。
Prysm 客户端
一种流行的以太坊共识客户端实现(多用于信标链与验证者运行),负责 PoS 层的投票与提议逻辑。
RLPx 加密通信协议
以太坊底层的 P2P 加密通信协议,负责节点之间建立加密连接并在上面传输子协议消息(如区块/交易数据)。
远程过程调用(RPC)
一类让客户端远程调用节点方法的接口机制,JSON-RPC 是其常见实现,前端与脚本通过它访问区块链功能。
浏览器 IDE(Remix)
在浏览器中即可使用的智能合约开发环境,支持编写、编译、部署与调试合约,适合入门与快速原型。
重入攻击(Reentrancy)
当合约在外部调用返回前没有先更新内部状态时,攻击者可反复触发调用并多次提取资金的一类漏洞。
分片(Sharding)
把链的状态与交易分割到不同分片并行处理的扩容思路,用于横向扩展吞吐能力。
验证者惩罚机制(Slashing)
PoS 中对恶意或严重失职验证者的经济惩罚(扣除质押并强制退出),用于维持网络安全与激励诚实行为。
Solidity 语言
以太坊上最常用的智能合约编程语言,语法类似 JavaScript/C++,用于编写合约逻辑并编译为 EVM 字节码。
快照同步模式(Snap Sync / State Sync)
节点通过并行下载最新状态快照与区块头而快速完成同步的方式,比全同步快很多,常为全节点默认选择。
Truffle 开发框架
早期且成熟的智能合约开发工具链,包含迁移(部署)、测试和本地链(Ganache)支持。
总锁仓价值(TVL)
衡量 DeFi 生态规模的指标,表示被协议锁定的资产总价值(通常以美元计)。
未花费交易输出(UTXO)
比特币式账户模型下的交易单元概念(每笔输出可被后续交易作为输入消费),与以太坊的账户模型不同但常在比较时被提及。
多叉向量承诺树(Verkle Tree)
一种替代 Patricia Trie 的承诺数据结构,能显著缩短证明大小并使轻客户端验证更高效。
可验证随机函数(VRF)
提供可验证且不可篡改的随机数源(链下或链上结合预言机),常用于抽签、分配或随机化逻辑。
Wei(10⁻¹⁸ ETH)
以太坊的最小计价单位,1 ETH = 10¹⁸ Wei,交易/余额在链上以 Wei 存储以避免小数误差。
白皮书(Whitepaper)
项目早期的技术与愿景说明文档,阐述设计理念、经济模型与协议细节,通常作为项目前期文献。
Zeppelin / OpenZeppelin(安全库)
广泛使用的开源合约库,提供经审计的可复用组件(如 ERC 标准实现、权限与安全守卫)。
UDP(User Datagram Protocol)-用户数据报协议
是一种无连接、面向数据报的传输层协议,广泛应用于对实时性要求高的场景,如视频通话、在线游戏和DNS查询等。
TCP(Transmission Control Protocol)-传输控制协议
是互联网协议族中的核心协议之一,位于传输层,负责在网络中提供可靠的、面向连接的字节流服务。它与 IP 协议共同构成了 TCP/IP 协议栈,是现代网络通信的基础。
MCP(Model Context Protocol)-模型上下文协议
是由 Anthropic 于 2024 年 11 月推出的开放标准,旨在为大型语言模型(LLM)提供一种标准化的方式,以便与外部数据源、工具和服务进行安全、灵活的交互。
Web3世界日新月异,新名词和新概念层出不穷。对于初学者而言,建议利用在线文档库(例如飞书、语雀、Notion等)构建个人专属的词库。将新词汇及其解析逐一整理归档,闲暇时间常翻阅,这将有助于快速填补知识空白,提升对Web3领域的理解。
——@kelvin-秦默