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).
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 ofClientIvc
. 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).