We have been steadily making progress on the integration of ZSAs into NU7, including working with the other teams involved to integrate subsequent additions to the NU7 features.
As can be seen in our regular updates, we have a feature complete version of ZSAs available with a testnet, and we have completed the OrchardZSA protocol changes. The review of the orchard crate is currently in progress.
As the reviews take place, we expect to continue with critical core protocol updates to discuss and finalize the review suggestions. This will start with the orchard repository, and changes will propagate upwards into librustzcash and zebra, and so on as each repository gets reviewed.
We have also prepared the reference test vectors for the ZSA changes. A review of this is in progress as well. We will be integrating them with the other NU7 changes so as not to have a divergence between the reference vector implementations.
We are expecting this work to occur in Q1 2026. We will need a smaller team than before since we are expecting more review based changes than fresh development work. We are sharing here a link to our grant proposal on GitHub.
As always, we’re looking forward to see our development work bring value to this community!
It seems like this is the last step towards having ZSAs launched in such a way that the community can start to play with them and take steps toward launching their own ZSAs. Is that correct?
As many other ZSA dev projects have been funded, I want to see the protocol launched such that we can start to see community engagement and creation. I’m curious to see what sorts of tokens are created.
We have created a feature complete single-node testnet that is up and running, and are actively maintaining it.
This has been available for the community to experiment with for some time now. We also ran a demo of the feature complete version in the November 13 Arborist Call. We’d love to have everyone check it out!
We have also been in contact with various parties who have expressed interest in using ZSAs to issue various tokens, we have demonstrated the testnet to them and how they can use that to get comfortable with the functionailty.
@vivek at the most recent meeting, ZCG voted to approve this proposal. Congratulations!
To keep the community informed, ZCG requests that you provide monthly updates via the forum in this thread.
Please check your forum inbox for a direct message from FPF with important next steps, including a link to the Milestone Payment Request Form and your unique validation code for submitting payment requests.
We’d like to share with you here our update on what we have been working on in the last few weeks.
The orchard crate
The ECC performed reviews on our OrchardZSA PR (PR#471). We have discussed the comments with them, and have successfully resolved those comments - progress which can be seen in our internal pull requests. We are in the process of the final cleanup, and responding on the review pointing to the changes made.
Significant changes include:
Replacing k256 dependency with secp256k1 to be eco-system compatible.
Introduce zsa-issuance feature flag
Change (mostly reduce) visibility modifiers for various data structures.
Various fixes and changes requested by the reviewers.
The Python reference implementation
We had opened a new PR (PR#112) to upstream to perform some of the changes requested to be separated out into an independent PR in the review of our ZSA changes to the test vectors (PR#108).
We discussed these changes with str4d, and decided that the formatting changes can be reviewed independently. Therefore, we continue to have PR#112 for the rustfmt formatting changes, and we have opened PR#114 for the other output format changes we had proposed. These include the addition of the pub(crate) visibility for the Rust test vectors, and some indentations changes that help match it where it is
We have accordingly reverted these formatting changes from our ZSA changes PR#108 and responded to all existing comments on it, so that we can proceed with that review and get feedback - we look forward to further comments!
Changes to the librustzcash crate
We have made a number of changes to librustzcash are done to support the OrchardZSA review fixes. These can all be seen here.
We also updated the librustzcash crate to account for the updated test vectors after the upstream merge. The test vectors now work with the addition of the zip233Amount to the transaction format. This can be seen in PR#184.
Post OrchardZSA review fixes are in progress.
Zebra
We have similarly performed various changes in Zebra to support the OrchardZSA review changes. These can be seen here.
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 have also added 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.
We have continued syncing with Zebra - v2.4.2 (PR#87, PR#88).
ZIPs
We opened a minor pull request to fix the specification of the flagsOrchard encoding, which happened to get removed during an earlier merge of the specification.
Updates to zcash_tx_tool
Blockchain caching development is in progress - the tx_tool will cache the relevant data from the blockchain (block headers and notes) in order to avoid re-sync after shutdown, just like a real blockchain client. Some of the latest changes here can be seen in PR#44.
We have continued with automatic pushes of the latest stable Docker images to the ECR.
We’d like to share with you here our update on what we have been working on in the last few weeks.
The orchard crate
str4d had performed a review of our OrchardZSA pull request (PR#471). We resolved those comments. He added further comments in the past few days. We have begun to take those comments into account and respond to them.
To recap, the significant changes include:
Replacing k256 dependency with secp256k1 to be eco-system compatible.
Isolate zsa-issuance using a feature flag
Change (mostly reduce) visibility modifiers for various data structures.
Various fixes and changes requested by the reviewers.
The Python reference implementation
We had opened a new PR (PR#112, approved by oxarbitrage) to upstream to perform some of the changes requested to be separated out into an independent PR in the review of our ZSA changes to the test vectors (PR#108).
These changes were discussed with str4d, and the outcome was that the formatting changes can be reviewed independently. Therefore, we continue to have PR#112 for the rustfmt formatting changes, and we have opened PR#114 (approved by **oxarbitrage)** for the other output format changes we had proposed. These include the addition of the pub(crate) visibility for the Rust test vectors, and some indentations changes that help match it where it is used.
These formatting changes have been approved by oxarbitrage from ZF, and are awaiting review / merge by someone the core team.
Similarly, our ZSA changes PR#108 are ready for review, all existing comments on it have been addressed - we look forward to further comments from the ZODL team.
Changes to the librustzcash crate
A number of changes to librustzcash are done to support the OrchardZSA review fixes. These can all be seen here - they have been merged into the zsa1 branch.
We also updated the librustzcash crate to account for the updated test vectors after the upstream merge. The test vectors now work with the addition of the zip233Amount to the transaction format. This has been merged to zsa1 in PR#207.
Changes were also made to improve the diff from upstream, in preparation for the review of our PR#1931 to upstream, which should be next after the completion of the OrchardZSA review.
Zebra
We have similarly performed various changes in Zebra to support the OrchardZSA review changes. These can be seen here.
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 have also added this functionality to the demo (PR#89).
The state management for issued assets was prepared as is being reviewed (PR#111).
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.
We have continued syncing with Zebra - v2.4.2 (PR#87, PR#88).
ZIPs
A couple of small pull requests (PR#1159 and PR#1168) were opened to fix the specification of the flagsOrchard encoding and limit the amounts burned in a transaction to u63.
Updates to zcash_tx_tool
Blockchain caching development is in progress - the tx_tool will cache the relevant data from the blockchain (block headers and notes) in order to avoid re-sync after shutdown, just like a real blockchain client. Some of the latest changes here can be seen in PR#44.
A simple additional test scenario to showcase issuance of an asset was also added (PR#45).
We have continued with automatic pushes of the latest stable Docker images to the ECR.
Appreciate the detailed update; it’s actually refreshing to see the level of mechanical progress here rather than just high-level “we are working on it” posts. The OrchardZSA review cycle with ECC sounds productive, and changes like switching from k256 to secp256k1 for ecosystem compatibility make sense pragmatically since tooling and audits around secp256k1 are far more mature. The only thing I’d be curious about as a community observer is how much of the remaining work is state complexity around ZSA handling in Zebra versus straightforward review fixes, since historically that’s where subtle consensus or indexing issues tend to appear. Still, having issuance, transfer, burn and finalise already working in the single-node testnet is a strong signal that the design is stabilising, and overall this reads like solid, methodical progress toward getting ZSAs safely integrated into NU7.
We’d like to share with you here our update on what we have been working on in the last few weeks.
The orchard crate
The follow-up comments made by str4d on our OrchardZSA pull request (PR#471) at the end of last month have all been responded to.
We also made a merge commit with the upstream along with minimal adjustments.
The issuance handling was improved, and visibility functions were provided for use in Zebra (note commitments for issued notes).
The Python reference implementation
We have three PRs open in this repository, awaiting review:
We have two PRs (PR#112 and PR#114, both approved by oxarbitrage) which perform various formatting changes, which were requested to be separated out into independent PRs. These include rustfmt changes, along with some visibility changes, as described in previous updates.
PR#114 was recently rebased on top of recent upstream changes as requested.
Similarly, our ZSA changes (which are on PR#108) are ready for review, all existing comments on it have been addressed - we look forward to further comments from the ZODL team.
The sapling-crypto crate
We submitted a PR (PR#177) to upstream to adjust sapling to support the latest version of the zcash_note_encryption crate. That change was merged some months ago, and makes note sizes generic rather than fixed-length arrays. Our submitted PR updates sapling-crypto to conform to that new interface while keeping Sapling’s own note sizes unchanged.
The librustzcash crate
Caught up to the upstream, and improved the diff from upstream, in preparation for the review of our PR#1931 to upstream, which should be next after the completion of the OrchardZSA review.
We also made some minor improvements and removed some patches that are not required.
A number of changes to librustzcash were done to support the OrchardZSA review fixes, and they have all have been merged into the zsa1 branch.
Zebra
We have similarly performed various changes in Zebra to support the OrchardZSA review changes. These can be seen here.
The state management for issued assets has been prepared (PR#111).
Syncing with Zebra - v4.1.0 (PR#113) is also currently underway.
Updates to zcash_tx_tool
Our zcash_tx_tool repository now caches data (such as block headers and notes) from the blockchain in order to avoid re-sync after shutdown. This is in PR#44.
We have continued with automatic pushes of the latest stable Docker images to the ECR.