Skip to content

ZSA integration (step 1): Integrate ZSA-compatible crates into Zebra while maintaining original Orchard (Vanilla) support for now [to upstream]#24

Closed
dmidem wants to merge 43 commits into
zsa1from
zsa-integration-zsadeps
Closed

ZSA integration (step 1): Integrate ZSA-compatible crates into Zebra while maintaining original Orchard (Vanilla) support for now [to upstream]#24
dmidem wants to merge 43 commits into
zsa1from
zsa-integration-zsadeps

Conversation

@dmidem
Copy link
Copy Markdown
Collaborator

@dmidem dmidem commented Oct 29, 2024

This draft PR updates Zebra to use QED-it's ZSA-compatible versions of the following crates:

  • halo2
  • zcash_note_encryption
  • spling-crypto
  • orchard
  • Crates from the libruszcash repository:
    • zcash_primitives
    • zcash_protocol
    • zcash_address
    • zcash_encoding
    • zcash_history
    • zcash_client_backend

These version of the crates are backward-compatible and support both the current Orchard (Vanilla) protocol and the upcoming ZSA variation.

This PR maintains support for the existing Orchard protocol only, without yet enabling or integrating ZSA-specific features!

@dmidem dmidem assigned PaulLaux and unassigned PaulLaux Oct 29, 2024
@dmidem dmidem requested a review from PaulLaux October 29, 2024 13:50
@dmidem dmidem removed the C-trivial label Oct 29, 2024
…loy related workflows (add .disabled suffix to their .yml files)
@dmidem dmidem removed the C-trivial label Oct 29, 2024
@dmidem dmidem changed the title ZSA integration (step 1): Integrate ZSA-compatible crates into Zebra while maintaining original Orchard (Vanilla) support for now [to upstream ZSA integration (step 1): Integrate ZSA-compatible crates into Zebra while maintaining original Orchard (Vanilla) support for now [to upstream] Oct 29, 2024
@PaulLaux PaulLaux requested a review from arya2 October 30, 2024 13:41
Comment thread zebra-consensus/src/primitives/halo2/tests.rs Outdated
dmidem and others added 23 commits February 10, 2025 13:40
Co-authored-by: Arya <aryasolhi@gmail.com>
Co-authored-by: Arya <aryasolhi@gmail.com>
Co-authored-by: Arya <aryasolhi@gmail.com>
…id compiler warnings for new compiler versions
…id compiler warnings for new compiler versions (2)
…sh_primitives) interface (OrchardBundle enum etc.)"

This reverts commit 998a2c7.
… make a minorr fix in code to sync with that"

This reverts commit cfaac4b.
@dmidem
Copy link
Copy Markdown
Collaborator Author

dmidem commented Mar 3, 2025

Closed in favour of #37

1 similar comment
@dmidem
Copy link
Copy Markdown
Collaborator Author

dmidem commented Mar 3, 2025

Closed in favour of #37

@dmidem dmidem closed this Mar 3, 2025
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 .
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.

3 participants