简介
Ethereum 是一个去中心化的区块链网络,它把账户、交易、智能合约和全网共识组合在一起,让任何人都可以在无需中心化服务器的情况下部署和使用链上应用。
从开发者视角看,Ethereum 主要由三层组成:
- 账户层:保存用户账户和合约账户的状态。
- 执行层:负责执行交易、运行 EVM、更新世界状态。
- 共识层:负责出块、验证区块,并让全网对链的最新状态达成一致。
账户模型
Ethereum 使用账户模型,而不是 Bitcoin 的 UTXO 模型。每个账户都有地址,并在全局状态中保存自己的数据。
Ethereum 账户分为两类:
- 外部账户(EOA):由私钥控制,可以主动发起交易。
- 合约账户:由智能合约代码控制,只有在收到交易或被其他合约调用时才会执行。
账户状态通常包含 nonce、余额、合约代码哈希和存储根。EOA 没有合约代码,合约账户则可以保存代码和持久化存储。
交易
交易是改变 Ethereum 状态的入口。用户通过 EOA 签名交易,把交易广播到网络中,validator 将交易打包进区块。
常见交易类型包括:
- 普通转账:从一个账户向另一个账户转移 ETH。
- 合约部署:创建新的合约账户,并写入合约代码。
- 合约调用:调用合约函数,读取或修改合约状态。
交易执行需要支付 gas。gas 用来衡量计算、存储和数据占用的成本,防止无限循环或过度占用网络资源。
EVM
EVM(Ethereum Virtual Machine)是 Ethereum 的智能合约执行环境。
Solidity、Vyper 等高级语言编译后会生成 EVM bytecode。交易调用合约时,节点会在 EVM 中执行 bytecode,并根据执行结果更新状态。
EVM 的几个重要特性:
- 确定性:相同输入和相同链上状态下,所有节点都会得到相同执行结果。
- 隔离性:合约代码运行在虚拟机环境中,不能直接访问链下系统。
- 计费执行:每条指令都会消耗 gas,执行成本可被精确计量。
区块与状态
Ethereum 区块包含交易列表、执行结果摘要、状态根、收据根等信息。
validator 打包区块后,其他节点会重新执行区块中的交易,验证新的状态根是否一致。如果结果一致,说明这个区块里的状态转换是有效的。
可以把 Ethereum 理解成一台全网共同维护的状态机:
旧状态 + 交易列表 -> EVM 执行 -> 新状态共识
Ethereum 当前使用 PoS(Proof of Stake)共识。validator 通过质押 ETH 参与区块提议和投票。
共识层负责决定哪条链是规范链,并提供最终确定性。执行层负责交易执行和状态转换。两者通过 Engine API 协作:共识层选择区块,执行层验证区块里的交易是否能正确改变状态。
学习路线
学习 Ethereum 可以按这个顺序展开:
- 理解账户、交易、gas 和区块。
- 学习 EVM 的执行模型和状态转换。
- 使用 Solidity 编写简单合约。
- 掌握 ERC-20、ERC-721、ERC-1155 等常见标准。
- 了解执行层客户端、共识层客户端和 validator 的职责。
- 深入研究 MEV、L2、账户抽象等扩展方向。