Gadget `verify` creates unsatisfied constraints when passed a default proof
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
I don't have a good idea...The problem is that the default proof has not been designed to work as a placeholder. In some of our projects, we do need such a placeholder, and our workaround is as follows: generate a real proof as "default proof", either from the same circuit we are proving or from a totally different circuit that has the same input size.