---
title: "Under the hood the contract is only half of it"
author: Mariusz Szyma
date: 2026-09-15
lang: en
canonical: https://szyma.co/en/blog/stablecoins/under-the-hood/
series: "Stablecoins: Past, Present and Future"
series_part: 5/11
series_url: https://szyma.co/en/blog/stablecoins/
data_as_of: 4–10 Sep 2026
---

# Under the hood the contract is only half of it

A dollar token has a public contract and a private banking day. Mint waits for a wire; transfer then runs without the issuer; burn and the dollar payout are days apart. This chapter walks that lifecycle, compares who can freeze, pause or replace the code on USDC, USDT, DAI/USDS and USDe, and separates a native claim on the issuer from a wrapped claim on a bridge.

## What you'll learn

- Trace mint, transfer, burn and redemption across the contract and the bank, and say which of those steps is atomic.
- Name what USDC and DAI add to ERC-20 that USDT refuses to add, and what that refusal costs in gasless payments.
- Compare freeze, pause, upgrade and admin keys across four tokens without treating a freeze as a burn.
- Tell a native issuer obligation from a lock-and-mint wrap and from a burn-and-mint transfer.
- Apply the Multichain failure of July 2023 as the case where the wrapped token died and the issuer's reserve did not.

## Mint waits for the bank

A fiat-backed stablecoin's life runs on two layers at every step. On-chain, a contract maps addresses to balances. Off-chain, a bank confirms dollars, a compliance desk clears a name, and a reserve manager rolls bills. Neither layer is the product by itself.

**Mint** is the on-chain call that increases `totalSupply` after the issuer's bank has confirmed incoming fiat. For USDC the operator who may call it is a `minter` sitting under a `masterMinter` limit; for USDT the call is `issue`, from the same 3-of-6 multisig that does everything else. The contract does not watch a bank. A human confirms the wire, then an authorized key hits `mint`. Until that confirmation exists, no tokens appear.

**Burn** is the matching call that destroys tokens and decreases supply. **Redemption** is the off-chain payout of dollars to the verified client who sent those tokens in. Burn and payout are not one transaction. The sources put the gap at T+0 to T+5 of banking. A token can be gone on-chain on Monday while the dollars are still a wire in a queue.

Transfer is the step that does not wait. Once an address holds a balance and is not blocked, `transfer` is ordinary ERC-20: no issuer signature, no bank, no desk. Gasless variants exist for some tokens and are the next section. The issuer re-enters only if the address has been placed on a blacklist, in which case the call reverts.

USDC's FiatToken splits those jobs on purpose. `masterMinter` sets who may mint and how much; `minter` mints and burns inside that cap; `pauser` can halt transfers; `blacklister` can freeze an address; `rescuer` can pull stray ERC-20 tokens out of the contract. Circle cannot, in this design, unilaterally destroy a frozen balance. Tether's `destroyBlackFunds` can. That gap is the whole of the freeze section below, not a wording difference.

> **Example:** A Circle Mint client sends dollars on a Tuesday. The bank confirms. A minter under its cap calls `mint`. The tokens move on-chain that day. A week later the same client sends the tokens back. Burn can print the same day. The dollar wire may still be T+2. Anyone reading only `totalSupply()` sees a liability disappear before the reserve has moved.

Reserve management never touches the token contract. Bills, repo and cash roll on a custodian's books. Those books are the 95% reserve-income line of the business chapter. Mint has to wait because the chain will not invent the dollar the bank has not posted.

## What a dollar token adds to ERC-20

A plain ERC-20 needs two on-chain steps for a spender to move someone else's tokens: `approve`, then `transferFrom`, each a paid transaction. Retail payments cannot live with that. Two Ethereum standards close the gap, and they are why USDC can sit in a gasless checkout and USDT on Ethereum cannot.

**Permit**, EIP-2612, finalized in March 2020, lets a holder set an `allowance` by signing an off-chain EIP-712 message instead of sending `approve`. The spender submits that signature with the transfer. One on-chain transaction, one gas bill, and the holder never pays for the approval. USDC, DAI and USDS implement it. Most ERC-20s issued after 2021 do too.

**A gasless transfer**, EIP-3009 (`transferWithAuthorization` / `receiveWithAuthorization`), goes further. The signature authorizes a one-time, addressed transfer and never writes an allowance at all. A relayer can pay the gas in ETH while the holder signs on a phone. Circle shipped both standards together in FiatToken v2. That pair is what protocols such as x402 require for HTTP-native micropayments in USDC. USDT implements neither, and Tether has said it will not. The USDT contract on Ethereum is upgradeable, so the refusal is a product choice. On TRON the TRC-20 USDT contract has no signature-based transfer authorization of any kind, so gasless payments do not exist there in any form.

The other addition is administrative. Freeze, pause and upgrade are not in the ERC-20 spec. USDC and USDT put them in the contract because a payments issuer that cannot stop an address cannot satisfy a sanctions request. DAI never did. USDe put the emergency halt on mint and redeem, not on transfers. [Chapter 3](/en/blog/stablecoins/types-and-pegs/) introduced that axis as a question. This chapter names the functions.

USDT's extras all hang off one owner. USDC's extras hang off named roles. Sky's DAI hung extras off a `wards` mapping and never put a freeze in the token. Ethena put extras on the Minting Contract and left the USDe token itself closer to plain ERC-20. Same asset class, four permission systems.

## Four tokens, four control architectures

**A blacklist**, also called a freeze, is a contract permission that stops an address from sending. USDC's function is `blocklist`. Tokens at a frozen USDC address stay there; Circle can unfreeze. USDT's functions are `addBlackList` and, separately, `destroyBlackFunds`. A USDT freeze can be escalated to a permanent burn. Counting them as the same control compares a paused balance with a deleted one.

**A pause** stops transfers for everyone, not for one address. USDC's `pauser` role can do it. USDT's owner can do it. DAI has no token-level pause. USDe's GATEKEEPER role can disable mint and redeem; that is a halt of the primary window, not of transfers of existing USDe.

**Proxy upgradeability** is a small contract that stores the address of the logic and forwards every call to it, so the code can be replaced while balances stay put. USDC is an OpenZeppelin upgradeable proxy (`FiatTokenProxy`). USDT uses an older pattern of Tether's own (`deprecate` plus `UpgradedStandardToken`). DAI is not upgradeable at all; control sits in a `wards` mapping, and reaching USDS required a migration. USDe's token is not upgradeable; the Minting Contract's admin role is.

**A multisig** is a wallet that executes only when a set number of named signers approve, written as X of Y. Tether's issuance, redemption, blacklisting, clawback and pausing all sit in one 3-of-6 multisig. That is a least-privilege miss: the key that pauses is the key that mints. USDC separates `masterMinter`, `minter`, `pauser`, `blacklister` and `rescuer`. How many signers control Circle's proxy-admin key is not in these sources. How many signers hold Ethena's `DEFAULT_ADMIN_ROLE` is not in these sources either. Both are unlocated, not zero.

![Freeze, pause, upgrade and admin-key arrangements for USDC, USDT, DAI/USDS and USDe, 2026. The DAI/USDS freeze cell is mixed: a later USDS freeze sits next to DAI, which had none. Signer counts marked unknown are unlocated.](https://szyma.co/blog/img/control-architectures.08586f95.svg)

DAI and USDS have to be read as two objects that share a column. [Chapter 3](/en/blog/stablecoins/types-and-pegs/) recorded that USDS added a freeze function DAI never had. The Polish architecture table groups DAI/USDS as without a token-level blacklist. Both statements are in the sources. They are not averaged into a single yes or no. The matrix marks that cell mixed on purpose.

The GENIUS Act requires a technical ability to block, freeze and reject on authority request. It does not require `destroyBlackFunds`, and it does not require a 3-of-6. Tether shipped a blacklist in 2017, years before that statute. Circle's reactive, order-driven use of `blocklist` is a policy choice sitting on the same statutory floor.

> **Watch out:** A freeze becomes confiscation only when the contract can burn. USDC can freeze and unfreeze. USDT can freeze and then destroy. Frozen-dollar totals that skip that second function mix a paused balance with a deleted one.

## Company keys, a DAO timelock, and a capped multisig

Governance is who is allowed to use the powers above, and how long the rest of the market has to notice.

Circle is a company. Roles are assigned corporately. No public timelock sits in front of a FiatToken upgrade in these sources. The signer count on the proxy-admin key, as already noted, is unlocated.

Tether is a company with one 3-of-6. No public timelock is documented for USDT either. The architecture section already named the privilege problem. The operational fact is simpler: five functions share a threshold.

Sky is a DAO with a delay. A winning "spell" passes DSChief voting and then sits in the Governance Security Module for 48 hours before it can execute. A routine July 2026 edit passed with 7,023,129,526 SKY votes. That 48-hour window is the only documented timelock in this four-token set. [Who holds the keys](/en/blog/rwa/who-holds-the-keys/) is the parallel chapter on the RWA side: BUIDL, OUSG and BENJI, read on 4–5 September 2026, put no timelock in front of seizure or upgrade. Sky does. Circle and Tether, on the public record used here, do not.

Ethena is a hybrid. Minting is limited to whitelisted "Mint Users" through an EIP-712 order. The Minting Contract's admin is upgradeable. The loss cap is the interesting number: a compromised role could mint up to 100,000 USDe uncovered and drain up to about 200,000 USD of collateral, a 300,000 USD maximum loss, before GATEKEEPER disables mint and redeem. That is a designed bound, not a promise that the admin key is safe. The signer count behind `DEFAULT_ADMIN_ROLE` remains unlocated.

USDe is not a payment stablecoin. DAI and USDS are not payment stablecoins. The GENIUS Act's freeze-on-demand intuition sits awkwardly on a 48-hour timelock and on a token with no freeze at all. Whether that pushes DAO-governed dollar tokens out of the US payment-stablecoin box is a later regulatory chapter. The engineering fact is already visible: real-time freeze and a 48-hour delay are different machines.

## Native and bridged are different claims

**A native token** is a direct, separately redeemable issuer obligation on that chain. Native USDC on Arbitrum is Circle's liability, mintable and burnable against Circle's reserve, and it appears in Circle's published reserve accounting. **A bridged token** is a claim on a bridge that holds the original elsewhere. It is not a legal claim on the issuer. Historical USDC.e on Arbitrum, the wrapped token from before Circle launched native USDC there in June 2023, is the classroom example. Redeeming it meant burning plus a seven-day canonical-bridge withdrawal, and it did not appear in Circle's published reserves.

Circle's Bridged USDC Standard, dated 21 November 2023, is the conversion hatch: a third-party bridged contract can be formally upgraded to native issuance without breaking holders. Native USDC deployments grew from 11 chains in early 2024 to 28 in April 2026. The current count of chains on Circle's CCTP itself is given as 11 in one reading and 13+ in another; that present-tense count is not established here. The 11-to-28 native-issuance path is.

Six ways exist to move a token across chains: a canonical bridge, lock-and-mint, burn-and-mint, a liquidity network, an intent or solver route, and messaging plus a token standard. Two of them decide the claim.

**Lock-and-mint** locks the original in a contract on the source chain and mints a wrapped token on the destination. The locked pool is a honeypot. Wormhole-style bridges do this. Tether's USDT0 does this: real USDT sits in an Ethereum lockbox, and a wrapped claim is issued elsewhere under LayerZero's OFT standard, run by licensed operator Everdawn Labs rather than by Tether itself. USDT0 facilitated over 70 bn USD in under twelve months, which prompted a Tether Investments stake in LayerZero on 10 February 2026. The volume is real. So is the pool.

**Burn-and-mint** destroys the token on the source chain and mints an equivalent native token on the destination. No locked pool sits in between, because the token exists on one chain at a time. Circle's Cross-Chain Transfer Protocol, CCTP, launched in 2023 and shipped V2 on 11 March 2025, is this design. Fast Transfers settle in about 8–20 seconds. Cumulative volume was over 110 bn USD and 5.3 million transfers by 14 November 2025, per Circle. A secondary tracker put the figure at 140 bn USD on 12 June 2026. Both sit here. They are not averaged.

Ripple chose a third native path for RLUSD: Wormhole's Native Token Transfers, aiming at one canonical token across 40+ chains rather than a family of wraps. That is a native-multichain bet, not a Circle CCTP clone, and it belongs in a later who's-who chapter as a company choice.

![A native mint is Circle's own obligation on that chain; CCTP burns on the source and mints on the destination with no locked pool; USDT0 and older bridges lock the original and issue a wrapped claim against that pool, 2023–2026.](https://szyma.co/blog/img/native-vs-bridged.c67bd9c2.svg)

## When the bridge fails, the issuer's reserve does not help

Lock-and-mint fails in a way burn-and-mint cannot copy. If the locked pool is stolen, the wrapped token is an IOU on an empty box. The underlying native token, sitting at the issuer, is untouched.

Multichain's collapse in July 2023 drained more than 120 mn USD from its Fantom bridge. Bridged USDC on Fantom traded at about 22% of face. Underlying USDC on Ethereum stayed fully backed. Circle froze 63 mn USD tied to the exploit and had no way to restore value to the wrapped token. The freeze hit addresses Circle could see. It could not mint the Fantom wrap back to 1.00 USD, because Circle had never owed that wrap.

That is the diagnostic. A ticker that says USDC is Circle's liability only when the token is native. The three-layer test in [chapter 1](/en/blog/stablecoins/what-one-usdc-means/), pointed at a bridge, asks whose claim the holder has. Native: the issuer. Wrapped: the bridge. If the bridge is empty, the issuer's attestation of reserves is a true statement about a different object.

Lock-and-mint bridges lost a combined 2.66–2.8 bn USD to exploits in 2022–2023 (DefiLlama via CoinDesk, July 2023; Spark.money, 2026). CCTP cannot lose a pool it does not keep. USDT0 keeps one. The market has used both at tens of billions of dollars of flow. Volume is not a verdict on the claim.

> **My take:** The contract is an interface to a banking day and, across chains, to someone else's lockbox. Copying the ERC-20 is cheap. The product is Circle Mint, a role-separated FiatToken, and a burn-and-mint path that never builds a pool. A wrapped ticker that prints 1.00 until the bridge is drained is a claim on that bridge, and the issuer's reserve report does not cover it.

Freeze scale is the last number this chapter has to carry without blending clocks. BlockSec, on 26 July 2026, had Tether blocking 9,597 addresses on Ethereum and Tron and freezing 5.69 bn USD. A 2023–2025 window in the same knowledge-base module puts Tether at 3.3 bn USD across 7,268 wallets and Circle at 109 mn USD across 372 addresses (AMLBot, 30 January 2026). Only 3.6% of blocked addresses were ever unblocked, in that material. Among Tether's 2025 blocked addresses, 84.2% (3,506) were on Tron, for 853 mn USD. Those are four readings, three windows, two issuers. They are not a single Tether total and they are not a Circle-versus-Tether rate.

![Tether froze 5.69 bn USD across 9,597 addresses on 26 Jul 2026, and a separate 2023–2025 window puts Tether at 3.3 bn USD across 7,268 wallets against Circle at 0.109 bn USD across 372 addresses. The windows are not averaged.](https://szyma.co/blog/img/freeze-scale.91af74bc.svg)

## Key takeaways

1. Mint requires an off-chain fiat confirmation before an operator calls `mint` or `issue`; burn of the token and the dollar payout are separated by T+0 to T+5 and are not atomic.
2. USDC's FiatToken separates `masterMinter`, `minter`, `pauser`, `blacklister` and `rescuer`; USDT puts issuance, redemption, blacklisting, clawback and pause in one 3-of-6 multisig.
3. EIP-2612 (March 2020) and EIP-3009 let USDC, DAI and USDS do gasless approvals and transfers; USDT implements neither, on Ethereum or on TRC-20, and has said it will not.
4. USDC can freeze and unfreeze but cannot unilaterally destroy tokens; USDT's `destroyBlackFunds` can turn a freeze into a permanent burn.
5. DAI is not upgradeable; USDC uses an OpenZeppelin proxy; USDT uses its own older upgradeable pattern; USDe's token is not upgradeable and its Minting Contract admin is, with a designed 300,000 USD maximum loss before GATEKEEPER halts mint and redeem.
6. Sky's changes pass a 48-hour Governance Security Module timelock after a vote (7,023,129,526 SKY on a routine July 2026 spell). Circle's proxy-admin signer count and Ethena's `DEFAULT_ADMIN` signer count are not in these sources.
7. Native USDC on a chain is Circle's redeemable obligation; USDC.e on Arbitrum before June 2023 was a bridged claim with a seven-day withdrawal, absent from Circle's published reserves.
8. CCTP (burn-and-mint, V2 on 11 March 2025) had over 110 bn USD / 5.3 million transfers by 14 November 2025 per Circle, against a 140 bn USD secondary reading on 12 June 2026. USDT0 (lock-and-mint) facilitated over 70 bn USD in under twelve months to 10 February 2026. Multichain's July 2023 Fantom drain left bridged USDC at about 22% of face while Ethereum USDC stayed backed; Circle froze 63 mn USD and could not restore the wrap.

## Glossary

- **Mint / burn / redemption**: on-chain increase or decrease of supply after (mint) or before (burn) the banking step. Redemption is the off-chain dollar payout, not atomic with burn (T+0 to T+5).
- **Permit (EIP-2612)**: off-chain signature that sets an ERC-20 allowance, so `approve` need not be a separate paid transaction. Finalized March 2020.
- **EIP-3009**: one-time, addressed transfer authorized by a signature, with no allowance. Basis for USDC gasless payments.
- **Blacklist / freeze**: contract flag that stops an address from sending. USDC: `blocklist`, reversible. USDT: `addBlackList`, which can escalate to `destroyBlackFunds`.
- **Pause**: a halt of transfers (USDC, USDT) or of mint/redeem (USDe GATEKEEPER). DAI has no token-level pause.
- **Proxy upgradeability**: logic contract replaceable behind a fixed token address. USDC: OpenZeppelin. USDT: own older pattern. DAI: none.
- **Multisig**: X-of-Y signer wallet. Tether: one 3-of-6 for all admin. Circle and Ethena signer counts: unlocated.
- **Native token**: issuer obligation minted on that chain, redeemable at the issuer.
- **Bridged / wrapped token**: claim on a bridge's locked pool, not on the issuer. USDC.e is the named case.
- **Lock-and-mint / burn-and-mint**: lock the original and wrap (USDT0, Wormhole) versus burn on source and mint native on destination (CCTP). Only the first builds a honeypot pool.

## Go deeper

- [How each kind of stablecoin holds its peg](/en/blog/stablecoins/types-and-pegs/): the freeze question as one of four that cut across families, including the DAI versus USDS split.
- [What one USDC actually equals](/en/blog/stablecoins/what-one-usdc-means/): Circle Mint as the gated par window that mint and redemption in this chapter actually serve.
- [Who holds the keys](/en/blog/rwa/who-holds-the-keys/): the same permission-reading job on BUIDL, OUSG and BENJI, including a timelock that those three products also lack.
- 🟢 Circle FiatToken / CCTP documentation: role separation, Bridged USDC Standard (21 November 2023), CCTP V2 (11 March 2025), volume post 14 November 2025.
- 🟢 Ethereum EIPs 2612 and 3009; Sky Governance Security Module documentation.
- 🟢 Tether.io, 10 February 2026: USDT0 volume and LayerZero stake.

## Sources

- 🟢 Author's knowledge base, modules 07 and 14 (lifecycle table, FiatToken roles, EIP-2612/3009, freeze versus destroy, freeze-scale readings, 3-of-6 versus role separation, upgradeability table, Sky 48-hour GSM and July 2026 vote, Ethena 300k USD cap, native versus bridged, USDC.e, six cross-chain mechanisms, CCTP and USDT0 volumes, Multichain/Fantom, 11-to-28 native chains, Bridged USDC Standard).
- 🟢 Polish research edition, `content/blog/stablecoins/biznes.md` (architecture comparison table, freeze philosophy, GENIUS Act freeze capability versus destroy) and `content/blog/stablecoins/technologie.md` (EIP-2612/3009, CCTP and USDT0, native versus bridged, freeze scale, Bridged USDC Standard).
- 🟢 Brief `content/blog/en/briefs/stablecoins-05.md`: portable extract of modules 07 and 14.
- 🟢 Circle.com/blog: CCTP launch 2023, V2 11 March 2025, Fast Transfer 8–20 seconds, >110 bn USD / 5.3 million transfers to 14 November 2025; Bridged USDC Standard, 21 November 2023.
- 🟢 Tether.io, 10 February 2026: USDT0 >70 bn USD in under twelve months; Tether Investments stake in LayerZero the same day.
- 🟢 Ethereum Improvement Proposals: EIP-2612 (March 2020), EIP-3009, ERC-4337 (March 2023) as cited in the Polish edition.
- 🟢 GENIUS Act (P.L. 119-27), signed 18 July 2025: technical ability to block, freeze, reject; not a mandate of `destroyBlackFunds`.
- 🟡 BlockSec USDT Freeze Tracker, 26 July 2026: 9,597 addresses, 5.69 bn USD.
- 🟡 AMLBot, 30 January 2026: Circle 109 mn USD, 372 addresses; 2023–2025 Tether 3.3 bn USD / 7,268 wallets versus that Circle reading, per the brief.
- 🟡 Knowledge-base module 07: 3.6% of blocked addresses ever unblocked; Ethena 100k uncovered mint plus ~200k USD drain.
- 🟡 Eco.com, July 2026: native USDC 11 chains (early 2024) to 28 (April 2026).
- 🟡 Secondary CCTP tracker, 12 June 2026: 140 bn USD cumulative, recorded next to Circle's 14 November 2025 figure.
- 🟡 Multichain / Fantom, July 2023: >120 mn USD drained; bridged USDC ~22% of face; Circle freeze of 63 mn USD, no restoration of the wrap.
- 🟡 DefiLlama via CoinDesk, July 2023, and Spark.money 2026: lock-and-mint exploits 2.66–2.8 bn USD in 2022–2023.
- 🟡 Polish edition: 84.2% of Tether's 2025 blocked addresses on Tron (3,506 addresses, 853 mn USD).
- 🟡 Ripple / knowledge-base module 14: Wormhole Native Token Transfers, 40+ chains.

## Caveats

Circle's proxy-admin signer count and Ethena's `DEFAULT_ADMIN_ROLE` signer count are unlocated. No number is used.

CCTP's current supported-chain count is 11 in one source and 13+ in another, depending on reading date. This chapter uses Circle's native-issuance path (11 chains in early 2024, 28 in April 2026) and does not pick a present-tense CCTP chain count.

Tether freeze totals disagree by window and method. 5.69 bn USD (26 July 2026), 3.3 bn USD (2023–2025), and the 2025 Tron composition (853 mn USD) are separate readings. They are not summed and not averaged with Circle's 109 mn USD.

The DAI/USDS freeze cell is a known split: chapter 3 says USDS added a freeze; the Polish table groups DAI/USDS as without a token-level blacklist. The matrix marks mixed.

USDe and DAI/USDS are not described as US payment stablecoins.

A 300,000 USD Ethena maximum loss is a designed cap on one compromised-role scenario, not a full-protocol loss estimate.

Multichain's "more than 120 mn USD" and Circle's 63 mn USD freeze are both secondary. The 22% Fantom print is the price of the wrap, not of native USDC.
