Dear Zcash community,
As most of you would be aware, based on conversations with ECC, ZF and the community, Zcash Shielded Assets (ZSAs) are on track for deployment in NU7! You can keep track of our updates on this thread, and in the 1500 UTC Arborist calls.
In parallel to the work of getting Zebra ready for ZSA and launch of a testnet, we have proposed a new grant to implement core ZSA features. Based on community feedback, we will be focusing on two main goals — the implementation of our ZSA Swaps ZIP that we submitted earlier in this year, and the research and design for a feature allowing users to accept / reject incoming transactions of ZSAs.
Asset Swaps Implementation
We worked on our design for Asset Swaps in ZIP 228, and would love to hear any comments on the ZIP. Please also check out our ZconV talk and slides for a high level overview of the design.
Since there is a strong community demand for Asset Swaps being added to the ZSA capabilities, we will be working on the implementation of the protocol as described in the ZIP as a part of this grant. We will also work on tooling so that it is possible to interact with and test the protocol.
Transaction Acceptance
The aim of this work is to provide recipients with the ability to only receive transactions that they approve of. An example is a scenario where a user does not want their wallet to be flooded with “spam” ZSAs, or only wants to receive specific ZSAs. Another example use case is that of exchanges receiving funds from users for conversion. The exchange might want to verify that the sender of the funds meets the necessary requirements before proceeding with the transaction.
We offer a method for recipients to approve transactions by providing an approval signature for the funds they wish to accept. This idea builds on top of the Asset Swaps design we have in ZIP 228, and would likely work on a per-transaction basis. This should allow wallets to make use of the functionality to provide different sorts of features to end-users, such as automatic approval for a specific asset. Thus, users can choose their level of granularity — discerning users might want to decide their acceptance for each transaction, others might be comfortable with a more general “accept any transaction of these tokens but only these tokens” approach.
Unlinkability is another important consideration here. Our design ensures that the recipient’s “acceptance” of an incoming transaction does not reveal any information about them.
This is an initial draft design, and we look forward to discussing the details with the engineers and the community as we coalesce into a ZIP for this feature, which is the deliverable of the proposal.
We had an initial discussion about this during the Arborist Call held on 25 July 2024 in the 1500 UTC timeslot. We’re interested to hear views from the broader community as well, so please let us know what you think!
Best,
The QEDIT Team.