-
Notifications
You must be signed in to change notification settings - Fork 266
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
fix: remove table shifts #10814
fix: remove table shifts #10814
Conversation
@@ -807,12 +807,12 @@ template <typename Curve_> class IPA { | |||
Fr challenge_poly_eval = 1; | |||
Fr r_pow = r; | |||
if (uint32_t(log_poly_length.get_value()) > CONST_ECCVM_LOG_N) { | |||
throw_or_abort("IPA log_poly_length is too large"); | |||
throw_or_abort("IPA log_poly_length is too large: " + std::to_string(uint32_t(log_poly_length.get_value()))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I forgot to update a constant and this was throwing so i figured it's useful for the throw to display the problematic size
Changes to circuit sizes
🧾 Summary (100% most significant diffs)
Full diff report 👇
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LG, thanks!
@@ -243,6 +243,7 @@ void prove_tube(const std::string& output_path) | |||
using Verifier = UltraVerifier_<UltraFlavor>; | |||
Prover tube_prover{ *builder }; | |||
auto tube_proof = tube_prover.construct_proof(); | |||
info("tube proof length: ", tube_proof.size()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you want to keep this?
@@ -237,7 +233,10 @@ class MegaFlavor { | |||
this->return_data_inverses, | |||
}; | |||
} | |||
auto get_to_be_shifted() { return DerivedEntities<DataType>::get_to_be_shifted(); } | |||
auto get_to_be_shifted() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmmm was this broken before??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not broken, we have this weird distinction between wire witnesses and derived witnesses
@@ -183,15 +179,15 @@ class UltraFlavor { | |||
lookup_read_tags) // column 7 | |||
|
|||
auto get_wires() { return RefArray{ w_l, w_r, w_o, w_4 }; }; | |||
auto get_to_be_shifted() { return RefArray{ z_perm }; }; | |||
auto get_to_be_shifted() { return RefArray{ w_l, w_r, w_o, w_4, z_perm }; }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
again, weird. Is this somehow equivalent to what we had before? was this jsut not used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it wasn't broken, but theto_be_shifted()
contribution from WitnessEntities was a weird concatenation between get_wires()
and get_to_be_shifted()
which only included z_perm
Table shifts have been obsolete since we moved to a log derivative lookup argument and the table polynomials were still incorrectly considered part of the
to_be_shifted
polynomials set. This PR addresses the issue and, in turn, the proof size because smaller by 4 frs. Additionally, this brings some flavor simplifications.