Testnet Faucet · Sepolia + local Anvil only

Test tokens, minted on demand

Mint value-less TTT and confidential CTTT on Sepolia to exercise the FHE products — without hand-sourcing test tokens.

Where to start

The shape of the testnet faucet

Testnet only — Sepolia + local Anvil

The faucet ships for chain 11155111 (Sepolia) and 31337 (local Anvil) only — mainnet is intentionally omitted, with no mainnet addresses to resolve. assertTestnetFaucetChain throws UnsupportedChainError off those chains. These are value-less test tokens; nothing here mints anything redeemable.

Two tokens: plain TTT, confidential CTTT

TTT (TokenopsTestToken) is a plain 18-decimal ERC-20 with an open mint. CTTT (ConfidentialTokenopsTestToken) is a 6-decimal ERC-7984 confidential wrapper behind a UUPS proxy, with an open backed mint — minting CTTT mints the underlying TTT to back it 1:1. Mind the decimal mismatch: 18 for TTT, 6 for CTTT.

Open mint — no roles, no pause

Both faucets are open: anyone can mint to any address. There is no RBAC, no pausing, and no admin gate, so none of the role or pause error paths apply. The one ceiling is maxTotalSupply on CTTT, which surfaces as FaucetSupplyExhaustedError.

Plaintext in, encrypted handle out

Mints take a public plaintext bigint amount — there is no encryptor and no @zama-fhe dependency on the mint path. Reading a confidential balance returns an encrypted euint64 handle (Hex), not a number; decrypting it is a separate, opt-in FHE concern. underlyingBalanceOf returns a plain bigint.

Reference

The lookup layer. Every exported type, error class, event, and ABI lives in a dedicated table — copy-paste-ready, no MDX prose between you and the import.