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

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`.


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


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 */


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


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


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

await webProver.warmKeys(circuitName: string)