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

change(consensus): Updates transaction verifier to use orchard::bundle::BatchValidator #9308

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

arya2
Copy link
Contributor

@arya2 arya2 commented Feb 28, 2025

Motivation

We want Zebra to validate orchard proofs in batches as it does for other pools.

This PR also makes some progress towards deduplicating logic in zebra-chain that's available in the orchard crate.

Closes #4672

Solution

  • Adds an ItemSize trait in tower-batch-control defining an item_size() method,
  • Replaces batch proof verifier Item type aliases with newtypes and implements ItemSize for them where all of them return 1 (no change in behaviour) except for the halo2 verifier which returns the number of actions in the request,
  • Increments pending_items in the batch control worker by item_size() instead of 1,
  • Updates HALO2_MAX_BATCH_SIZE from 2 to 64

Tests

This PR still needs tests. It also removes some tests that are no longer relevant.

Follow-up Work

Use shardtree to append to note commitment trees in parallel

PR Checklist

  • The PR name is suitable for the release notes.
  • The solution is tested.
  • The documentation is up to date.
  • The PR has a priority label.
  • If the PR shouldn't be in the release notes, it has the
    C-exclude-from-changelog label.

Ok(())
}
}
let bundle = orchard::bundle::Bundle::from_parts(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This PR should use the orchard bundle created when preparing to compute transaction sighashes instead of converting orchard data to the orchard crate Bundle type twice.

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.

Add support for Orchard proof batch verification
1 participant