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

Remove explicit terminal values #52

Closed
jan-ferdinand opened this issue Sep 7, 2022 · 4 comments · Fixed by #68
Closed

Remove explicit terminal values #52

jan-ferdinand opened this issue Sep 7, 2022 · 4 comments · Fixed by #68
Assignees
Labels
🤖 code Changes the implementation ✨ enhancement Improvement or new feature 🟢 prio: low Not at all urgent 📜 specification Relates to the specification

Comments

@jan-ferdinand
Copy link
Member

Once all tables pad to the same height (#10), terminals do not need to be sent to the verifier explicitly. Instead, a cross-table terminal check akin to the currently existing cross-table initial check can be performed.

The main advantage of this approach is the removal of random initials while retaining zero knowledge. Because the terminal is never learned by the verifier, it cannot leak any information. Consequently, the running product (respectively, running evaluation) can always start with 1 (respectively, 0).

A minor advantage of this approach is a marginally decreased proof size.

@jan-ferdinand jan-ferdinand added ✨ enhancement Improvement or new feature 🟢 prio: low Not at all urgent 🖐 blocked Requires something else first. 📜 specification Relates to the specification 🤖 code Changes the implementation labels Sep 7, 2022
@jan-ferdinand
Copy link
Member Author

Upon further thought, this might not actually decrease but increase proof size, because a new quotient is being computed, of which correct addition to the combination codeword needs to be proven using Merkle authentication paths.

@jan-ferdinand jan-ferdinand added 🤔 question More information is needed and removed ✨ enhancement Improvement or new feature labels Sep 8, 2022
@jan-ferdinand
Copy link
Member Author

Upon even further thought, the cross-table terminal quotient simply replaces the currently existing cross-table initial quotient. They are of the same size. Thus, the proof does indeed shrink.

@jan-ferdinand jan-ferdinand added ✨ enhancement Improvement or new feature and removed 🤔 question More information is needed labels Sep 8, 2022
@aszepieniec
Copy link
Collaborator

If I understand correctly, this suggestion would replace every pair of table-specific terminal constrains parameterized by the terminal, with one cross-table unparameterized terminal-equality constraint.

That alone saves quotients. However, why not merge all terminal-equality constraints into one with random linear weights supplied by the verifier?

@jan-ferdinand
Copy link
Member Author

Yes, that makes perfect sense. In summary, we replace

  1. the currently existing cross-table initial constraints, and
  2. the currently existing terminal constraints for running products and running evaluations (sometimes called “running sums”)

with one verifier-randomized cross-table terminal-equality constraint.

jan-ferdinand added a commit that referenced this issue Sep 21, 2022
This removes zero knowledge. To be brought back by completing #52.
@jan-ferdinand jan-ferdinand removed the 🖐 blocked Requires something else first. label Sep 21, 2022
jan-ferdinand added a commit that referenced this issue Sep 21, 2022
This removes zero knowledge. To be brought back by completing #52.

Adhere to clippy's wisdom
@jan-ferdinand jan-ferdinand self-assigned this Sep 22, 2022
jan-ferdinand added a commit that referenced this issue Sep 24, 2022
@jan-ferdinand jan-ferdinand linked a pull request Sep 24, 2022 that will close this issue
7 tasks
jan-ferdinand added a commit that referenced this issue Sep 29, 2022
This removes zero knowledge. To be brought back by completing #52.

Adhere to clippy's wisdom
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🤖 code Changes the implementation ✨ enhancement Improvement or new feature 🟢 prio: low Not at all urgent 📜 specification Relates to the specification
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants