Repolode
iden3

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. 1

    安装 Node.js(较新的 LTS 版本,v18 或更高)

  2. 2

    使用 npm 全局安装 snarkjs

    npm install -g snarkjs@latest
  3. 3

    按照官方安装指南安装 circom

  4. 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 数据每日更新。

相关项目