浅谈 Binius:用 Rust 实现的硬件优化 SNARK 协议

news2024/10/7 0:27:48

图片

作者:Ulvetanna 团队

编译:TinTinLand

原文链接:https://www.ulvetanna.io/news/binius-hardware-optimized-snark

在一篇新的研究论文中,零知识证明技术开发团队 Ulvetanna 展示了一种基于二进制域塔 (Towers of Binary Fields)的性能优化的 SNARK 构建方法。

为什么在整个以太坊协议中使用的 Keccak-256 哈希函数在 CPU 上运行得如此之快,但对于 zk-SNARKs 却遇到了众所周知的发展瓶颈。这种差异目前阻碍了许多构建 zk-rollups、zk-bridges 和其他旨在使用加密技术证明扩展区块链计算的解决方案。问题源于计算机使用的基本数据类型与当今 SNARKs 使用的数据类型之间的不匹配。在 Ulvetanna 团队的新研究论文《二元域塔上的简洁论证》(Succinct Arguments over Towers of Binary Fields,https://eprint.iacr.org/2023/1784)中,我们提出了一种新的 SNARK 构建方法,最终将为真实世界的计算带来数量级的性能改进。

此外,我们正在开源我们正在进行中的 Rust 实现系统,名为 Binius (https://gitlab.com/UlvetannaOSS/binius)。

图片

Bits(0 和 1)是信息的基本单位。从半导体门到高级编程语言,在所有常见的计算方法中,我们都用 Bits 进行处理,8-bit 字节、32-bit 或 64-bit 字符。另一方面,当今广泛使用的 SNARKs 基本上是在素数阶有限域上进行计算,通常为 256 bits 左右的阶上。类似 Polygon Zero 和 RISC Zero 这样的团队,已经通过从 256-bits 素数域转向更小的素数域(约为 64-bits 和 32-bits)而取得了性能突破。在 Ulvetanna,我们开始思考为什么我们不能将小域的优势一直扩展到最小的域:单个位域(the single-bit field)。

从数学上讲,1-bit 被称为 GF(2),它属于一种称为二进制域(binary fields)的系列。对于那些之前没有接触过这个的人来说,二进制域可能一开始看起来很奇怪。k-bit 二进制域元素的加法等于 k-bit 字符串的异或(XOR)运算。而乘法二进制域元素则更像是多项式的模乘法,而不是整数的模乘法。然而,这些域具有一些卓越的特性,允许在数字电路中实现非常高效。在密码学中,二进制域并不是一个新概念;事实上,AES-GCM 加密标准使用了两种不同的二进制域,GF(28) 和 GF(2128)。在 SNARKs 和可验证计算的世界中,人们普遍忽视了备受赞誉的 Fast Reed–Solomon IOP of Proximity(https://eccc.weizmann.ac.il/report/2017/134/)。它是 STARK 协议的核心,最初也是为二进制域设计的。

数据类型不匹配不仅仅是一个理论问题;许多 ZK 电路,包括旨在验证 Keccak-256 哈希的电路,实际上使用了更大的域元素来表示 bit。例如,像 PLONK 和 Groth16 这样的椭圆曲线 SNARKs,需要 256-bit 素域来确保安全性,但它们通常使用具有 256-bit 域元素的电路,其中许多电线上的值为 0 或 1。这种做法浪费了 255-bit,并且导致证明有意义的 SNARKs 需要大量的内存。我们将这种现象称为嵌入开销(overhead of embedding)。像我们之前在一篇博客中所介绍的 Goldilocks,虽然减少了这种嵌入开销,但仍然可以节省 64 倍。这恰恰是我们希望用我们的技术实现的改进。

尽管二进制域看起来很有吸引力,但直到现在,存在着各种技术问题阻碍了它们在我们行业中的应用。然而,我们发现通过应用和调整最近几年发布的作品中的技术,如 Brakedown(https://dl.acm.org/doi/abs/10.1007/978-3-031-38545-2_7)、HyperPlonk(https://link.springer.com/chapter/10.1007/978-3-031-30617-4_17)和 Lasso(https://eprint.iacr.org/2023/1216),我们设法规避了这些问题。我们研究的结果是一个实用且高效的 GF(2) SNARK 协议。我们为 GF(2) 开发了一种多项式承诺方案,不会产生任何嵌入开销,这意味着承诺数据的 bit 效率就像承诺 64-bit chunks 一样高效。Binius 构造不仅适用于 GF(2),还适用于一整个二进制域系统,这些域具有二次幂的大小,称为二进制域塔(a tower of binary fields)。这一点延伸到了算术化层面,意味着我们的 SNARK 支持的 PLONKish 和 AIR 约束系统同时可以访问整个域塔。实际上,约束系统层可以使用与 bit、字节和字匹配大小的数据类型,这将允许进一步提高性能。

在 SNARKs 中使用二进制域的一个潜在缺点是,无法在约束系统中“原生地”(natively)执行整数加法和乘法。然而,像 Lasso 这样高效查找参数的出现,已经降低了非本地电路操作的成本。虽然以前 Lasso 本身只被认为优于基于椭圆曲线的 SNARKS 的备用查找参数,但二进制塔提供了另一个可以捕捉 Lasso 改进的场景。利用我们可以廉价地直接操作 bit 的能力,高效地查找协议以及我们开发的其他几种多线性多项式协议的能力,我们的论文提供了能够高效执行整数加法和乘法的约束系统部件。作为另一个示例,我们还为验证完整的 Keccak-256 哈希函数提供了一个约束系统,每个 Keccak-f 排列只需要提交 12 千字节的数据。

我们认为二进制域塔 SNARKs 有三个主要优点

降低内存用量和计算成本

首先,这种方法通过最大化小域的优势,大大降低了内存使用量和计算成本。Binius 在提交 1-bit 元素方面已经比我们基准测试的下一个最佳系统 plonky2(https://github.com/0xPolygonZero/plonky2)高效 50 倍,并且还有许多优化空间。

与标准哈希函数兼容

第二个优点是与标准哈希函数的兼容性。二进制域塔 SNARKs 可以高效执行像 XOR 和逻辑移位这样的位操作,在 SHA-256、Keccak-256 和其他对称加密原语中广泛使用。我们特别认为 Grøstl(https://www.groestl.info/)是一种适合与我们技术验证的哈希函数。虽然 Grøstl 并不像 Keccak 和 Blake2 那样广为人知,但它曾作为 SHA-3 竞赛的最终入围者与它们并列。Grøstl 的设计基于 AES,并经历了广泛的密码分析,这比今天许多 SNARKs 依赖的 Poseidon 哈希函数更令人放心。展望未来,我们预计 Binius 也能够以零知识技术高效地证明和验证 AES-GCM 加密的密文的属性。

硬件友好实现

最后,第三个重要优点是二进制域的硬件友好实现。二进制域的算术运算仅依赖于简单的逻辑门(例如 XOR)和位移,这是免费的。这与素数域形成鲜明对比,后者需要复杂的宽整数乘法器。这在哈希电路中尤为重要:Poseidon 和 Poseidon2 创造的计算瓶颈在 Grøstl 中完全消失。这意味着我们可以在相同的硅片区域上容纳更多的算术和哈希加速器,并以比以前甚至选择的素数域更高的时钟频率运行它们。此外,由于 Binius 证明器减少了嵌入开销所导致的内存需求,因此在芯片上使用的内存减少了,主机和加速器之间的带宽压力也减轻了。

Ulvetanna 是一家密码加速公司,我们的使命是加速 ZK 革命。团队结合了我们在硬件实现、高性能计算和密码学方面的专业知识,努力推动 Binius。虽然软件实现已经展示了出色的性能,但我们的系统将通过硬件加速真正发挥作用。我们已经在 FPGA 中内部实现了几个关键模块。我们看到的结果承诺在证明性能上将实现数量级的改进。敬请期待后续的技术报告。

这项工作远未结束,我们才刚刚开始。我们期待与 Web3 和零知识社区的合作,使用二进制域塔和 Binius 提供更高级别的 SNARK 性能。关注我们的博客和 X(前身为 Twitter)上的 @UlvetannaHQ 以获取未来更新的信息。我们正在积极寻找更多出色的工程师和计算机科学家,帮助我们推动可验证计算的极限。如果您想加入我们这个旅程,请查看我们的求职网站:https://www.ulvetanna.io/careers

感谢 Justin Thaler 的多次交流,为我们的研究工作做出了贡献。感谢 Eli Ben-Sasson 回答了我们关于二进制域 STARK 的几个问题。感谢 Achal Srinivasan 和 Paradigm 设计团队对 Binius logo 设计的帮助。

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

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

相关文章

【2021研电赛】多路超高清摄像头控制器设计|HDC队

本作品介绍参与极术社区的有奖征集|分享研电赛作品扩大影响力,更有重磅电子产品免费领取! 1.作品简介 超高清摄像头广泛应用于各个领域,越来越多的应用场景需要多摄像头协同工作。然而,市面上现有的摄像头往往采用单个镜头,缺少…

深入理解 Django 中的事务管理

概要 在数据库操作中,事务是确保数据完整性和一致性的关键机制。Django 作为一个强大的 Python Web 框架,提供了灵活而强大的事务管理功能。理解和正确使用 Django 中的事务对于开发高质量的 Web 应用至关重要。本文将深入探讨 Django 的事务管理机制&a…

一起学docker系列之八使用 Docker 安装配置 MySQL

目录 前言步骤 1:拉取 MySQL 镜像步骤 2:运行 MySQL 容器步骤 3:检查容器状态步骤 4:进入 MySQL 容器步骤 5:配置 MySQL 字符编码步骤 6:重启 MySQL 容器步骤 7:测试字符编码步骤 8:…

Windows IDEA Python开发环境安装+爬虫示例

文章目录 Python下载安装开发工具IDEA包管理安装pip基本用法从 requirements.txt 安装依赖 项目示例部署在 Linux 上安装Python在 Linux 上创建虚拟环境:安装依赖:运行你的爬虫 Python下载安装 Python 安装包下载地址:https://www.python.or…

TCP/IP、Http、Socket之间的区别

目录 前言 一、TCP/IP协议 二、HTTP协议 三、Socket通信机制 四、TCP/IP、HTTP和Socket之间的区别 总结 前言 TCP/IP、HTTP和Socket是计算机网络中的三个重要概念,它们之间有着密切的联系和区别。 一、TCP/IP协议 TCP/IP是指传输控制协议/因特网协议&#x…

【操作系统】文件系统的实现

文章目录 文件系统的层次结构文件系统的实现目录实现线性列表哈希表 文件的实现连续分配链接分配索引分配 文件存储空间管理空闲表法与空闲链表法成组链接法位示图法 文件系统的层次结构 文件系统从上往下分为了五层,分别是用户调用接口、文件目录系统、存取控制模…

【腾讯云云上实验室】探索保护数据之盾背后的安全监控机制

当今数字化时代,数据安全成为了企业和个人最为关注的重要议题之一。随着数据规模的不断增长和数据应用的广泛普及,如何保护数据的安全性和隐私性成为了迫切的需求。 今天,我将带领大家一起探索腾讯云云上实验室所推出的向量数据库&#xff0c…

Django QuerySet.order_by SQL注入漏洞(CVE-2021-35042)

漏洞描述 Django 于 2021年7月1日发布了一个安全更新,修复了函数QuerySet.order_by中的 SQL 注入漏洞。 参考链接: Django security releases issued: 3.2.5 and 3.1.13 | Weblog | Django 该漏洞需要开发人员使用order_by功能。此外,还可…

echarts设置容器宽度设置为100%只显示100px宽度

在使用echarts时,写在tab页中的图表宽度明明设成了100%,但是在页面上实际却只有100px宽 原因很简单,在tab页中,图表的父容器div是隐藏的(display:none),图表在执行js初始化的时候找…

比起转本备考不努力,更让人痛心的是这五点

在转本考试中,有一部分同学花费了很多时间去学习,看似很努力,却没有太大的进步与成果。 比起不努力,努力了没有效果才是更让人心痛的。下面这五点行为,希望大家一定要避免!一、纠结转本我们身边可能不乏转…

基本微信小程序的图书馆座位管理系统

项目介绍 图书馆因有良好的学习氛围、大量的学习资源吸引大家前来学习,图书馆还未开馆就有大量的用户在门口排队等待,有限的座位与日益增加的自主学习者之间形成了供不应求的现象,再加上不了解图书馆的座位使用情况和恶意占座等现象,使得有限的学习座位越发紧张。本团队针对此…

10年测试老鸟,自动化测试经验10条建议,一路狂飙...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、哪一刻&#x…

AIOps探索 | 应急处置中排障的降本增效方法探索(下)

文章来源:公众号ID-布博士(擎创科技资深产品专家) 哈喽~上期内容我们分享了传统调用链系统与CMDB系统的缺陷、服务所有权模型是什么、服务所有权模型分类。这期我们来说一说如何落地服务所有权模型,以及好用的模型推荐&#xff0…

Netty 模型理解

参考文章 1 参考文章 2 官网API文档 Reactor模型 Netty模型 Netty主要基于主从Reactor多线程模型进行了一定的修改,该模型包括以下几个组件: MainReactor(主Reactor):负责处理客户端的连接请求。它监听服务器上的端口…

【洛谷 P1636】Einstein学画画 题解(图论+欧拉通路)

Einstein学画画 题目描述 Einstein 学起了画画。 此人比较懒~~,他希望用最少的笔画画出一张画…… 给定一个无向图,包含 n n n 个顶点(编号 1 ∼ n 1 \sim n 1∼n), m m m 条边,求最少用多少笔可以画…

京东采销面对面,洞悉行业新趋势 京东3C数码生态大会在武汉圆满举行

为促进湖北省3C数码产业发展,本地企业降本增效、促进行业交流、充分发挥京东集团全链路生态服务能力,支持地方3C特色产业提质增量。2023年11月23日,由京东零售、京东物流主办,湖北省电子商务行业协会联合协办的“聚力共赢、携手共…

《C++ Primer》第10章 算法(一)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 10.1 概述(P336) 大多数算法定义在头文件 algorithm 中,头文件 numeric 中也定义了一组数值泛型算法。 一般情况下,算法不直接操作容器,而是通过…

SOLIDWORKS 2024新功能之CAM篇

SOLIDWORKS 2024 新功能 CAM篇目录概述 • 附加探测周期参数 • 反转切割的固定循环螺纹加工 • 包含装配体的零件的正确进给/速度数据 • Heidenhain 探测类型 • 2.5 轴特征向导中岛屿的终止条件 • 链接轮廓铣削操作的切入引导和切出引导参数 • 螺纹铣削操作的最小孔…

SpringCloud 微服务全栈体系(十七)

第十一章 分布式搜索引擎 elasticsearch 七、搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 1. 排序 elasticsearch 默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有&#…

标题导航点击导航滑动到指定位置滑动到指定位置选中对应导航vue3

菜单导航栏点击导航滑动到指定位置&滑动到指定位置选中对应导航 效果 实现 话不多说直接上代码,有用素质三连(点赞、评论、加关注) import { defineComponent, onBeforeUnmount, onMounted, reactive, ref } from "vue"; import { map } from &quo…