数据可用性证明(DAP)是什么? 图 1
数据可用性证明(DAP)是什么? · 图 1

结论先说

数据可用性证明(Data Availability Proof,DAP)是一个简短的链上对象,用来向 L1(或任何验证方)担保”一批链下数据是可获取的”。它解决的是一个具体的信任问题:数据本身放在链下(便宜、快),但链上需要一个”可验证的担保”——DAP 就是这个担保的密码学载体。生成 DAP 的实体(DAC、验证者、或专用 DAP 提供者)对数据承诺签名/证明,L1 合约验证 DAP 后接受状态。理解 DAP,要分清它担保什么(可获取性)、不担保什么(正确性)、以及担保背后的责任方是谁。

DAP 的结构:承诺 + 担保签名

典型 DAP 包含三部分:一,数据承诺(commitment)——数据(或其编码形式)的密码学摘要,锁定”被担保的数据是什么”;二,担保方签名——DAC 的 M-of-N 阈值签名(或验证者签名),表示”这些数据此刻可获取,我们负责”;三,元数据——数据大小、承诺类型、担保窗口等。L1 合约的验证逻辑很轻:检查承诺格式合法、签名满足阈值、元数据在参数范围内——不需要接触数据本身。这是 DAP 的设计目标:链上验证成本与数据大小无关(几十字节的证明担保几 MB 的数据),让链下数据的”上链锚定”保持便宜。

DAP 担保什么、不担保什么

担保:在承诺的窗口内,担保方有能力提供完整数据(签名是担保方的经济/声誉承诺)。不担保:一,数据”正确”——DAP 只说”数据可获取”,数据内容对不对由 Rollup 的状态证明(ZK/欺诈证明)负责,两个证明各司其职;二,担保后的”永远”——担保有窗口(覆盖提现/挑战期),窗口外的长期归档是另一套问题;三,担保方本身”不作恶”——DAP 把信任集中到担保方,担保方的独立性/诚实性评估是 DAP 之外的事(见 DAC 评估清单)。DAP 是信任的”封装”,不是信任的”消除”——它让链上合约可以用固定成本接受链下数据,代价是信任边界转移到担保方。

不同架构里的 DAP 用法

Validium:数据完全链下,DAP 是唯一的数据层担保——L1 合约”看到 DAP 合法”就接受状态,用户退出时向担保方(DAC)取数。Rollup(数据部分/全部上链):DAP 可以覆盖”未上链的部分”(混合模式:热数据上链、冷数据链下 + DAP),或作为 DA 层之间的”转担保”(一个 DA 系统的验证者为另一个系统的数据生成 DAP)。纯链上 DA(以太坊 blob):不需要 DAP——数据在块里,共识本身就是担保,DAP 是冗余的。注意架构选择:DAP 的存在通常意味着”有部分数据不在 L1”,这是评估该链数据风险时的第一信号。

DAP 与”数据可用性采样”的关系

两者解决同一问题(链下/部分链下数据的可用性担保),路径不同:DAS(采样)靠统计检测 + 罚没闭环(硬质保,数据必须在网络中可抽样);DAP 靠担保方签名(软质保,数据在担保方手里)。可以组合:DAC 节点用 DAS 内部互验数据完整性(节点之间采样),再对 L1 出 DAP(对外的担保)——Starknet 类系统的 DAC 设计就是这种”内硬外软”的组合。评估时看两层:节点内部有没有完整性机制(防单节点腐化)、对外 DAP 的担保方结构(N/M、独立性)。

用户与开发者的实操要点

用户视角:你的链上状态是否依赖 DAP,决定”极端退出”时你找谁要数据——查该链文档的”数据可用性”章节(通常明确写”数据由 X 担保”)。退出操作时,数据请求走担保方的接口——担保方接口不可用 = 提现延迟(不是失败,是等待),这种延迟是 Validium 类的已知风险形态。开发者视角:使用 DAP 时,担保窗口必须覆盖你的最长挑战/提现期(窗口 < 需求 = 设计漏洞);DAP 合约的验证逻辑要审计(阈值签名检查、承诺绑定);多 DAP 提供者时评估”担保方重叠”(两个 DAP 出自同一担保方 = 单点)。

常见误读

“有 DAP = 数据在链上”——恰恰相反,DAP 是”数据不在链上”的配套机制;“数据在哪”查文档,DAP 存在 = 部分或全部数据链下。“DAP 是 ZK 证明”——不是,多数 DAP 是阈值签名(BLS 等),不是零知识证明;“证明”指的是”对 L1 的可验证担保”,不是证明系统类别。“DAP 越短越安全”——长度是效率参数不是安全参数,安全在担保方结构和承诺绑定。

风险提示

DAP 的担保方是具体实体集合:其法律风险(司法辖区、资产可冻结性)、运营连续性(节点更替、资金链)都进入信任边界——软质保需要持续跟踪,不是一次性评估。引用具体系统的 DAP 参数(担保窗口、N/M、承诺类型)以官方文档当前版本为准。本文解释机制,不构成对任何使用 DAP 的链的安全性评级;Validium 用户的知情选择基于”我接受担保方的信任水平”这一明确判断,而非”DAP 存在”这一事实。

小结

一句话记忆:DAP = 数据承诺 + 担保方阈值签名的链上短对象,让 L1 用固定成本担保链下数据;它封装信任(指向担保方)而不是消除信任。看到 DAP,先问三件事:数据在哪、谁担保、担保窗口多长——答案就是这条链数据风险的完整画像。