Skip to main content

aptos-keyless-prove

input->prove

看起来你提到的路径 /home/rex_fernando_aptoslabs_com/devnet-groth16-keys/main_c_cpp 指向一个包含 C++ 生成 witness 的文件夹。通常情况下,Circom 电路可以生成多种语言的 witness 生成器,包括 JavaScript 和 C++。

使用 C++ witness 生成器

如果你使用的是 C++ witness 生成器,步骤会稍有不同。以下是如何使用 C++ witness 生成器生成 witness 的详细步骤:

步骤 1:编译电路生成 C++ 文件

假设你已经用 Circom 编译了电路并生成了 C++ 文件和 Makefile。你可以使用以下命令来编译生成的 C++ 文件:

cd /home/rex_fernando_aptoslabs_com/devnet-groth16-keys/main_c_cpp
make

这将生成一个可执行文件,通常是 witness_calculator

步骤 2:准备 input.json

你仍然需要准备一个 input.json 文件,包含电路的输入数据。例如:

{
"a": 3,
"b": 11
}

步骤 3:生成 witness

使用生成的 C++ 可执行文件来生成 witness。假设可执行文件名为 witness_calculator,你可以使用以下命令:

./witness_calculator input.json witness.wtns

步骤 4:验证生成的 witness

你可以使用 snarkjs 工具来验证生成的 witness。例如:

snarkjs wtns debug /path/to/main.r1cs witness.wtns /path/to/main.sym

步骤 5:生成证明和验证

一旦你生成并验证了 witness,你可以继续生成零知识证明并进行验证。这通常包括以下步骤:

  1. 生成证明

    snarkjs groth16 prove /path/to/main.zkey witness.wtns proof.json public.json
  2. 验证证明

    snarkjs groth16 verify /path/to/verification_key.json public.json proof.json

总结

如果你使用的是 C++ witness 生成器,步骤和使用 JavaScript witness 生成器类似,但需要先编译生成的 C++ 文件,然后使用生成的可执行文件来生成 witness。确保你的 input.json 文件格式正确,并按照上述步骤生成和验证 witness。