当前位置: 首页 > news >正文

arkworks工具栈概览

1. 引言

arkworks定位为zkSNARK编程的Rust生态。其开源代码见:

  • https://github.com/arkworks-rs/

arkworks目前已广泛用于大量项目中,如:Aleo、anoma、celo、Espresso、Findora、Manta、Mina、Nimiq、penumbra等等。
在这里插入图片描述
参与arkworks开源实现的contributors众多:
在这里插入图片描述

arkworks通过通用抽象和模块化的设计,其总体工具栈架构为:
在这里插入图片描述

其中:

  • 1)Algebra(通用有限域、曲线和多项式接口层):希望达成的效果为:很容易添加实现新的域或曲线;性能与特定手工优化的实现相当甚至更优。不希望有大量重复冗余的代码和工作量。

    • 所有SNARKs都需要高效有限域运算(ark-ff),以及基于这些有限域的高效多项式运算(ark-poly)
    • 许多流行的SNARKs(如Groth16、Marlin、PLONK、Halo等)还要求实现扩域(ark-ff) 以及基于这些扩域的 椭圆曲线(ark-ec为抽象的各种traits,ark-curves为具体的椭圆曲线实现)

    基于人类工程学考虑,为实现椭圆曲线,相应的流程为:

    • 1.1)实现相关的域
    • 1.2)实现该曲线
      • 1.2.1)指定曲线方程式系数。
      • 1.2.2)指定cofactor和generator。
        在这里插入图片描述
        在这里插入图片描述
        如上所示,arkworks抽象出的接口非常简单高效,很容易实现新曲线,如:
    • 以太坊、ZCash、Algorand使用的:BLS12-381,以及相应的Jubjub和Bandersnatch曲线。
    • 以太坊使用的:BN254曲线。
    • Mina和ZCash使用的:Palla和Vesta 2-cycle曲线。
    • Celo和Aleo使用的:BLS12-377,以及相应的BW6和CP6曲线。
    • MNT6-298和MNT4-298 2-cycle曲线。
    • MNT4-753和MNT6-753 2-cycle曲线。
      在这里插入图片描述

    同时arkworks模块化的设计,其通用曲线接口规范,很容易在不同曲线间切换,如:
    在这里插入图片描述
    arkworks的通用实现,与特定专业且手工优化实现,性能相当或更优:
    在这里插入图片描述

  • 2)SNARK开发(通用SNARK和约束系统接口层):主要关心的是:性能优化;数学实现;易于比较和benchmark。不关心曲线细节,以及约束生成。
    模块化目的是:通过通用SNARK接口,使得易于在不同证明系统和多项式承诺方案间切换。
    在这里插入图片描述
    人类工程学考虑为:代码应与数学公式匹配,以便于审计和发现bug。如以Groth16 Verifier为例:
    在这里插入图片描述

  • 3)约束系统编程(通用SNARK应用框架):直接编写代数约束是痛苦的。有多种高级方法来编写约束系统并编译为代数约束,但需要在性能和人类工程学中做权衡。
    其关注的点是:好的性能;具备人类工程需的约束编写体验。不关注的点是:SNARKs细节,以及曲线细节。
    以Karatsuba乘法为例:
    在这里插入图片描述
    而arkworks的约束编写与直观算法匹配,符合人类工程学设计,易于审计:
    在这里插入图片描述

参考问下

[1] 2022年4月视频 arkworks: Rust Ecosystem for zkSNARKs

相关文章:

arkworks工具栈概览

1. 引言 arkworks定位为zkSNARK编程的Rust生态。其开源代码见: https://github.com/arkworks-rs/ arkworks目前已广泛用于大量项目中,如:Aleo、anoma、celo、Espresso、Findora、Manta、Mina、Nimiq、penumbra等等。 参与arkworks开源实现…...

华为云云服务器云耀L实例评测 | 在华为云耀L实例上搭建电商店铺管理系统:一次场景体验

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

sqlserver存储过程报错:当前事务无法提交,而且无法支持写入日志文件的操作。请回滚该事务。

现象: 系统出现异常,手动执行过程提示如上。 问题排查: 1.直接执行的过程事务挂起(排除) 2.重启数据库实例(重启后无效) 3.过程中套用过程,套用的过程中使用事务,因为…...

二刷力扣--字符串

字符串 摘自Python文档-标准库: 在Python中, 字符串是由 Unicode 码位构成的不可变序列。 由于不存在单独的“字符”类型,对字符串做索引操作将产生一个长度为 1 的字符串。 也就是说,对于一个非空字符串 s, s[0] s[0:1]。 不存…...

如何将 OBJ 模型转换和压缩为 GLTF 以与 AWS IoT TwinMaker 配合使用

推荐:使用NSDT场景编辑器快速搭建3D应用场景 概述 在这篇博文中,引用了几种文件扩展名和模型格式。在开始之前,最好了解以下内容: OBJ – 对象文件,一种标准的 3D 图像格式,可以通过各种 3D 图像编辑程序…...

零基础学前端(四)重点讲解 CSS

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码,以身体感悟带动头脑去理解新知识 3. 初学者切忌,不要眼花缭乱,不要四处找其它文档,要坚定一个教授者的方式,将其学通透&#xff…...

类和对象【初始化列表与友元】

全文目录 初始化列表特性 explicit关键字static成员特性 友元友元函数友元类内部类特性 初始化列表 构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。 对象的初始化是在初始化列表进行…...

ActiveRecord::Migration.maintain_test_schema!

测试gem: rspec-rails 问题描述 在使用 rspec-rails 进行测试时,出现了以下错误 ActiveRecord::StatementInvalid: UndefinedFunction: ERROR: function init_id() does not exist这个错误与数据库架构有关。 schema.rb中 create_table "users…...

逆向-beginners之helloworld

#include <stdio.h> int _main() { printf("hello world.\n"); return 0; } // 上面的代码等效于&#xff1a; char *SG3830[] {"hello, world\n"}; int main() { printf("%s", *SG3830); return 0; } #if 0 /* * i…...

如何微调甜甜圈模型——使用示例

Python 中的 Donut 模型可用于从给定图像中提取文本。这在各种场景中都很有用,例如扫描收据。 您可以轻松地。但与人工智能模型一样,您应该根据您的特定需求微调模型。 我编写本教程是因为我没有找到任何资源来准确展示如何使用我的数据集微调 Donut 模型。因此,我必须从其…...

小程序中如何查看指定会员的付款记录

在小程序中&#xff0c;我们可以通过一些简单的步骤来查看指定会员的付款记录。下面是具体的操作流程&#xff1a; 1. 找到指定的会员卡。在管理员后台->会员管理处&#xff0c;找到需要查看付款记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。 2. 查看会员卡…...

LeetCode_贪心算法_困难_630.课程表 III

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 这里有 n 门不同的在线课程&#xff0c;按从 1 到 n 编号。给你一个数组 courses &#xff0c;其中 courses[i] [durationi, lastDayi] 表示第 i 门课将会持续上 durationi 天课&#xff0c;并且必须在不晚于…...

Drozer安装

Drozer安装包下载 https://labs.withsecure.com/tools/drozer Drozer需要的python包下载 pip install "pip<21.0" pyOpenSSL pip install "pip<21.0" service_identity pip install "pip<21.0" twisted pip install "pip<…...

752. 打开转盘锁

链接&#xff1a; 752. 打开转盘锁 题解&#xff1a; class Solution { public:int openLock(vector<string>& deadends, string target) {std::unordered_set<std::string> table(deadends.begin(), deadends.end());if (table.find("0000") ! t…...

Bearly:基于人工智能的AI写作文章生成工具

【产品介绍】 名称 Bearly 具体描述 Bearly是一个AI人工智能内容创作工具。你可以用Bearly来阅读、写作、创作&#xff0c;提高你的效率。包括使用Bearly来生成网页的摘要、标题、关键点&#xff0c;也可以用Bearly来生成创意内容、艺术图片、文案编辑等。帮助你克…...

详解哈希,理解及应用

全文目录 概念哈希冲突及原因解决哈希冲突的方法闭散列线性探测二次探测扩容 开散列扩容 哈希的应用位图布隆过滤器 概念 通过映射关系将关键字映射到存储位置&#xff0c;并实现增删改查操作。 通过上面的方法构造出来的结构就叫哈希表&#xff08;散列表&#xff09;&#x…...

解决js加减乘除精度丢失问题

公共类, 将科学计数法的数字转为字符串(以下加减乘除依赖该方法) var toNonExponential (num)> {if(num null) {return num;}if(typeof num "number") {var m num.toExponential().match(/\d(?:\.(\d*))?e([-]\d)/);return num.toFixed(Math.max(0, (m[1] …...

八股——const 关键字

1.const作用 作用&#xff1a;const用于保护指针指向数据不被修改 测试代码1 显示数组的函数不小心修改了指针指向的值&#xff0c;这时候没有加const关键字&#xff0c;编译器不会报错 #include <stdio.h> void showar(int ar[]);int main(void) {int ar[4]{2,3,4,5…...

QT object元对象

qt中的元对象系统提供了对象间通信的信号和槽机制、运行时类型 信息和动态属性系统&#xff1b; 1.该类必须继承自QObject类&#xff1b; 2.必须在类的私有声明区声明Q_OBJECT宏&#xff08;在类定义时&#xff0c;如果没有指定&#xff0c;public或private,则默认为private&a…...

互斥锁,条件变量,信号量的三个小demo

仨demo 一、 一个线程读文件&#xff0c;另一个线程将读取的内容输出到终端 1.1 要求 创建两个线程&#xff0c;其中一个线程读取文件中的数据&#xff0c;另外一个线程将读取到的内容打印到终端上&#xff0c;类似实现cat一个文件。 cat数据完毕后&#xff0c;要结束两个线…...

Neo-Launcher数据库架构:数据存储和管理的深度解析

Neo-Launcher数据库架构&#xff1a;数据存储和管理的深度解析 【免费下载链接】Neo-Launcher Neo-Launcher 项目地址: https://gitcode.com/gh_mirrors/ne/Neo-Launcher Neo-Launcher是一款由Neo Collective开发的开源启动器应用&#xff0c;其高效的数据存储和管理系统…...

Claude Code / Cursor 写的代码,你敢直接上线吗?我踩过一次坑,再也不敢

&#x1f449; 这是一个或许对你有用的社群&#x1f431; 一对一交流/面试小册/简历优化/求职解惑&#xff0c;欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料&#xff1a; 《项目实战&#xff08;视频&#xff09;》&#xff1a;从书中学&#xff0c;往事上…...

3步搞定B站视频下载:BBDown让你的收藏从未如此简单 [特殊字符]

3步搞定B站视频下载&#xff1a;BBDown让你的收藏从未如此简单 &#x1f3ac; 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 还在为无法离线观看B站优质内容而烦恼吗&#xff1f;BBDo…...

终极飞书文档迁移方案:25分钟批量导出700+文档的完整指南

终极飞书文档迁移方案&#xff1a;25分钟批量导出700文档的完整指南 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 你是否曾因公司办公软件切换或数据备份而面临飞书文档迁移的困境&#xff1f;…...

3PEAK思瑞浦 TPA3532-VS1R MSOP8 运算放大器

特性 超低输入偏置电流: -在TA25C时最大士1pA(实验室测试限值) 安 -在-40C至125C(实验室测试限值)下&#xff0c;最大30皮 低输入失调电压:250V(最大值) 集成保护缓冲器&#xff0c;最大偏移电压为200V 低电压噪声密度:18nV/vHz(在1kHz时) 宽带宽:2.1MHz 供电电压:4.5V至16V(2.…...

国产替代之SFT1452-H与VBFB1251K参数对比报告

N沟道功率MOSFET参数对比分析报告一、产品概述SFT1452-H&#xff1a;安森美&#xff08;onsemi&#xff09;N沟道功率MOSFET&#xff0c;耐压250V&#xff0c;低导通电阻&#xff0c;ESD门极保护&#xff0c;符合无卤素标准。封装&#xff1a;IPAK (TO-251)。适用于通用开关应用…...

告别重复点击!淘金币自动化脚本让你每天多出20分钟自由时间

告别重复点击&#xff01;淘金币自动化脚本让你每天多出20分钟自由时间 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi …...

在Node.js后端服务中集成Taotoken调用大模型指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Node.js后端服务中集成Taotoken调用大模型指南 将大模型能力集成到后端服务是现代应用开发的常见需求。Taotoken平台提供了OpenA…...

如何解锁数字化制造的数据瓶颈:stltostp的轻量级STL转STEP解决方案

如何解锁数字化制造的数据瓶颈&#xff1a;stltostp的轻量级STL转STEP解决方案 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在数字化制造与工业4.0转型的浪潮中&#xff0c;数据格式的互操作…...

黄仁勋CMU演讲:取代你的是会AI的人,所有人同一起跑线,奔跑吧

老黄又当博士了。这是他的第7个荣誉博士学位&#xff0c;而且英特尔CEO陈立武亲自为其授袍。卡内基梅隆大学&#xff08;CMU&#xff09;最新一届毕业典礼上&#xff0c;黄仁勋向5800多名毕业生发表演讲。面对AI浪潮的冲击&#xff0c;所有人都在焦虑、都在担心会不会被AI取代&…...