01 · Availability
承诺数据,不等于交出数据
KZG 能证明样本与承诺一致;纠删码、托管、传播、抽样与分叉选择共同回答“完整数据是否真的可取得”。
第十八章 · 第三课 · Ethereum Roadmap
真正的扩容,不是把负担藏起来;而是让数据可以抽样、状态可以随区块证明、历史可以分工保存, 同时保留任何人独立验证的能力。
01 · Availability
KZG 能证明样本与承诺一致;纠删码、托管、传播、抽样与分叉选择共同回答“完整数据是否真的可取得”。
02 · Statelessness
状态仍然存在。改变的是验证者取得状态的方式:从本地保存全部,变为接收本区块所需片段与密码学见证。
03 · Simplification
历史过期与协议清理不会让责任凭空消失;它们把长期保存交给专门角色,并用承诺和规则保持可核验。
Orientation
从零开始,先不要记缩写。把一个以太坊节点想成同时做“收件、复算、记账和保存档案”的独立审计员。
一笔交易进入以太坊后,节点必须知道交易和相关数据,按相同规则执行它,再确认执行后得到的状态根与区块声明一致。 如果还要回答“2021 年某个区块发生了什么”,节点或外部档案服务还要保存历史。随着使用增长,三类负担同时累积:
Node pipeline
全课总命题
存储和带宽不会凭空消失。以太坊要做的是把它们分工、限时、证明化,并避免任何单一保存者变成不可替代的信任点。
如果只提升数据吞吐,不降低单节点带宽,家庭节点会被数据中心挤出;如果验证者不再保存状态,却没人可靠地服务状态, 区块构建和 RPC 可能更集中;如果协议不断叠加例外,客户端之间发生共识差异的机会会增多。因此路线图不是“越快越好”, 而是在吞吐、验证门槛、数据保存与长期可维护性之间重新分工。
这节课的核心不是“删除多少 GB”,而是一个更难的问题:少保存、少下载之后,任何人还能否自己验证?
Trust model
很多误解来自把“数据指纹正确”“完整数据可取得”和“执行结果正确”混成同一件事。
Three independent checks
缺少交易或 Blob,第三方就无法独立重放、重建状态或提出争议。
EVM、Rollup 状态机或证明系统必须证明从旧状态到新状态的转换合法。
这关乎长期档案与历史查询,不等同于新区块当下的共识有效性。
一个密码学承诺可以很小,却锁定一份很大的数据:拿到数据的人能验证它是否与承诺匹配。但如果区块生产者只公布承诺、 从未把原数据交给网络,承诺仍然可以完全正确。此时大家知道“某份唯一数据被承诺过”,却不知道那份数据是什么。
Commitment ≠ availability
精确区分
完整性(integrity):拿到的字节是否与承诺一致。可用性(availability):足以重建的完整数据是否在窗口内可取得。有效性(validity):使用这些数据执行后,状态转换是否符合规则。
Data availability
“不要信任,要验证”的前提,是验证材料真的拿得到。没有输入数据,再强的电脑也无法独立重放。
假设某个 L2 在链下处理 10,000 笔转账,最后只向 L1 提交一个新状态根。如果排序器隐瞒交易列表,第三方无法知道 Alice 的余额为何减少,也无法从旧状态重建新状态。Optimistic Rollup 的观察者无法构造错误证明;ZK Rollup 即使证明 状态转换正确,用户也可能无法重建自己的余额、生成退出所需信息或继续状态演进。正确性证明不能代替数据可用性。
早期 Rollup 把压缩数据放进 calldata,它进入永久链历史,可靠但昂贵。Dencun 升级于 2024-03-13
上线 EIP-4844,引入专门的 Blob 交易:Blob 数据由共识层临时保证可用,不进入 EVM 执行负载;EVM 只能访问
versioned hash 并验证指定点的 KZG 证明。[01]
Blob lifecycle
排序器把交易和状态重建所需信息编码进 Blob。
区块引用承诺;Blob sidecar 或 PeerDAS 数据列独立传播。
约 18 天内,节点必须按协议提供 Blob 数据以供验证和争议。
Rollup、索引器与档案网络可长期保存;链上承诺仍用于核对。
以太坊共识最关心的是:在相关区块被接受、Rollup 观察者需要复算或挑战时,数据已经充分发布。几十年后的历史查询不是验证 下一个区块的必要条件,可以由少量档案节点、Rollup 自身、索引器或去中心化档案网络提供。取得旧数据后,仍可用链上承诺核验 它是否原封不动。
不要把限时保证说成永久存储
“Blob 上了以太坊”表示它在协议窗口内获得以太坊的数据可用性保证;不表示每个普通节点会永久保存原始字节。应用若需要多年历史,必须设计独立的归档与恢复路径。
Dencun 先引入 Blob;Pectra 在 2025 年提高参数;Fusaka 于 2025-12-03 上线 PeerDAS,并允许通过 Blob Parameter Only(BPO)升级逐步增加容量。截至 2026-07-26,BPO2 的主网目标/上限为每区块 14 / 21 个 Blob;更高数字属于后续方向,不应写成当前配置。[02]
Erasure coding & sampling
答案不是“运气好”,而是先用纠删码改变攻击者必须隐藏的数据量,再让许多节点从不同位置抽样。
纠删码(erasure coding)把原始数据变成带冗余的扩展数据。PeerDAS 对每个 Blob 做一维扩展:得到足够比例的扩展列, 就能恢复原 Blob。EIP-7594 规定,取得至少 50% 的列可以重建完整数据。[03]
这一步有关键效果:攻击者不能只藏起原数据里某个“致命小片段”而让抽样几乎永远错过。若想让原数据不可恢复, 必须隐藏接近一半的扩展数据;隐藏面变大后,随机抽样更容易撞见缺口。
节点拿到一个 Cell 时,会验证它的 cell KZG proof,确认它确实是该 Blob 承诺在这个位置的内容。这里的分工非常清楚: 纠删码制造可恢复冗余,KZG 防止伪造样本,抽样探测隐藏,共识规则拒绝不可用区块。
Interactive model · local only
调整“被隐藏比例”和“单节点抽样数”。下方使用 64 格示意;读数按有限总体不放回抽样计算“至少撞见一个隐藏样本”的概率。
Detection probability
99.8%
单个教学节点几乎必然撞见至少一个隐藏格。
许多独立节点同时采样,攻击者还要对抗不同的 custody 分配、对等连接、传播与验证者的分叉选择。
教学模型:总体 N=64,隐藏 W 格,不放回抽 s 格,侦测概率为 1 - C(N-W, s) / C(N, s)。真实 PeerDAS 安全性还涉及 128 列、确定性 custody、网络拓扑、对等节点多样性与攻击模型;本数值不是协议安全参数。
抽样的边界
如果节点被恶意对等节点完全包围(eclipse)、样本选择可被操控、数据列没有足够独立托管,直觉概率就不再代表真实安全性。PeerDAS 是网络协议与共识规则,不是一条孤立公式。
PeerDAS · shipped
PeerDAS 已随 Fusaka 上线主网。它不只是抽样算法,而是一整套数据列、托管子网、请求、重建与分叉选择规则。
在 EIP-4844 的初始设计中,每个共识节点仍下载每个 Blob。Blob 数量提高多少,单节点下载量大致就增加多少,这会把带宽较低的 家庭节点推向边缘。PeerDAS(EIP-7594)把每个扩展 Blob 切成 128 列,再让节点按 node ID 确定性地加入若干列子网并托管相应数据。节点每个 slot 从多个对等节点请求和验证列,而不是下载全部 Blob。
Custody & sampling
当前下载比例的直觉
普通节点托管 128 列中的 8 列,即扩展数据的 1/16;因为纠删码把原 Blob 扩展为约两倍,这相当于原始 Blob 数据量约 1/8。EIP-7594 把它描述为“下载一小个常数比例”,未来可通过更多列进一步降低单节点比例。
PeerDAS 使用逐 Blob 的一维纠删码,是已经交付的扩容步骤。完整 DAS / Danksharding 设想在更大的二维数据矩阵上 编码、抽样与重建,以继续提高数据容量;它仍属于未来工作。路线图名称表达方向,不等于某个固定规格或交付日期。
| 组件 | 解决的问题 | 单独做不到什么 |
|---|---|---|
| 纠删码 | 增加冗余,让足够比例的列可以重建原数据 | 不能证明收到的 Cell 没被篡改 |
| KZG / Cell proof | 证明某个 Cell 与已承诺 Blob 一致 | 不能证明其他列已发布 |
| Custody + P2P | 把列分配给许多节点托管和服务 | 不能替代本地验证 |
| Sampling + fork choice | 发现数据隐藏,并拒绝不可用区块 | 不能提供永久历史档案 |
Stateless verification
“Stateless” 是一个容易误导的名字。世界状态没有消失;只是多数验证节点不必在本地保存完整状态数据库。
| 数据 | 它回答什么 | 验证下一个区块是否直接需要 | 典型保存方式 |
|---|---|---|---|
| State / 状态 | “现在是什么”:余额、nonce、字节码、合约 storage | 需要本区块触及的状态值 | 当前完整节点保存本地状态数据库 |
| History / 历史 | “过去发生过什么”:旧区块体、交易、收据 | 通常不需要 | 普通节点保留一段;档案服务长期保留 |
| Blob / DA 数据 | “L2 批次能否被重建” | 在协议可用性窗口内需要 | 共识层限时托管,之后可由外部归档 |
当前执行层节点从本地状态数据库读取区块涉及的账户和 storage,执行所有交易,然后计算新状态根。
设旧状态为 Sₙ、区块交易为 Bₙ、以太坊状态转换函数为 Υ:
问题是,为了读取本区块可能触及的少量键,每个节点今天仍准备着巨大的完整状态。状态只增不减时,磁盘容量、随机 I/O、 同步时间与数据库维护都会逐渐成为参与门槛。
Local state vs witness
Weak statelessness
区块构建者读取完整状态并生成 Witness;大量普通验证节点接收区块和 Witness,无需本地完整状态数据库。这是更现实的路线方向。
Strong statelessness
用户或交易附带访问清单与 Witness,生产者再聚合。它把更多状态责任推给用户和应用,复杂合约交互会更难;当前不被视为近期主线。
去中心化的反直觉风险
无状态化降低“验证”门槛,却可能让“保存和服务状态”集中到少数 builders、RPC、搜索者与浏览器。若被审查交易所需状态拿不到,连强制包含机制也可能失去材料。谁保存、谁服务、谁能证明自己愿意服务,是一级安全问题。
Witness anatomy
见证不是“新状态的截图”,也不必是零知识证明。它是让验证者从旧状态根出发完成本区块执行所需的最小状态材料与认证路径。
假设 Alice 向 Bob 转账。执行需要读取 Alice 的余额和 nonce、Bob 的余额,并验证这些值属于旧状态根。若调用代币合约, 还要提供合约字节码、相应 storage 槽及证明;若经过 AMM,再加入池子储备、费用参数和相关代码。 交易碰到的状态越广,Witness 通常越大。
Interactive witness builder
实验只在本页内切换预设教学案例,不读取钱包、不连接网络,也不保存数据。
4 类材料
这里数的是“材料类别”,不是实际字节数。真实 Witness 会合并重复证明路径、包含协议规定的代码与访问事件,并受所选状态树和编码方式影响。
Sₙ。stateRoot;不一致则拒绝区块。Witness 与 ZK proof 的区别
普通状态 Witness 提供“你自己复算所需的输入和成员证明”;ZK validity proof 则让验证者检查一个证明,确认某次计算满足约束。未来 L1 zkEVM 可以与无状态 Witness 互补,但二者不是同一个概念。
本地磁盘读取变少,网络要传输 Witness;生产者要生成它;状态树要支持足够小、足够快的多证明;Gas 还必须准确反映“触及多少独立状态” 的资源成本。无状态化是在磁盘、带宽、证明生成和生产者专业化之间重新分配成本。
State tree roadmap
状态树是“状态根”和 Witness 的底层结构。2026 年路线正在演化,不能把任何候选写成已经确定上线。
以太坊当前执行状态使用 Merkle Patricia Trie(MPT):账户、合约 storage 和代码通过多层结构组织,并以 state root 承诺。它适合今天的完整状态验证,却不适合给成千上万个分散访问生成很小的区块级 Witness;RLP、十六叉结构、树中树和特殊编码 也增加了证明与客户端复杂度。
Roadmap, not a promise
现行状态承诺;成熟但多证明偏大,编码与树中树结构复杂,不利于区块级无状态与有效性证明。
向量承诺让多叶 Witness 很小;曾长期是无状态主线候选,但引入新密码学与复杂迁移,尚未上线。
把账户头、代码与 storage 放入统一二叉树,面向普通 Merkle 证明、ZK 友好与结构简化;哈希和迁移仍在设计。
要证明某个叶子属于根,通常要附带路径上每一层的“兄弟承诺”。分叉数、深度、承诺算法、多个访问能否共享路径,都会影响证明大小。 Verkle 依赖向量承诺,可高效聚合很多叶子;统一二叉树用更简单的二叉 Merkle 结构,普通分支较规整,并可选择更适合 有效性证明的哈希。两者的安全假设、后量子属性、客户端迁移和 ZK 成本不同。
| 方向 | 主要优势 | 主要代价 | 截至 2026-07-26 |
|---|---|---|---|
| MPT | 主网成熟、客户端长期运行 | 多证明大、结构与编码复杂、ZK 不友好 | 当前主网 |
| Verkle | 聚合 Witness 很小 | 新椭圆曲线密码栈、迁移复杂、非后量子 | EIP-6800 Stagnant,未上线 |
| 统一二叉树 | 结构更简单、普通证明与 ZK 方向兼容 | 哈希、Witness、迁移仍需定案 | EIP-7864 Draft,未上线 |
如何阅读路线图
把“无状态验证”当作目标,把 Verkle、二叉树、区块级访问列表、zkEVM 等当作可替换或互补的实现路径。路线图是当前最佳假设,不是不可变的产品排期。
Pectra 把最近 8191 个区块哈希放进系统合约维护的环形缓冲区。这样未来无状态执行遇到 BLOCKHASH 时,
相关哈希可以作为显式状态和 Witness 提供,而不必依赖节点私下保留的历史数据库。它展示了简化的一个原则:
把隐式依赖变成可承诺、可携带、可验证的显式状态。
Expiry & archival
最危险的误解是听到“修剪”就以为余额或合约被删除。先问:删的是临时载荷、过去记录,还是当前活跃状态?
Three different lifecycles
验证下一个区块通常不需要保存创世以来所有旧交易和收据。PoS 节点可以从可信的弱主观性检查点启动,再验证近期链。 2025 年 7 月起,主流执行客户端开始支持部分历史过期,可移除 The Merge 之前的历史;Fusaka 的 EIP-7642 让节点声明自己最早服务到哪个区块,并清理不再需要的网络字段。[08]
这不等于 EIP-4444 设想的“滚动一年窗口”已完整交付。EIP-4444 当前为 Stagnant,完整历史服务、同步、JSON-RPC 体验、 激励与抗审查仍需生态协调。过去数据可以由档案节点、机构镜像、种子文件、Portal 类网络或专门客户端保留;取得后可用区块头 和承诺验证。
历史保存的信任变化
从“几乎每个完整节点都顺手保存”变为“至少有一些独立来源愿意长期保存并提供”,会降低普通节点磁盘负担,也会引入可服务性、审查和提供者集中风险。可验证不等于一定有人在线提供。
状态过期(state expiry)针对久未使用的账户、合约 storage 和代码。研究思路包括: 为状态标记并在一段时间后休眠,或按年份等“era”冻结旧状态树。以后再次访问时,调用者附上旧状态存在证明,把它复活进当前活跃集合。 资金与合约逻辑并没有被销毁,只是普通节点不再把冷状态放在快速数据库中。
细节仍未定:谁保存冷状态?复活证明由谁构造?用户忘记保存自己的数据怎么办?复杂合约跨多个 era 读写如何收费? 2025 年底以太坊基金会状态团队仍在比较 mark-expire-revive、多 era、状态档案与 partial-state 节点等方向。 因此页面把状态过期标为研究,不承诺升级名称或日期。[10]
| 概念 | 普通节点不再默认保存 | 仍然保留 | 当前状态 |
|---|---|---|---|
| Blob 修剪 | 超过协议窗口的原始 Blob | 链上承诺;外部可保存原数据 | 已运行 |
| 部分历史过期 | Merge 前区块体、收据等 | 当前状态与可验证的链头 | 客户端已支持 |
| 滚动历史过期 | 超过滚动窗口的旧历史 | 外部档案与承诺 | EIP-4444 未完整交付 |
| 状态过期 | 久未访问的活跃状态副本 | 休眠状态及复活证明路径 | 研究中 |
Protocol simplification · The Purge
The Purge 不是某天发生的一次硬分叉,而是跨许多升级持续删除技术债、限制极端输入、显式化历史依赖的工作主题。
共识协议最怕“两个正确实现对边缘情况得出不同结果”。每个旧字段、无限输入、历史语义和特殊 opcode 都扩大测试空间; 多客户端必须在每条分支上精确一致,否则可能分叉。简化的安全价值来自更小的状态机、更有限的输入域、更少的兼容代码和更容易 被形式化、审计与证明的规则。
Complexity funnel
EIP-6780 · shipped
SELFDESTRUCTDencun 后,除非合约在同一笔交易内刚创建,调用不再删除代码、storage 与账户,只转移余额。opcode 尚未完全移除,特殊同交易情形仍存在。
EIP-7642 · shipped
删除 Merge 后失去意义的 total difficulty,节点声明最早服务区块,并从 P2P 收据传输移除可重算的 Bloom,降低旧字段和同步负担。
EIP-7823 · shipped
无限测试表面曾造成多次共识 bug。限制输入长度后,客户端能穷尽更多边界测试,也更容易规划最坏执行成本。
EIP-7864 · draft
把账户头、代码与 storage 放到一个逻辑树,去掉部分 MPT 特殊结构,并为普通证明、ZK 与未来无状态规则提供更简单底座。
协议规则是既有合约和基础设施的公共接口。修改 SELFDESTRUCT 可能破坏依赖 CREATE2 反复部署的旧模式;
历史过期会让旧 eth_getLogs 查询依赖专门服务;新状态树需要迁移数亿状态项并确保所有客户端在同一根上收敛。
每次“清理”都必须同时处理向后兼容、数据恢复、多客户端一致、网络过渡与用户退出路径。
Purge 的判断标准
真正的简化不是让规范文字更短,而是让诚实节点要实现、测试、存储和传播的共识关键表面更小,同时不把不可验证的信任转移给少数外部服务。
Synthesis & status
数据、状态和历史的保存职责被拆开,但密码学承诺、可用性规则与独立执行仍把它们连接成一套可验证系统。
| 原始瓶颈 | 路线 | 普通节点少做什么 | 系统必须补上的保证 |
|---|---|---|---|
| Rollup 数据增长 | Blob + PeerDAS | 不再下载所有 Blob 全部字节 | 纠删码、Cell proof、custody、抽样、fork choice |
| 世界状态增长 | Witness + 新状态树 + 无状态验证 | 不再本地保存完整活跃状态 | 状态提供者、认证路径、可执行 Witness、抗审查服务 |
| 古老历史增长 | 历史过期 + 档案分工 | 不再保存并服务全部旧区块体和收据 | 独立档案来源、可发现性、可验证下载、同步路径 |
| 协议技术债增长 | 语义收敛 + 字段清理 + 输入上限 | 不再维护无意义或无限的旧分支 | 兼容迁移、测试、明确替代接口 |
Shipped
Dencun 引入 EIP-4844;Fusaka 上线 PeerDAS;BPO2 后主网 Blob target/max 为 14/21。
Shipped
客户端支持移除 Merge 前历史;EIP-6780、7642、7823 等已收敛语义、网络字段和极端输入。
Active design
长期方向是 binary trees 与 statelessness;相关 EIP 和 zkEVM 验证仍在设计、实现或测试。
Research
安全目标清晰,机制与顺序仍可变化;不能据路线图名称推断已上线功能或确定日期。
最重要的反直觉
“所有人不必保存”降低了参与成本;“总得有人保存”又可能制造专业化与集中。优秀路线不是消灭这一矛盾,而是让保存者可替换、数据可证明、验证者足够多、用户在保存者失灵时仍有恢复路径。
Recap & self-check
如果能把下面每个错误说法改写准确,你已经掌握了本课真正的安全边界。
KZG 证明样本与承诺一致;可用性还需要纠删码、传播、custody、抽样与 fork choice。
Blob 由以太坊共识层保证限时可用,只是不进入 EVM、也不要求普通节点永久保存。
状态仍在系统中;验证者以 Witness 取得本区块所需片段,不必本地持有完整副本。
EIP-6800 为 Stagnant;统一二叉树 EIP-7864 为 Draft,具体路线仍在演化。
历史修剪处理旧区块体、交易和收据;当前世界状态是另一类数据。
它是持续的简化主题;限制 SELFDESTRUCT、部分历史过期与 eth/69 清理都已分批发生。
一句话复述本课:以太坊把“每个人保存全部”拆成“不同角色保存不同部分”,再用承诺、证明、抽样和共识规则维持任何人的独立验证能力。
1. 某节点成功验证一个 Cell 的 KZG proof,能否据此独自断定完整 Blob 已发布?
答案 B:承诺与样本证明解决完整性,不单独解决全体数据可用性。
2. 为什么 DAS 先做纠删码,而不是直接从原始文件随机抽几个字节?
答案 C:冗余既支持恢复,也把“小片段隐藏”变成更容易被抽样发现的大面积隐藏。
3. “无状态验证”最准确的含义是什么?
答案 A:状态仍存在,验证者通过 Witness 取得所需片段和证明。
4. 弱无状态模式下,谁通常仍需要完整状态来构建区块和 Witness?
答案 B:弱无状态降低验证门槛,但没有消除完整状态持有角色。
5. 客户端修剪 Merge 前执行历史,会发生什么?
答案 C:历史与当前状态是不同数据面。
6. 协议简化为什么也是安全工作?
答案 A:简化降低实现、测试、审计和证明复杂度,但仍必须妥善处理兼容与数据可恢复性。
Glossary & primary sources
本课把“已上线”“客户端已支持”“EIP 草案”和“研究方向”分开标注。路线与参数会继续变化,核对日期为 2026-07-26。
Blob 格式、4096 × 32 字节、EVM 只访问承诺、共识层可用性与 4096 epoch 服务窗口。
Fusaka 激活日期、PeerDAS、BPO1/BPO2、eth/69 与主网 Blob 参数进程。
一维纠删扩展、Cell、列、custody、对等抽样、50% 重建阈值与安全考虑。
PeerDAS 在共识层的正式数据列、托管、采样、恢复与验证规则。
128 列、普通节点 custody、4096 ETH supernode、fork choice 与未来 FullDAS 的解释。
BPO2 的主网 target 14、max 21 参数及 2026-01-07 激活信息。
DAS、纠删码、Rollup 数据需求,以及 availability 与 retrievability 的区别。
执行客户端移除 Merge 前历史的支持、预计磁盘节省与后续滚动历史过期工作。
滚动一年历史服务窗口的原始方案、检查点同步、档案责任和集中风险;当前状态为 Stagnant。
无状态化后的状态服务集中风险,以及 state expiry、archive 与 partial-state 节点方向。
Witness、弱/强无状态、状态过期与历史过期的基础概念和依赖。
MPT Witness 问题、向量承诺与 Verkle 多证明为何曾适合无状态路线。
Verkle 主状态树提案及其当前 Stagnant 状态,证明它尚非已上线或已锁定升级。
统一二叉状态树、ZK/证明友好动机、状态布局与仍待决定的哈希方案;当前为 Draft。
已交付 PeerDAS/BPO、近期历史过期与 repricing,以及长期 binary trees 与 statelessness 方向。
节点历史范围、移除 total difficulty 与 P2P 收据 Bloom 等网络协议简化。
Dencun 后 SELFDESTRUCT 的精确语义、保留的同交易例外与兼容风险。
通过限制极端输入缩小共识 bug 与测试表面的具体简化案例。
把最近 8191 个区块哈希显式放入状态,为无状态 Witness 提供可承诺依赖。
协议简化为何降低维护、审计与安全风险,以及已交付和进行中的路线概览。
资料核对日期:2026-07-26。EIP 的 Final、Draft、Stagnant 等状态和升级纳入范围会变化;运行节点、开发基础设施或据此做产品决策前,请再次核对官方升级公告、EIP 状态与客户端发布说明。
Lesson complete · 18.03
PeerDAS 把近期数据分给网络抽样和托管;Witness 把执行所需状态随区块带来;历史过期与协议清理把旧负担移出普通节点。 三者共同追求的不是“什么都不存”,而是让保存职责可分工、数据可恢复、承诺可核对、验证仍然属于每个人。