以太坊基础
以太坊是支持智能合约的分布式状态机。节点依据相同的交易顺序和执行规则计算状态变化,共识协议确定区块历史。执行层负责交易和 EVM 执行,共识层负责区块提议、分叉选择与最终性。
智能合约与 EVM
智能合约由部署后的字节码和账户状态组成。Solidity、Vyper 等语言编译为 EVM 字节码,EVM 按操作码执行。合约函数由交易或调用触发,不会仅因某个时间点到达而自行运行。
每次执行都受 Gas 预算限制。EVM 支持通用计算,但一笔交易无法无限执行。节点重放交易需要得到相同结果,合约不能任意访问本地文件或外部网络。
合约业务可以通过代理实现升级:代理保存状态并委托给实现合约执行。升级替换实现地址,不等同于任意改写已经部署的字节码。权限、存储兼容与调用语义分别影响升级安全。
账户与状态
| 账户 | 控制方式 | 交易与调用 |
|---|---|---|
| 外部账户(EOA) | 由私钥签署交易和授权 | 能发起协议层交易;EIP-7702 允许设置代码委托标记 |
| 合约账户 | 由合约代码规定操作条件 | 在交易执行中接收调用并发出消息调用,没有与账户天然对应的私钥 |
EIP-7702 下的 EOA 仍保留私钥控制能力,因此代码是否为空不能单独作为账户权限或签名方式的判断依据。合约钱包的授权规则由其代码定义,可通过 ERC-1271 等接口验证签名。
账户状态包含 nonce、ETH 余额、代码哈希和存储根。ERC-20 余额通常保存在代币合约的映射中,与账户的原生 ETH 余额不同。账户结构与地址派生见账户模型。
交易、Gas 与 ETH
交易包含发送者签名、nonce、目标地址、价值、调用数据及费用参数。nonce 约束同一发送账户的交易顺序;执行失败会回滚业务状态变化,但已经消耗的 Gas 仍需付费。
EIP-1559 交易通过 maxFeePerGas 和 maxPriorityFeePerGas 约束费用。基础费由协议根据区块使用情况调整并销毁;优先费支付给区块的执行层费用接收地址。
在费用上限足以覆盖基础费时,执行 Gas 的有效单价为:
$$ \text{effectiveGasPrice}=\min(\text{maxFeePerGas},\text{baseFeePerGas}+\text{maxPriorityFeePerGas}) $$
Gas 是资源计量单位,ETH 是支付资产,二者不能混为同一单位。1 ETH = 10^{18} Wei,1 Gwei = 10^9 Wei。Blob 交易另有独立的数据费用,见 EIP-4844。
ETH 的供应变化受共识奖励发行和费用销毁共同影响。基础费销毁不保证每个时期的 ETH 总供应都下降。
区块与节点职责
合并后的信标区块包含共识层信息及执行载荷。执行载荷包含交易和执行结果承诺;执行层区块头记录状态根、交易根、收据根等字段。完整状态树和收据树不是逐份嵌入区块的内容。
节点从交易和历史状态计算新状态,并校验其根与区块承诺一致。日志属于执行收据,查询日志与读取合约存储是不同操作。PoW 时代的挖矿和叔块规则属于历史机制。
执行客户端和共识客户端通过 Engine API 协作。验证者客户端承担提议与证明签署;运行普通节点本身不要求质押,参与独立验证者激活则有最低质押要求。
权益证明与最终性
以太坊于 2022 年合并后使用权益证明。主网时间划分为 slot 和 epoch;一个 slot 为 12 秒,一个 epoch 为 32 个 slot。某些 slot 可能没有区块,因此 slot 长度不是每两个实际区块之间必然相同的时间间隔。
验证者根据质押权重参与区块提议和证明。LMD-GHOST 选择链头,Casper FFG 通过检查点投票提供最终性。链头确认与检查点最终确认具有不同含义,机制见 Gasper。
扩容与数据可用性
Rollup 在链外执行交易,并将验证状态转换所需的承诺、证明或数据按其协议发布到结算层。安全性同时依赖证明机制、数据可用性、升级权限和退出路径。
以太坊早期路线图曾讨论多个执行分片。以 Rollup 为中心的扩容强调数据供给,EIP-4844 引入 Blob,后续数据可用性采样等机制继续扩展该能力。执行分片旧规划不能当作已经运行的主网结构。
侧链具有独立的共识和安全假设。Polygon PoS、Gnosis Chain 等侧链不能仅因与以太坊有桥接关系,就视为具有与 Rollup 相同的结算安全性。
主要历史升级
| 升级 | 时间 | 主要变化 |
|---|---|---|
| Frontier | 2015 年 | 主网启动 |
| Byzantium | 2017 年 | 新增椭圆曲线等预编译,支持更高效的证明验证 |
| London | 2021 年 | EIP-1559 基础费与销毁机制 |
| The Merge | 2022 年 | 主网从 PoW 转为 PoS |
| Shanghai / Capella | 2023 年 | 质押提款 |
| Cancun / Deneb | 2024 年 | Blob 交易与瞬态存储等机制 |
| Prague / Electra(Pectra) | 2025 年 | EOA 代码委托与验证者机制调整等变化 |
这些升级分别改变执行或共识规则,不能把某次升级概括为自动提供隐私、无限吞吐量或消除合约风险。
合约生态与开发环境
ERC-20、ERC-721、ERC-1155 分别定义常见代币接口,ERC-4626 定义代币化金库接口。接口兼容性与业务安全、价格可靠性、管理员权限属于不同问题。
开发工具包括 Remix、Hardhat 和 Foundry;链上交互可使用 ethers.js 等库。Sepolia 用于合约和应用测试,Hoodi 用于验证者及质押基础设施测试。Goerli、Holesky 属于已停用的历史测试网络。