关于 Ethereum Stateless 你想了解的一切

发布: (2026年1月15日 GMT+8 04:57)
9 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我将为您翻译成简体中文并保持原有的格式、Markdown 语法以及代码块和链接不变。

介绍

要验证区块,今天运行节点需要一块 2 TB+ NVMe SSD 和大量带宽。这一硬件门槛导致中心化,迫使用户依赖可信的第三方服务,如 InfuraAlchemy,而不是自行验证链。

约束条件:延迟与带宽

为什么不能只发送验证区块所需的数据?

要在无状态的情况下验证一个区块,节点需要特定的账户数值(余额、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 年下半年)。

相关 EIP

顶级资源

  • Vitalik Buterin: “Verkle Trees” – Link
  • Dankrad Feist: “Verkle Trie for Eth1 State” – Link
Back to Blog

相关文章

阅读更多 »

Solana Devnet:您需要了解的一切

介绍 在 Solana 上构建?您需要 Devnet——一个免费的沙盒,您可以在其中测试、尝试错误并学习,而无需冒真实金钱的风险。什么是 Devnet?...