-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generate public inputs for verifier also via ConstraintSystem API #341
Comments
what do y'all think, @ValarDragon @weikengchen @npwardberkeley? |
I agree. We should add a As for the two optimizations, we feel they are not very crucial for now---but surely good to have. If we are unable to get both of them done it should still be fine since one who really wants a very efficient verifier can still do |
That said, it is better that we still leave an interface for one to run the verifier with a list of field elements, for compatibility and for use cases where the verifier cost needs to be very low. |
Yeah I was thinking the same |
Note that the above approach is compatible with this requirement:
This is because you set the |
Problem Definition
Right now, when the verifier needs to verify the public input, they have to implement and call
ToConstraintField
on the input. This is error prone for two reasons:ToConstraintField
on various parts of the public input must match exactly the order ofnew_input
calls in theConstraintSynthesizer
.ToConstraintField
must match that ofnew_input
exactly, leading to another source of errors.Proposal
I propose that we instead leverage the existing
ConstraintSystem
API to generate these inputs: we add aVerifier
variant to theMode
enum, which generates variable assignments only for instance/input variables.My only worry is that this could cause extra memory/computation for the verifier, but we can at least try it and see. I have two ideas to minimize this overhead:
a way to minimize these costs alternative would be to provide
ConstraintSynthesizer
with afinalize_public_input_generation
method that allows it to specify when it has completed generating public inputs, so that it can early return.Make a related instantiation of
ConstraintSynthesizer
that only generates public inputs, and does not have the rest of the circuit logic. This is still better than theToConstraintField
idea because it is easy to match up thenew_input
statements on both sides.For Admin Use
The text was updated successfully, but these errors were encountered: