Zcash is getting closer towards NU7 deployment as the days go by, and we had shared an update on our usual thread on what we have done so far, and what we hope to do over the next half of the year. This work will engage all the QEDIT team for the second half of 2025 at $118k/month, until Zcash has deployed ZSA.
We are sharing here a link to our grant proposal on GitHub. We’re looking forward to see our development work bring value to this community, and as mentioned, we are working with first issuers towards that goal as well!
This is a big monetary ask at a time when Zcash is struggling to increase adoption for its core purpose (private financial transactions) and limiting damage to privacy caused by transparent transaction data being leaked through the way Unified Addresses were implemented in wallets. Zcash users still have funds stuck in Ledger wallets.
Long term funding for things like ZSAs is still uncertain and they will be expensive to maintain.
Lets focus on our core needs first (usable private currency) before we expand to another area with heavy competition (see newly launched Tari for example) and uncertain demand.
For the good of Zcash (and responsible usage of limited development funds) lets pause all ZSA spending.
PLEASE don’t require community members to sacrifice their privacy and/or values by forcing them into using Google Services to see your slide deck.
Can you provide the information here as well (or host it on a privacy preserving platform)? This is a community that puts a high value on privacy. Lets work harder to respect the privacy of the community members supporting your (highly paid) work.
@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 us 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.
ZIPs
The pull request PR#1048, open for review from the ZIP Editors, has been subsumed by PR#1053 created by the ZIP Editors with some clarifying changes. We reviewed this PR and suggested minor changes, and was recently merged.
The ZIP Editors also created PR#1056 which specifies versioning of the SIGHASH to the transaction format. We are in the process of reviewing this work to confirm it will work for ZSAs and their extension to Swaps.
Changes to the halo2 crate
We currently have open a pull request, PR#845, to upstream, that builds on that initial framework and adds in the chunk of changes that need to be made for ZSA support.
This PR has recently been approved by the ECC, and we are looking forward to it being merged.
Changes to the orchard crate
We are looking forward to receiving feedback from the ECC based on discussions we had about the ZSA changes to orchard. (Link to discussion)
We simplified the circuit and witness management (PR Link, PR Link) and also performed some refactoring to reduce the diff with the upstream so as to simplify the code review process (PR Link).
Further simplification and clean up is still in progress. We are currently working on simplifying the Orchard Flavors and reducing the diff with upstream further (PR Link).
Implementation of the changes that have been made in the ZIPs (as mentioned above) are also being implemented (PR Link). The specific change is the addition of an “algorithm specifying byte” to the encoding of ik and issueAuthSig , and renaming the issuance validating key to issuer in certain portions as described in the ZIPs.
We also completed updates to the PCZT section of the OrchardZSA protocol to better support the way PCZT is implemented in librustzcash (PR Link).
Changes to the librustzcash crate
Just as in orchard, we will be implementing the latest changes that have been made in the ZIPs.
In parallel, we are continuing to progress with the merge of the changes from upstream into our work. For this, we have been understanding the changes to the newly added PCZT section in upstream and make the changes to correctly support the OrchardZSA changes. (PR Link).
We will be discussing the changes required with the ECC once this is ready to get their initial reviews on it.
The Python reference implementation
The ZIP changes also necessitate an update to the Python reference implementation and the test vectors they generate. This is also in progress (PR Link).
Zebra
We had prepared a pull request (PR#9560) to the upstream repository that covers partial support for ZSAs, via parsing, (de)serialisation and validation of V6 transactions. We have received some reviews on this PR, and we are discussing with the Zcash Foundation while making those changes.
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.
We have also prepared a branch that syncs Zebra with the latest versions of our orchard and librustzcash crates (PR Link).
We have drafted a sync with a more recent version of upstream to proactively reduce merge conflicts (PR Link).
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)
Updates to zcash_tx_tool
There has been further progress on improving the CI/CD of the repository, and allowing for automatic pushes of the latest stable Docker images to the ECR.
Ongoing work to adapt to the recent changes in librustzcash due to the significant upstream merge.
PRs ready for review
We have submitted PR#845 to the halo2 repository (and PR#429 to the orchard repository as a reference to support the halo2 gadget changes merged in PR#823).
We’d like to share with you here our update on what we have been working on in the last few weeks.
ZIPs
We helped with discussing and reviewing PR#1053 and PR#1056 regarding adding versioning of the SIGHASH to the transaction format. We confirmed that the suggested update would work with ZSA Swaps in the future.
In addition, we also put together PR#1077 to help complete the updates to the SIGHASH versioning, specifically some changes needed to the authorizing data commitment to incorporate the updates in ZIP 246.
Changes to the halo2 crate
Our pull request, PR#845, that adds in ZSA support, was merged by the ECC.
The companion PR to this work, zcash:orchard#45, that made the necessary changes to the orchard crate to support these changes, has also been merged.
Changes to the orchard crate
The discussions we had with the ECC about the ZSA changes to orchard proceeded on the basis of the simplifications (PR Link, PR Link, PR Link, PR Link) we made to our code.
Implementation of the changes to the encoding of ik and issueAuthSig that have been made in the ZIPs have been implemented (PR Link, PR Link). We are also renaming the issuance validating key to issuer in certain portions as described in the ZIPs.
The additions to the orchard crate to implement the ZIP changes for SIGHASH versioning (mentioned above) are also being implemented (PR Link).
Changes to the librustzcash crate
Just as in orchard, we will be implementing the latest changes that have been made in the ZIPs, namely the ik and issueAuthSig encoding, and the support for SIGHASH versioning (PR Link).
The PCZT section in upstream was merged into our working branch. This involved various changes to correctly support PCZTs in OrchardZSA (PR Link).
We will be discussing the changes required with the ECC to get their initial reviews on it.
The Python reference implementation
The ZIP changes also necessitate an update to the Python reference implementation and the test vectors they generate. This is now nearly complete (PR Link, PR Link).
Zebra
We had prepared a pull request (PR#9560) to the upstream repository that covers partial support for ZSAs, via parsing, (de)serialisation and validation of V6 transactions. We are continuing to discuss the changes 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 also been syncing with a more recent version of Zebra - v2.4.2 (PR Link, PR Link).
Some API improvements have been prepared for better deployment support (PR Link).
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).
Updates to zcash_tx_tool
We have continued improving the CI/CD of the repository, and allowing for 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.
ZIPs
We have actively been working with the ZIP Editors to stabilize the specification of the ZSA ZIPs.
We helped merge PR#1077 to help complete the updates to the SIGHASH versioning, and also opened PR#1086 and PR#1088 for some follow on rearrangements that were necessary as a result. All these changes have been merged.
The halo2 crate and sinsemilla crate
Our work to add in ZSA support was merged by the ECC last month, there have been no further changes needed.
Changes to the orchard crate
We completed the changes to the encoding of the issuance authorization signature and issuance validating key (PR#182, PR#184).
The additions to the orchard crate to implement the ZIP changes for SIGHASH versioning (mentioned above) were also implemented (PR#181).
Based on discussion with the ECC, we refactored some of the above implementation (PR#192).
We also implemented the follow on ZIP changes that were mentioned above (PR#189, PR#193).
We also have been keeping up to date with upstream, and ensuring that our upstream pull request (PR#471) is consistently ready for review, even with the ZIP changes. We look forward to the review and discussion of this major chunk of the ZSA implementation.
Changes to the librustzcash crate
Just as in orchard, we will be implementing the latest changes that have been made in the ZIPs, namely the ik and issueAuthSig encoding, the support for SIGHASH versioning, and all the follow-on changes (PR#129, PR#142, PR#146).
We had to also make a change to the serialization of the issue note description that had been made in a previous ZIP editor change but only recently noticed by us (PR#141).
We also merged 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 are also in the process of adding the sighash versioning to the Sapling serialization (PR#149).
The addition of the Fee Rule updates for ZSAs in ZIP 317 are also in the process of being implemented (PR#148).
The Python reference implementation
The ZIP changes also necessitate an update to the Python reference implementation and the test vectors they generate. This is also complete (PR#31, PR#32, PR#36, PR#37, PR#38).
We have also prepared the sighash versioning changes for the transparent and sapling code as well (PR#34, PR#35).
Zebra
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).
Some API improvements have been prepared for better deployment support such as a jsonrpsee based health-check (PR#90).
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).
Updates to zcash_tx_tool
We have continued improving the CI/CD of the repository, and allowing for 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.
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).