OpenZeppelin / OpenZeppelin/compact-contracts

Add Confidential Note Fungible Token Delivery extension

Open
#727 0 comments 0 reactions 1 assignee View on GitHub

@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 key encPk = g^encSk on chain, so recipients discover funds from chain data alone.
  • Wallet flow: scan _deliveries, trial-decrypt with the account's encryption secret (the extension's exported recoverNote pure circuit, built on EcdhMask), keep the notes whose recomputed commitment exists in the core's tree.
  • Imports no token module; the consumer calls _deliver next 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.