以太坊作为全球第二大加密货币平台,以及最具影响力的智能合约平台之一,其精妙而复杂的设计是支撑其庞大生态系统的基石,要真正理解以太坊的工作原理,深入其设计图解是必不可少的,本文将通过图解的方式,深入剖析以太坊的核心架构与关键组件,帮助读者构建清晰的认识框架。
以太坊整体架构概览
以太坊的设计可以看作是一个分布式的、状态化的世界计算机,其整体架构可以从多个维度进行划分,但通常可以概括为以下几个核心层次:
-------------------------------------------------------------
| 应用层 (Application Layer) |
| (去中心化应用 DApps, 代币标准如 ERC-20/ERC-721, DAO等) |
----------------------------- -------------------------------
| 合约层 (Contract Layer) |
| (智能合约代码, Solidity/Vyper等, 虚拟机 EVM) |
----------------------------- -------------------------------
| 执行层/共识层 (Execution/Consensus Layer) |
| (交易处理, 区块打包, 共识算法如 PoS/Casper, 状态转换) |
----------------------------- -------------------------------
| 数据层 (Data Layer) |
| (区块链数据结构, P2P网络, 加密算法, RLP编码) |
-------------------------------------------------------------
核心组件深度图解

区块链数据结构图解
以太坊的区块链由一系列按时间顺序连接的区块组成,每个区块包含以下关键信息:

---------------------------------------------
| Block Header |
| ----------------------------------------- |
| | Parent Hash (前一个区块的哈希) | |
| ----------------------------------------- |
| | Uncle Hash (叔块哈希,PoW相关,PoS后弱化)| |
| ----------------------------------------- |
| | Beneficiary (矿工/验证者地址,PoS后为验证者)| |
| ----------------------------------------- |
| | State Root (状态根,全局状态的哈希摘要) | |
| ----------------------------------------- |
| | Transactions Root (交易列表的哈希摘要) | |
| ----------------------------------------- |
| | Receipts Root (交易收据的哈希摘要) | |
| ----------------------------------------- |
| | Number (区块号) | |
| ----------------------------------------- |
| | Gas Limit (区块 Gas 限制) | |
| ----------------------------------------- |
| | Gas Used (已用 Gas) | |
| ----------------------------------------- |
| | Timestamp (时间戳) | |
| ----------------------------------------- |
| | Extra Data (额外数据) | |
| ----------------------------------------- |
| | Mix Hash (混合哈希,PoW相关) | |
| ----------------------------------------- |
| | Nonce (随机数,PoW相关) | |
| ----------------------------------------- |
---------------------------------------------
| Transactions |
| [交易1, 交易2, 交易3, ...] |
---------------------------------------------
| Uncles (叔块) |
| [叔块1, 叔块2, ...] (可选) |
---------------------------------------------
State Root、Transactions Root和Receipts Root是默克尔树的根哈希,它们分别对应了区块执行后的全局状态、交易列表和交易执行收据的哈希摘要,极大地提高了验证效率。以太坊虚拟机(EVM)图解
EVM是以太坊的“心脏”,是一个图灵完备的虚拟机,所有智能合约都在EVM中执行,它可以被看作是一个基于堆栈的虚拟计算机。
-------------------------------------
| EVM (以太坊虚拟机) |
| |
| ----------------------------- |
| | 执行环境 (Context) | |
| | - 调用者 (Caller) | |
| | - 当前合约 (Contract) | |
| | - 值 (Value) | |
| | - Gas | |
| | - 内存 (Memory) | |
| ----------------------------- |
| | 存储 (Storage) | |
| | (持久化键值对,状态的一部分) | |
| ----------------------------- |
| | 栈 (Stack) | |
| | (256位字,最大1024项) | |
| ----------------------------- |
| | 内存 (Memory) | |
| | (字节数组,临时存储) | |
| ----------------------------- |
| | PC (Program Counter) | |
| | (指向当前指令) | |
| ----------------------------- |
| | 操作码 (Opcode) | |
| | (ADD, MUL, SLOAD, SSTORE等) | |
| ----------------------------- |
| |
-------------------------------------
账户模型图解
以太坊采用账户模型,而非比特币的UTXO模型,账户分为两类:
--------------------------- ---------------------------
| 外部账户 (EOA) | | 合约账户 (CA) |
| (Externally Owned Account)| | (Contract Account) |
--------------------------- ---------------------------
| - 地址 (由公钥派生) | | - 地址 (由创建交易生成) |
| - 余额 (Ether) | | - 余额 (Ether