File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -15,6 +15,46 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-14
19+
20+ StateDB是区块链系统中的一个核心概念,主要用于存储和管理系统的状态数据。下面是对其的详细解释:
21+ --------------------------------------------------------------------------------
22+ ✅ 什么是 StateDB?
23+ StateDB状态数据库是区块链系统中用于存储每个账户(或合约)的最新状态的组件。它记录了包括账户余额、合约存储变量、nonce等所有与当前区块状态相关的数据。
24+ --------------------------------------------------------------------------------
25+ 🧠 它解决了什么问题?
26+ 在区块链中,每个新区块的生成都伴随着系统状态的更新(比如账户余额变化、合约变量修改等),因此机制必须有一个来追踪和存储这些变化。这就是 StateDB 的作用:
27+ - 保存所有账户并约定的当前状态
28+ 。
29+ - 提供查询
30+ 和更新状态
31+ 的能力。
32+ - 支持区块的回滚
33+ 与状态同等
34+ ,处理链的重组(reorg)或回退。
35+ --------------------------------------------------------------------------------
36+ 🏗️ StateDB 通常包含哪些内容?
37+ 以以太坊为例,StateDB 中包含:
38+ 项目说明地址(地址)每个或用户约定的唯一标志余额(余额)账户中持有的ETH数量随机数账户已发送交易的数量,用于防止重放攻击存储(Storage)契约中的标志(键值对),通过 Merkle Patricia Tree 组织代码(代码)智能合约的字节码
39+ 这些数据通过一种称为Merkle Patricia Trie的数据结构存储,从而高效实现的查找、验证与同步。
40+ --------------------------------------------------------------------------------
41+ 🧬 数据结构与存储形式
42+ 在如以太坊这样的系统中,StateDB并不是直接存在于普通的数据库中,而是被组织为:
43+ - 账户状态树(State Trie)
44+ :每个账户为一个节点
45+ - 每个合约的存储又构成一个独立的 trie(合约存储 Trie)
46+ 整个状态树的根哈希(stateRoot)会被写入区块头中,确保状态不可篡改且可验证。
47+ --------------------------------------------------------------------------------
48+ 💡举个例子
49+ 假设 Alice 向 Bob 转账 1 ETH,StateDB 会:
50+ 1.查找 Alice 和 Bob 的账户状态
51+ 2.减少 Alice 的余额,增加 Bob 的余额
52+ 3.更新这些状态在 Merkle Trie 中的位置
53+ 4.生成新的根存储,写入区块头
54+ --------------------------------------------------------------------------------
55+ 📌小结
56+ 特性说明核心作用存储全网状态,包括账户、合约等数据结构多级 Merkle Patricia Trie与块的关系每个区块都有一个对应的状态根哈希(stateRoot)使用场景状态读取、状态更新、验证历史状态
57+
1858# 2025-08-11
1959
2060跨链桥笔记:打通区块链世界的“巴别塔”
You can’t perform that action at this time.
0 commit comments