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,53 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-18
19+
20+ 了解了一些在两种常见的layer2解决方案中的作用
21+ ### 默克尔树在 ZK-Rollup 中的作用
22+
23+ 默克尔树的主要作用是** 高效地验证数据完整性和成员资格** 。在 ZK-Rollup 中,它主要用于以下两个方面:
24+
25+ ### 1. 状态树(State Tree)
26+
27+ 每个 ZK-Rollup 都有一个** 状态树** ,它代表了 Layer 2 网络中所有账户的余额、智能合约数据等信息。
28+
29+ - ** 数据结构** :这个状态树是一个默克尔树。每个叶子节点(Leaf)代表一个账户或数据项的哈希值。
30+ - ** 默克尔根(Merkle Root)** :所有叶子节点一层一层地向上哈希,最终生成一个唯一的哈希值,称为** 默克尔根** 。这个默克尔根就像是整个 Layer 2 状态的“数字指纹”。
31+ - ** 上链** :当 Layer 2 上的交易被打包执行后,新的状态会产生一个新的默克尔根。ZK-Rollup 的证明器(Prover)会将这个** 新的默克尔根** 作为有效性证明的一部分,提交到以太坊主链(Layer 1)上。
32+
33+ 通过这种方式,主链上只需要存储一个简单的哈希值(默克尔根),就能代表整个 Layer 2 的复杂状态。如果 Layer 2 的任何一个账户或数据发生变化,默克尔根都会随之改变。
34+
35+ ### 2. 交易树(Transaction Tree)
36+
37+ 在某些 ZK-Rollup 实现中,一个批次内的所有交易也会被组织成一个默克尔树。
38+
39+ - ** 证明交易** :当一个批次上链时,证明器会生成一个零知识证明,证明这个批次中的所有交易都存在于一个特定的默克尔树中,并且这些交易的执行是有效的。
40+ - ** 数据可用性** :即使只将默克尔根上链,通过提供一个** 默克尔证明(Merkle Proof)** ,任何用户都可以向其他人证明某笔交易确实包含在这个批次中,而不需要公布所有交易的细节。
41+
42+ ---
43+
44+ ### ZK-Rollup 如何结合默克尔树
45+
46+ 整个流程可以这样理解:
47+
48+ 1 . ** 链下(Layer 2)** :一个批次的交易发生后,证明器会从旧的** 状态树** 中读取相关数据,执行交易,然后生成一个新的** 状态树** 。
49+ 2 . ** 生成证明** :证明器会生成一个零知识证明,该证明包含以下关键信息:
50+ - 旧的默克尔根(来自旧的状态树)。
51+ - 新的默克尔根(来自新的状态树)。
52+ - 证明交易执行是有效的,并且旧状态正确地转换到了新状态。
53+ 3 . ** 上链(Layer 1)** :证明器将这个简洁的** 零知识证明** 和新的** 默克尔根** 提交到以太坊主链。
54+ 4 . ** 链上验证** :主链上的智能合约会验证这个零知识证明。如果证明通过,它就会更新存储的默克尔根,从而安全地确认 Layer 2 的新状态。
55+
56+ ### 总结
57+
58+ 默克尔树在 ZK-Rollup 中起到了一个桥梁的作用。它将海量的链下数据压缩成一个简短、唯一的** 默克尔根** ,零知识证明则利用这个默克尔根来向主链证明链下状态转换的有效性。
59+
60+ - ** 默克尔树** :负责** 组织和压缩** 数据,让我们可以用一个哈希值代表整个复杂的状态。
61+ - ** 零知识证明** :负责** 数学上证明** 这个状态的转换是正确的,而无需公开所有细节。
62+
63+ 两者相辅相成,共同实现了 ZK-Rollup 的核心目标:在不牺牲安全性的前提下,实现高效的链下扩容。
64+
1865# 2025-08-15
1966
2067实践案例:如何通过 Layer 2 将文章内容上链
You can’t perform that action at this time.
0 commit comments