Jolt-b:改进了Jolt递归友好性的zkVM

1. 引言

前序博客:

Jolt的作者提出了用一种独特的方法来构建zkVM——lookup singularity。

  • 该技术大量使用查找表来创建虚拟机电路
  • 使得其性能为同类竞品的2倍+,详情见a16z crypto 2024年4月9日博客 Building Jolt: A fast, easy-to-use zkVM
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    早期https://github.com/a16z/jolt代码中,使用Spartan和Hyrax作为后端,从而有2大限制:
  • 1)Hyrax使用Pedersen commitment来构建inner product argument,需要椭圆曲线运算。
  • 2)Hyrax承诺的验证使用为平方根关系 O ( N ) O(\sqrt{N}) O(N ),其中 N N N为电路size。

这2大限制会导致Jolt proof的递归验证不切实际,因为在该验证电路内,需执行所有的Hyrax验证逻辑。

后期的https://github.com/a16z/jolt版本中:

  • 使用Zeromorph和HyperKZG作为其承诺后端,让系统递归友好,这样递归verifier仅需执行 O ( log ⁡ ( N ) ) O(\log(N)) O(log(N))运算
  • 但代价是,需要trusted setup。

Cysic团队2024年7月论文《Jolt-b: recursion friendly Jolt with basefold commitment》中:

  • 通过转至Goldilocks的扩域,解决了以上问题
  • 所用的Basefold承诺方案,verifier time为 O ( log ⁡ 2 ( N ) ) O(\log^2(N)) O(log2(N))
  • 该方式类似于Plonky2加强了原始的Plonk方案。
    • Plonky2中将EC域迁移至了Goldilocks域
    • Plonky2中将基于EC的承诺方案,替换为了基于encoding的承诺方案。
  • 借助优化版本的Basefold方案,所实现的Jolt-b:
    • 以“prover减慢2.47倍”为代价,来实现原始Jolt的递归友好性。
    • 比Zeromorph的Jolt变种,prover time快1.24倍。
    • 比HyperKZG的Jolt变种,prover time快1.52倍。
      在这里插入图片描述
      在这里插入图片描述

开源代码实现见:

zkVM可执行任意大小的程序,并为证明该执行生成一个ZK proof。
支持任意大小程序的关键在于:

  • 可将任意大小程序切分为多个子程序;
  • 首先为每个子程序生成一个proof;
  • 然后使用一个recursive proof来确认所有子程序proofs的正确性。

Jolt-b:

  • 致力于改进a16z crypto所开发的Jolt zkVM的递归友好性,使其效率更高
  • 与Jolt不同,采用了名为Basefold的多项式承诺方案。
    • 因为Hyrax是recursion-unfriendly(递归不友好)的
    • 通过使用Basefold变种,可转向更小的域
    • 从而不仅带来更高效的IOP,还可加强递归友好性。

在这里插入图片描述
此外,Cysic团队认为:

  • 以Binius作为proof后端来构建zkVM并不是一种好策略,但认为Binius有利于pre-compiles预编译。
  • Binius的整个价值主张是,可为witnesses使用最小的power-of-two域,因此只需所需来选择域大小。为了支持u16或u32结构上的运算,需要将tower向上移动或使用lookup。这需要interpreter(解释器)仔细考虑,以决定在哪个域上工作,并为proof recursion增加了额外的复杂性。
  • 最后,用Binius编写的Keccak电路,与Poseidon电路相比,仍然需要至少多两个数量级的门。

参考资料

[1] 2024年7月18日Cysci团队twitter Jolt-b

Jolt/Lasso 系列博客

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值