littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C++的零知识证明库libsnark

项目简介

libsnark是一个用于实现零知识简洁非交互式知识论证(zkSNARK)的C++库。此库支持多种零知识证明方案,能高效生成和验证零知识证明,适用于多种计算模型和约束系统。

项目的主要特性和功能

  • 零知识证明系统:支持R1CS、BACS、USCS、TBCS等多种零知识证明方案。
  • 约束系统生成:提供工具和库用于生成和操作R1CS、USCS等约束系统。
  • 性能优化:支持多核并行计算,优化证明生成和验证性能。
  • 安全性:提供多种椭圆曲线选择,支持不同安全级别。
  • 应用示例:包含TinyRAM执行、Proof - Carrying Data等多个应用示例。

安装使用步骤

依赖安装

确保系统已安装以下依赖: - C++编译环境 - CMake构建工具 - GMP库(用于大整数运算) - libprocps库(用于内存使用报告) - 其他依赖库(通过Git子模块获取)

在Ubuntu系统上,使用以下命令安装依赖: bash sudo apt-get install build-essential cmake git libgmp3-dev libprocps4-dev python-markdown libboost-all-dev libssl-dev

构建项目

  1. 复制项目并初始化子模块: bash cd libsnark git submodule init git submodule update
  2. 创建构建目录并生成Makefile: bash mkdir build cd build cmake ..
  3. 编译项目: bash make
  4. 运行测试(可选): bash make check

使用libsnark

  1. 表达计算模型:用C++代码构建约束系统(如R1CS),并与libsnark库链接。
  2. 生成公共参数:使用libsnark的生成算法为约束系统生成公共参数(证明密钥和验证密钥)。
  3. 生成证明:使用libsnark的证明生成算法为满足约束系统的输入生成证明。
  4. 验证证明:使用libsnark的验证算法检查证明的有效性。

示例运行

以下命令可运行一个简单的约束系统示例: bash libsnark/zk_proof_systems/ppzksnark/r1cs_ppzksnark/profiling/profile_r1cs_ppzksnark 1000 10 Fr 该命令会在一个包含1000个方程和10个字段元素输入的R1CS实例上运行zkSNARK生成器、证明者和验证者。

进一步阅读

  • 文档:运行make doc生成HTML文档,查看README.html了解更多详细信息。
  • 教程:参考libsnark/gadgetlib2/examples/tutorial.cpp学习如何使用gadgetlib2构建约束系统。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】