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

Trace sorting: Avoid use of q_arith in aux gate selector configuration #914

Open
ledwards2225 opened this issue Mar 18, 2024 · 0 comments
Open
Milestone

Comments

@ledwards2225
Copy link
Collaborator

Various subrelations in the Auxiliary relation are triggered by combinations of (non-gate) selectors, e.g. q_m, q_2. The RAM_CONSISTENCY_CHECK subrelation is triggered via q_arith which is a gate selector. This means that we sometimes have simultaneously q_aux == q_arith == 1. This was done to avoid raising the degree of the relation (which would have had more serious ramifications for Plonk due to the zero-check approach).

This simultaneous selector issue is an obstacle for allowing each block to only track a single selector, and certainly for representing selectors as ranges instead of polynomials. One solution is to simply replace the use of q_arith with q_m * q_4 (for example). This raises the degree but may be a worthwhile tradeoff.

Note: The choice of q_arith is arbitrary; the arithmetic relation is trivially satisfied for the RAM_CONSISTENCY_CHECK since the wire scaling selectors q_1, q_2 etc are all zero. In other words, using q_m * q_4 instead does not result in the loss of any constraint.

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