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

Better templating of gates #557

Open
maramihali opened this issue Jun 23, 2023 · 0 comments
Open

Better templating of gates #557

maramihali opened this issue Jun 23, 2023 · 0 comments

Comments

@maramihali
Copy link
Contributor

To make Honk work on Grumpkin we have to template the gates in https://github.com/AztecProtocol/barretenberg/blob/master/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp. Right know, to create as little friction as possible, each gate is foo_gate_<FF> and aliased foo_gate = foo_gate_<barretenberg::fr> because the majority of the codebase uses bn254. Ideally, to avoid having foo_gate and foo_gate_grumpkin we'd just want to make the gate type explicit because the structures in the file are primarily only used as function arguments (rather than being repeated in many palces). Moreover, the read/write operations only work with bn254 and this needs to be addressed.

maramihali added a commit to AztecProtocol/aztec-packages that referenced this issue Jul 31, 2023
# Description

This PR provides an initial solution for having a complete grumpkin
flavor in standard honk and contains the following modifications:
* the `FileCrsFactory` now has functionality to produce CRSes for both
curves (with their key differences) and I addressed any dependent
changes in the codebase
* the PCSes are now curve agnostic, having the curve set by their
parameters and missing tests were added (shlponk\gemini on both grumpkin
and bn254 which surfaced a bug in shplonk; unit testing
gemini+shplonk+ipa as only the kzg-variant was tested)
* continued work on enabling field-agnostic gates from
(AztecProtocol/barretenberg#557, i have to
link issues manually)
* to avoid divison by zero caused by inverting the root of unity in
`EvaluationDomain<grumpkin::fr>` we hardcode the roots of unity to 1
given Grumpkin does not have many roots of unity.

Opens AztecProtocol/barretenberg#635 
AztecProtocol/barretenberg#637
AztecProtocol/barretenberg#636, 
AztecProtocol/barretenberg#640
for subsequent work.

# Checklist:

- [ x] I have reviewed my diff in github, line by line.
- [ x] Every change is related to the PR description.
- [ x] I have
[linked](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
this pull request to the issue(s) that it resolves.
- [x ] There are no unexpected formatting changes, superfluous debug
logs, or commented-out code.
- [x ] The branch has been merged or rebased against the head of its
merge target.
- [ x] I'm happy for the PR to be merged at the reviewer's next
convenience.
AztecBot pushed a commit that referenced this issue Jul 31, 2023
# Description

This PR provides an initial solution for having a complete grumpkin
flavor in standard honk and contains the following modifications:
* the `FileCrsFactory` now has functionality to produce CRSes for both
curves (with their key differences) and I addressed any dependent
changes in the codebase
* the PCSes are now curve agnostic, having the curve set by their
parameters and missing tests were added (shlponk\gemini on both grumpkin
and bn254 which surfaced a bug in shplonk; unit testing
gemini+shplonk+ipa as only the kzg-variant was tested)
* continued work on enabling field-agnostic gates from
(#557, i have to
link issues manually)
* to avoid divison by zero caused by inverting the root of unity in
`EvaluationDomain<grumpkin::fr>` we hardcode the roots of unity to 1
given Grumpkin does not have many roots of unity.

Opens #635 
#637
#636, 
#640
for subsequent work.

# Checklist:

- [ x] I have reviewed my diff in github, line by line.
- [ x] Every change is related to the PR description.
- [ x] I have
[linked](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
this pull request to the issue(s) that it resolves.
- [x ] There are no unexpected formatting changes, superfluous debug
logs, or commented-out code.
- [x ] The branch has been merged or rebased against the head of its
merge target.
- [ x] I'm happy for the PR to be merged at the reviewer's next
convenience.
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

No branches or pull requests

1 participant