项目简介
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
构建项目
- 复制项目并初始化子模块:
bash cd libsnark git submodule init git submodule update
- 创建构建目录并生成Makefile:
bash mkdir build cd build cmake ..
- 编译项目:
bash make
- 运行测试(可选):
bash make check
使用libsnark
- 表达计算模型:用C++代码构建约束系统(如R1CS),并与libsnark库链接。
- 生成公共参数:使用libsnark的生成算法为约束系统生成公共参数(证明密钥和验证密钥)。
- 生成证明:使用libsnark的证明生成算法为满足约束系统的输入生成证明。
- 验证证明:使用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】