以太坊中的账本是什么?一文读懂区块链世界的数字记账本
从账本说起
账本(Ledger)并不是一个新鲜概念,从古代的竹简记账,到企业的复式记账法,再到我们今天的银行账户系统,账本的核心作用始终未变:记录谁拥有什么,以及资产如何在人与人之间流转。
传统账本由某个中心化机构(银行、公司、政府)保管和维护,我们必须信任记账者不会作恶、不会篡改,而以太坊的出现,彻底改变了这一范式——它构建了一个全球共享、无需信任第三方、任何人都可以验证的分布式账本。
以太坊中的账本究竟是什么?它是如何工作的?本文将带你一探究竟。
以太坊账本的本质:一台全球状态机
很多人以为以太坊的账本只是“记录交易流水”,这个理解并不完整。
更准确地说,以太坊是一个基于交易的状态机(Transaction-based State Machine):
- 状态(State):某一时刻,所有账户的余额、合约数据等信息的完整快照;
- 交易(Transaction):驱动状态发生变化的唯一途径;
- 账本(Ledger):就是由创世区块开始,所有交易历史以及由此推导出的全部状态的集合。
可以把以太坊想象成一个巨大的、全球同步的Excel表格,记录着数千万个账户的实时数据,每一笔交易都会修改这张表格,而所有的修改历史都被永久地刻写在区块链上,不可篡改。
账户模型:以太坊账本的基本单元
与比特币采用的UTXO(未花费交易输出)模型不同,以太坊采用的是更直观的账户余额模型(Account-Based Model),这与我们熟悉的银行账户非常相似。
以太坊账本中,每个账户由一个20字节的地址标识,账户中包含四个核心字段:
| 字段 | 含义 |
|---|---|
| nonce | 交易计数器,记录该账户已发送的交易数量(防止重放攻击) |
| balance | 账户余额,以Wei为单位(1 ETH = 10¹⁸ Wei) |
| storageRoot | 合约存储的根哈希(仅合约账户使用) |
| codeHash | 合约代码的哈希(仅合约账户使用) |
两种账户类型:账本的两大主角
外部账户(EOA,Externally Owned Account)
- 由私钥控制,私钥掌握在用户手中;
- 可以主动发起交易,转账ETH、触发合约;
- 创建免费,任何人随时可以生成。
合约账户(Contract Account)
- 由智能合约代码控制,没有私钥;
- 不能主动发起交易,只能在被调用时执行;
- 部署合约需要消耗Gas费用;
- 拥有自己独立的存储空间,这也是账本数据的重要来源。
值得注意的是:以太坊账本记录的不仅仅是ETH余额,还包括所有智能合约的存储数据,这意味着DApp的代币余额、NFT归属权、DeFi质押记录等,统统都写在以太坊这本“大账本”上。
世界状态:账本的全局快照
世界状态(World State)是以太坊账本中最核心的概念之一。
它是以太坊网络在某一区块高度时,所有账户状态的完整映射——可以理解为一个巨大的键值对数据库:
地址 (160-bit) → 账户状态 (nonce, balance, storageRoot, codeHash)
世界状态并不直接存储在区块链上,而是存储在一种特殊的数据结构中——默克尔帕特里夏树(Merkle Patricia Trie,MPT)。
这种数据结构的精妙之处在于:
- 快速验证:通过状态根哈希(State Root),任何节点可以轻量级地验证某个账户的状态,而无需下载整个账本;
- 防篡改:任何一个账户数据的细微改动,都会导致根哈希的完全变化,篡改无处遁形;
- 高效更新:树状结构让状态的增删改查非常高效。
每个区块头中都记录了当时的世界状态根哈希,将“账本快照”锚定在区块链上。
交易:驱动账本变化的唯一引擎
以太坊账本的每一次状态变化,都源于一笔交易,其流程大致如下:
- 用户签名并广播一笔交易(如转账1 ETH);
- 验证者将交易打包进区块;
- 以太坊虚拟机(EVM)执行该交易;
- 相关账户的状态被更新(发送方余额减少,接收方余额增加);
- 新的世界状态根哈希被写入区块头;
- 全网节点同步新区块,本地账本状态随之更新。
关键特性:交易执行是确定性的——从创世区块开始,任何人重放全部历史交易,都能得出完全一致的当前状态,这正是账本可验证、可信任的基石。
以太坊账本 vs 传统账本
| 维度 | 传统账本(如银行) | 以太坊账本 |
|---|---|---|
| 维护者 | 中心化机构 | 全球数千个节点共同维护 |
| 信任基础 | 信任机构信用 | 信任密码学与共识机制 |
| 访问权限 | 需要授权 | 任何人可 |
发布于:2026-10-17,除非注明,否则均为原创文章,转载请注明出处。
