以太坊,作为继比特币之后最具影响力的加密货币之一,早已不满足于仅仅作为一种数字支付工具,它立志成为一台“世界计算机”,一个去中心化的、可编程的区块链平台,允许开发者构建和部署各种去中心化应用(DApps),要理解这台“计算机”是如何工作的,仅仅看文字描述可能略显抽象,本文将通过一系列生动的图解,带你一步步拆解以太坊的核心架构与运行原理。
想象一下,如果比特币的区块链是一本只能记录“谁转给谁多少钱”的简单账本,那么以太坊的区块链则更像一本可以记录任何复杂规则和逻辑的智能笔记本。
图示(概念图):
--------------------- ---------------------
| 账户 A (外部账户) | | 账户 B (外部账户) |
|---------------------| |---------------------|
| 地址: 0x123...abc | | 地址: 0x456...def |
| 余额: 100 ETH |----->| 余额: 50 ETH |
| 代码: 无 | | 代码: 无 |
--------------------- ---------------------
| |
| 1. 发起转账交易 | 2. 接收转账
| (转账10 ETH) |
| |
v v
------------------------------------------------------------------
| 以太坊区块链 (共享账本) |
| |
| [区块1] ... [区块N] ... [区块N 1] |
| ... 交易数据:从0x123...abc 转账10 ETH 到 0x456...def ... |
| |
------------------------------------------------------------------
^ ^
| 3. 矿工打包交易并验证 | 4. 状态更新
| 5. 区块确认后,全网同步账本 |
| |
--------------------- ---------------------
| 账户 A (外部账户) | | 账户 B (外部账户) |
|---------------------| |---------------------|
| 地址: 0x123...abc | | 地址: 0x456...def |
| 余额: 90 ETH |<-----| 余额: 60 ETH |
| 代码: 无 | | 代码: 无 |
--------------------- ---------------------
核心要点:


如果说账户是骨架,那么智能合约就是以太坊的灵魂,它是在以太坊区块链上运行的一段代码,一旦部署,就无法篡改,会按照预设的规则自动执行。
智能合约的“一生”:
图示(智能合约交互流程图):

---------------- 部署交易 ---------------------
| 开发者 | ----------------> | 合约账户 (已部署) |
| (编写Solidity) | (包含代码) |---------------------|
---------------- | 地址: 0x789...ghi |
| 代码: (函数如 |
| deposit(), |
| withdraw()) |
| 状态: (余额记录) |
---------- ----------
|
| 调用交易 (如 deposit 10 ETH)
| (包含函数名和参数)
v
---------------- --------------------------------- ---------------------
| 用户 (外部账户) | --> | 矿工节点 | --> | 以太坊网络 |
| (发起调用) | | | | (广播交易,验证执行) |
---------------- | 1. 接收交易 | ---------- ----------
| 2. 从区块链读取合约代码和状态 | |
| 3. 在EVM中执行合约函数 | |
| (更新状态: 用户余额 10) | |
| 4. 将执行结果和状态变更打包进区块| |
--------------------------------- |
^ |
| 区块确认后 |
| 状态同步 |
v |
--------------------- --------------------------------- ---------------------
| 合约账户 (已部署) | <--- | 区块链 | <--- | 其他节点 |
|---------------------| | (记录最新的状态变更) | | (同步最新状态) |
| 地址: 0x789...ghi | --------------------------------- ---------------------
| 代码: (不变) |
| 状态: (用户余额已 10)| <-- 状态更新
---------------------
当用户调用智能合约时,谁来执行这些代码呢?答案是以太坊虚拟机 (EVM - Ethereum Virtual Machine)。
EVM是以太坊的“心脏”,是一个去中心化的、图灵完备的虚拟机,它像一个分布在全球计算机上的沙箱环境,负责执行所有智能合约的代码。
EVM的工作流程图解:
---------------- 发送交易 ------------------------ 执行代码 -----------------------
| 用户/合约 | ----------------> | 以太坊节点 (矿工/全节点) | ---------------> | EVM |
| (发起调用) | | | | (执行引擎) |
---------------- |------------------------| |-----------------------
| 1. 从交易池获取交易 | | 1. 读取合约代码和状态 |
| 2. 检查交易有效性 (gas, | | 2. 在沙箱中执行字节码 |
| 签名等) | | 3. 更新状态 |
| 3. 调用EVM执行合约代码 | | 4. 产生日志/事件 |
| 4. 将执行结果(状态根、 | | 5. 返回执行结果 |
| 收据根)返回 | | |
------------------------ -----------------------
^ | ^ |
| | 状态更新 | | 结果返回
| v | v
------------------------ -----------------------
| 以太坊区块链 | <--------------- | 交易收据 (Receipt) |
| (记录新状态和交易结果) | | (记录日志、 gas使用等) |
------------------------ -----------------------
核心要点: