Skip to main content
Version: 2.0.0-beta-4

BaseProof

We build proofs using a BaseProof class that optionally supports verification. Proof data can be expressed in one of two formats:

  1. SnarkProof objects for verification by snarkjs
  2. bigint[] for contract verification.

The BaseProof class can be used to convert between the two formats. This class should not be used directly, but should instead be inherited.

import { BaseProof } from '@unirep/circuits'

class MyCustomProof extends BaseProof {
constructor(publicSignals, proof, prover) {
super(publicSignals, proof, prover)

// Specify a circuit name for the Prover
// This is typically a filename
this.circuit = 'MyCustomProof'
}
}

BaseProof​

The base class for a proof that can be verified using a Prover.

constructor​

Create a new instance of the class.

constructor(
publicSignals: bigint[],
proof: SnarkProof | bigint[],
prover?: Prover
)

_snarkProof​

The proof data in SnarkProof format. Use this when manually verifying with snarkjs.

proof._snarkProof

circuit​

The string name of the type of circuit this proof came from. For the BaseProof class this is undefined.

proof.circuit

publicSignals​

The raw array of public signals for the proof.

proof.publicSignals

proof​

The proof data formatted as bigint[]. Use this property when interacting with smart contracts.

proof.proof

verify​

A function to verify the proof with the supplied Prover. The prover property must be set either in the constructor or manually, otherwise this will throw.

proof.verify(): Promise<boolean>