基于circle group的Reed-Solomon codes

1. 引言

Polygon团队Ulrich Hab¨ock等人2023年论文 Reed-Solomon codes over the circle group。

前序博客有:

  • Plonky3 Mersenne素数域的Reed-Solomon codes设计

STARKs支持任意size的域,而不要求是椭圆曲线。STARKs中在选择域size时,越小越好,原因在于:

  • 更紧凑的trace表示。越紧凑,相应的FFT运算约cheap。
  • 大多数prover not in the extension field:
    • commit:FFT运算和hash运算为commit的主要开销。Prover的大部分开销在于commit。
    • evaluating constraints:FFT运算为evaluate的主要开销。

STARKs需要更小的域,当前有:

  • Plonky2(2021):Goldilocks域: p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1【64bit素数域】
  • RISC Zero(2021):Babybear域: p = 2 31 − 2 17 + 1 p=2^{31}-2^{17}+1 p=231217+1【31bit素数域】
  • Plonky3(2023):约31bit素数域——Mersenne M31域: p = 2 31 − 1 p=2^{31}-1 p=2311【31bit素数域】

寻找Mersenne域的目的是:

  • 相比于Babybear域,具有更快的运算(针对标准CPU架构,如:ARM,x86)
  • STARK友好(即FFT友好)

2. Mersenne M31域

Mersenne M31域: p = 2 31 − 1 p=2^{31}-1 p=2311【31bit素数域】

  • 其优点在于:具有非常快的运算。【乘法运算比Babybear快约30%到50%。】
    在这里插入图片描述
  • 其缺点在于:不是FFT友好的。因 p − 1 = 2 31 − 2 = 2 ⋅ ( 2 30 − 1 ) p-1=2^{31}-2=2\cdot(2^{30}-1) p1=2312=2(2301),其仅具有two-adic roots: ± 1 \pm 1 ±1

可能的应对策略有:

  • 1)non-twoadic FFT:不够快。
    在这里插入图片描述
  • 2)像Brakedown中的Expander codes:huge proof sizes,not faster。
  • 3)基于椭圆曲线的Algebraic Geometry(AG) codes,如ECFFT:advanced math。
  • 4)基于M31域,可使用更简单的Mersenne FFT。

3. 何为Mersenne FFT?

M31域的complex extension表示为:
M 3 1 C = M 31 [ i ] / ( i 2 + 1 ) = { x + i ⋅ y : x , y ∈ M 31 } M31_{\mathbb{C}}=M31[i]/(i^2+1)=\{x+i\cdot y:x,y\in M31\} M31C=M31[i]/(i2+1)={x+iy:x,yM31}【有 i 2 = − 1 i^2=-1 i2=1。】

M31的复数扩域具有如下属性:

  • 1)FFT友好性:
    ∣ M 3 1 C ∗ ∣ = p 2 − 1 = ( p + 1 ) ⋅ ( p − 1 ) = 2 31 ⋅ ( 2 31 − 2 ) |M31_{\mathbb{C}}^*|=p^2-1=(p+1)\cdot (p-1)=2^{31}\cdot (2^{31}-2) M31C=p21=(p+1)(p1)=231(2312)
  • 2) ( p + 1 ) (p+1) (p+1)-th roots of unity属于:【即 2 31 2^{31} 231-th roots of unity属于】
    S 1 = { x + i ⋅ y ∈ M 3 1 C : x 2 + y 2 = 1 } S_1=\{x+i\cdot y\in M31_{\mathbb{C}}:x^2+y^2=1\} S1={x+iyM31C:x2+y2=1}【有 ∣ S 1 ∣ = 2 31 |S_1|=2^{31} S1=231。】
    事实上:
    x 2 + y 2 = z ⋅ z ˉ = z ⋅ z p = z p + 1 x^2+y^2=z\cdot \bar{z}=z\cdot z^p=z^{p+1} x2+y2=zzˉ=zzp=zp+1

    其中 z ˉ \bar{z} zˉ z = x + i ⋅ y z=x+i\cdot y z=x+iy的共轭复数 z ˉ = x − i ⋅ y \bar{z}=x-i\cdot y zˉ=xiy
    由于有共轭等价为Frobenius isomorphism,即 z ˉ = z p \bar{z}=z^p zˉ=zp。从而有 x 2 + y 2 = z ⋅ z ˉ = z p + 1 x^2+y^2=z\cdot \bar{z}=z^{p+1} x2+y2=zzˉ=zp+1,同时有 ( p + 1 ) ∣ ( p 2 − 1 ) (p+1)|(p^2-1) (p+1)(p21),从而可得出结论:该circle group为 ( p + 1 ) (p+1) (p+1)-th roots of unity subgroup,具有的order为 p + 1 p+1 p+1

  • 3)对有理数的(知名)FFT 要比 对复数的FFT快得多:【下图的 b b bb bb是指Babybear域。】
    在这里插入图片描述
    原因在于其具有很好的对称性和共轭性:
    在这里插入图片描述

4. Extrapolation

H H H S 1 S_1 S1的subgroup, t ⋅ H t\cdot H tH为a coset, f : H → M 31 f:H\rightarrow M31 f:HM31为某“real”函数。
如下图所示,黑点表示 H H H subgroup,红点表示 t ⋅ H t\cdot H tH coset。
在这里插入图片描述

STARK处理流程中包括:

  • FFT-interpolate插值,以获得 f ^ ( z ) \hat{f}(z) f^(z)多项式。
  • 基于 t ⋅ H t\cdot H tH f ^ ( z ) \hat{f}(z) f^(z)多项式做 FFT-evaluate。【complex output!

f f f为real,且具有zero mean时,对应有如下定理:
在这里插入图片描述
在这里插入图片描述

5. 结论

可基于M31域获取“almost native” Reed-Solomon codes:

  • 基于coset t ⋅ H t\cdot H tH的values可弄成real(“compressed”)。
    • 基于M31域的承诺开销,与Babybear域的承诺开销基本相当,甚至会更快。具体取决于所采用的哈希函数。
  • 编码开销与native Reed-Solomon相当:
    • 基于M31域的FFT开销,与Babybear域的FFT开销基本相当,且有希望能更快。即将完成相应代码实现。

参考资料

[1] Ulrich Hab¨ock等人2023年论文 Reed-Solomon codes over the circle group
[2] 2023年11月视频 “Reed Solomon codes over the circle group" - Ulrich

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

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

相关文章

Unity中 Start和Awake的区别

Awake和Start在Unity中都是MonoBehaviour脚本中的生命周期函数 Awake函数在游戏对象首次被加载时调用,在游戏对象初始化之前调用。 start函数在游戏对象初始化完成后调用,在update第一次执行前调用。 这两个函数在其生命周期内都只会调用一次&#xf…

SpringBoot的启动流程

一、SpringBoot是什么? springboot是依赖于spring的,比起spring,除了拥有spring的全部功能以外,springboot无需繁琐的xml配置,这取决于它自身强大的自动装配功能;并且自身已嵌入Tomcat、Jetty等web容器&am…

redis+python 建立免费http-ip代理池;验证+留接口

前言: 效果图: 对于网络上的一些免费代理ip,http的有效性还是不错的;但是,https的可谓是凤毛菱角; 正巧,有一个web可以用http访问,于是我就想到不如直接拿着免费的HTTP代理去做这个! 思路: 1.单页获取ipporttime (获取time主要是为了后面使用的时候,依照时效可以做文章) 2.整…

windows环境搭建Zblog博客并发布上线公网可访问

文章目录 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. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

总结 CNN 模型:将焦点转移到基于注意力的架构

一、说明 在计算机视觉时代,卷积神经网络(CNN)几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现,这个领域才开始发生变化。现在,是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…

Springboot+vue的机动车号牌管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的机动车号牌管理系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的机动车号牌管理系统,采用M(model&#xff09…

项目九、无线组网

目录 1 配置AC使AP放出Wifi1.1 确保AP和AC三层互通且AP知道AC的IP1.1.1 配置管理SVI的IP1.1.2 该SVI配置DHCP下发IP给AP 1.2 AC为AP下发配置1.2.1 AC用哪个接口回复AP1.2.2 AC验证AP身份(可以不认证)1.2.3 配置ssid 文件确定Wifi名称1.2.4 配置security …

Apache Pulsar 技术系列 - 基于 Pulsar 的海量 DB 数据采集和分拣

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制、快速扩容、灵活容错等特性。本文是 Pulsar 技术系列中的一篇,主要介绍 Pulsar 在海量DB Binlog 增量数据采集、分拣场景下的应用。 前言…

程序员开发者神器:10个.Net开源项目

今天一起盘点下,8月份推荐的10个.Net开源项目(点击标题查看详情)。 1、基于C#开发的适合Windows开源文件管理器 该项目是一个基于C#开发、开源的文件管理器,适用于Windows,界面UI美观、方便轻松浏览文件。此外&#…

课程设计:C++实现哈夫曼编码

功能实现: //1:先计算每个字符的权重//2:构建哈夫曼树//3:得出每个字符的哈夫曼编码。//4:根据哈夫曼编码转化为字符 代码实现: // 哈夫曼编码.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //1:先计…

【如何让你的建筑设计更高效】推荐7个3DMAX建筑设计的实用插件

3DMAX是创建具有复杂对象和照片级真实感材质的大型三维项目的绝佳工具。它有用于粒子模拟和参数化建模的内置工具,只要有足够的时间和练习,你就可以创建任何东西。然而,总有改进的余地。许多第三方开发人员已经发布了自己的扩展,也…

YOLOv8优化策略:轻量级Backbone改进 | VanillaNet极简神经网络模型 | 华为诺亚2023

🚀🚀🚀本文改进:一种极简的神经网络模型 VanillaNet,支持vanillanet_5, vanillanet_6, vanillanet_7, vanillanet_8, vanillanet_9, vanillanet_10, vanillanet_11等版本 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,…

Spring高级bean的实例化方法

bean的实例化方法 构造方法 实例化bean第一种:使用默认无参构造函数(常用) 第二种创建bean实例:静态工厂实例化(了解) 第三种:实例工厂(了解)与FactoryBean(实用)

JVM判断对象是否存活之引用计数法、可达性分析

目录 前言 引用计数法 概念 优点 缺点 可达性分析 概念 缺点: 扩展: 1.GC Roots 概念 2.STW (Stop the world) 前言 JVM有两种算法来判断对象是否存活,分别是引用计数法和可达性分析算法,针对可达性分析算法STW时间长、…

【MySQL】_JDBC

目录 1. JDBC原理 2. 导入JDBC驱动包 3. 编写JDBC代码实现Insert 3.1 创建并初始化一个数据源 3.2 和数据库服务器建立连接 3.3 构造SQL语句 3.4 执行SQL语句 3.5 释放必要的资源 4. JDBC代码的优化 4.1 从控制台输入 4.2 避免SQL注入的SQL语句 5. 编写JDBC代码实现…

〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

Python数据分析实战① Python实现数据可视化

文章目录 一、数据可视化介绍二、matplotlib和pandas画图1.matplotlib简介和简单使用2.matplotlib常见作图类型3.使用pandas画图4.pandas中绘图与matplotlib结合使用 三、订单数据分析展示四、Titanic灾难数据分析显示 一、数据可视化介绍 数据可视化是指将数据放在可视环境中…

.Net中Redis的基本使用

前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…

wpf devexpress 排序、分组、过滤数据

这个教程示范在GridControl如何排序数据,分组数据给一个行创建一个过滤。这个教程基于前一个教程。 排序数据 可以使用GridControl 排序数据。这个例子如下过滤数据对于Order Date 和 Customer Id 行: 1、对于Order Date 和 Customer Id 行指定Colum…

Linux虚拟机中网络连接的三种方式

Linux 虚拟机中网络连接的三种方式 先假设一个场景,在教室中有三个人:张三、李四和王五(这三个人每人有一台主机),他们三个同处于一个网段中(192.169.0.XX),也就是说他们三个之间可…