# How it works

NEBRA UPA v1 (currently v1.2) aggregates `Groth16`

proofs (more proof systems to be supported in 2.0) from different sources. After a certain number of proofs (our current batch size is `32`

) from different parties have been submitted to our address (see Deployments), our off-chain prover network will generate an aggregated proof $\pi_{agg}$. This aggregated proof effectively states that all the proofs in this batch have been verified. By only verifying aggregated proofs on-chain, the verification cost of each proof is amortized, bringing up to 10x gas savings (see Gas costs for details).

The workflow of a blockchain application powered by zero-knowledge proof using NEBRA is as follows:

Register your verification key with NEBRA UPA. This will give you a

`circuitId`

(see Registering applications)Submit your proof to NEBRA UPA together with the public input associated with the proof

Wait for the event indicating that the proof is verified. After this event, application can query

`isVerified`

function to execute the application logicVerified (or rejected) proofs can be viewed at NEBRA proof explorer: nebrascan.io

Last updated