跳到正文

有效性证明

一份以核验为先的有效性证明指南,涵盖公开输入、见证、证明系统假设、汇总状态转换、数据可用性、最终性和操作故障模式。

更新于

仅供教育参考,不构成投资或安全建议。有效性证明的可靠性取决于所证明的命题、公开输入绑定、证明系统、验证器、数据可用路径、合约、运营方、治理和结算链。

直接答案

有效性证明是一份密码学证据,用来表明某项计算满足一组精确定义的关系。验证器根据验证密钥和公开输入检查证明。在汇总协议中,这些输入通常绑定前状态根、拟议的新状态根以及交易批次承诺。验证成功后,结算合约可以接受新状态根,而无需重新执行每笔交易。

这项保证比“整个系统正确”更窄。它依赖可靠的密码学、预期程序或电路、正确的公开输入编码、真实的验证密钥,以及正确的验证器与状态更新合约。仅凭验证成功,无法证明用户能够取得底层数据、证明者会持续在线、结算区块已经最终确定、升级没有恶意,或提款路径确实可用。有效性证明可以使用零知识证明系统,但“有效性”本身不代表隐私。

1
执行

证明者执行一批交易或计算,得到状态变化。

工作原理

  1. 锁定准确部署:L1 与 L2 链 ID、汇总协议版本、状态更新合约、验证器地址与字节码、验证密钥哈希、证明系统、电路或程序版本、数据可用模式、管理员权限、暂停状态和结算最终性政策。validity proof 不是跨系统的统一规范。
  2. 解释结果之前,先定义被证明的关系。简写为:在证明系统可靠性假设成立时,Verify(vk, x, proof) = 1 应当意味着存在见证 w,使 R(x, w) = 1。其中 vk 是验证密钥,x 是完整公开输入,R 是编码后的规则集。证明只覆盖这项关系。
  3. 独立重建公开输入。确认前状态根正是合约已接受的状态根;从规范数据派生批次或数据承诺、链与批次标识、后状态根、消息或提款根及协议参数。绑定到错误链、状态根、程序或批次的有效证明,只是对错误命题有效。
  4. 核验证明和合约路径。运行兼容的独立验证器,再检查链上调用、收据、事件、已接受批次编号和存储变化。确认状态更新合约调用了预期验证器,且没有通过升级或特权分支绕过、模拟或替换验证结果。
  5. 单独核验数据可用性。取得协议要求的交易数据、状态差异、blob sidecar 或委员会证明的数据;核对其承诺,并复现状态转换或退出见证。证明有效与数据不可用可以同时发生,尤其是 validium 或外部委员会把数据保存在链下时。
  6. 分别跟踪生命周期状态:已生成、已提交、已纳入、证明已验证、状态已接受、结算安全、结算最终确定和提款完成。衡量证明积压与成本、排序器和证明者活跃性、L1 纳入、链重组、跨链桥延迟、强制纳入和逃生程序,不能把所有状态都称作“最终”。
  7. 保存可复现证据:合约地址与代码哈希、验证密钥与程序哈希、完整公开输入、证明字节或持久引用、批次数据、验证命令与软件版本、交易收据、最终确定区块引用和成功退出测试。每次升级后都要重新核验。

算例

  • 批次命题。 某汇总协议处理 8,192 transfers。证明绑定旧状态根 R0、新状态根 R1 和批次承诺 B7。验证成功支持的命题是:“存在满足该电路、针对 B7R0 转换到 R1 的见证。”它不能证明 B7 的字节可取、排序器纳入了每笔已提交交易,或 R1 已经最终确定。
  • 递归聚合。 聚合器在一个父电路内验证 16 child proofs,再提交一个父证明。父证明通过时,验证器接受聚合关系及其绑定的子证明承诺。审计者仍须确认父电路检查每个子证明、顺序和公开输入映射;证明数量本身不能建立这种绑定。
  • 假设 Gas 账本。 假设直接重新执行需要 24,000,000 gas,证明验证需要 600,000 gas,所需数据发布需要 180,000 gas。证明路径合计 600,000 + 180,000 = 780,000 gas,模型中的降幅为 (24,000,000 - 780,000) / 24,000,000 = 96.75%。这里不含证明硬件、聚合、失败提交、存储、跨链桥操作和数据留存成本。

风险

  • 核验了错误的链、部署、批次、验证器、验证密钥或电路版本。
  • 可靠的证明系统忠实证明了不完整或错误的电路。
  • 公开输入遗漏或错误编码链 ID、状态根、批次、消息域或协议参数。
  • 验证器、预编译合约、不安全库或不兼容实现存在缺陷。
  • 初始化材料泄露或密码学假设失效。
  • 可升级合约或治理替换验证器、密钥、程序或接受规则。
  • 特权绕过、紧急模式、暂停或白名单削弱公开宣称的路径。
  • 证明生成缺陷、非确定性或不同客户端派生出不同见证。
  • 证明者中心化、审查、停机、积压或硬件故障使状态更新停滞。
  • 交易数据、状态差异、blob、原像或归档历史缺失。
  • 把委员会签名或数据承诺当成当前可取得数据的证明。
  • 接受来自不安全、已重组或非规范结算区块的证明交易。
  • 把证明获接受当成提款立即完成或经济最终性。
  • 未能独立复现状态转换、余额、消息或退出见证。
  • 低估验证 Gas、数据费用、证明延迟、跨链桥延迟或恢复成本。
  • 假设一个汇总协议的证明、可用性和升级模型适用于另一部署。

常见误区

  • 有效性证明通过验证,就证明所有实现细节和用户可见余额均正确。
  • 每份有效性证明都是零知识证明,都会隐藏交易数据。
  • 有效性证明消除了数据可用性、排序器活跃性和审查风险。
  • 证明通过验证后,结算交易立即最终确定并可提款。
  • 证明更小或验证器更快,就一定代表系统更安全或更便宜。

相关主题

来源

导航

搜索知识库...