Skip to main content
Version: 2.0.0-beta-4

Web Prover

The circuits package includes a browser compatible prover. This prover loads the proving keys from a remote URL. By default this url is https://keys.unirep.io/2.1.5/.

The server is expected to serve the zkey, wasm, and vkey files at their respective names in the provided subpath. e.g. for the above url the signup zkey is at https://keys.unirep.io/2.1.5/signup.zkey`.

caution

The keys included are not safe for production use. A phase 2 trusted setup needs to be done before use.

Usage

Default key server

import { Circuit } from '@unirep/circuits'
import prover from '@unirep/circuits/provers/web'

await prover.genProofAndPublicSignals(Circuit.signup, {
/* inputs */
})

Custom key server

import { Circuit } from '@unirep/circuits'
import { WebProver } from '@unirep/circuits/provers/web'

// For a local key server
const prover = new WebProver('http://localhost:8000/keys/')
await prover.genProofAndPublicSignals(Circuit.signup, {
/* inputs */
})

API

The web prover supports all the methods from the Prover interface in addition to the following.

warmKeys

Load proving keys for a circuit into memory. Future proofs using these keys will not need to wait for download.

tip

Use this function without await to start the download in the background.

await webProver.warmKeys(circuitName: string)