Plonky2 = Plonk + FRI

Plonky2由Polygon Zero团队开发,实现了一种快速的递归SNARK,据其团队公开的基准测试,2020年,以太坊第一笔递归证明需要60s生成,而于今Plonky2在 MacBook Pro上生成只需 170 毫秒。

下面将逐步剖析Plonky2。

  1. 整体构造

每个零知识证明系统都由两部分构成。第一个是编写算术电路,第二个是多项式承诺方案。

Plonk2第一部分采用Plonk + custom gates (TurboPlonk),第二部分没有选择KZG等典型的SNARK承诺方案,而是使用FRI承诺,一种与STARK相关的承诺方案。之所以选择FRI是因为:

  • FRI不需要椭圆曲线,也就没有non-native arithmetic

  • 可以使用Small Field

  • 没有Trusted Setup

  • 抗量子

此外在证明生成方面,FRI还提供一个别具趣味的选择:通过减少FRI rate、增加查询次数,可以快速生成证明,但生成的证明非常大,相反,通过增加FRI rate、减少查询次数,生成证明相对较慢,但生成的证明非常小。

  1. Goldilocks Filed

    P = 2 64 − 2 32 + 1 P = 2 ^{64} - 2^{32} +1 P=264232+1

Plonky2使用Goldilocks Filed,很明显,这个域足够小,只有64位,可以直接用无符号64-bit表示,则这个域可以在CPU上进行非常高效的算术运算,如

  • 将128位数取模p的操作非常廉价,如对应乘法操作,设x,y都是64bit,则 x ⋅ y x \cdot y xy 是128bit,

    具体实现代码见reduce_128

  • 32bit的MulAdd操作不会溢出,如x,y,z都是32bit, x ⋅ y + z x \cdot y + z xy+z 不会溢出

单就域而言,使用64位的Goldilocks域比使用256位的KZG Commitment快40倍。

  1. Starky

Starky与Plonk2具有相同的域哈希函数,但是没有计算比较重的算术,所以编写ZKVM使用Starky而不是Plonk2,Plonk2主要用于生成递归证明,因此Starky与Plonk2各自具有其独特的优势,可相互补充,具体来说,Starky为每个交易并行生成证明,然后交付Plonk2递归生成证明。

在这里插入图片描述

在上图递归的中间层,我们目标是快速生成证明,而不需要担心proof的大小,在最后一层,也就是生成根proof的那一层,这个proof 需要发送到L1层,如果proof很大,gas费势必很高,所以最后一层使用Plonk2 with a higher rate,中间层使用Plonk2 with a lower rate。

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

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

相关文章

活久见—当设置不同坐标系统时,ArcMap中的图形相关位置关系会变化

这两天一件十分神奇的事情发生了:当设置不同坐标系统时,ArcMap中的图形相对位置关系会变化。 事情起因是这样的:博主和同行用ArcMap同时验证2个相邻多边形的相对位置关系,见下图图1和图2的多边形,在博主的ArcMap中&am…

大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)

大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104LR7843为例) 电机驱动板主要采用两种驱动芯片,一种是全桥驱动(如:HIP4082),一种是半桥驱动(如&#xff…

单片机语言--C51语言的数据类型以及存储类型以及一些基本运算

C51语言 本文主要涉及C51语言的一些基本知识,比如C51语言的数据类型以及存储类型以及一些基本运算。 文章目录 C51语言一、 C51与标准C的比较二、 C51语言中的数据类型与存储类型2.1、C51的扩展数据类型2.2、数据存储类型 三、 C51的基本运算3.1 算术运算符3.2 逻辑…

奇数位字符反转算法

题目描述: 题目描述 编写函数void oddReverse(char *s),将所有奇数位的字符反转。输入格式 输入一个字符串 s保证输入字符串 s 的长度大于等于1小于等于100输出格式 输出修改后的字符串 s。输入样例1 012345输出样例1 052341输入样例2 01234输出样例2 03214输入样例…

Pycharm Jupyter ModuleNotFoundError 问题解决

Pycharm Jupyter ModuleNotFoundError 问题解决 0. 问题描述1. 解决方法 0. 问题描述 通过 Pycharm 启动的 Jypyter,发生 ModuleNotFoundError 的问题。 实际上相关 Module 已经通过 pip install 安装完成,所以怀疑是 Jupyter 的问题。 1. 解决方法 …

什么是HTML以及超链接,特殊符号转义的简单使用

目录 什么是HTML🌸 HTML版本 版本说明🌸 XHTML和HTML的区别 超链接🌸基本语法🌸链接的分类 特殊符号 什么是HTML HTML 不是编程语言,没有逻辑处理能力,没有计算能力,不能动态地生成内容&#x…

docker学习(七、搭建mysql8.2主从)

一、主库搭建 1.构建主库镜像 # 运行mysql镜像,配置端口3307为主库 docker run -p 3307:3306 --name mysql-master --privilegedtrue -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc…

前端:HTML+CSS+JavaScript实现轮播图2

前端:HTMLCSSJavaScript实现轮播图2 1. 和之前版本的区别2. 实现原理3. 针对上述的改进3. 参考代码 1. 和之前版本的区别 之前发布的那篇关于轮播图的文章在这:前端:HTMLCSSJavaScript实现轮播图,只能说存在问题吧!比…

HuggingFace学习笔记--Prompt-Tuning、P-Tuning和Prefix-Tuning高效微调

1--Prompt-Tuning 1-1--Prompt-Tuning介绍 Prompt-Tuning 高效微调只会训练新增的Prompt的表示层,模型的其余参数全部固定; 新增的 Prompt 内容可以分为 Hard Prompt 和 Soft Prompt 两类; Soft prompt 通常指的是一种较为宽泛或模糊的提示&…

搭乘“低代码”快车,引领食品行业数字化转型全新升级

数字化技术作为重塑传统行业重要的力量,正以不可逆转的趋势改变着企业经营与客户消费的方式。 在近些年的企业数字化服务与交流过程中,织信团队切实感受到大多数企业经营者们从怀疑到犹豫再到焦虑最终转为坚定的态度转变。 在这场数字化转型的竞赛中&a…

VS2009和VS2022的错误列表可复制粘贴为表格

在VS2019或VS2022中,可看到如下错误列表: 如果复制这两行错误信息: 然后把它粘贴到word文件,就可以看到以下表格: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0020 未定义标识符 "dd"…

0基础学java-day16-(坦克大战[1])

一、 坦克大战游戏演示 1 游戏演示 2.为什么写这个项目 3.写项目前的提醒 二、java 绘图坐标体系 1 坐标体系-介绍 2 坐标体系-像素 3 介绍-快速入门 package com.hspedu.draw;import javax.swing.*; import java.awt.*;/*** author 林然* version 1.0* 演示如何在面板画圆…

【python可视化系统源码】基于爬虫与可视化的电影推荐系统课题背景、目的、意义、研究思路、研究方法

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等学习内容。 目录 一、项目介绍: 二、文档学习资料: 三、模块截图: 四、开发技术与运行环境: 五、代码展示: 六、数据库表截图&#xff1a…

从简单到入门,一文掌握jvm底层知识文集。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

【Linux systemctl命令控制软件的启动和关闭】

文章目录 Linux systemctl命令:控制软件的启动和关闭1. 查看服务状态2. 启动服务3. 停止服务4. 重启服务5. 设置开机自启6. 取消开机自启7. 重新加载配置 Linux systemctl命令:控制软件的启动和关闭 1. 查看服务状态 要查看系统上所有服务的状态&#…

matlab RGB三元组和十六进制的转换

matlab画柱状图改颜色的时候,用三元组的形式,范围是[0,1] 我们获得了十六进制 到网站转换为[0,255] https://c.runoob.com/front-end/55/ 然后将得到的值/255 输入matlab就可以了

Bean作用域和生命周期

小王学习录 前言Bean的作用域什么是Bean的作用域Bean的六种作用域1. 单例作用域 singleton2. 原型作用域 prototype (多例作用域)3. 请求作用域 request4. 会话作用域 session5. 全局作用域 application6. Http WebSocket作用域 websocket Spring的执行流程和Bean的生命周期Spr…

网页设计--第6次课后作业

试用Vue相关指令完成对以下json数据的显示。显示效果如下: 其中:gender1 显示为女,gender2显示为男。价格超过30元,显示“有点小贵”。价格少于等于30元,则显示“价格亲民”。 data: {books: [{"id": "…

springboot集成字典注解

又是想下班的一天 文章目录 前言springboot使用AOP简单集成字典注解 一、通过注解进行字典赋值二、使用步骤1.添加注解2.序列化处理类3.实体类添加注解4.json返回值 总结 前言 springboot使用AOP简单集成字典注解 一、通过注解进行字典赋值 使用AOP切面实现字典的赋值,自动将…

MongoTemplate 常用查询

MongoTemplate是Spring Data MongoDB提供的一个Java编程接口,用于操作MongoDB数据库。它提供了一系列方法和功能,以便进行数据的插入、更新、删除和查询等操作。 使用MongoTemplate,你可以通过编写Java代码与MongoDB进行交互,而无…