ZSA integration (step 5): Modify Orchard proptest implementations to support ZSA#18
Closed
dmidem wants to merge 8 commits into
Closed
ZSA integration (step 5): Modify Orchard proptest implementations to support ZSA#18dmidem wants to merge 8 commits into
dmidem wants to merge 8 commits into
Conversation
1. Introduced new type `Burn` that wraps `Vec<BurnItem>`, implemented serialization/deserialization for it - put it into `orchard_zsa/burn.rs`, also moved `NoBurn` there from `orchard_flavor_ext.rs` for better code structuring. 2. Renamed the `EncryptedNoteTest` trait to `TestArbitrary` in `orchard_flavor_ext.rs` and used it to constrain `BurnType` as well. 3. Renamed `serialize.rs` to `common.rs` in the `orchard_zsa` folder. 4. Refactored transaction generation strategies for V5 and V6 in `transaction/arbitrary.rs` and `orchard_zsa/arbitrary.rs` to incorporate the new burn handling and proper issuance handling.
Collaborator
Author
|
Closed in favour of #37 |
dmidem
added a commit
that referenced
this pull request
Jun 23, 2025
This pull request merges the changes from several incremental PRs into one cumulative set of updates on top of the `zsa1` branch. It introduces ZSA-compatible crates, Network Upgrade 7 (Nu7), initial Transaction V6 support, Orchard generics for ZSA, property-based testing enhancements, note commitment handling for ZSA issuance, and initial consensus modifications for Orchard ZSA. It does not include the final state management changes or additional tests — those come in subsequent PRs. Below is a high-level overview of the merged changes: 1. **ZSA-Compatible Crates Integration (Step 1)** #24: - Replaces core libraries (`halo2`, `zcash_note_encryption`, etc.) with QED-it’s ZSA-compatible forks. - Maintains full support for Orchard “Vanilla” without activating any new ZSA features yet. 2. **Network Upgrade 7 (Nu7) Support (Step 2)** #15 - Introduces code paths and placeholders for Nu7, the upcoming network upgrade required for ZSA. - Adds `FIXME` comments where final activation heights and other specifics must be filled in. 3. **Transaction V6 Foundations (Step 3)** #16 - Adds a `V6` variant to Zebra’s `Transaction` enum, initially mirroring `V5` logic. - Sets a baseline for future ZSA-related modifications, including placeholders for relevant fields and logic. 4. **Refactor Orchard Structures to Generics (Step 4)** #17 - Converts key Orchard data structures (e.g., `ShieldedData`) to generics, enabling a single code path for both Orchard Vanilla and Orchard ZSA. - Implements serialization/deserialization for `V6` transactions, including a `burn` field in the ZSA flavor. 5. **Orchard Proptests with ZSA Enhancements (Step 5)** #18 - Extends the property-based testing framework to handle ZSA-specific fields and behaviors in `Transaction V6`. - Refactors code organization (e.g., extracting `Burn` types) for better clarity and future expansion. 6. **Integration of ZSA Issuance Commitments (Step 6)** #25 - Merges issuance action note commitments with existing shielded data commitments for `V6` transactions. - Ensures `Transaction::orchard_note_commitments` includes issuance note commitments when present, preserving `V5` behavior. 7. **Initial ZSA Consensus Support (Step 7)** #28 - Modifies `zebra-consensus` to support Orchard ZSA. **Next Steps** - **State Management & Additional Testing**: Future PRs will introduce state-layer modifications, refine consensus checks, and add more comprehensive tests. By consolidating these first several steps into a single PR, we aim to simplify the review process .
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates the existing Orchard property-based test implementations to include transaction V6 ZSA fields (
burninShieldedDataandorchard_zsa_issue_data).Changes:
TestArbitrarytrait toorchard_flavor_extto conditionally modify the list of constraints forEncryptedNoteandBurnTypeassociated types.Arbitraryfororchard::ShieldedDataas a generic type.Burn, which wrapsVec<BurnItem>. Implemented serialization/deserialization for it and placed it inorchard_zsa/burn.rs. Also movedNoBurnthere fromorchard_flavor_ext.rsfor better code structuring.serialize.rstocommon.rsin theorchard_zsafolder.v5_strategyandv6_strategyfunctions intransaction/arbitrary.rsto work with V5 and V6 transactions, and to handle burn and issuance for V6.Note: This is draft code that needs to be cleaned up, possibly refactored/improved, and the FIXMEs resolved.