This issue was run into on the zexe library and has not been attempted to be reproduced on arkworks yet.
The constraints method verify for computing a BooleanVar representing whether a proof is valid or not produces unsatisfied constraints when a Default::default proof is passed as input. The correct behavior would be to simply return a BooleanVar with value false.
The method works as expected when passing in the correct proof (returns a true BooleanVar) or passing in a proof with values not initialized to Default, e.g. random group elements or canonical generator (returns a false BooleanVar). This indicates that there might be some odd behavior with how verify interacts with a proof that has 0 values (which I believe is what Default sets the group elements to).
https://github.com/arkworks-rs/groth16/blob/master/src/constraints.rs#L243
This issue was run into on the
zexelibrary and has not been attempted to be reproduced onarkworksyet.The constraints method
verifyfor computing a BooleanVar representing whether a proof is valid or not produces unsatisfied constraints when a Default::default proof is passed as input. The correct behavior would be to simply return a BooleanVar with value false.The method works as expected when passing in the correct proof (returns a true BooleanVar) or passing in a proof with values not initialized to Default, e.g. random group elements or canonical generator (returns a false BooleanVar). This indicates that there might be some odd behavior with how
verifyinteracts with a proof that has 0 values (which I believe is what Default sets the group elements to).https://github.com/arkworks-rs/groth16/blob/master/src/constraints.rs#L243