OpenZeppelin / OpenZeppelin/compact-contracts

Add Confidential Note Fungible Token Authority extension

Open
#725 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

effort: 2-S enhancement feat:token
Dominant language
TypeScript
Stars
55
Forks
29
Avg merge
5d 7h
Merged PRs (30d)
25

Description

🧐 Motivation

Seizure and freeze need an administrative gate that is not the issuer. Keeping it in the preset made the preset the only place that role could exist; splitting it out mirrors Issuer and makes the role reusable.

📝 Details

contracts/src/token/extensions/ConfidentialNoteFungibleTokenAuthority.compact

  • Binds one AUTHORITY role: _authorityPk = Hf(authoritySecret), proven in-circuit via witness.
  • A gate, not a mechanism: the module knows nothing about seizing or freezing. _assertAuthority goes in front of whichever administrative blocks a deployment reserves (seize, freeze/unfreeze, ...).
  • Self-rotation, same shape as Issuer.
  • Imports no token module. The seize flow and _seizureCount stay preset wiring.

Landed in #679 (draft).

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.

Research direction

Start with contracts/src/token/extensions/ConfidentialNoteFungibleTokenAuthority.compact and compare its intended shape with the Issuer extension. Review draft #679 before starting, since this work is already underway. Done means the authority extension follows the listed binding, witness proof, gate, and self-rotation requirements without importing a token module.

Written by the indexing model from the issue text.

Assessment

Domain
authorization, security
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.