OpenZeppelin / OpenZeppelin/compact-contracts
Add Confidential Note Fungible Token Delivery extension
Open
@0xisk is already working on this.
Since Sep 7, 2026.
0-high
effort: 2-S
enhancement
feat:token
- Dominant language
- TypeScript
- Stars
- 55
- Forks
- 29
- Avg merge
- 5d 7h
- Merged PRs (30d)
- 25
Description
🧐 Motivation
Without on-chain delivery, a recipient can only learn about an incoming note through an out-of-band channel — unusable for a real wallet.
📝 Details
contracts/src/token/extensions/ConfidentialNoteFungibleTokenDelivery.compact
- Delivers each output note's
(value, nonce)to the owner's encryption keyencPk = g^encSkon chain, so recipients discover funds from chain data alone. - Wallet flow: scan
_deliveries, trial-decrypt with the account's encryption secret (the extension's exportedrecoverNotepure circuit, built onEcdhMask), keep the notes whose recomputed commitment exists in the core's tree. - Imports no token module; the consumer calls
_delivernext to its emission policy.
Landed in #679 (draft). Builds on crypto/EcdhMask with a Field plaintext pad (#735); the Note / Delivery structs and OZ:note:* tags live here, not in crypto/.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.