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

Preverify ZK proofs #1228

Closed
HDauven opened this issue Dec 31, 2023 · 1 comment · Fixed by #1575
Closed

Preverify ZK proofs #1228

HDauven opened this issue Dec 31, 2023 · 1 comment · Fixed by #1575
Assignees
Labels
module:rusk Issues related to rusk module

Comments

@HDauven
Copy link
Member

HDauven commented Dec 31, 2023

Summary

Zero-Knowledge Proof (ZKP) verification, although linear in proving time, are computationally expensive and executed sequentially with a transaction.

This issue proposes a mechanism to preverify ZK proofs in our protocol to improve throughput substantially.

Possible solution design or implementation

Proof verification is independent of the smart contract execution, given the verification happens on the host. Preverification would mean proving could happen in parallel.

The main idea is to shift proof verification away from the transaction execution phase, and preverifying proofs where the result is stored in a memtable after a transaction gets accepted in the mempool.

The existing verify host function would then simply have to do a lookup instead of executing the verification computation during transaction execution.

Considerations

  • Test the increased throughput. It will be an easy xx% increase, but would be awesome to bench how much.
  • Integrity and security of transactions needs to be maintained.
  • Make sure there's no side-effects to memory in the VM. Theoretically it shouldn't.
@HDauven HDauven added team:Core module:rusk Issues related to rusk module labels Dec 31, 2023
@autholykos
Copy link
Member

I like the idea very much. It would considerably decrease the latency of Execute State Transition and the Verify State Transition in the consensus

@herr-seppia herr-seppia self-assigned this Dec 31, 2023
ureeves added a commit that referenced this issue Mar 20, 2024
ureeves added a commit that referenced this issue Mar 20, 2024
ureeves added a commit that referenced this issue Mar 21, 2024
ureeves added a commit that referenced this issue Mar 21, 2024
ureeves added a commit that referenced this issue Mar 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
module:rusk Issues related to rusk module
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants