Plonky2:最好的SNARKs和STARKs

1. 引言

在这里插入图片描述
Plonky2为Polygon团队2022年1月发起的项目。其定位为ZKP证明系统。
开源代码实现见:

  • https://github.com/0xPolygonZero/plonky2(Rust + 汇编)

Plonky2可解锁当今2大主流ZKP类型——SNARKs和STARKs的扩容优势。

每个ZKP证明系统都有2大基本要素:

  • 1)在某算术电路内编写程序的方式。
  • 2)多项式承诺方案(Polynomial Commitment Scheme,PCS)。

2. Plonky2加速秘诀之:FRI多项式承诺方案——Fast、Small、Big、Slow

许多ZKRollups采用KZG作为其承诺方案。

KZG的问题之一在于其有限域是基于椭圆曲线的,椭圆曲线密码学有诸多限制,如:

  • 1)以太坊当前并不原生支持,可高效进行递归的椭圆曲线。
  • 2)椭圆曲线需要使用更大的有限域(至少256位),这在当代CPU上效率更低。

不同于KZG或Bulletproofs,Polygon Zero团队选择FRI多项式承诺方案,FRI多项式承诺方案通常与STARKs关联。

当需考虑到speed速度时,FRI提供了有趣的 time-space 权衡:

  • 1)FRI支持快的证明生成时效,但所生成的proof很大。大的proof若提交到以太坊主网上将非常昂贵和复杂。
  • 2)FRI也可生成很小的proof,但会非常慢。

Plonky2支持以上2种场景:

  • 1)当关注速度时,采用大proof。
  • 2)当关注proof size时,采用小proof。

为此,Plonky2的递归中的所有步骤,采用不同的参数,来对特定的proofing layer进行优化。因此Plonky2可充分利用FRI中独特的time-space权衡。正是这种灵活性使Plonky2在一系列实现中如此有用。

3. Plonky2加速秘诀之:Goldilocks Field

Plonky2解锁了FRI的性能提升能力,如何要让生成证明的速度更快?

正如Bredan在ZK Whiteboard Session中所指出:
若想真正更快,需关注到在硬件层面何为快?
即,可通过对用户硬件优化来构建更快速的生成ZKP的工具。且当今消费级CPU原生支持64位运算。

之前的recursive proof composition方案,需要:

  • trusted setup
  • cycles of expensive, pairing-friendly elliptic curves

但Plonky2不需要,秘诀就在于:

  • Polygon’s Hamish Ivey-Law所提议的Goldilocks Field—— p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1

Goldilocks Field针对硬件端的优化有2方面:

  • 1)其为64位,即意味着任意小于 p p p的域元素都可以64位表示。
  • 2) p p p的代数结构,支持在CPU上非常高效运算。

以域运算性能评估,简单的采用Goldilocks 64位域,比KZG承诺中的256位域,证明速度要快40倍。

4. Plonky2加速秘诀之:Starky for Fold

ZKP中的“recursion递归”属性,是指:

  • 使用单个proof,来证明多个独立的proofs。

递归是使用ZKP来解决区块链扩容的关键,因为其可将多个交易proofs,转换为单个proof,从而大幅降低验证交易的开销。

Plonky2是为递归而生的:
在这里插入图片描述
在ZK电路内写VM的最好方式不是采用Plonky2,而是采用Starky。

Starky为Polygon Zero团队开发的另一互补证明系统:

  • Plonky2:为针对递归和relational connectivity而优化。相比于为单笔交易生成证明所需,其更robust。
  • Starky:采用与Plonky2相同的有限域和哈希函数,但是没有computation-heavy arithmetizations。

因此,从交易层来看,Starky并行生成证明,然后Plonky2用于在每个额外层进行递归。

每组proofs可采用Plonky2来转换为(具有lower rate的)单个proof,因为:【即,rate越低,对应 fastest (and largest) proof;而rate越高,对应smallest proof size。】

  • the smallest rate compatible with the transition constraints renders the fastest (and largest) proof.
  • Those large proofs are again converted into a single proof using a higher rate, which generates the smallest proof size possible for posting to Ethereum’s Mainnet.

即,根据需要让proof生成速度快,或者根据需要让proof小。

  • 2020年,首个提交到以太坊的递归证明,生成用时约60秒。
  • 而2022年11月,Plonky2在MacBook Pro上生成递归证明用时仅需170毫秒。

参考资料

[1] Polygon Labs 2022年11月博客 Plonky2: A Deep Dive

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

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

相关文章

(一)docker:建立oracle数据库

前言,整个安装过程主要根据docker-images/OracleDatabase/SingleInstance /README.md ,里边对如何制作容器讲的比较清楚,唯一问题就是都是英文,可以使用谷歌浏览器自动翻译成中文,自己再对照英文相互参照来制作提前准备…

云HIS系统,Cloud HIS system,云HIS医院信息管理系统源码

通过云HIS平台,可以减少医院投资,无需自建机房和系统,快速实现信息化服务。系统升级及日常维护服务有云平台提供,无需配备专业IT维护人员进行系统维护。 一、his系统和云his系统的区别 His系统和云his系统是两种不同的计算平台,它们在技术架构上存在很大的差异。下…

【产品运营】产品需求应该如何管理

产品项目在进行时经常会有一些需求需要实现,需求是产品更新迭代的动力,需求也是从用户诉求转化而来;在做需求管理时,我们需要判断一个需求的优先级等方面,对产品进行优化; 目录: 一、 为什么要…

图像信号处理板设计原理图:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

综合图像处理硬件平台包括图像信号处理板2块,视频处理板1块,主控板1块,电源板1块,VPX背板1块。 一、板卡概述 图像信号处理板包括2片TI 多核DSP处理器-TMS320C6678,1片Xilinx FPGA XC7K420T-1FFG1156,1片X…

如何处理前端多语言支持?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Windows环境如何使用Zblog+cpoalr搭建个人网站并远程访问?

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

软件测试肖sir__python之ui自动化实战和讲解(03)

python之ui自动化实战和讲解 一、讲解常见控件定位 链接:http://cms.duoceshi.cn/cms/manage/login.do 1、定位文本框,密码框,按钮 2. 输入 :send_keys()方法 3、点击 :click() 方法 案例&…

qwen大模型,推理速度慢,单卡/双卡速度慢,flash-attention安装,解决方案

场景 阿里的通义千问qwen大模型,推理速度慢,单卡/双卡速度慢。 详细: 1、今日在使用qwen-14b的float16版本进行推理(BF16/FP16) 1.1 在qwen-14b-int4也会有同样的现象 2、使用3090 24G显卡两张 3、模型加载的device是auto&#x…

Qt音乐播放器

简介 使用QMediaPlayer和QMediaPlaylist制作的音乐播放器 编译环境 Qt5.6 MGW32 windows10 功能特性 GUI 功能 加载mp3文件,得到歌曲信息;打开文件夹加载或拖拽音乐文件加载滑动条关联播放进度、音量显示/隐藏歌曲列表,编辑歌曲列表&am…

Springboot中开启多线程,实现异步非阻塞、异步阻塞、有无返回值的场景

需求背景 近期项目已上线,闲着没事就对功能进行性能测试,测着测着感觉部分功能效果不是很理想,于是就想着使用多线程的方式对部分接口进行优化,顺便在这里记录下如何选择使用多线程。 实现多线程有两种开启方式:分别…

docker 部署mysql

Centos7为例 NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE_NAME"cpe:/o:centos:centos:7&qu…

MySql第三篇---索引的创建与设计原则

文章目录 MySql第三篇---索引的创建与设计原则索引的声明与使用索引的分类创建索引在已经存在的表上创建索引删除索引 索引的设计原则哪些情况适合创建索引?限制索引的数目哪些情况不适合创建索引? 小结 MySql第三篇—索引的创建与设计原则 索引的声明与…

flutter开发的一个小小小问题,内网依赖下不来

问题 由于众所周知的原因,flutter编译时,经常出现Could not get resource https://storage.googleapis.com/download.flutter.io…的问题,如下: * What went wrong: Could not determine the dependencies of task :app:lintVit…

docker企业单位私有镜像仓库 Harbor 搭建

docker私有镜像仓库 Harbor 搭建 背景说明使用环境安装部署docker安装docker-compose安装 安装 HarborHarbor UI管理docker 登录docker推送镜像和拉取镜像docker推送镜像docker 拉取镜像 背景说明 为了方便管理docker容器镜像,通常使用各大云平台提供的镜像服务&am…

React环境初始化

环境初始化 学习目标: 能够独立使用React脚手架创建一个React项目 1.使用脚手架创建项目 官方文档:(https://create-react-app.bootcss.com/)    - 打开命令行窗口    - 执行命令      npx create-react-app projectName    说明&#xff1a…

常用Web安全扫描工具合集

漏洞扫描是一种安全检测行为,更是一类重要的网络安全技术,它能够有效提高网络的安全性,而且漏洞扫描属于主动的防范措施,可以很好地避免黑客攻击行为,做到防患于未然。那么好用的漏洞扫描工具有哪些? 1、A…

数据结构 哈希表

数据结构 哈希表 文章目录 数据结构 哈希表1. 概念2. 冲突-概念3. 冲突-避免3.1 哈希函数设计3.2 负载因子调节 4.冲突-解决4.1 闭散列4.2 开散列(哈希桶)4.3 哈希桶实现 5. 性能分析6. 和java类集的关系 1. 概念 顺序结构以及平衡树中,元素关键码与其存储位置之间…

QML之Repeater 控件使用

Repeater 控件是 重复作用 根据 model中的index 数量进行重复 废话不说 直接看如何用 当model 为数字时 Rectangle{height: 1200width: 500visible: trueanchors.fill: parentColumn{spacing: 20Repeater{model: 10delegate: Rectangle{width: 60height: 20color: index%2 …

Locust负载测试工具实操

本中介绍如何使用Locust为开发的服务/网站执行负载测试。 Locust 是一个开源负载测试工具,可以通过 Python 代码构造来定义用户行为,避免混乱的 UI 和臃肿的 XML 配置。 步骤 设置Locust。 在简单的 HTTP 服务上模拟基本负载测试。 准备条件 Python…

基于Pix4D使用无人机光学影像制作正射影像(DOM)和数字表面模型(DSM) 操作步骤

基于Pix4D使用无人机光学影像制作正射影像(DOM)和数字表面模型(DSM) 操作步骤 0. 前言1.获取无人机光学影像2.DOM和DSM3.操作步骤3.1 初始界面3.2 新建项目3.3查看处理过程报告3.4查看处理进度和成果 4.在ArcMap中打开DSM和DOM 0.…