一条链「安全」不仅指交易被正确执行,还要求所有数据都能被任何人读取重建。如果执行结果只有少数节点知道,轻节点无法验证、用户无法提款、挑战者无法作证——链就「可用性」上崩塌了。这就是数据可用性(Data Availability, DA)问题的本质。
本文从「DA 为什么重要」讲起:calldata 的成本困境 → EIP-4844 Blob 与 Danksharding → 纠删码与 DA 采样 → Celestia 独立 DA 层 → EigenDA/委员会方案 → DA 与 Rollup 的耦合 → 模块化堆栈 → 选型决策。
前置:/layer2-scaling/(Rollup 与扩容)、/blockchain-fundamentals/(区块链数据模型)、/consensus-mechanisms/(共识与全节点)。
目录
- 1. DA 问题的本质:数据必须可用吗
- 2. 链上 calldata 时代的成本困境
- 3. Blob:EIP-4844 与 Danksharding
- 4. 纠删码与 DA 采样
- 5. Celestia:模块化 DA 层
- 6. 其他 DA 方案:EigenDA 与委员会
- 7. DA 与 Rollup 的耦合关系
- 8. 模块化区块链堆栈
- 9. 选型:何时用独立 DA
- 10. 速查表与一句话记忆
- 延伸阅读
1. DA 问题的本质:数据必须可用吗
可用性 = 可重建性:任何时间点,外部观察者应能拿到「重建链状态所需的全部数据」。完整节点存全部历史可重放;轻节点只存头块,靠采样/见证验证——DA 问题问的正是「怎么让轻节点也确信数据存在且完整,而不用下载全量」。
可用性攻击:恶意出块者只公布区块头、不公布区块体:
出块 → 只公布 header → 轻节点看到 header 却拿不到 body
后果:无法验证交易、无法挑战、无法提款
性质:不是双花,而是「把链变成不透明黑箱」
为什么 DA 是 Rollup 的命门:Optimistic 挑战者需 L2 数据重放验证(缺失即无法挑战);ZK 验证者需数据重建状态;用户需数据执行提款证明——数据缺失即资金被锁。
记忆:DA 问题问的是「数据到底有没有被所有人看到」——执行可以外包给 Rollup,但数据不能被少数人把持,否则安全就变成了「少数人说了算」。
2. 链上 calldata 时代的成本困境
EIP-4844 之前:Rollup 把批次数据写入 L1 的 calldata——每字节都算 L1 gas,L1 拥堵时 base fee 飙涨,L2 成本跟着跳。
calldata 的浪费:calldata 里的数据对 EVM 可见、可被合约读取,但 Rollup 批次数据「只是被存着」,没有合约逻辑需要读它——为「存储」付「执行存储」的价,资源错配。
成本对比(约数):
| 方式 | 每 1KB 数据 | 说明 |
|---|---|---|
| calldata | 高(约 $0.2-2 依 base fee) | 全量执行计价 |
| Blob | 低(约 $0.01-0.1) | 只按容量计价 |
| 独立 DA | 最低 | 用别的链/委员会记账 |
为什么 Blob 更便宜:blob 数据只做「承诺 + 短期存储」,EVM 不执行不解析;计费与 L1 gas 市场隔离;约 18 天后过期删除(Rollup 已足够重建)。
记忆:calldata 是「给合约读的存储」,blob 是「给外部验证的广播」——把 Rollup 数据从前者挪到后者,就是 EIP-4844 成本革命的全部。
3. Blob:EIP-4844 与 Danksharding
EIP-4844(Proto-Danksharding) 引入 blob 交易类型 0x03:
□ 附 1-6 个 blob(每个约 128KB)
□ 执行层只校验 blob 的 KZG 承诺,不执行内容
□ 共识层把 blob 短暂保留(约 18 天)后允许清理
KZG 承诺:给 blob 内容做多项式承诺指纹——验证者不必下载 blob 也能确认它「没被人中途改过」。
Danksharding(完整版):把 blob 空间按「槽位」切分,让更多 Rollup 共享;配套 PBS(提议者撮合)+ 多维费用市场。4844 已落地,Danksharding 分阶段推进。
Blob 上 Rollup 的落地形态(示意):
blob_versioned_hashes: ["0x01f5..."]
blob_data:
- rollup_id: arbitrum
compressed_batch: "0x..."
state_root: "0x..."
记忆:Blob = 「不执行只承诺」的数据广播通道——EIP-4844 先落地、Danksharding 扩带宽,目标都是让 Rollup 的「数据账单」与 L1 执行市场解耦。
4. 纠删码与 DA 采样
轻节点如何确信数据完整?全量下载太重,随机采样 + 纠删码组合解决:
纠删码:原始数据分 k 块 → 扩展出 n 块(n > k),任意 k 块可还原全部
→ 恶意扣留部分块不影响重建
DA 采样:轻节点随机抽查 c 块,缺块超阈值 → 视为数据不可用
→ 抽查 20 块、每块 50% 被扣的概率是 2^-20
Celestia 的 DAS 示例:区块纠删后分片,轻节点按比例随机采样,样本数量决定可信度,采样成本与区块大小无关。
记忆:纠删码让「少数数据也能还原全部」,采样让「抽查几块就能证明存在」——两者叠加,轻节点的验证成本从「下载整块」降到「只抽几块」,这是 DA 规模化的数学基础。
5. Celestia:模块化 DA 层
Celestia 把自己做成「只做 DA 的链」:不管执行、不管结算,只负责「排序 + 公开数据」:
模块化堆栈:Celestia(DA + 共识) ← Rollup(执行) → 结算(L1 或其他)
Celestia 提供:
□ 数据广播:Rollup 批次数据写进来
□ 排序保证:谁先写谁先出(consensus on data order)
□ 数据可用性证明:DAS + 纠删码,轻节点可验证
为什么需要独立 DA 链:隔离资源(不跟 L1 抢区块空间)、扩容数据带宽、一条 DA 链服务多个 Rollup。
Celestia 上的提交(示意):
namespace: rollup-arbitrum
data: "0x..压缩批次.."
height: 4823901
commitment: "0x..KZG 承诺.."
记忆:Celestia = 「数据批发市场」——执行、结算都外包,只把「排序 + 公开 + 可验证」做到极致,让 Rollup 按需买带宽,不用跟别人挤 L1 的区块空间。
6. 其他 DA 方案:EigenDA 与委员会
EigenDA:基于 EigenLayer 再质押的 DA 服务——用「质押 ETH」当「保证数据会被公开」的信用:Operator 再质押 ETH → 签收/保管数据 → 出错削减质押 → Rollup 拿到「数据可用性证明」。
委员会(Committee)方案:一组可信节点签名「我们保管了数据」;轻节点信任集体签名而非自行采样,t-of-n 诚实假设,成本更低、信任更强。
各 DA 方案对比:
| 方案 | 信任模型 | 成本 | 典型使用方 |
|---|---|---|---|
| L1 calldata | 无额外信任 | 高 | 早期 Rollup |
| L1 Blob | 无额外信任 | 中 | 主网 Rollup |
| Celestia | 独立共识 + DAS | 低 | 模块化 Rollup |
| EigenDA | 再质押削减 | 低 | 对主网有耦合的 L2 |
| 委员会 | t-of-n 信任 | 最低 | 私有/联盟链 |
决策:DA 的「信任模型」决定选型——要 L1 级安全选 Blob,要便宜且能承受跨链信任选 Celestia/EigenDA,联盟场景用委员会;每条 Rollup 都要在「成本、安全、去中心化」里明确自己的 DA 底线。
7. DA 与 Rollup 的耦合关系
DA 选型 = Rollup 安全层级的选择:
□ 用 L1 数据(calldata/Blob):Rollup 安全与 L1 完全对齐
□ 用独立 DA(Celestia):Rollup 安全 = Celestia 安全 + 跨链假设
□ 用 EigenDA:额外引入「削减激励」的安全模型
耦合的影响面:结算依赖(提款证明需 DA 数据,DA 停摆则资金可锁)、挑战依赖(欺诈证明需 DA 数据)、活性(DA 链出问题则 Rollup 无法提交批次)、最终性(DA 确认与 L1 结算的一致性)。
数据不可用攻击对 Rollup 的威胁:恶意排序器提交批次到 DA、却对用户扣下真实数据 → 用户无法重建状态、无法挑战 → 对策是 L1 检测数据缺失后冻结提款/暂停。
记忆:「DA 是 Rollup 的地基」——你选的数据层决定你的安全上限,独立 DA 的便宜是以「多一层信任」为代价,主网 Blob 的贵买的是「与 L1 同寿」的安心。
8. 模块化区块链堆栈
模块化拆分把一条链的四项职责拆给不同层:
┌─────────┬─────────┬─────────┬─────────┐
│ 执行层 │ 结算层 │ DA 层 │ 共识层 │
├─────────┼─────────┼─────────┼─────────┤
│ 跑交易 │ 定最终性 │ 存数据 │ 定顺序 │
│ Rollup │ L1/结算链│ Blob/DA │ 共识链 │
└─────────┴─────────┴─────────┴─────────┘
模块化组合示例:全模块化(执行 Rollup + 结算 L1 + DA Celestia + 共识 Celestia);半模块化(执行 Rollup + 结算 L1 + DA = L1 Blob,当前主流);单片链(Solana/以太坊主网,四职责一体)。
模块化的代价:跨层信任(每层假设叠加)、互操作(数据跨层需证明/桥)、延迟(多跳确认增加最终性时间)。
决策:不是所有链都该模块化——单链追求极致简单,模块化追求灵活与规模;项目起步用「执行 + L1 结算 + L1 DA」的最简组合,吞吐瓶颈出现再引入独立 DA。
9. 选型:何时用独立 DA
决策树:数据到底放哪?
Q1. 需要与 L1 完全同等级安全吗?
├─ 是 → 用 L1 Blob/calldata(主网 Rollup)
└─ 否 → Q2
Q2. 数据吞吐需求大吗(高频 L2)?
├─ 大 → 独立 DA(Celestia/EigenDA)扩带宽
└─ 小 → L1 Blob 够用
Q3. 能承受「多一层信任 + 跨链假设」吗?
├─ 能 → 独立 DA 换取低成本
└─ 不能 → 回归 L1 数据,用压缩/批量优化成本
关键指标:数据成本/笔交易(选型直接驱动力)、DA 链活性 SLA、结算一致性(数据确认与 L1 结算对齐)、合规/监管(数据存哪个法域、谁可审查)。
决策:「主网级项目用 Blob、吞吐型项目用 Celestia/EigenDA、联盟场景用委员会」——选型前先量化自己的 TPS 与单笔数据成本,再对照 DA 链的信任模型,没有银弹。
10. 速查表与一句话记忆
| 概念 | 要点 |
|---|---|
| DA 问题 | 数据是否所有人都能拿到重建 |
| 可用性攻击 | 只发头块不发数据,链变黑箱 |
| calldata | 旧时代数据通道,贵 |
| Blob | EIP-4844,不执行只承诺,便宜 |
| Danksharding | 完整版 Blob 扩容 |
| 纠删码 | 少数块可还原全部 |
| DA 采样 | 抽查几块概率确认存在 |
| Celestia | 独立 DA 链,DAS 验证 |
| EigenDA | 再质押削减当保证 |
| 选型 | 主网用 Blob,吞吐用独立 DA |
一句话记忆:DA 是「数据被所有人看见」的保证——纠删码让少量数据还原全部、采样让轻节点抽查即信;Blob 用不执行的广播把成本砍掉九成,Celestia/EigenDA 把 DA 独立成市场;选型看「要 L1 级安全(Blob)还是要便宜带宽(独立 DA)」,数据放哪决定 Rollup 的安全地基。
延伸阅读
- /layer2-scaling/ — Layer2 与 Rollup 扩容
- /blockchain-fundamentals/ — 区块链数据模型
- /consensus-mechanisms/ — 共识与全节点
- /blockchain-mev-pbs/ — 区块构建与 PBS
- /cross-chain-bridges/ — 跨链与互操作
- [[blockchain-web3]] — 区块链 Web3 专题
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。