Skip to content

Conversation

@AntoineRondelet
Copy link

@AntoineRondelet AntoineRondelet commented Dec 29, 2024

This PR introduces the TX approval / user controls ZIP.

Motivation

In the current version of Zcash, fund transfers occur without the explicit consent of recipients. While this simplicity offers convenience, it creates significant challenges for users of the network (e.g. individuals or businesses). The goal of this ZIP is to design a mechanism where the recipient of shielded funds on Zcash (for any type of ZSA) can confirm (or ‘approve’) the receipt of the funds on chain. The proposed controls offer robust safeguarding solutions while maintaining Zcash’s core privacy features.

ZIP preview:

https://deploy-preview-91--zcash-zips-qedit.netlify.app/draft-approval

Blog post:

https://forum.zcashcommunity.com/t/introducing-transaction-controls-in-zcash/49640

Full writeup:

https://hackmd.io/@47RQMp3nR22v0fGRiy03DQ/rkLWGBVaR

Upstream PR:

zcash#980

@netlify
Copy link

netlify bot commented Dec 29, 2024

Deploy Preview for zcash-zips-qedit ready!

Name Link
🔨 Latest commit 0343786
🔍 Latest deploy log https://app.netlify.com/projects/zcash-zips-qedit/deploys/686cdb939dae02000842eccf
😎 Deploy Preview https://deploy-preview-91--zcash-zips-qedit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@AntoineRondelet AntoineRondelet force-pushed the zip-approval branch 3 times, most recently from e702a44 to 9343183 Compare December 29, 2024 16:03
@AntoineRondelet AntoineRondelet changed the title WIP: Tx Approval ZIP Transaction Approval / User Controls ZIP Dec 29, 2024
@AntoineRondelet AntoineRondelet force-pushed the zip-approval branch 2 times, most recently from 7112a88 to f5b53e1 Compare January 26, 2025 14:43
Copy link

@vivek-arte vivek-arte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some math notation suggestions. Also, would need some updates to make the ZIP build on top of ZIP 226/227 and TxV6 (ZIP 230) instead of directly on top of NU5 (Vanilla Orchard)


Given the Orchard address of the recipient of the output note of an Orchard Action (in the form: $d | pk_d$, see [#protocol-raw-address]_), and given that $g_d$ is a Pallas curve point, derived from $d$ (see [#protocol-diversify-hash]_) - the approval signature derivation goes as follows:

1. The sender sends the $OrchardActionDescription$ (the preimage of the message to be signed, as per [#protocol-actions]_) for the recipient to sign.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use OrchardZSA terminology - can also add a [#zip-230]_ reference, that is where the encoding of OrchardZSAAction is defined.

Suggested change
1. The sender sends the $OrchardActionDescription$ (the preimage of the message to be signed, as per [#protocol-actions]_) for the recipient to sign.
1. The sender sends the OrchardZSA Action Description, ``OrchardZSAAction`` (the preimage of the message to be signed, as per [#protocol-actions]_), for the recipient to sign.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the detail in parentheses necessary?

Copy link
Author

@AntoineRondelet AntoineRondelet Feb 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a must, but I don't think it is an issue to keep either. Happy to remove if you're opinionated about that :)

In fact, such proof of knowledge of $ivk$ can be obtained by using a Schnorr Signature on the Action (the message) with $ivk$ as signing/secret key and $g_d$ as group generator.

**Note:** Zcash Orchard already uses a Schnorr-based signature scheme instantiated with the Pallas curve (see RedPallas [#protocol-redpallas]_).
As of NU6, RedPallas is used to instantiate $SpendAuthSig^{Orchard}$ and $BindingSig^{Orchard}$.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really relevant?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was added simply to note that Schnorr signatures are already used in Zcash, so we're not adding brand new primitives to the protocol. Happy to remove tbh, I'm not really opinionated about this :)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, understood. We can leave it in then.

Copy link

@vivek-arte vivek-arte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just spotted a few LaTeX improvements

@vivek-arte vivek-arte changed the base branch from zsa1-2025-06-03-unadopted-digest to main July 8, 2025 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants