Skip to main content
Tempo Tempo is a payments-first chain, incubated by Stripe and Paradigm. Corridor holds every customer balance on it, settles every flow through it, and reconciles against its logs.

Why Tempo is the hub

Memos are first-class

TIP-20 transferWithMemo takes a bytes32 memo and emits it as an indexed topic of TransferWithMemo. The 32-byte Corridor Reference fits exactly, and reconciliation filters logs by reference with plain eth_getLogs.

Gas in stablecoins

There is no native gas token. Vaults pay fees in pathUSD, the asset they already hold, through the Fee AMM. No ETH float to manage per vault.

Fast, final settlement

About 0.6 s to finality, so the hub is never the slow step in a payment.

A neutral quote token

pathUSD is Tempo’s quote token, issued by Bridge (a Stripe company). Every USD TIP-20 routes through it on the enshrined stablecoin DEX.

pathUSD as the unit of account

Every stablecoin on Tempo is a TIP-20, including USDC.e (Stargate-bridged USDC). Corridor treats pathUSD as its unit of account and accepts any USD TIP-20 at the edges:
pathUSD is supported by Across (pathUSD (4217) → USDC on Base and others), issued by the Moderato faucet so testnet matches production, and accepted by validators as a fee token. Its circulating supply is still small, so each corridor carries a settlementAsset policy: when a ticket exceeds pathUSD depth, the corridor settles in USDC.e instead. Switching is configuration, not a migration. See ADR 0001.

Client

Corridor uses viem’s built-in Tempo support (viem/tempo):
The Moderato faucet funds an address through the RPC method tempo_fundAddress.

Moving value

Legs call tempoMoveOnce: before sending, they search for an identical movement (same memo, parties and amount) since the saga’s start block. A retry after a crash between send and bookkeeping finds the transfer instead of sending it twice.

Observing

TempoObserver watches the vault addresses from a stored block cursor:
  • TransferWithMemo logs in and out of each vault (two queries, because indexed-argument filters are ORed within an array).
  • Optionally, unreferenced movements: plain inbound Transfers (faucet mints, owner top-ups, deposits without a memo) and fee transfers to the Fee Manager.

Gas accounting

Every Tempo transaction pays its fee as a TIP-20 Transfer from the fee payer to the Fee Manager at 0xfeec000000000000000000000000000000000000, logged in the same receipt. On a real 2.000000 pathUSD transfer the vault’s balance fell by 2.000098: 98 base units were the fee, equal to gasUsed × effectiveGasPrice ÷ 10¹², rounded up. Corridor books each fee a vault pays to expense:gas, keyed by that log, so the treasury’s on-chain balance equals the ledger to the last unit. See Reconciliation.

Evidence

  • Memo transfer found by indexed topic and booked once: pnpm tempo:smoke.
  • Payout to a Shenzhen supplier with a decodable reference: 0x671161f6….
  • Treasury on-chain = ledger: 1,000,051.994555 pathUSD, 10 fees booked from the chain.