全局状态 1/3:blockchain 如何知道‘谁拥有什么’?
Source: Dev.to
什么是全局状态 ?
区块链不仅仅存储交易:它始终维护一个巨大的共享内存,称为 全局状态(global state)。
全局状态是特定区块链在某一时刻 T 的共享内存(每条区块链都有自己的全局状态),并且对网络中的所有节点都是相同的。
全局状态与交易的区别
全局状态是 交易执行的结果,简而言之:
-
交易 → 历史(发生了什么)
交易被存储在区块链的区块中。每个区块包含一系列交易、元数据以及指向前一个区块的链接。区块 100 : - Alice 向 Bob 发送 10 个代币 - Bob 向 Charlie 发送 1 个代币类比:交易 = 电影 🎬
-
全局状态 → 当前情况(现在在哪里)
这是一张 最终结果的快照,在该区块之前所有有效交易执行完毕后的状态。全局状态充当 快捷方式,可以直接说「现在是这样」,而无需从头重新计算。类比:全局状态 = 电影的最后一帧 📸
交易与全局状态的关系 — 快速概述
- 请求 → 交易(= 指令)
- 区块创建(交易列表)
- 节点执行区块中的交易
- 修改全局状态
💡 每产生一个新块,区块链就会从一个全局状态转变为另一个全局状态。

全局状态包含什么 ?
全局状态是一系列账户的列表,每个账户包含:
-
余额(balance) : 账户拥有的资产。
- 原生加密货币(ETH、BNB…) : 直接存储在全局状态中。
- 代币 : 存储在智能合约的数据中,但可通过钱包查看。
-
数据(data / storage) : 智能合约存储的信息。
-
Nonce(交易计数器) : 钱包已发送的交易数量。
⚠️ 钱包(EOA)有 nonce,智能合约本身通常没有。 -
代码(仅限智能合约) : 规则、函数、业务逻辑。
这些数据 位于全局状态内部,存放在对应的智能合约账户中。
这块内存只回答一个问题:« 在时刻 T,谁拥有多少以及处于什么状态 ? »

“全局状态” 还是 “全局状态” ?
- 全局状态 : 当谈论概念或进行定义时使用。
- 全局状态 : 当指代具体对象、其使用或其内容时使用。