Off-chain verification
Verification of proofs via an off-chain verification service
Proofs can be submitted to a verification service for checking. In order to use a verification service, an endpoint must be obtained from Nebra. (TODO: link)
Proofs can be submitted using the upa
command line tool, or programmatically with the Typescript SDK.
Verification using the upa
tool
upa
toolInstall the tool
The standalone upa
tool can be installed with:
It should then be available in the shell:
Specify a verification service endpoint
The --verify-endpoint
flag, or the VERIFY_ENDPOINT
env var can be used to specify the URL of the verification service to be queried. It is often convenient to use a .env
file:
Verifying proofs in snarkjs format
Use the upa off-chain verify-snarkjs
command:
(Use --help
for the full list of arguments)
Verify proofs in gnark format
Export the VK, proof and inputs to JSON as described here.
Use the upa off-chain verify-gnark
command:
Verifying proofs in UPA format
If proofs have already been converted to the UPA format (in particular the AppVkProofInputs
format - see the section about proof formats) they can be submitted individually or in batches using the upa off-chain verify
command.
Verification using the SDK
In your Typescript project, add the SDK:
The VerifierClient
class can then be used to submit proofs for verification:
Note that vkProofInputs
must be of type `AppVkProofInputs`. See here for information about converting vk and proof formats into instances of this type.
Last updated