Skip to main content
Version: dev

Recursive Proofs

Noir supports recursively verifying proofs, meaning you verify the proof of a Noir program in another Noir program. This enables creating proofs of arbitrary size by doing step-wise verification of smaller components of a large proof.

Noir cannot check internally whether a recursive proof is valid or not as this can only be checked by the proving backend. This means that witness execution can still succeed in the case where an invalid proof is used, however an invalid proof is expected to cause the proving backend to fail to generate a valid proof.

In order to verify recursive proofs from Barretenberg, it's recommended to use the bb_proof_verification library which is published by the Barretenberg team.

This is a black box function. Read this section to learn more about black box functions in Noir.

Read the explainer on recursion to know more about this function and the guide on how to use it.

You can see a full example of recursive proofs in this example recursion demo repo.