Clear in.Confidential out.

suitz is the canonical registry for Zama's ERC-20 ↔ ERC-7984 wrappers. Faucet test tokens, wrap them into confidential balances, decrypt what's yours, and unwrap back, all from the official onchain registry, so the ecosystem stops fragmenting.

wrap · cUSDCready
USD Coin
ERC-20 · public
1,000.00
Confidential USDC
ERC-7984 · encrypted
1,000.00
balance hidden onchain

01 · How it works

Five steps from public to private and back.

1

Browse

Read the official onchain registry. Every canonical ERC-20 ↔ ERC-7984 pair, with metadata and both addresses.

2

Faucet

Claim the official cTokenMocks on Sepolia. A fresh wallet is ready to try everything in under a minute.

3

Wrap

Approve, then wrap an ERC-20 into its confidential ERC-7984 form. Your new balance arrives encrypted.

4

Decrypt

Sign once (EIP-712) to reveal your balance on any ERC-7984 token, in the registry or not.

5

Unwrap

Burn the confidential token; the decryption oracle finalizes; your ERC-20 is released. We wait honestly.

02 · Why it matters

Fragmentation is the enemy of composability.

When every team spins up its own confidential token, wallets fill with look-alikes that don't interoperate. suitz makes the canonical pair the path of least resistance.

Without a registry
cUSDCUSDc.xconfUSDcUSDCv2cUSDUSDxfheUSD

Seven “confidential USD” tokens. None of them compose. Users can't tell which is real.

With suitz
cUSDCofficial
cDAIofficial
cWETHofficial

One canonical set, read straight from the onchain registry. Everyone points to the same addresses.

0
Source of truth
0
Official pairs
0
Forks you need
0%
Onchain-sourced

03 · Confidentiality

Your balance, revealed only to you.

ERC-7984 balances live onchain as encrypted handles. suitz turns a handle into a number through the EIP-712 user-decryption flow, without ever seeing the value itself.

  • No gas, no transaction. Just one signature.
  • Scoped to the connected wallet; nobody else can read it.
  • Works on any ERC-7984 token, registered or not.
  • Re-encrypted to your key and decrypted in your browser.
01Encrypted handle
0x9f3a7c…1e
confidentialBalanceOf(you)
read
02EIP-712 grant
keypair + typed-data
sign once · no gas
userDecrypt
03Cleartext, only you
████ ██
decrypted locally

04 · Extensibility

Add a pair in one minute.

The registry is a hybrid: the onchain WrappersRegistry is the source of truth, and a local config layers dev-only pairs on top. On collision, onchain always wins; local never masquerades as official.

Local
Drop one wrapper address into config/pairs.ts, or use the in-app Add pair button. Instant, no onchain registration.
Onchain
Register canonically in the WrappersRegistry. suitz surfaces it as official automatically.
// config/pairs.ts: the local override layer.
// Just the ERC-7984 wrapper address: the underlying ERC-20 and all
// metadata (symbol / name / decimals) are read onchain automatically.
LOCAL_PAIRS.push({
  confidential: "0xYourErc7984Wrapper",
  note: "my hackathon token", // optional
});
// save → it appears in the Registry tab, badged "local"
// (or skip the file entirely: use the "Add pair" button in the app)

05 · FAQ

Questions, answered.

It is Zama's confidential fungible token standard. Balances and transfers are encrypted onchain using FHE, so amounts stay private while still being verifiable. A wrapper mints an ERC-7984 against a deposited ERC-20.

z

Stop shipping look-alikes.
Use the canonical wrappers.

One registry. Every official ERC-20 ↔ ERC-7984 pair. Wrap, decrypt and unwrap on Sepolia in a console judges and developers can trust.

View on GitHub