上链ON-CHAIN BLOCK 05 / 26
卷一 · 世界观BLOCK 05

以太坊全景图


前四章我们从下往上搭:哈希、链、账户、交易。这一章把它们拼成完整的一张图,并把你之后会反复撞见的术语——EVM、世界状态、节点、客户端、主网/测试网/L2——一次挂到位。读完这章,卷一的"换脑子"就完成了,从下一卷起我们开始动手。

以太坊是一台"世界计算机"

比特币是一本只记"谁转给谁多少钱"的账。以太坊多迈了一大步:它是一台全球共享的状态机。它的"当前状态"是所有账户的余额、所有合约的代码与存储;而交易,就是让这台状态机从一个状态转移到下一个状态的输入。区块链记录的,是这台机器每一步状态转移的完整历史。

一句话模型
新状态 = STF(旧状态, 一批交易)
       └ STF = State Transition Function,由 EVM 逐笔执行交易得出

EVM:每个节点里都有的那台虚拟机

EVM(以太坊虚拟机)是执行智能合约的运行时。它是一个 256 位的栈式虚拟机,读取合约字节码、一条一条执行 opcode。它的关键特性是确定性:同样的输入,在全球每一台节点上执行必须得出逐位相同的结果——否则全网无法对状态达成一致。

Android 类比

EVM 之于智能合约,正如 ART / Dalvik VM 之于你的 Kotlin 代码。你写 Solidity(≈ Kotlin),编译成 EVM 字节码(≈ dex/smali),然后在每个节点的 EVM 上执行。第 11 章我们会像读 smali 一样,真的打开 EVM 字节码看它单步执行——那一章有本书的旗舰 Demo,一台能在你浏览器里跑的 mini-EVM。

世界状态:那本账本里到底存了什么

"世界状态"是一棵巨大的 Merkle 树(具体是 Merkle Patricia Trie),从地址映射到账户。每个账户存四样东西:

字段含义EOA合约
nonce已发交易数 / 已创建合约数
balance账户持有的 ETH(以 wei 计)
codeHash合约字节码的哈希
storageRoot合约自己那棵存储树的根

整棵树的根哈希,就是第 2 章提到的区块头里的 stateRoot。一个 32 字节的哈希,就"承诺"了全世界几亿个账户的每一分钱、每一格存储。改动任何一格,root 就变——又是那个熟悉的哈希魔法。

节点与客户端:网络由谁组成

节点(node)是运行以太坊软件、参与网络的一台机器。客户端(client)是那个软件本身。合并之后,一个完整节点其实是两个客户端搭档:

之所以有这么多不同实现,是为了客户端多样性——万一某个实现有 bug,不至于让全网一起崩。这本身就是去中心化韧性的体现。

你未必要自己跑节点

自建节点要同步几百 GB 数据。大多数开发者(尤其起步阶段)直接用 Infura、Alchemy、公共 RPC 等"节点即服务"——它们帮你跑节点,你只管调 RPC。这跟你用云数据库而非自建 MySQL 是一个道理。到了真要去信任化时再自建。

一张网还是很多张网

"以太坊"其实是一族网络。开发时你必须清楚自己连的是哪一张——每张有唯一的 chainId,交易签名里带着它,防止一张网上的交易被拿到另一张网重放。

网络chainId用途币真值钱吗
Ethereum 主网1真实资产,生产环境是,真金白银
Sepolia 测试网11155111开发测试的首选测试网否,水龙头免费领
Holešky 测试网17000面向质押/验证者测试
本地 Anvil/Hardhat31337你自己电脑上的一次性链否,秒开秒清
Arbitrum One (L2)42161以太坊二层,便宜快
Base (L2)8453Coinbase 的二层

L2(第二层)你先建立印象即可:它们是建在以太坊之上、把大量交易在链下处理再把结果压缩回主网的扩容方案,费用低得多。第 25 章会专门拆解它们的原理和风险。开发时的黄金流程是:本地链 → 测试网 → 主网,一路验证再上真金白银。

把整张图拼起来

全景 · 自底向上
你的私钥(第3章)
   │ 签名
   ▼
交易(第4章) ──广播──► mempool ──打包──► 区块(第2章)
                                            │ 每个节点的 EVM 执行
                                            ▼
                                     世界状态改变(本章)
                                            │ 承诺为
                                            ▼
                                     stateRoot 写进区块头
   ▲                                         │
   └──── JSON-RPC 读取(第7章) ◄── 节点/客户端(本章)
要点入账

以太坊 = 一台由全球节点共同维护、状态被 Merkle 树承诺、由 EVM 逐笔执行交易来推进的世界状态机。你写的合约跑在 EVM 上,读写的是世界状态里属于你合约的那格存储,通过 JSON-RPC 与之交互。术语地图已经铺好——卷二开始,我们真的装钱包、领测试币、发出你的第一笔链上交互。

本章小结

◆ 返回目录