Skip to main content

Support for PSE Fork of Halo2

We have broadened our coverage over the Halo2 ecosystem by integrating the PSE fork of Halo2 accelerated by Sindri proprietary algorithms across MSM and NTT. If you have previously utilized Sindri's API for Axiom v0.2.2 or Axiom v0.3.0 circuits, you will find that many of the requirements are the same. In particular, here is an example sindri.json file that specifies the required fields for the PSE v0.3.0 framework.

sindri.json
{
"$schema": "https://sindri.app/api/v1/sindri-manifest-schema.json",
"name": "my-circuit",
"circuitType": "halo2",
"className": "my_rust_package::MyCircuit",
"degree": 8,
"halo2Version": "pse-v0.3.0",
"packageName": "my_rust_package"
}

Compatible circuits must implement the Circuit trait and provide definitions for the following two functions.

pub fn from_json(json_loc: &str) -> (MyCircuit<Fr>, Vec<Vec<Fr>>) {
// Construct a circuit by loading a JSON file from the path argument
// Also send back the concrete instances which should be passed
// to create_proof
}

pub fn keygen_circuit() -> MyCircuit<Fr> {
// Construct an empty or default circuit for key generation
}

You should expect broader curve coverage in the future! But for now, Fr above, must be the scalar field for BN254.

Check out some example circuits in the sindri-resources repository to get started creating proofs via the PSE fork of Halo2. You can also use the Sindri CLI init command to create a minimal PSE-halo2 template to work from.