Skip to content
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

feat: Implement KZG multiproof #406

Merged
merged 12 commits into from
Nov 29, 2023
Merged

feat: Implement KZG multiproof #406

merged 12 commits into from
Nov 29, 2023

Conversation

chancharles92
Copy link
Contributor

@chancharles92 chancharles92 commented Nov 10, 2023

Description

closes: #387

Implement the KZG multiproof algorithm described in https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html.
Since we assume that the number of opening points is small, we do not implement the fancy algorithm described in #387


Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

  • Targeted PR against correct branch (main)
  • Linked to GitHub issue with discussion and accepted design OR have an explanation in the PR that describes this work.
  • Wrote unit tests
  • Updated relevant documentation in the code
  • Added a relevant changelog entry to the Pending section in CHANGELOG.md
  • Re-reviewed Files changed in the GitHub PR explorer

@chancharles92 chancharles92 changed the title Implement KZG multiproof feat: Implement KZG multiproof Nov 10, 2023
Copy link
Contributor

@ggutoski ggutoski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks pretty good. I have only cosmetic comments and questions.

Comment on lines 476 to 481
(evals_cm.into_group() - commitment.0.into_group())
.into_affine()
.into(),
proof.proof.into(),
];
let pairing_inputs_r: Vec<E::G2Prepared> = vec![srs.h.into(), vanish_cm.into()];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lots of conversion here back-and-forth between affine and projective forms. Is all this conversion necessary?

@chancharles92
Copy link
Contributor Author

Copy link
Contributor

@ggutoski ggutoski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@chancharles92 chancharles92 merged commit 833d7ca into main Nov 29, 2023
@chancharles92 chancharles92 deleted the kzg-multiproof-binyi branch November 29, 2023 22:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Univariate KZG multiproofs (in eval form)
2 participants