基于 Cardano 链的隐私投票应用,投票人用零知识证明验证身份,投票内容匿名且结果上链不可篡改。
iden3/snarkjs
基于 JavaScript 和 WebAssembly 的 zkSNARK 库,支持 Groth16、PLONK、FFLONK 证明生成与验证,配合 circom 电路使用。
- Star
- 2,042
- Fork
- 489
- 未关闭 Issue
- 135
- 最近提交
- 上个月
这是什么?
snarkjs 是一个用 JavaScript 和 WebAssembly 实现的零知识证明工具库,支持 Groth16、PLONK 和 FFLONK 三种证明系统,可直接使用 circom 编译生成的电路。
除了生成和验证证明,它还提供可信设置多方仪式所需的工具,包括创建和贡献通用的 powers of tau 文件、执行电路相关的第二阶段贡献、应用随机信标,以及验证生成的记录。其 ptau 格式与其他仪式实现兼容。
它既可以通过命令行工具和 API 在 Node.js 中运行,也可以通过打包好的文件在浏览器中使用。底层密码学计算由 WASM 完成,并借助 worker 线程并行处理。
核心功能
- 01生成并验证 Groth16、PLONK 和 FFLONK 类型的 zkSNARK 证明。
- 02可在 Node.js 中通过命令行和 API 使用,也可在浏览器中运行。
- 03提供 powers of tau 与第二阶段可信设置仪式的完整工具。
- 04支持导出验证密钥和 Solidity 验证合约。
- 05基于 circom 生成的 WASM 计算 witness,并与 R1CS 文件进行校验。
适用场景
- 开发在不暴露输入的前提下证明某些陈述的隐私保护应用。
- 为 circom 电路执行可信设置仪式。
- 将零知识证明的验证器部署为以太坊智能合约。
- 在网页端生成零知识证明并进行本地验证。
快速上手
- 1
安装 Node.js(较新的 LTS 版本,v18 或更高)
- 2
使用 npm 全局安装 snarkjs
npm install -g snarkjs@latest - 3
按照官方安装指南安装 circom
- 4
查看 snarkjs 命令列表
snarkjs --help
使用前须知
- 采用 GPL-3.0 许可证,这是一种 copyleft 许可证,可能限制其在闭源代码中的使用。
- 需要配合独立的 circom 编译器使用编译后的电路,因此还需安装 circom。
标签
常见问题
- snarkjs 是什么?
- 基于 JavaScript 和 WebAssembly 的 zkSNARK 库,支持 Groth16、PLONK、FFLONK 证明生成与验证,配合 circom 电路使用。 snarkjs 是一个用 JavaScript 和 WebAssembly 实现的零知识证明工具库,支持 Groth16、PLONK 和 FFLONK 三种证明系统,可直接使用 circom 编译生成的电路。
- snarkjs 可以免费使用吗?用的什么许可证?
- snarkjs 以 GPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
- snarkjs 还在维护吗?
- 半年内有更新。snarkjs 最近一次提交是在 2026年10月1日。
- snarkjs 适合用来做什么?
- 开发在不暴露输入的前提下证明某些陈述的隐私保护应用。 为 circom 电路执行可信设置仪式。 将零知识证明的验证器部署为以太坊智能合约。 在网页端生成零知识证明并进行本地验证。
- snarkjs 怎么安装和运行?
- 安装 Node.js(较新的 LTS 版本,v18 或更高) 使用 npm 全局安装 snarkjs: npm install -g snarkjs@latest 按照官方安装指南安装 circom 查看 snarkjs 命令列表: snarkjs --help
- 在哪里获取 snarkjs?
- 源代码和安装说明在 GitHub 上:https://github.com/iden3/snarkjs
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
54TypeScriptApache-2.0维护活跃更新于 3天前
Aleo 网络的去中心化节点软件,面向零知识应用的运行与共识。
4530+2 本周2697RustApache-2.0维护活跃更新于 18小时前
一个零知识虚拟机,可为用 Rust 或其他 LLVM 编译语言编写的程序生成正确执行的证明。
1768+6 本周722RustApache-2.0维护活跃更新于 前天
用 Rust 实现的 Circle STARK 证明生成与验证库,基于 M31 域,验证器支持 no_std。
507183RustApache-2.0更新于 前天
用 TypeScript 编写零知识电路和 zkApp 的框架,可在浏览器或 Node 中生成与验证证明。
605172TypeScriptApache-2.0维护活跃更新于 前天
一个可移植、易用的 C 语言加密库,提供加解密、数字签名和安全密码哈希等功能。
1.4万+14 本周1887COther维护活跃更新于 7天前