密码学系列 - 零知识证明(ZKP) - 为什么把zkstark的证明提交到在evm链上时,得先包装成zksnark证明?

为什么要转?

将 zk-STARK 的证明提交到 EVM(以太坊虚拟机)链上时,通常需要将 zk-STARK 证明转换或包装成 zk-SNARK 证明,主要原因如下:

1. EVM 的计算和存储成本限制

  • 证明大小 :zk-STARK 证明通常比 zk-SNARK 证明大得多(可以达到数百 KB ),而 zk-SNARK 证明的大小通常为 128 字节左右。EVM 的 gas 费用与存储和计算的使用密切相关,因此上传较大的证明到链上会显著增加成本。
  • 验证开销:zk-STARK 验证需要更高的计算资源,而 zk-SNARK 验证由于使用了 Pairing-based cryptography(例如 BLS12-381 曲线),其验证效率高且计算成本较低。

2. EVM 对 zk-SNARK 的原生支持

以太坊已经通过 precompiled 合约原生支持了 zk-SNARK 验证(例如 BN254 配对验证)。这意味着开发者可以直接在以太坊上调用这些预编译合约验证 zk-SNARK 证明,而无需部署额外的复杂逻辑。

  • zk-STARK 的验证则需要额外的电路实现,可能带来更高的开发和 gas 成本。

3. 兼容性和工具链

  • 工具链支持:目前以太坊生态中,许多工具和框架(例如 zkSync、Polygon zkEVM)围绕 zk-SNARK 构建,开发者可以更轻松地将 zk-SNARK 集成到现有的智能合约中。
  • EVM 适配:为了兼容以太坊生态和现有智能合约,开发者通常会选择将 zk-STARK 证明转换成 zk-SNARK 证明。

4. 逐步迁移策略

  • zk-STARK 的核心优势在于其透明性(不依赖可信设置)和更高的生成效率,但 zk-SNARK 在链上运行时的性能优势更显著。
  • 因此,在实际应用中,可以先在链下生成 zk-STARK 证明,然后将其转换为较小的 zk-SNARK 证明提交到链上。这种策略可以兼顾 zk-STARK 和 zk-SNARK 的优点。

如果未来 EVM 原生支持 zk-STARK 验证(例如通过引入新型预编译合约或扩展 EVM),这种转换步骤可能会被简化甚至不再需要。

是怎么转的,什么原理?

将 zk-STARK 证明转换成 zk-SNARK 证明的过程,通常是通过一种**递归证明(recursive proof composition)**的技术来实现的。以下是这个转换的核心原理:


1. 核心思想:递归证明

递归证明是通过使用 zk-SNARK 生成一个新的证明,该证明验证 zk-STARK 的正确性。具体来说:

  • 第一步:在链下生成 zk-STARK 证明,证明某个复杂计算的正确性。
  • 第二步:将 zk-STARK 的验证过程设计成一个新的电路。
    • 这个电路的作用是验证 zk-STARK 证明的正确性。
    • 这种验证逻辑被嵌入到一个 zk-SNARK 的证明系统中。
  • 第三步:使用 zk-SNARK 生成一个小而高效的递归证明,用于证明 zk-STARK 的验证过程是正确的。

最终结果是:原本体积较大的 zk-STARK 证明,被压缩成了一个小的 zk-SNARK 证明,而 zk-SNARK 的验证在 EVM 上高效可行。


2. 转换过程的技术细节

(1) 描述 zk-STARK 验证为一个电路
  • zk-STARK 验证本质上是一个固定的算法,包含哈希函数(如 FRI 协议中使用的 Merkle 树验证)和多项式一致性检查等。
  • 通过 R1CS(Rank-1 Constraint System)或等效的电路描述,将 zk-STARK 的验证步骤表示成一组约束,这可以在 zk-SNARK 支持的证明系统中运行。
(2) zk-SNARK 证明该验证电路的正确性
  • 构造一个 zk-SNARK 电路,输入 zk-STARK 证明和公共参数(如公钥和 Merkle 根)。
  • 这个 zk-SNARK 电路运行 zk-STARK 验证逻辑,检查 zk-STARK 证明是否有效。
(3) 提交 zk-SNARK 证明
  • 最终,生成的 zk-SNARK 证明小且高效,可直接提交到 EVM 链上。

3. 为什么递归证明可行?

递归证明的关键在于 zk-SNARK 本身的高效性:

  • zk-SNARK 的验证复杂度与电路大小几乎无关,只与证明的固定参数相关。
  • 通过设计,将 zk-STARK 验证逻辑封装为一个相对小的电路,使得 zk-SNARK 的验证高效完成。

4. 实际应用中的优化

(1) 使用专门的 STARK 验证工具

一些项目(如 StarkNet 或 zkSync)已经开发了专门的工具,用于高效生成 zk-STARK 证明,并将其与 zk-SNARK 集成。这些工具通常对电路和证明过程进行了优化,以减少转换开销。

(2) 分层设计

将 zk-STARK 逻辑分成多层,每一层的验证逻辑由上一层的 zk-SNARK 证明表示。


: 区块链知识系列
: 密码学系列
: 零知识证明系列
: 共识系列
: 公链调研系列
: BTC系列
: 以太坊系列
: EOS系列
: Filecoin系列
: 联盟链系列
: Fabric系列
: 智能合约系列
: Token系列

相关推荐
一袋米扛几楼987 小时前
【密码学】Playfair(普莱费尔) 是什么?
密码学
一袋米扛几楼987 小时前
【密码学】CrypTool2 工具是什么?
服务器·网络·密码学
GinoInterpreter10 小时前
什么是翻译的去中心化?
人工智能·自然语言处理·去中心化·区块链·机器翻译·机器翻译模型·机器翻译引擎
栗子~~14 小时前
基于 Hardhat 区块链 + MetaMask 钱包 开发的极简去中心化应用(DApp)demo
去中心化·区块链
栗子~~17 小时前
hardhat 单元测试时如何观察gas消耗情况
开发语言·单元测试·区块链·智能合约
Eward-an18 小时前
Gemini认证工具创意开发(技术深度解析)
安全·网络安全·区块链
栗子~~19 小时前
什么是区块链钱包
区块链
庭前云落19 小时前
Compound 1| DeFi
去中心化·区块链
QCN_1 天前
现代密码学——第一章密码学基础
密码学