Reserve Infrastructure

Every dollar accounted for.

StableMMF maps the money market funds behind stablecoins — from T-Bill maturity schedules to real-time NAV attestation. Reserve transparency, not trust.


T2 · Reserves & Vaults

How deep does reserve verification run?

The big picture: Reserve verification is migrating from quarterly PDF attestations (policy-enforced, L5) toward on-chain NAV oracles (code-enforced, L3–L4). This Stack Diagram shows the compliance depth across three issuers.

COMPLIANCE DEPTH →Reserve Verification StackT2 Reserves & Vaults — where reserve verification mechanisms embed across issuersA-201 · SECTION CUTStableMMF.comUSDC / CircleBase (L2)USDT / TetherTRONPYUSD / PaxosEthereumL5APPLICATIONL4MIDDLEWARE / APIL3EXECUTIONL2CONSENSUSL1NETWORKSTATE TRANSITIONCircle TransparencyChainlink PoR FeedCircle Reserve Fund APIERC-4626 VaultBDO Italia AttestationTether Transparency PagePaxos Monthly AttestationPaxos Mint/Redeem APIGENIUS Act §4 DisclosureT2 Reserves & VaultsT7 Travel Rule & FilingGate (pre-condition)Monitor (concurrent)Obligation (post-settlement)Code-enforcedPolicy-enforced

Why it matters

$150B in reserves. One question: where is it?

The big picture: Stablecoin issuers hold more U.S. Treasuries than most sovereign nations. Money market funds are the vehicle — but transparency varies wildly.

  • Circle (USDC) — reserves in the Circle Reserve Fund managed by BlackRock. Weekly attestations, SEC-regulated 2a-7 fund
  • Tether (USDT) — quarterly attestation by BDO Italia. Mix of T-Bills, repo, secured loans. No single-fund structure
  • Paxos (PYUSD / USDP) — 100% cash and T-Bill equivalents. Monthly attestation. NYDFS-regulated trust
  • The gap: No unified standard for reserve composition disclosure, NAV tracking, or real-time proof of reserves
$150B+
Total stablecoin reserves
~80%
Held in T-Bills & repo
2a-7
SEC fund classification
$1.00
Target NAV per token

Reserve Composition

What backs the dollar peg.

Each issuer structures reserves differently. StableMMF normalizes the data into a comparable framework.

U.S. Treasury Bills

Short-duration sovereign debt

T-Bills with ≤ 90-day maturity. The safest, most liquid collateral. Preferred by GENIUS Act and MiCA frameworks.

Overnight Reverse Repo

Fed RRP facility access

Overnight collateralized lending to the Federal Reserve. Zero duration risk. Available to 2a-7 funds.

U.S. Agency Debt

FHLB & FFCB bonds

Government-sponsored enterprise debt. Slightly higher yield than T-Bills, minimal credit risk. Small portfolio allocation.

Cash Deposits

FDIC-insured bank accounts

Demand deposits at systemically important banks. Immediate liquidity for redemption spikes. Subject to FDIC limits.

S4 · Negotiation

Reserve verification journey — agentic mint route.

How it works: An AI agent initiates a USDC mint, passes identity verification, clears the reserve oracle gate, and receives tokens — all before an attestation obligation fires.

  • S1 Intent — agent requests mint via Circle API
  • S2 Identity — Verite credential check (AccreditedInvestor)
  • S4 Negotiation — Chainlink PoR oracle confirms 1:1 backing (T2 dominant stage)
  • S7 Facilitation — ERC-20 mint on Base, reserve fund receives fiat
  • S8 Finality — attestation obligation fires (GENIUS Act §4)
Reserve Verification JourneyAgentic mint route — USDC on Base via Circle Reserve FundAGENTIC ROUTEGateMonitorObligationSCREENING & MONITORING ZONESTATE CHANGE← GATES & PRE-CONDITIONSOBLIGATIONS →S1IntentS2IdentityS3IntentS4NegotiationS5IntentS6IntentS7FacilitationS8FinalityAI AgentCircle VeriteChainlink PoRUSDC ContractAuditor / SEC

Regulatory Landscape

What the law requires.

What to know: Two major frameworks are converging on reserve quality requirements for stablecoin issuers.

  • GENIUS Act (U.S.) — requires 1:1 reserves in cash, T-Bills, or insured deposits. Monthly public disclosure. Issuer-level licensing
  • MiCA (EU) — mandates 60% minimum in bank deposits across diversified credit institutions. EMI or credit institution license required
  • NYDFS Trust Charter — Paxos model. 100% reserve ratio, monthly attestation by independent auditor, strict asset composition limits
  • SEC Rule 2a-7 — governs money market funds holding stablecoin reserves. Weighted average maturity ≤ 60 days, weekly liquid assets ≥ 30%

GENIUS Act

United States

Federal stablecoin framework. 1:1 reserve mandate with approved asset classes. Expected enforcement 2026.

MiCA

European Union

Markets in Crypto-Assets Regulation. Live since June 2024. EMT reserve rules for euro-referenced tokens.

NYDFS

New York

Trust company charter for Paxos, Gemini. State-level reserve and attestation standard since 2018.

POC 01 Cloudflare Workers DeFiLlama API Live

Stablecoin Supply Tracker

What it does: A Cloudflare Worker calls the DeFiLlama /stablecoins API and returns normalized circulating supply data for USDC, USDT, and PYUSD across all chains. The page calls the Worker and renders the live response below.

Atlas · L1–L2 · MonitorL1ApplicationSupplyL2ProtocolSupplyL3Smart ContractL4AttestationL5Institutional
Calling /api/stablecoin-supply ...
Deployable Worker Source functions/api/stablecoin-supply.js
/**
 * POC 01 — Stablecoin Supply Tracker
 * Cloudflare Pages Function
 *
 * Calls DeFiLlama /stablecoins and returns normalized
 * supply data for USDC, USDT, PYUSD across chains.
 *
 * Deploy: Drop into /functions/api/stablecoin-supply.js
 * No auth required — DeFiLlama API is public.
 */

const STABLECOINS_URL =
  'https://stablecoins.llama.fi/stablecoins?includePrices=true';

const TARGETS = {
  USDC: { id: '1', name: 'USDC', issuer: 'Circle' },
  USDT: { id: '2', name: 'USDT', issuer: 'Tether' },
  PYUSD: { id: '115', name: 'PYUSD', issuer: 'Paxos' },
};

export async function onRequest(context) {
  const headers = {
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*',
    'Cache-Control': 'public, max-age=300',
  };

  try {
    const resp = await fetch(STABLECOINS_URL);
    if (!resp.ok)
      throw new Error(`DeFiLlama returned ${resp.status}`);

    const data = await resp.json();
    const peggedAssets = data.peggedAssets || [];
    const result = {};

    for (const [symbol, meta] of Object.entries(TARGETS)) {
      const asset = peggedAssets.find(
        (a) => a.symbol === symbol || a.id === meta.id
      );
      if (!asset) {
        result[symbol] = { error: 'not found' };
        continue;
      }

      const chains = asset.chainCirculating || {};
      const chainBreakdown = {};
      let totalCirculating = 0;

      for (const [chain, amounts] of Object.entries(chains)) {
        const current = amounts?.current?.peggedUSD || 0;
        if (current > 1_000_000) {
          chainBreakdown[chain] = Math.round(current);
          totalCirculating += current;
        }
      }

      const sortedChains = Object.entries(chainBreakdown)
        .sort(([, a], [, b]) => b - a)
        .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});

      result[symbol] = {
        issuer: meta.issuer,
        totalCirculating: Math.round(totalCirculating),
        price: asset.price ?? 1.0,
        chains: sortedChains,
        topChain: Object.keys(sortedChains)[0] || 'unknown',
        chainCount: Object.keys(sortedChains).length,
      };
    }

    return new Response(
      JSON.stringify({
        source: 'DeFiLlama',
        timestamp: new Date().toISOString(),
        data: result,
      }),
      { status: 200, headers }
    );
  } catch (err) {
    return new Response(
      JSON.stringify({ error: err.message }),
      { status: 502, headers }
    );
  }
}
POC 02 Cloudflare Workers On-Chain RPC Live

USDC On-Chain Reserve Ratio

What it does: A Cloudflare Worker reads USDC totalSupply() on Base and Ethereum via public RPCs, plus the Chainlink USDC/USD price feed on Ethereum. No API keys required — all public on-chain data.

  • Base USDC: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
  • Ethereum USDC: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
  • Chainlink USDC/USD: 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6
Atlas · L3–L4 · GateL1ApplicationL2ProtocolL3Smart ContractPoRL4AttestationPoRL5Institutional
Calling /api/reserve-ratio ...
Deployable Worker Source functions/api/reserve-ratio.js
/**
 * POC 02 — On-Chain USDC Reserve Ratio
 * Cloudflare Pages Function
 *
 * Reads USDC totalSupply on Base + Ethereum via public RPC,
 * plus the Chainlink USDC/USD price feed, to compute a live
 * reserve confidence indicator.
 *
 * Deploy: Drop into /functions/api/reserve-ratio.js
 * No API keys — uses public RPCs only.
 */

const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const USDC_ETH  = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
const CL_USDC   = '0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6';

const RPC_BASE = 'https://mainnet.base.org';
const RPC_ETH  = 'https://eth.llamarpc.com';

const TOTAL_SUPPLY = '0x18160ddd';  // totalSupply()
const LATEST_ROUND = '0xfeaf968c';  // latestRoundData()

async function ethCall(rpc, to, data) {
  const resp = await fetch(rpc, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0', id: 1,
      method: 'eth_call',
      params: [{ to, data }, 'latest'],
    }),
  });
  const json = await resp.json();
  if (json.error)
    throw new Error(`RPC: ${json.error.message}`);
  return json.result;
}

function hexToBigInt(hex) {
  if (!hex || hex === '0x') return 0n;
  return BigInt(hex);
}

export async function onRequest(context) {
  const headers = {
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*',
    'Cache-Control': 'public, max-age=60',
  };

  try {
    const [baseSup, ethSup, priceHex] = await Promise.all([
      ethCall(RPC_BASE, USDC_BASE, TOTAL_SUPPLY),
      ethCall(RPC_ETH, USDC_ETH, TOTAL_SUPPLY),
      ethCall(RPC_ETH, CL_USDC, LATEST_ROUND),
    ]);

    const baseSupply = Number(hexToBigInt(baseSup)) / 1e6;
    const ethSupply  = Number(hexToBigInt(ethSup)) / 1e6;

    const pd = priceHex.slice(2);
    const price = Number(hexToBigInt('0x' + pd.slice(64, 128))) / 1e8;
    const updatedAt = Number(hexToBigInt('0x' + pd.slice(192, 256)));

    return new Response(
      JSON.stringify({
        source: 'on-chain',
        timestamp: new Date().toISOString(),
        data: {
          base: { totalSupply: Math.round(baseSupply) },
          ethereum: { totalSupply: Math.round(ethSupply) },
          combined: {
            totalSupply: Math.round(baseSupply + ethSupply),
          },
          chainlinkPrice: {
            pair: 'USDC/USD',
            price,
            updatedAt: new Date(updatedAt * 1000).toISOString(),
          },
          reserveIndicator: {
            value: price,
            interpretation: price >= 0.999
              ? 'Peg holding' : 'Below peg',
          },
        },
      }),
      { status: 200, headers }
    );
  } catch (err) {
    return new Response(
      JSON.stringify({ error: err.message }),
      { status: 502, headers }
    );
  }
}