AztecProtocol / barretenberg

Apache License 2.0
126 stars 77 forks source link

Make ClientIvc verifier independent of prover #1012

Open ledwards2225 opened 1 month ago

ledwards2225 commented 1 month ago

Currently, to verify a ClientIvc proof, the same ClientIvc instance needs to be used for both proving and verifying. This is not viable in practice since in general the prover and verifier will be different entities.

The root cause of this is the same problematic dependency in Goblin, which is a component of ClientIvc. Specifically, Goblin::verify() uses the proving keys of the ECCVM and Translator to construct corresponding verification keys which are used to instantiate the respective verifiers. Instead, these verification keys should be passed to the verify method directly, (or used to instantiate the verifiers, which is the model used for the Honk verifier for example).