multilinear多项式承诺方案benchmark对比

1. 引言

前序博客有:

  • Lasso、Jolt 以及 Lookup Singularity——Part 1
  • Lasso、Jolt 以及 Lookup Singularity——Part 2
  • 深入了解Lasso+Jolt

Lasso lookup中,multilinear多项式承诺方案的高效性至关重要。

本文重点关注4种multilinear多项式承诺方案的实现和benchmark:

  • 1)Ligero: native & recursive implementation; benches, 【交互式】
  • 2)Brakedown: native implementation; benches, 【交互式】
  • 3)Hyrax: native implementation; benches, 【交互式】
  • 4)multilinear KZG: benches. 【非交互式】

目前为止,没有在单个库中基于同样的backend实现了以上4种multilinear多项式承诺方案。如:

  • 现有的Hyrax学术实现,是基于Python的。
  • multilinear KZG:基于Rust,以arkworks库为backend。
  • Ligero和Brakedown:基于Rust,以ZCash库为backend。

本文:

  • 基于arkworks实现了Hyrax、Ligero和Brakedown
  • 基于https://github.com/EspressoSystems/jellyfish(也是以arkworks库为backend)的现有multinear KZG 添加了benchmark
  • 为Ligero实现了Halo2 verifier,以支持潜在的链上验证。

具体开源代码实现见:

  • https://github.com/HungryCatsStudio/poly-commit(Rust)【运行cargo bench来benchmark】
    • 已向https://github.com/arkworks-rs/poly-commit提交Ligero、Brakedown和Hyrax的PR,当前正在review中。
    • 已向https://github.com/EspressoSystems/jellyfish/pull/390提交了KZG bench的PR,已被merge。
      • jellyfish KZG time bench:cargo bench --bench="pcs" --features="test-srs"
      • jellyfish KZG size bench:cargo bench --bench="pcs-size" --features="test-srs"

在对以上multilinear多项式承诺方案进行benchmark时,重点关注以下维度:

  • Prover time
  • Verifier time
  • Proof size
  • On-chain verification 链上可验证
  • Recursion friendliness 递归友好性

本文bench所采用的硬件为AMD Ryzen™ 9 7950X3D:

  • CPU: 16 cores / 32 threads @ 4.2 GHz
  • Generation: Raphael (Zen 4) with AMD 3D V-Cache™ Technology
  • RAM: 128 GB ECC DDR5 RAM

2. native benchmark

本文所选的4个multilinear多项式承诺方案中,有3个是天然交互式的。通过应用Fiat-Shamir transform,可将这些交互式方案转换为非交互式的。所谓Fiat-Shamir transform,实际上是通过某密码学hash-based sponge来实例化。

递归验证所需的hashing in-circuit,若采用基于bitwise运算的哈希函数(如SHA256),要比采用algebraic哈希函数(如Poseidon),慢几个数量级。

为此,对于Ligero,考虑2个变种:

  • 1)基于SHA256所优化的原生哈希
  • 2)支持递归的Poseidon哈希(R)。

KZG是非交互式的,其无需Fiat-Shamir transformation。

Ligero的结论,足以支撑非交互式Brakedown和非交互式Hyrax的结论。

需注意的是,Jolt中的特定应用所承诺的元素是“small”的,为此,将考虑对Hyrax采用额外的变种:

  • 使用专门针对 < 60 <60 <60 bits优化后的改进版MSM。
  • 相比于任意(A)系数场景MSM, < 60 <60 <60 bits的版本是small变种(S)。

在对以上方案做benchmark时,一个重要事实是:

  • Ligero proof size 要大于 Brakedown proof size。
  • 当给矩阵输入相同的多项式系数时,自然会认为Brakedown具有更大的proof size,因为需open更多的columns。

因此在实际实现时,Ligero总是生成square matrices,而Brakedown的列数比行数多。为此,需对Ligero的实现进行调整,使其与Brakedown采用相同的arrangement。这样:

  • prover time要大一点。
  • 但verifier工作量减少了:因为每列所需哈希的元素数减少了。

实际实现时,Brakedown采用的是Brakedown: Linear-time and field-agnostic SNARKs for R1CS论文中的第三行参数(small distance):
在这里插入图片描述
与采用Larger distance的linear codes版本的Brakedown相比,small distance版本具有更大的 t t t值(即更大的open列数),但改进了prover time。

为此,本文实际benchmark了6个版本的方案:

  • 1)multilinear KZG
  • 2)Hyrax(S):所承诺的元素为 < 60 <60 <60 bits的值。
  • 3)Hyrax(A):所承诺的元素为任意值。
  • 4)Ligero:采用优化后的基于SHA256的哈希函数。【基于linear-code】
  • 5)Ligero(R):采用支持递归的Poseidon哈希函数。【基于linear-code】
  • 6)Brakedown:【基于linear-code】

Ligero、Ligero(R)和Brakedown均是基于linear-code的,其共享 用于编码系数矩阵中每一行所选择的linear函数 带来的运算模式。

实际实现时,多项式系数取自于BN254曲线的scalar field。选择BN254曲线是为了支持潜在的以太坊链上验证需求。

KZG和Hyrax的安全性上限取决于做group运算所选择的椭圆曲线,更准确来说,是取决于所关联的特定group的DLP(Discrete Logarithm Problem) hardness。

Ligeror和Brakedown实现时采用安全参数,致力于实现128 bits的安全性。

需注意的是,尽管致力于为这些基于linear-code的方案实现128位安全性,而不是BN254 DLP的110位安全性,性能上有一定的差异,源自于要open相对少一点的列——仅为a few percentage points。

2.1 Prover计算开销bench

以下所有值的单位为ms,空白表示未运行相应的bench(如,仅关注少量方案的large n n n情况)。横杠表示试图运行,但超过了bench机器的计算资源。

2.1.1 Prover commit时长bench

在这里插入图片描述
相关数据分析有:

  • 当多项式的变量参数个数 n n n小于22个时,Ligero方案的commit时长有优势。这与Brakedown论文中的结论一致。Brakedown具有渐进的linear time,且事实上,但具有足够大的 n n n值时,Ligero具有额外的 log ⁡ ( n ) \log(n) log(n)因子负担。当有 n ≥ 24 n\geq 24 n24的multi-linear多项式,Brakedown的优势开始显现。
  • Ligero(R)的commit(open以及验证)时长,要比Ligero慢得多。
  • 实际所实现的基于Linear-code的方案(Ligero、Ligero(R)和Brakedown),在opening阶段都缺少了一个明显的优化:
    • Prover应无需对所有列重新哈希,因为其已在commit阶段哈希过了。
    • 当使用高效基于bitwise的哈希原生运算时,这可能不是大额开销,但仍然有改进空间。
    • 该问题的核心在于,受限于当前的arkworks trait定义,Prover无法在commit和opening阶段共享 除实际commitments(以及所谓的“randomness”)之外的 任何数据。为此,也向arkworks提交了PR试图解决该问题:added the auxiliary data of the prover for opening。

2.1.2 Prover open时长bench

下表数据单位为ms。
在这里插入图片描述
Prover的open时长竞争更激烈,但对于足够大的 n n n值,Ligero险胜于multilinear KZG。

2.2 Verifier计算开销bench

2.2.1 验证时长bench

下表中数据单位为ms。
在这里插入图片描述
相关数据分析有:

  • Ligero为 基于Linear-code的方案(Ligero、Ligero(R)和Brakedown)中的expected winner。因为Ligero,由于其相对大的code distance,其open的列数是small的。
  • 为实现一定级别的安全性,Brakedown需要open更多的列。
  • 与commit时长不同,在所bench的 n n n值区间,无法看到Brakedown的渐进优势。猜测当 n n n值非常大时,可能Brakedown的优势会明显,但实际上无法bench。

2.3 size大小bench

2.3.1 Proof size大小bench

下表中数据单位为字节。
在这里插入图片描述
很明显,在Proof size方面,基于椭圆曲线运算的方案(KZG和Hyrax)要吊打其它方案几个数量级。其中的winner是KZG。

基于linear-code的多项式承诺方案的proof size为 O ( 2 n / 2 ) \mathcal{O}(2^{n/2}) O(2n/2)

2.3.2 commitment size大小bench

下表中数据单位为字节。
在这里插入图片描述
实际bench时,有必要考虑commitment size:

  • Hyrax为唯一的 commitment size与多项式size相关的 multilinear多项式承诺方案。其系数矩阵中的每行对应一个椭圆曲线点。
  • 除Hyrax之外的方案,其commitment size均为相对小的常量值:
    • 基于linear-code的PCS,其commitment size为哈希摘要。
    • KZG的commitment为单个group元素——对于BN254曲线,正好也是64字节。

3. recursive benchmark

当讨论SNARK recursion或composition时,是指将某verifier的验证流程(inner)作为另一(outer)方案的的电路:

  • 首先对inner电路运行Prover,以获取有效的(inner)proof。
  • 然后将该(inner)proof作为outer电路的输入(通常为private输入)。
  • 最后为outer电路运行Prover,其暗含了认可该inner verifier。

递归的好处在于:

  • 可使用具有fast prover但large proof size的方案,将该fast-prover方案 “wrap” 在某short-proof方案中,从而获得所需的small proof。
  • 满足特定的verifier逻辑要求,如链上verifier仅支持Groth16 proof。

因为,为让outer verifier信服某statement,需同时运行inner prover和outer prover。因此实际应仔细权衡取舍。

杜宇递归验证,无需关注“native” verifier time,因为该inner-verifier已包含在outer prover中。

在递归benchmark时,当前仅有Ligero方案的试验数据。实际是基于Axiom的halo2-lib来实现的Ligero方案——由Modulus Labs的小伙伴实现,未来将开源。

根据Ligero所需open的列数,来推断Brakedown中需open的列数。并基于https://github.com/axiom-crypto/halo2-lib#bn254-msm中所提供的BN254 MSM benchmark,初步评估了KZG和Hyrax。

MSM为multi-scalar multiplication简称(即将一组group元素相加,每个group元素乘以可能不同的scalar值),为KZG和Hyrax多项式承诺方案中的核心运算。

3.1 递归Prover计算开销

除了以上所描述的outer-prover开销。当实际实现递归验证方案时,还需考虑inner prover,为满足递归友好性,先前提到的SHA256哈希函数开销巨大,因此更适合使用电路友好的Poseidon哈希函数。

3.1.1 proof生成时长(Halo2)

下表数据单位为秒。
在这里插入图片描述
相关数据分析有:

  • Hyrax的开销,为对2个size为 2 n / 2 2^{n/2} 2n/2的MSM的,具有 n n n个变量的multilinear多项式的,证明时长。基于https://github.com/axiom-crypto/halo2-lib/blob/15bca77fd383a7cb04099483cb6a3524c3615b0d/halo2-ecc/src/bn254/tests/msm.rs#L67 Halo2-lib,使用不同数量的base-scalar pairs来bench。
  • KZG开销,为基于 https://github.com/axiom-crypto/halo2-lib/blob/15bca77fd383a7cb04099483cb6a3524c3615b0d/halo2-ecc/src/bn254/tests/pairing.rs#L49 的单个pairing的bench,其乘以 n n n。实际multilinear KZG验证计算中包含了一个multipairing of n n n pairs,通常可优化为比 n n n个独立pairing 运算更快。
  • Brakedown当前未做递归proof生成时长bench。
    • 因为所选的硬件配置,已无法为大型多项式运行Ligero verifier。原因在于,当 n = 18 n=18 n=18时,有超过25万个halo2 advice cells,大多数都源自基于linear-code多项式方案在非交互式设置下所需的大量哈希。
    • 而相同参数配置下,Brakedown所需的open列数,要比Ligero多一个数量级。且由于Brakedown verifier需对每列进行哈希,认为在当前配置下,无法运行递归Brakedown。

在对Hyrax和KZG进行递归证明生成时长评估时,仅关注核心开销——MSM/pairing,并完全忽略辅助开销,如让该方案成为非交互式的。

3.2 递归Verifier计算开销

此处是指outer-verifier开销。如上所属,在递归配置下,inner verifier自身影响不大(offline sanity checks除外)——其永远不会原生运行,其计算已包含在outer-prover中。

所有电路均运行在halo2中,仅需 < 1 <1 <1秒的runtime。从而推断出,若运行在EVM-verifier中,其gas开销也可接受。本文不展开讨论。

3.3 递归Verifier proof size

Halo2 proof size与Halo 2电路参数 紧耦合,即,与advice table中的最大行数 k k k呈对数关系。此外,proof size除随 k k k变化之外,仅在fastest prover中展示所选择的 k k k值,如上面“递归Prover计算开销”所述,对KZG、Hyrax和Brakedown也遵循相同的方法。

下表中数字单位为字节。
在这里插入图片描述
相关数据分析有:

  • k = 20 k=20 k=20时,对于 n = 14 n=14 n=14 n = 20 n=20 n=20,Hyrax具有最快的verifier;当 k = 19 k=19 k=19时, n n n取14到20之间的中间值时,具有最快的runtime。这即粗略解释了增加 n n n值,并不会同步doubling proof size。
  • 对于递归prover time,对最大的Ligero实例运行超时,可推断为brakedown也将超时。

3. 结论

选择合适的multilinear多项式承诺方案并不容易。

当实现以上方案时,发现仍有很大的代码和参数优化空间,具体取决于优化目标——是prover time还是verifier time等等。

以上benchmarks仅是开始。很多opening proof generations实例都可在Lasso中batch,而每个多项式分别进行承诺。

ZKP proof的链上验证是很有趣的应用场景,随着SNARKs的进步,将加快相关项目落地。

尽管如此,个人认为,这项技术的未来用户将是链下的,如AI judge或身份证明(proof-of-identity):

  • 未来不局限于小的proof size
  • 亚秒级的验证时长可能也是不必要的;
  • 真正的瓶颈在于Prover。

基于linear-code的multilinear多项式承诺方案在这一领域提供了良好的折衷:

  • 其矩阵结构,具有高并行性;
  • 选择code distance的灵活性;
  • 像Brakedown这样的一些方案也是域不可知的:
  • 没有FFT意味着对该域的group unit的限制更少。

如果在未来一两年内,随着理论和实现的进步,至少一个数量级的改进,并不足为奇。在那之前,还没有明确的赢家,尽管这个multilinear多项式承诺方案家族目前似乎是一个不错的选择。

4. 未来工作展望

未来工作有:

  • 1)Zeromorph:将任意单变量方案,转换为multilinear方案。对已知的单变量方案应用Zeromorph,能否带来更好的性能?
  • 2)BaseFold:最新的multilinear多项式承诺方案,见BaseFold: Efficient Field-Agnostic Polynomial Commitment Schemes from Foldable Codes。
  • 3)能否为基于linear-code的multilinear多项式承诺方案,做一些修改,使其受益于“small”系数呢?
  • 4)升级更新的电路友好的哈希函数。某些新的双倍友好的构建,致力于在native和in-circuit efficiency中做权衡。如Monolith: Circuit-Friendly Hash Functions with
    New Nonlinear Layers for Fast and Constant-Time Implementations。
  • 5)对多个多项式的batch openings进行bench,并对多个queries进行bench。
    • Ligero没有同态承诺,因此对同一多项式open多个点时,可通过线性组合来实现;而对多个多项式oepn同一(或多个)点时,使用哈希并没有任何明显的捷径。这不用于基于椭圆曲线的方案。详情见From one {point,poly} to multi {point,poly} commitment schemes。
  • 6)更多方案以及更多方案变种。

参考资料

[1] 2023年7月博客Benchmarking multilinear Polynomial Commitment Schemes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/136092.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python基础】try-finally语句和with语句

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

Springboot+vue的毕业生实习与就业管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的毕业生实习与就业管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点…

logback异步日志打印阻塞工作线程

前言 最新做项目&#xff0c;发现一些历史遗留问题&#xff0c;典型的是日志打印的配置问题&#xff0c;其实都是些简单问题&#xff0c;但是往往简单问题引起严重的事故&#xff0c;比如日志打印阻塞工作线程&#xff0c;以logback和log4j2为例。logback实际上是springboot的…

Smart Link 和 Monitor Link应用

定义 Smart Link常用于双上行链路组网&#xff0c;提高接入的可靠性。 Monitor Link通过监视上行接口&#xff0c;使下行接口同步上行接口状态&#xff0c;起到传递故障信息的作用。 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个…

2016年408计网

这一年&#xff0c;计算机网络部分的全部考题都围绕该网络拓扑图进行。 第33题 在 OSI 参考模型中, R1、Switch、Hub 实现的最高功能层分别是() A. 2、2、1 B. 2、2、2 C. 3、2、1 D. 3、2、2 本题考察路由器、以太网交换机、集线器各自实现的最高功能层是什么题目给定R1是…

链表OJ题【环形链表】(3)

目录 环形问题的思考 ❓Q1 ❓Q2 &#x1f642;Q2 ❓Q3 ❓Q4 8.环形链表 9.环形链表Ⅱ 今天接着链表的经典问题环形问题。大家一定要自己动手多写写。&#x1f642; 快慢指针&#xff08;保持相对距离/保持相对速度&#xff09;野指针考虑为NULL的情况带环链表&#x…

Java14新增特性

前言 前面的文章&#xff0c;我们对Java9、Java10、Java11、Java12 、Java13的特性进行了介绍&#xff0c;对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 今天我们来一起看一下Java14这个版本的一些重要信息 版本介绍 Java 14…

No180.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【图像处理:OpenCV-Python基础操作】

【图像处理&#xff1a;OpenCV-Python基础操作】 1 读取图像2 显示图像3 保存图像4 图像二值化、灰度图、彩色图&#xff0c;像素替换5 通道处理&#xff08;通道拆分、合并&#xff09;6 调整尺寸大小7 提取感兴趣区域、掩膜8 乘法、逻辑运算9 HSV色彩空间&#xff0c;获取特定…

【算法每日一练]-单调队列,滑动窗口(保姆级教程 篇1) #滑动窗口 #求m区间的最小值 #理想的正方形 #切蛋糕

今天讲单调队列 目录 题目&#xff1a;滑动窗口 思路&#xff1a; 题目&#xff1a;求m区间的最小值​ 思路&#xff1a; 题目&#xff1a;理想的正方形 思路&#xff1a; 题目&#xff1a;切蛋糕 思路&#xff1a; 一共两种类型&#xff1a;一种是区间中的最值&…

游戏制作:猜数字(1~100),不会也可以先试着玩玩

目录 1 2代码如下&#xff1a;可以试着先玩玩 3运行结果&#xff1a;嘿嘿嘿 4程序分析&#xff1a;想学的看 5总结&#xff1a; 1 猜数范围为1~100&#xff0c;猜大输出猜大了&#xff0c;猜小输出猜小了&#xff0c;游戏可以无限玩。 首先先做一个简单的菜单界面&#xf…

RK3588平台 WIFI的基本概念

一.安卓WIFI框架 Android WIFI系统引入了wpa_supplicant&#xff0c;它的整个WIFI系统以wpa_supplicant为核心来定义上层接口和下层驱动接口。Android WIFI主要分为六大层&#xff0c;分别是WiFi Settings层&#xff0c;Wifi Framework层&#xff0c;Wifi JNI 层&#xff0c; W…

WorkPlus Meet:局域网内部使用的高效视频会议系统

随着全球化和远程办公的趋势&#xff0c;视频会议已成为现代企业和机构不可或缺的沟通工具。而现在&#xff0c;大多数政企单位或者涉密强的企业&#xff0c;都会使用局域网部署的音视频会议系统&#xff0c;提供更高的安全性和隐私保护。因为音视频会议中可能涉及到公司机密和…

Torch Hub 系列#2:VGG 和 ResNet

一、说明 在上一篇教程中,我们了解了 Torch Hub 背后的本质及其概念。然后,我们使用 Torch Hub 的复杂性发布了我们的模型,并通过相同的方式访问它。但是,当我们的工作要求我们利用 Torch Hub 上提供的众多全能模型之一时,会发生什么? 在本教程中,我们将学习如何利用称为…

自动泊车轨迹规划学习

1.基于6次多项式的自动泊车轨迹算法研究 针对常见的自动泊车系统无法躲避障碍物&#xff0c;以及轨迹的曲率不连续等问题进行了泊车轨迹算法的研究以及跟踪算法的设计。 针对低速自动泊车场景进行分析&#xff0c;建立符合对应场景下的车辆运动学模型以及能够泊车的最小车位大…

华为dns mapping配置案例

解决内网PC用公网的dns用域名方法访问公司内网的web服务器&#xff1a; 原理是用DNS mapping方式解决 配置过程&#xff1a;域名——出口公网IP地址——公网端口——协议类型 公司内网client用户填公网dns&#xff0c; 公网上的dns上面已注册有公司对外映射的web服务器的公网…

山西电力市场日前价格预测【2023-11-13】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-13&#xff09;山西电力市场全天平均日前电价为428.16元/MWh。其中&#xff0c;最高日前电价为751.89元/MWh&#xff0c;预计出现在18: 30。最低日前电价为289.03元/MWh&#xff0c;预计…

【MySQL系列】 第一章 · MySQL概述

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

王道 | 数据结构第一章

目录结构 章节总览 1.0 开篇_数据结构在学什么 1.1_1 数据结构的基本概念 1.1_2 数据结构的三要素 1.2_1 算法的基本概念 1.2_2 算法的时间复杂度 1.2_3 算法的空间复杂度 章节总览 1.0 开篇_数据结构在学什么 1.1_1 数据结构的基本概念 数据&#xff1a; 数据是信息的载…

数据库加密的常用方法 安当加密

数据库加密的方法主要有以下几种&#xff1a; 前置代理及加密网关技术&#xff1a;在数据库之前增加一道安全代理服务&#xff0c;对数据库访问的用户都必须经过该安全代理服务&#xff0c;在此服务中实现如数据加解密、存取控制等安全策略。加密数据存储在安全代理服务中。但…