[Grant Update] Zcash Shielded Assets Monthly Updates

Dear Zcash Community,

Here’s our monthly update on the status of our work on the ZSA project and our supporting work for Zebra.

Zebra Node

  • We helped review the lockbox funding streams PR for NU6 in Zebra a week ago when it was submitted. The PR was good overall, and we gave some minor suggestions.
  • We have been making various changes across the zebra, librustzcash, orchard and zcash-test-vectors repositories to support V6 transactions, including some refactoring to revert from V7 notation to V6 since we have received confirmation that there is no transaction format upgrade in NU6.
  • We are creating a test setup with the ability to run our ZSA additions, and we have also been shifting the dependencies to versions that are compatible with OrchardZSA and vanilla Orchard, in preparation for merging without disruptions.
  • We have been working on a demo client that can be used for playing with ZSAs. It uses our zcash_tx_tool with a Zebra node and will have a Docker that will build the necessary components.

zcash_note_encryption updates

  • We have added changes based on the review provided for our PR#2 to upstream.
  • There were some challenges with achieving some of the comments, which we were able to discuss with the ECC and decide on a way forward, which we have implemented, for example in PR#13 in our repository.
  • The interface changes that have happened as a result of these updates have required appropriate refactoring in various other crates dependent on zcash_note_encryption. We have made those changes as well, for example PR#112 in orchard, PR#3 in sapling-crypto. We will submit PRs with these changes to upstream as well in the future.

Halo2 gadgets

  • Last time, we mentioned submitting PR#823 to the halo2 repository and PR#429 to the orchard repository to support these changes. These are a stepping stone for the further changes to generalize the crate to help work with ZSAs.

  • We largely completed these further changes, but on discussion with the ECC we are splitting the work into three portions that each add a part of the functionality. This would make it easier to review the work. The three parts are:

    1. The new Lookup that has been optimized for 4, 5, and 10 bits. This builds over the generalization done in PR#823.
    2. A new SinsemillaChip that adds support for hashing from a private point.
    3. Some further helper features (such as new_from_constant, mul_sign, mux_on_points, mux_on_non_identity_points)

    This splitting work is currently in progress.

ZIPs

  • We have been working on resolving the open issues related to ZSAs in the specifications. Some of these relate to typographical improvements and updates to the references, which have been completed and merged into our PR#854.
  • In order to handle ZIP 209 style tracking of the balances for ZSAs as well, we have made an addition to the global state, requiring ZSA balances to be tracked as an additional failsafe. This has also been merged into PR#854.
  • We ensured that our work was merged on top of the latest changes to the upstream repository. This included taking into account the new structure of the folders, both for ZSAs and Asset Swaps PRs.

Best,

The QEDIT Team.

4 Likes