ZSAs in NU7, H2 2025 Extension

Dear Zcash community,

We’d like to share with you here our update on what we have been working on in the last few weeks.

ZIPs

  • We have actively been working with the ZIP Editors to stabilize the specification of the ZSA ZIPs.
  • Our discussions led to a change to the computation of the orchard_auth_digest, which was needed to continue the avoidance of nested loops (PR#1095 to upstream).
  • We also performed a refactoring of the ZIPs to move the explicit encoding of the Orchard Note Plaintext to ZIP 230, and have it referenced in both ZIP 226 and ZIP 231 (since both these ZIPs change the note plaintext) (PR#1105).
  • We also made some cosmetic changes (PR#1106 and PR#1110) to remove ambiguities from the encoding specifications, and helped review other related PRs such as the one for the addition of support for Custom Assets to Payment URIs (PR#1101).

The halo2 crate and sinsemilla crate

  • Our work to add in ZSA support was merged by the ECC previously, there have been no further changes needed.

Changes to the orchard crate

  • The upstream pull request (PR#471) is consistently ready for review. We look forward to the review and discussion of this major chunk of the ZSA implementation.
  • A shuffling of Actions in the Orchard Bundle is now included based on discussions with the team at ECC (PR#194).
  • As discussed with ECC, the ZSAs support for PCZTs (which is planned to be added as a V2 of PCZTs) - has been moved outside the upstream review (PR#197) into a separate branch. This work is also complete and ready for review.

Changes to the librustzcash crate

  • We merged most of the changes from upstream into our work, so that our upstream PR#1931 remains ready for review and discussion whenever ECC begins looking at it.
  • We added versioned signatures for Sapling transactions (PR#159), and have also prepared the analogous changes for transparent transactions (PR#160).
  • The addition of the Fee Rule updates for ZSAs in ZIP 317 continues to be implemented (PR#148).
  • As in the orchard crate, we removed our work to implement the V2 of PCZTs and are keeping it separate for the moment as requested by the ECC (PR#161).

The Python reference implementation

  • We merged the sighash versioning changes for the sapling code (PR#34) and we also have ready the implementation for the transparent code (PR#35).
  • We are also preparing to complete updating to upstream so that we are ready for review in this repository as well (PR#39).

Zebra

  • The state management work continues to progress, and we will submit a subsequent PR with those changes post the review of the current PR (PR Link). We are also adding this functionality to the demo (PR#89).
  • We are continuing to discuss the changes in our pull request (PR#9560) to the upstream repository that covers partial support for ZSAs, via parsing, (de)serialisation and validation of V6 transactions with the Zcash Foundation.
    • This PR uses ZSA capable forks of the various crates (such as orchard, librustzcash and others) down the stack, and therefore merging post review will depend on those forks being merged in those crates.
    • The branch that syncs Zebra with the latest versions of our orchard and librustzcash crates can be looked at on this PR Link.
  • We have continued syncing with Zebra - v2.4.2 (PR#87, PR#88).
  • We also fixed some issues with the CI (PR#91).

Updates to zcash_tx_tool

  • We have continued with automatic pushes of the latest stable Docker images to the ECR.
  • The Docker images are currently being published to ECR at gallery.ecr.aws/j7v0v6n9/tx-tool
  • We have been preparing support for the state management support work in Zebra to the transaction tool to be able to provide a complete demo (PR#42).

ZSA Single node testnet

  • The node for the ZSA single node testnet is now feature complete and includes
    • Issuance
    • Transfer
    • Burn
    • Finalize (due to the proper handling of the global state logic)
  • The changes will be deployed in the following weeks.

PRs ready for review

  • The orchard crate changes for ZSA are in PR#471.
  • The librustzcash crate changes for ZSA are in PR#1931.
  • The initial ZSA changes for zebra are in PR#9560.

Best,
The QEDIT Team.

5 Likes