Lookup Singularity

news2024/11/26 5:32:38

1. 引言

Lookup Singularity概念 由Barry WhiteHat在2022年11月在zkResearch论坛 Lookup Singularity中首次提出:

  • 其主要目的是:让SNARK前端生成仅需做lookup的电路。
  • Barry预测这样有很多好处,特别是对于可审计性 以及 形式化验证:
    • 更易于审计单个lookup argument和各种lookup tables,不再需要数千行的硬编码电路。
  • 承认现有的lookup argument方案具有性能瓶颈 但 预测将得到改进:
    • 强调可能需要支持巨大table,如size为 2 128 2^{128} 2128的table。
  • Lasso/Jolt可能可实现该愿景?

多年来,ZKP的核心元素为check:

  • A ∗ B + D = = C A*B+D==C AB+D==C

在构建整个电路过程中,重复运用该check。将这种表示的电路称为R1CS。

但是,对于某些任务,R1CS昂贵得令人望而却步,为此,引入了lookup arguments的大量使用。当前,很多ZKP使用lookup argument + R1CS变种多项式承诺 来构建电路。

仅使用R1CS来构建电路存在一些障碍。为此,人们创建了一些hand tuned circuits,在这些hand tuned circuits中,同时包含了多项式约束和lookup arguments。这些hand tuned circuits是特定的,并不是很容易扩展。

1.1 多项式约束

多项式约束是复杂的。电路实现人员构建大量多项式方程式,整个电路定义为由多项式方程式组成的系统。
对这个“由多项式方程式组成的系统” 的solution,构成了a valid proof。很难对方程组的结果进行推理。目前的形式化验证工具无法求解素数域中的多项式方程。

1.2 Lookup argument

lookup argument为set membership check。lookup argument:

  • 首次用于做高效的big integer arithmetic。
  • 目前还用作VM的控制流
  • 做某些不是snark-friendly的运算
  • 并不是对所有运算都是更高效的
  • 每个lookup会引入一定的prover开销
  • 目前控制使用lookup argument的次数 的原因在于,其对Prover来说是昂贵的。

2. 为何Lookup arguments很好?

2.1 语言

当前的snark friendly语言对于新程序员来说是难学的。其使用了不同于之前范式的素数域和多项式约束。而仅使用lookup arguments的语言可能会更简单。当前的语言擅长做snarks定向计算,但当用于传统计算时要昂贵很多。

而仅有lookup的语言,将:

  • 既擅长做snarks定向计算
  • 也擅长做传统计算

2.2 安全审查

审计人员不再需要取对一组多项式方程式求解。lookup arguments推理起来要简单得多。

如:某电路具有一个ANDgate,有2个输入bit 变量,输出为这2个输入的AND运算结果。

多项式方案为:

(x)(x-1) = 0 
y(y-1) = 0 
x*y = out
return(out)

Lookup方案为:

out = get x,y from AND table
return(out)

其中AND lookup table为:
在这里插入图片描述

由此可知,Lookup方案要简单得多。因此,对于仅有lookup的电路,要更容易找出bug。

2.3 形式化验证

形式化验证工具需对一组多项式方程式求解。现有的形式化验证工具不擅长求解素数域中的多项式方程——这样会引入大量额外工作。

而仅使用lookup argument的话,则可使用现有的形式化验证工具,同时可能可探索一些其它方案。

lookup argument限制了电路中任意point的有限变量集合,使得可能的变量集合由 2 254 2^{254} 2254 限制为了 2 2 2 2 16 2^{16} 216。这样甚至可支持做state space enumeration 来确认 “电路是正确的”。

2.4 信息论对比

为高效将程序描述为电路,需构建一个电路来将“某输入”映射为“正确的输出”。可将“电路”看成是“每个prover time second编码的信息”。这似乎是对比“实现电路的不同方式”的一种好角度。

多项式约束具有有限的degree:

  • 因为degree会影响Prover time。
  • degree会限制可编码的信息。

如degree为5的多项式可将5个输入值 映射为 5个输出值。除非增加degree,否则无法在该多项式中包含更多的值。

很多情况下,这样是ok的,因为是使用多项式约束的structure来做计算。因此,乘法运算对应为多项式运算 A ∗ B = = C A*B==C AB==C,而XOR运算不是,需要编码为keys to values。

Lookup argument可包含更多的信息。之前已限制lookup table size为 2 28 2^{28} 228个元素。但近期研究成果表明,circuit size仅受限于可灵活完成的最大trusted setup——会限制table_size。
Baloo: Nearly Optimal Lookup Arguments中指出:

  • 单个多项式约束中可包含约 5 ∗ 2 254 5*2^{254} 52254位信息。
  • Lookup argument可包含 2 254 ∗ table_size 2^{254}*\text{table\_size} 2254table_size

当使用多项式约束的structure时,多项式约束是很有用的。但随着更大尺寸的table变得可行,这种优势将消失。

3. 结论

若可仅使用lookup argument来高效定义电路,则将由更简单的工具和电路。
这样,lookup argument 将总是比 多项式约束 效率更高。

未来将关注构建以lookup为中心的ZKP工具。

4. 展望

未来工作:

  • 比较现有电路的效率
  • 构建仅有lookup的语言示例
  • 对不同lookup argument效率做对比,并预测改进空间。
  • 寻找lookup argument优于(和劣于)多项式约束的实例:
    • 寻找lookup argument 和 多项式约束 的worst case。
    • 对现有电路进行benchmark,比对效率:
      • lookup argument
      • lookup + polynomial constraints

参考资料

[1] Lookup Singularity
[2] The lookup singularity - how zero-knowledge proofs can be made simpler and easier to review.

Justin Thaler系列博客

  • SNARK Design
  • Rollup项目的SNARK景观
  • SNARK原理示例
  • SNARK性能及安全——Prover篇
  • SNARK性能及安全——Verifier篇
  • sum-check protocol in zkproof
  • sum-check protocol深入研究
  • Lasso、Jolt 以及 Lookup Singularity——Part 1
  • Lasso、Jolt 以及 Lookup Singularity——Part 2

lookup系列博客

  • PLOOKUP
  • PLOOKUP代码解析
  • Efficient polynomial commitment schemes for multiple points and polynomials学习笔记
  • PLONK + PLOOKUP
  • PlonKup: Reconciling PlonK with plookup
  • PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记
  • Plonk代码解析
  • RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记
  • Lookup argument总览
  • Halo2 学习笔记——设计之Proving system之Lookup argument(1)
  • 多变量lookup argument
  • cq:fast lookup argument
  • Lookup Argument性能优化——Caulk
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • Research Day 2023:Succinct ZKP最新进展
  • Lasso、Jolt 以及 Lookup Singularity——Part 1
  • Lasso、Jolt 以及 Lookup Singularity——Part 2

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dynamic CRM开发 - 实体字段(一)

字段介绍 Dynamic CRM中,实体是CRM业务数据的基本载体,而字段对于实体同样重要,是其核心部分。 CRM中新增实体后,系统会默认为实体创建一些不可编辑,不可删除的字段,如:主键,创建时…

vue路由及打包部署

vue路由(前端路由):URL中的hash(#号)与组件之间的对应关系。 一、安装vue路由 npm install vue-router3.5.1 二、定义路由表 路由表主要记录hash(#号)与组件之间的对应关系。主要定义在route…

解决SEGGER Embedded Studio无法显示Nordic MCU外设寄存器问题

如果使用SES调试NRF52840的时候发现,官方例程只能显示CPU寄存器,但是无法显示外设寄存器时,解决办法如下: 1.在解决方案右键→Options→Debug→Debugger,然后Target Device选择正确的型号。 2.Register Definition Fil…

RT-Thread 的环形缓冲区 ---- 镜像指示位

可以看一下这篇我写的博客,了解一下大概: RingBuffer 环形缓冲区----镜像指示位_呵呵哒( ̄▽ ̄)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/132340883?spm1001.2014.3001.5501 【回顾】缓冲区…

Git的正确使用姿势与最佳实践:团队协作和版本控制的最佳实践

Git是一个版本控制系统,用于跟踪和管理软件开发项目中的代码变更。它可以追踪文件的修改、添加和删除,并记录这些变更的历史。Git可以帮助团队成员协同开发,并提供了一种有效的方式来处理并发编辑和代码合并。 在这篇文章中,我们将…

大数据-玩转数据-Flink

一、说明 在电商网站中,订单的支付作为直接与营销收入挂钩的一环,在业务流程中非常重要。对于订单而言,为了正确控制业务流程,也为了增加用户的支付意愿,网站一般会设置一个支付失效时间,超过一段时间不支…

大数据从入门到放弃——浅谈数据架构的前世今生

文章目录 1. 背景2. 数据的定义及分类2.1 数据的定义2.2 数据的分类2.3 数据和信息的区别 3. 数据的作用4. 数据的那些美好时代4.1 人脑时代4.2 文件时代4.3 数据库时代4.3.1 大服务器时代4.3.2 读写分离时代4.4 数据库的分布式时代4.5 云端时代 5. 数据的未来 1. 背景 随着云时…

excel 核心快捷键用法

1、wps怎样只复制公示计算出来的数据 1.1、按下快捷键“CtrlC”,复制该单元格。 1.2、按下快捷键“ShiftCtrlV”,即“粘贴为数值”,即可只复制数字而不复制该单元格的公式 1.3、wps怎样只复制公示计算出来的数据_百度知道https://zhidao.baid…

【福建事业单位-综合基础知识】05民法典

这里写自定义目录标题 一、民法概述概念原则总结 二、自然人概念总结 三、民事法律行为总结 民法考察2-4题(重点总则篇) 一、民法概述 概念原则 总结 二、自然人 概念 总结 三、民事法律行为 总结

【python】正则表达式

本文介绍正则表达式常用的用法。 有哪些正则字符 正则表达式中有各种各样的正则字符,用于匹配不同情况下的字符串。具体如下: 使用 re 模块进行字符串匹配 比如,我们要从 ‘Xiaoshuaib has 100 bananas’ 中匹配一个数字,可…

Zoho Books的安全性和数据保护:财务信息安全的保障措施揭秘

在信息化时代,如何保障企业信息安全是十分重要的问题,尤其是财务信息。财务管理工具的安全性是否有保障是许多用户担心的问题。 Zoho Books财务管理工具为客户提供了一系列的数据保护和安全措施,以确保客户财务信息的安全。 1. 采用高度加密…

漏洞指北-VluFocus靶场专栏-工具篇

漏洞指北-VluFocus靶场专栏-番外篇奇技淫巧 🌸1、burp suite 、中国蚁剑工具、Strut2扫描软件地址🌸🌸2、burp suite使用🌸step1 浏览器开启代理,**推荐使用:SwitchyOmega** step2 确认浏览器端口和burp su…

LeetCode 542. 01 Matrix【多源BFS】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

栈空间和栈帧

如图所示,栈空间是每个线程私有的,其中每个方法有一个栈帧,里面保存了局部变量 返回地址等信息。 如果是多线程,每个线程都会有一个栈空间。 多线程切换的时候需要保存局部变量、当前的地址等信息。 线程上下文切换的时机&…

mybatis入门Idea搭建

一、概念 1、什么是mybatis? MyBatis是一个开源的Java持久层框架,它提供了一种简化数据库访问的方式。它的主要作用是将Java对象与数据库表之间进行映射,使开发者可以通过面向对象的方式操作数据库,而不需要编写大量的SQL语句。M…

线性代数的学习和整理5: 矩阵的加减乘除及其几何意义(未完成,建设ing)

目录 1 矩阵加法 1.1 矩阵加法的定义 1.2 加法的属性 1.2.1 只有同类型,相同n*m的矩阵才可以相加 1.2.1 矩阵加法的可交换律: 1.2.2 矩阵加法的可结合律: 1.3矩阵加法的几何意义 2 矩阵的减法 2.1 矩阵减法定义和原理基本同 矩阵的…

前端学习记录~2023.8.3~JavaScript重难点实例精讲~第5章 DOM与事件

第 5 章 DOM与事件 前言5.1 DOM选择器5.1.1 传统原生JavaScript选择器(1)通过id定位(2)通过class定位(3)通过name属性定位(4)通过标签名定位 5.1.2 新型的querySelector选择器和quer…

虚拟内存机制1

虚拟内存机制 计算机的存储系统 为什么要有虚拟内存? 在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。当运行多个程序时,经常会出现以下问题: 进程地址空…