go-snark-study 项目使用教程
1. 项目的目录结构及介绍
go-snark-study 是一个用 Go 语言实现的 zkSNARK 库,从零开始构建。项目的目录结构如下:
go-snark-study/
├── bn128
├── circuitcompiler
├── circuitexamples
├── cli
├── externalVerif
├── fields
├── groth16
├── r1csqap
├── r1csqapFloat
├── utils
├── vim-syntax
├── wasm
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── build-cli.sh
├── go-snark-cli
├── go.mod
├── go.sum
├── snark.go
├── snark_test.go
目录介绍
bn128
: 包含与 bn128 曲线相关的代码。circuitcompiler
: 电路编译器相关代码。circuitexamples
: 电路示例。cli
: 命令行接口相关代码。externalVerif
: 外部验证相关代码。fields
: 字段操作相关代码。groth16
: Groth16 协议相关代码。r1csqap
: R1CS QAP 相关代码。r1csqapFloat
: R1CS QAP 浮点数相关代码。utils
: 工具函数。vim-syntax
: Vim 语法高亮相关文件。wasm
: WebAssembly 相关代码。.gitignore
: Git 忽略文件配置。.travis.yml
: Travis CI 配置文件。LICENSE
: 项目许可证。README.md
: 项目说明文档。build-cli.sh
: 构建命令行工具的脚本。go-snark-cli
: 命令行工具入口文件。go.mod
: Go 模块文件。go.sum
: Go 模块校验文件。snark.go
: 主程序文件。snark_test.go
: 测试文件。
2. 项目的启动文件介绍
项目的启动文件是 snark.go
,它是整个库的入口点。该文件包含了主要的函数和接口,用于编译电路、生成证明和验证证明。
启动文件主要功能
- 电路编译:将电路描述编译成可用于证明的形式。
- 证明生成:根据编译后的电路和私有输入生成证明。
- 证明验证:验证生成的证明是否正确。
3. 项目的配置文件介绍
项目没有明确的配置文件,但可以通过命令行参数和环境变量进行配置。主要的配置项包括:
- 电路文件路径:指定电路描述文件的路径。
- 输入文件路径:指定输入数据的文件路径。
- 输出文件路径:指定输出证明或验证结果的文件路径。
命令行示例
./go-snark-cli compile -circuit=path/to/circuit.json
./go-snark-cli prove -input=path/to/input.json -proof=path/to/proof.json
./go-snark-cli verify -proof=path/to/proof.json -public=path/to/public.json
通过这些命令行参数,可以灵活地配置和使用 go-snark-study 项目。