关于 Ethereum Stateless 你想了解的一切
Source: Dev.to
请提供您希望翻译的正文内容,我将为您翻译成简体中文并保持原有的格式、Markdown 语法以及代码块和链接不变。
介绍
要验证区块,今天运行节点需要一块 2 TB+ NVMe SSD 和大量带宽。这一硬件门槛导致中心化,迫使用户依赖可信的第三方服务,如 Infura 或 Alchemy,而不是自行验证链。
约束条件:延迟与带宽
为什么不能只发送验证区块所需的数据?
要在无状态的情况下验证一个区块,节点需要特定的账户数值(余额、nonce、代码)以及一个证明这些数值正确的加密证明。这个包被称为 the Witness。
问题在于 网络传播。区块必须在几秒钟内在全球 P2P 网络中传播。按照目前的数学计算,Witness 的大小约为每个区块 10–20 MB。在这种规模下,传播速度会变慢,陈旧区块率会提升,只有大型数据中心才能跟上。
Goal: 将证明从约 20 MB 缩减至每个区块 < 100 KB。
无状态架构
无状态将网络划分为两类不同的节点:
| 节点类型 | 角色 |
|---|---|
| 提议者(重型) | 存储完整的约 2 TB 状态,构建区块,并生成 Witness。 |
| 验证者(轻型) | 不存储任何数据;接收 (Block, Witness) 元组并进行数学验证。 |
瓶颈:Merkle‑Patricia Trie
以太坊目前使用 Merkle‑Patricia Tries(Radix‑16)。在此结构中,每个节点有 16 个子节点。要证明某个特定子值的存在,需要在树的每一层提供所有 15 个兄弟节点 的哈希。
数学原理
Size ≈ 15 × Depth × 32 bytes
大小呈线性增长。随着状态的扩大,树会变得更深,证明也会更大。如今这大约为每个账户 3–4 KB。在一个消耗 30 M gas 的繁忙区块中,总见证数据超过了 P2P 网络的带宽预算。
修复方案:Verkle 树与向量承诺
Ethereum 正在迁移到 Verkle 树。
在 Verkle 树中,每个节点有 256 个子节点,而不是 16。要在 256 个子节点中证明某一个子节点,朴素的做法是需要发送 255 个兄弟哈希——这会产生巨大的数据量。
解决思路:多项式
我们不对兄弟节点进行哈希,而是把这 256 个子节点视为多项式 P(x) 的系数 v:
[ P(x) = v_0 + v_1 x + v_2 x^2 + \dots + v_{255} x^{255} ]
随后使用 KZG 承诺 对整个多项式进行 提交(commit)。
KZG 魔法公式 🔮
承诺 C 是由一个秘密值 s 推导出的单个曲线点:
[ C = G \cdot P(s) ]
要证明在索引 z 处的子节点值为 y,证明者计算 商多项式 Q(x):
[ Q(x) = \frac{P(x) - y}{x - z} ]
工作原理:
如果索引 z 处的值真的等于 y,则从多项式中减去 y 后,整个多项式能够被 ((x - z)) 整除。如果值不相等,则会留下非零余数,(Q(x)) 将不再是有效的多项式。通过提供 (Q(x)) 的承诺,证明者表明除法是整除的,数据是正确的。
该证明仅是对这个商多项式 Q(x) 的承诺。它固定为 48 字节,无论树是宽的还是窄的。
影响:节省带宽
| 证明类型 | 每个账户的大约大小 |
|---|---|
| Merkle Proof | ~3 000 字节(线性复杂度) |
| Verkle Proof | ~150 字节(常数复杂度) |
这将无状态区块见证从 ≈ 10 MB 降至 ≈ 200 KB。
工程挑战
1. 权衡:可信设置
KZG 承诺需要 结构化参考字符串 (SRS) —— 一组使用秘密值 s 生成的参数。
风险: 如果攻击者获知 s,他们可以伪造证明 (P’(s) = P(s)),并欺骗网络接受错误数据。
防御: “Tau 的幂”仪式。超过 140 000 名参与者贡献熵来生成这些参数。只要 任意一位 参与者销毁了他们的“有毒废料”(秘密随机数),系统在数学上仍然安全。
2. 并发陷阱(竞争条件)
谁应该生成这些证明?
| 方法 | 描述 |
|---|---|
| 强无状态 | 用户为自己的交易生成证明。 |
| 弱无状态 | 区块构建者为所有人生成证明。 |
以太坊选择了 弱无状态,因为存在一个根本的分布式系统问题:竞争条件。如果用户必须自行生成证明,当网络繁忙时他们的交易往往会失败。将负担放在 区块构建者(提议者)上,使他们能够即时重新生成证明,拥有足够的服务器容量。
前瞻性:状态过期
另一个关键环节是 State Expiry(EIP‑7736)。无状态化解决了验证问题,但底层数据库(由提议者存储)仍会无限增长。
- 机制: Epoch‑based tree rotation。
- 逻辑: 如果一个叶子(账户)约一年未被访问,它将从活动树中移除。
- 恢复: 若要再次使用该账户,用户必须提供来自 archive 的证明以重新激活它。
结论:“Verge”愿景
所有这些数学都服务于 Vitalik 路线图中的一个单一愿景,称为 “The Verge”。 目标是让链路轻量化,以至于验证以太坊不再需要信任像 Alchemy 或 Infura 这样的中心化提供商。
| 时间线 | 信任模型 |
|---|---|
| 今天 | 我们信任。 |
| 明天 | 我们验证。 |
概述与规格
| 功能 | 描述 |
|---|---|
| Stateless Consensus | 节点使用 (Block, Witness) 元组验证区块,无需存储完整状态。 |
| Verkle Trees | 宽(256 叉)向量承诺树,将每个账户的证明压缩至约 150 B。 |
| KZG Commitments | 常量大小(48 B)的多项式承诺,支持简洁证明。 |
| Trusted Setup | 通过 Powers‑of‑Tau 仪式完成可信设置;任意一名诚实参与者即可保证安全。 |
| Weak Statelessness | 区块构建者生成证明,避免用户侧的竞争条件。 |
| State Expiry (EIP‑7736) | 基于 epoch 的不活跃账户裁剪,以限制证明者的存储需求。 |
| Target Witness Size | 每个区块目标见证大小 < 100 KB(实际约 200 KB)。 |
| Bandwidth Reduction | 带宽从约 10 MB 降至约 0.2 MB 每区块。 |
路线图仍在推进,但上述数学与工程奠定了实现真正去中心化、轻量级以太坊的基础。
KZG 多项式
KZG 多项式将 256 个兄弟节点压缩至 48 字节。
网络
将带宽开销降低约 99 %。
用户体验
“弱”无状态性可防止交易失败。
目标
“Hegota” 升级(2026 年下半年)。