Skip to content

Zsa integration consensus resolve conflicts#59

Closed
dmidem wants to merge 203 commits intozsa1from
zsa-integration-consensus-resolve-conflicts
Closed

Zsa integration consensus resolve conflicts#59
dmidem wants to merge 203 commits intozsa1from
zsa-integration-consensus-resolve-conflicts

Conversation

@dmidem
Copy link
Copy Markdown
Collaborator

@dmidem dmidem commented Jun 19, 2025

Motivation

Specifications & References

Solution

Tests

Follow-up Work

PR Author's Checklist

  • The PR name will make sense to users.
  • The PR provides a CHANGELOG summary.
  • The solution is tested.
  • The documentation is up to date.
  • The PR has a priority label.

PR Reviewer's Checklist

  • The PR Author's checklist is complete.
  • The PR resolves the issue.

dmidem added 30 commits June 19, 2025 12:57
…l Orchard support only, without supporting and enabling ZSA features.
This commit introduces basic support for Transaction version 6 (Tx V6). This initial implementation treats Tx V6
as a simple copy of Tx V5, without yet integrating ZSA-specific features or the new transaction structure.

- Added a new V6 variant to the Transaction enum in the zebra-chain crate.
- Updated relevant code to handle the new V6 variant.

Note: Tests and additional adjustments are still pending, and will be addressed in subsequent commits.
…(without unit tests fixing for now).

- Refactored `ShieldedData` and `Action` structures to be generics parameterized by Orchard flavor
  (`OrchardVanilla` or `OrchardZSA`), enabling support for both Orchard protocols in Tx V6.
- Introduced a `burn` field in `ShieldedData` to support ZSA, with unit type for Tx V5 and a vector of burn items for Tx V6.
- Modified `Transaction` enum methods (orchard_...) to handle generics properly, ensuring compatibility with both Orchard flavors.
- Implemented serialization and deserialization for Tx V6 while avoiding code redundancy with Tx V5 wherever possible.
… with the upstream halo2/librustcash/orchard/sapling versions
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.
…t_desc to convert slice to vec, as slices require implementation of the serialization from scratch
dmidem added 28 commits June 19, 2025 12:57
…saction::arbitrary_with function in zebra-chain/src/transaction/arbitrary.rs
…ew variant gated by the tx-v6 feature flag. Use ValueSum from the orchard crate as the value type to support both Amount (value balance) and NoteValue (burn). Add TODO comments for future orchard crate enhancements to simplify type conversions by reusing existing APIs.
…a-test (for vanilla - restore the original names, i.e. remove vanilla suffix, for zsa - move zsa suffix to the end)
…re no such tests for Vanilla Orchard, tests from zebra-chain/src/transaction/tests/vectors.rs used instead - so we need to add ZSA related tests there)
…by converting them into verify_v5_and_v6_transaction generic. The ame for verify_v6_transaction_network_upgrade function
… make this flag non-default in Cargo.toml files and enable it by default in .cargo/config.toml
@dmidem dmidem closed this Jun 19, 2025
@dmidem dmidem deleted the zsa-integration-consensus-resolve-conflicts branch June 19, 2025 12:12
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.

1 participant