Skip to content

Commit 3d54e7e

Browse files
committed
Add study notes for 2025-08-14
1 parent 9795fe6 commit 3d54e7e

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

Hickerzeed.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff 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
跨链桥笔记:打通区块链世界的“巴别塔”

0 commit comments

Comments
 (0)