Skip to main content

Uploading Keys

Guidance for uploading your own proving key.

For nearly all frameworks supported by Sindri, you may include the proving key associated with your circuit. To utilize this option, you must include all of the files described below (organized by framework) at the time of circuit upload.

However, Noir circuits are the exception. When you compile a Noir circuit via Sindri's API, the corresponding proving and verifying keys utilize the same trusted setup downloaded by Nargo (and trusted by the Aztec team.) Any proofs produced by Sindri are compatible with Noir solidity verifiers and Nargo verify.

CircomHalo2 (Axiom v0.2.2)Halo2 (Axiom v0.3.0)Halo2 (PSE v0.3.0)Gnark
circuit.zkeyproving_keyproving_keyproving_keyproving_key
trusted_setuptrusted_setuptrusted_setupverifying_key
breakpoints
danger

If you include some but not all of the requisite files, your circuit compilation will fail.

Expected Structure​

circuit.zkey

For Circom circuits, simply place your circuit.zkey file in the top directory of your upload. The file naming convention is important:

  • If you don't specify a circuit_path in your Sindri manifest, name your file circuit.zkey.
  • If you use the circuit_path option, the .zkey file must match the name of your main Circom code file.
  • If circuit_path: path/to/mycircom.circom, you'll need to name your key file mycircom.zkey.

At the time of circuit upload to Sindri either through the CLI or another preferred method such as the SDK, Sindi will automatically detect and include the key in your compiled project.

Here's a quick look at how your project structure might look for a Circom circuit providing your own proving key:

my_circom_project/
├── circuit.circom
├── input.json
├── circuit.zkey # Your proving key
└── sindri.json

For a complete example, please refer to our sample with key circuit.

Your proving key file should be consistent with the trusted setup files resulting from the Perpetual Powers of Tau ceremony. A concise listing of the components of this file may be found here.