Groth16可以支持查找吗?

  • Merlin404
  • 发布于 2023-03-28 21:52
  • 阅读 10

本文介绍了SR1CS(sequential rank 1 constraint system),它是一种R1CS的扩展,支持查找和其他有趣的功能。作者提出了一个类似于Groth16的证明系统来证明SR1CS的知识,并讨论了它与KZG-PlonK相比的优缺点,例如在处理lookup参数和自定义门方面的差异。

是的(某种程度上)

非常感谢 Lúcás Meier @cronokirby 提出这个问题。


更新:Weikeng Chen 提出了一个更简单的版本,它与 Pinoccio 和 Groth16 的关系类似。

这在很大程度上取代了 "Pinoccio" 方法。简要解释:不像普通的 Groth16 那样仅仅分离私有输入和公共输入,而是通过使用少量的元素来更精细地分离 witness:

γ1,...,γn, 以及元素

Ci 属于 witness 的一个子集,将被除以

γi。这将实现 witness 承诺分离的预期效果。


所以,更准确地说,被问到的问题是 "R1CS 是否支持 lookups"。实际上,R1CS 语言有一个非常简单和自然的扩展,可以支持 lookups 和各种其他有趣的东西。

在这里,我将描述它,并为这种语言提出可能的 Groth16 风格的证明系统。

SR1CS

SR1CS(顺序秩 1 约束系统)的实例定义如下:

它是一个 R1CS 电路,以及splitting - 线集合

S 被分割

S=S0⊔S1...⊔Sn,以及一组特殊的公共输入,称为 "challenges",索引从 1 到 n,具有以下属性:

  • splitting 是单调的:约束的输出位于一个子集中,索引

≥ 参数索引。

  • 索引为 i 的 challenges 假定存在于

Si 中。

在道义上,它应该被认为是一个顺序过程:创建一些约束系统,然后要求验证者提供一些 challenges。在下一轮中,我们添加额外的约束(和额外的线),也许会使用 challenges,并重复这个过程。

我在这里不会定义 witness(因为它编码了一个交互过程),但了解 SR1CS 意味着我们能够以极大的概率响应这个顺序过程中的随机 challenges。

如何证明对 SR1CS 的了解

可能有几种不同的方法可以做到这一点(我可以想象一种直接的方法,将 KZG-commitment 作为公共输入 IC 暴露出来,然后使用 这个 在它们之间建立接口)。

我将提出一种基于 KoE 的简单方法。我想知道是否可以改进它。

UPD:是的,可以改进,正如 Weikeng Chen 建议的那样。

也就是说,让我们假设对于标准 Groth16 CRS 的每个元素

Ci(这里,公共输入也以相同的方式处理,我只是没有写下来),我们也得到了元素

C~i=qjCi,其中

i∈Sj。这里,

q0,...,qn 是有毒垃圾。

现在,产生以下数据:

A,B,C,D0,...,Dn−1,D~0,...,D~n // 并且

Dn 被计算为

=C+IC−D0−...−Dn。

这里,

Di 是我们对 witness 的承诺

C+IC 中对应于子集

Si 的部分,并且

D~i 是它们乘以

qi 的结果。

需要检查以下条件:

  1. 标准 Groth16 方程。
  2. Pinoccio 风格的比例证明:

⟨Di,Qi⟩=⟨D~i,G⟩,其中

Qi=[qi]2。

  1. Challenges 计算为

Hash(Di)

例如,普通的 lookup argument 将需要 3 个更多的群元素和 1 个额外的 pairing check(因为它只涉及 1 个 challenge 轮)。

它有用吗?

我不确定,但我认为是的。

这样做的开销是一些更多的 MSMs,但生成 witness 的关键 O(nlog(n)) 部分完全没有改变。

我将尝试在这里将 R1CS 与 KZG-PlonK 进行比较。

  • 朴素的 "narrow config" PlonK 必须被具有这种方法的 SR1CS 所超越。不仅它已经在没有 lookups 的情况下被超越,而且在 PlonK 中,每个 lookup 都需要一列完整的尺寸。在这里,我们将完全不受此限制。
  • Wide config 可能会因证明大小而失败,但可能会稍微恢复一些,因为它在渐近线上更好,只需要更小的 FFTs。
  • 自定义 gates 仍然是 PlonK 的优势,但 SR1CS 可能会因为无限的 additions fan-in 而保持优势 - 特别是,wrongfield 算法必须是有利的。
  • R1CS 中对 challenges 的访问可能会解锁比 PlonK 中使用的 lookup arguments 更有效的参数 - 尽管我不太确定。

它还可能允许使用 challenges 进行不同种类的有用的参数 - 我想到了 Liam Eagan 的 MSM。

  • 原文链接: hackmd.io/@Merlin404/SJm...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Merlin404
Merlin404
江湖只有他的大名,没有他的介绍。