ZIP Draft: Orchard Address Signatures #1154
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This ZIP proposes extending the Sapling address signature mechanism (ZIP 304) to the Orchard shielded pool, enabling users to prove control of an Orchard address without performing an on-chain transaction.
This is a draft, community review and feedback are welcomed.
Motivation
Cryptographic message signing has become the standard approach for authenticating users to web applications in the cryptocurrency ecosystem. Ethereum's "Connect Wallet" flow is now ubiquitous across decentralized applications. Zcash users deserve equivalent functionality.
ZIP 304 specifies message signing for Sapling addresses. With the deployment of Orchard in NU5, users increasingly hold funds in Orchard addresses or Unified Addresses containing Orchard receivers. These users currently cannot prove control of their addresses without performing an on-chain transaction.
This proposal enables use cases including:
Technical Approach
The specification reuses the existing Orchard Action circuit with fixed, deterministic inputs to create a "synthetic spend" proof. This proof cryptographically binds the spending key to the address and a message digest.
Open Question: Signature Size
The proposed signature is approximately 5,120 bytes, substantially larger than comparable mechanisms in other ecosystems. For off-chain authentication and "Connect Wallet" flows this may be acceptable, but I'm interested in ideas for safely reducing the size. Adapting ZIP 304's mechanism is quite possibly the wrong approach here, but it felt like the path of least resistance.
Review Requested
This specification involves non-trivial cryptographic constructions. I am not a cryptographer by training and welcome rigorous review from domain experts.
Per ZIP 0 requirements for ZIPs with significant security implications, independent security review is requested before this specification advances beyond Draft status.