Overview
Every operation that generates a Groth16 ZK proof requires a prover passed throughdeps. There is no hard-coded default - you must always supply one. All provers follow the same prove(inputs) → { proofA, proofB, proofC } contract.
For instantiation, Web Worker setup, and remote proving backends, see ZK Provers.
IZkProverForUserRegistration
getUserRegistrationFunction deps (zkProver).
IZkProverForSelfClaimableUtxo
getEncryptedBalanceToSelfClaimableUtxoCreatorFunction deps (zkProver). For public-balance UTXO creation, see ZkProverForSelfClaimableUtxoFromPublicBalance below.
IZkProverForReceiverClaimableUtxo
getEncryptedBalanceToReceiverClaimableUtxoCreatorFunction deps (zkProver). For public-balance UTXO creation, see ZkProverForReceiverClaimableUtxoFromPublicBalance below.
IZkProverForClaimSelfClaimableUtxoIntoEncryptedBalance
getSelfClaimableUtxoToEncryptedBalanceClaimerFunction deps (zkProver).
IZkProverForClaimReceiverClaimableUtxoIntoEncryptedBalance
getReceiverClaimableUtxoToEncryptedBalanceClaimerFunction deps (zkProver). This prover accepts a batch size nLeaves (1–16) because there are 16 distinct circuits, one per batch size.
IZkProverForClaimSelfClaimableUtxoIntoPublicBalance
getSelfClaimableUtxoToPublicBalanceClaimerFunction deps (zkProver).
ZkProverForSelfClaimableUtxoFromPublicBalance
getPublicBalanceToSelfClaimableUtxoCreatorFunction deps (zkProver).
ZkProverForReceiverClaimableUtxoFromPublicBalance
getPublicBalanceToReceiverClaimableUtxoCreatorFunction deps (zkProver).
Unified Prover Suite
All six provers can be combined into a single object and passed wherever individual provers are expected:Quick Setup with @umbra-privacy/web-zk-prover
The @umbra-privacy/web-zk-prover package provides ready-made factory functions for each prover interface. It uses snarkjs Groth16 under the hood and fetches proving keys from a CDN.
IZkAssetProvider parameter - a simple interface with one method: getAssetUrls(type, variant?). When no provider is passed, the factories default to the CDN provider (equivalent to calling getCdnZkAssetProvider() from @umbra-privacy/web-zk-prover/cdn), which fetches proving keys from Umbra’s CDN. You can supply your own provider to customise asset resolution.
See ZK Provers for Web Worker setup, custom asset providers, and remote proving backends.