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.hqwc.cn/news/259819.html

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

相关文章

uniapp实战 —— 弹出层 uni-popup (含vue3子组件调父组件的方法)

效果预览 弹出的内容 src\pages\goods\components\ServicePanel.vue <script setup lang"ts"> // 子组件调父组件的方法 const emit defineEmits<{(event: close): void }>() </script><template><view class"service-panel"…

重塑未来工作方式,亚马逊云科技re:Invent推出生成式AI助手Amazon Q

亚马逊云科技在re:Invent 2023宣布推出Amazon Q&#xff0c;这是一种新型生成式AI支持的助手&#xff0c;专门用于满足办公场景需要&#xff0c;可以根据客户业务进行定制。客户可以快速获得复杂问题的相关答案、生成内容并采取行动——所有这些都基于客户自身的信息存储库、代…

android项目实战之编辑器集成

引言 项目需要用到编辑器&#xff0c;采用RichEditor&#xff0c;如下效果 实现 1. 引入库2 implementation jp.wasabeef:richeditor-android:2.0.0 2. XML <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…

html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子

html中一个div中平均一行分配四个盒子&#xff0c;可展开与收起所有的盒子 1.截图显示部分 2.代码展示部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

【开源项目】智慧校园

智慧校园可视化运营平台&#xff0c;紧密围绕校园综合态势、教学管理、设备管理、校园安防等综合场景的智慧运营。飞渡科技数字孪生平台将学校离散的系统整合&#xff0c;实现了教学楼、设备和系统之间的互联互通&#xff0c;将传统校园升级为智能化、数字化的智慧校园。 综合…

【Docker】进阶之路:(九)Docker网络

【Docker】从零开始&#xff1a;19.Docker网络 Docker网络模式简介bridge网络模式host网络模式none网络模式container网络模式user-defined网络模式1.创建自定义的bridge网络2.使用自定义网络 高级网络配置docker network命令 为什么要了解容器的网络模式? 首先&#xff0c;容…

聚观早报 |华为畅享 70正式开售;梦饷科技双12玩法

【聚观365】12月8日消息 华为畅享 70正式开售 梦饷科技双12玩法 华为Mate X5应对火海挑战 谷歌发布AI模型Gemini 字节跳动开启新一轮回购 华为畅享 70正式开售 精致外观与创新科技兼具的华为畅享 70正式开售&#xff0c;1199元起搭载6000mAh超大电池&#xff0c;带来超强…

理解 GET、POST、PATCH 和 DELETE 请求的参数传递方式

理解 GET、POST、PATCH 和 DELETE 请求的参数传递方式 本文将向您介绍在使用 GET、POST、PATCH 和 DELETE 请求时如何传递参数。通过详细解释每种请求的参数传递方式和示例代码&#xff0c;您将了解如何正确地将数据发送到服务器并与之交互。 GET 请求的参数传递方式 在 GET…

AI聊天专题报告:ChatGPT全景图聊聊技术产品和未来

今天分享的AI系列深度研究报告&#xff1a;《AI聊天专题报告&#xff1a;ChatGPT全景图聊聊技术产品和未来》。 &#xff08;报告出品方&#xff1a;LanguageX&#xff09; 报告共计&#xff1a;22页 争论&#xff1a;ChatGPT算不算技术革命 回应吴军老师“ChatGPT不算新技术…

地址栏不安全提示

在使用浏览器时访问网站的时候&#xff0c;我们可能会遇到地址栏提示不安全的情况。这种情况通常都是是由于未安装有效SSL证书或者网站SSL证书过期等原因导致的。本文将介绍如何处理地址栏提示不安全的问题&#xff0c;以确保我们的上网安全。 1&#xff0c;缺少SSL证书&#x…

MySQL-日期时间函数详解及练习

目录 3.1 返回当前日期 3.2 提取日期部分 3.3 增加或减去时间 3.4 格式化时期或时间 3.5 牛客练习题 3.1 返回当前日期 1. CURDATE() 或 CURRENT_DATE() | 返回当前日期 select curdate();select current_date(); 结果&#xff1a; 2. CURTIME() 或 CURRENT_TIME() | 返…

【性能测试】Jmeter 配置元件(一):计数器

Jmeter 配置元件&#xff08;一&#xff09;&#xff1a;计数器 在 Jmeter 中&#xff0c;通过函数 ${__counter(,)} 可以实现每次加 1 1 1 的计数效果。但如果步长不为 1 1 1&#xff0c;则要利用到我们的计数器。 函数作用${__counter(,)}计数器&#xff0c;每次加 1${__d…