Curve swap

Curve swap guide is the ERC-20 User’s Quick Start to Allowance

Curve swap guide is a focused quick start for exchanging ERC-20 USDC for USDT through Curve after authorizing the swap contract to spend the input token. Connect an EVM wallet, select the chain holding your USDC, enter USDT as output, review the quoted minimum and approve the exact USDC amount if no sufficient allowance exists. Once that approval confirms, submit the swap and keep enough native gas token for both transactions.

Bottom line: It is a step-by-step ERC-20 exchange procedure for trading USDC for USDT by approving token allowance before Curve routes the swap through suitable liquidity pools.

Curve Swap Router versus CoW Swap for USDC to USDT

On the operational side, Curve Swap Router is an on-chain route executor, while CoW Swap is an intent-based aggregator that can source Curve liquidity. The Curve route is the cleaner choice when you want the interface to compare Curve pools and return one minimum-received figure. CoW Swap, 1inch and Odos use their own execution paths, so the approved spender can differ. An allowance granted for one contract doesn’t authorize another. Curve adds a 0% frontend fee, although the selected pool still charges its trading fee.

Allowance scope before the first signature

An ERC-20 allowance is a token-contract permission that caps how much one named spender can transfer from one wallet.

Exact-amount approval

Ethereum USDC uses 6 decimals, so each displayed USDC represents 1,000,000 base units and an exact approval encodes the chosen input at that scale. The approval changes contract state; it doesn’t transfer USDC or reserve the balance. EIP-20 defines approve and allowance among 6 core token methods, alongside transfer, transferFrom, balanceOf and totalSupply; it also defines 2 events, Transfer and Approval. Approving only the intended input limits the remaining authorization after the swap, while approving a larger figure avoids repeating approval for later trades with the same spender.

Existing allowance

Existing allowance is the remaining owner-token-spender permission recorded by the input token contract on that chain. Curve reads it before building the transaction. When the value equals or exceeds the requested input, the router can proceed without another approval. A smaller value, another input token or a different spender creates a separate allowance requirement. This distinction explains why 2 interfaces using the same USDC balance don’t necessarily share approval state.

Changing a live allowance

Ethereum USDT requires its allowance to be set to 0 before a new nonzero value replaces an existing nonzero value. That turns this update into 2 approval transactions before the swap, for 3 state-changing submissions in total. Wallet interfaces may prepare the sequence automatically; the signatures remain separate. An approval stays live until transfers consume it or a later approval changes it, so disconnecting MetaMask or Rabby doesn’t alter the on-chain permission.

Wallet, network and gas prerequisites

A Curve quick start is an EVM wallet session with the input token and native gas asset on the same selected chain.

Network identity

Ethereum Mainnet uses chain ID 1, OP Mainnet uses 10, Polygon PoS uses 137, Arbitrum One uses 42161 and Base uses 8453. Curve deployments on those networks are separate contract systems, even when the wallet address looks identical. Ethereum, OP Mainnet, Arbitrum One and Base charge gas in ETH; Polygon PoS charges POL. USDC held on Base can’t satisfy an Ethereum Mainnet allowance, because balances and allowances belong to one token contract on one chain. A bridge transfer is a separate action, not part of the swap approval. The ticker doesn’t carry state across networks.

Decision checklist before approving

This Curve swap guide uses five conditions to decide whether the approval screen is ready for a USDC-to-USDT submission.

  • The wallet network matches the chain holding the displayed USDC balance.
  • The native gas balance covers both approval and swap when allowance is insufficient.
  • The selected contracts represent the intended USDC input and USDT output on that chain.
  • The input amount stays within the wallet’s spendable USDC balance.
  • The approval names the spender presented by the selected Curve route.

Restart the quote whenever the chain, token or spender changes, because the displayed route, allowance status, pool path, minimum received and gas estimate all belong to the earlier combination; a new quote aligns them with the newly selected transaction.

How many wallet confirmations does a Curve swap need?

A Curve ERC-20 swap needs 1 transaction with sufficient allowance, 2 from zero allowance or 3 when Ethereum USDT needs a zero-first reset.

New allowance: 2 state changes

With zero allowance, the first state change calls approve on the USDC contract and pays network gas. Once that receipt succeeds, Curve refreshes its route before preparing the exchange call. The second state change transfers the authorized input through the router, executes the selected pool path and returns USDT subject to the signed minimum output. Each transaction receives its own receipt and status. A confirmed approval therefore proves permission changed; it doesn’t prove the later exchange has been submitted or settled.

Existing allowance: 1 state change

A sufficient existing allowance reduces the wallet flow to 1 on-chain swap transaction. Connection prompts, account selection and network switching remain interface actions rather than payable contract calls. They don’t emit transaction receipts or consume network gas. The exchange still asks for a wallet signature because it moves the approved USDC and calls Curve contracts, even though the preliminary approve call has disappeared.

Wallet prompts and chain records

Wallet connection and network switching are off-chain actions; neither consumes gas nor creates a receipt. An EVM address is 20 bytes, commonly displayed as 40 hexadecimal characters after the 0x prefix, while a transaction hash is 32 bytes and 64 hexadecimal characters. This difference helps identify whether an approval reached the chain: the state-changing signature produces a transaction hash and then an Approval log.

Allowance cost, pool fee and network gas

A Curve swap cost is the sum of pool trading fee and network gas, while token approval adds gas without a pool fee.

Curve’s interface applies a 0% frontend fee. Curve documents most Stableswap pool fees between 0.005% and 0.02%, Strategic Reserve pools near 0.001% and Cryptoswap fees from 0.05% to 0.4%. The route’s quoted output already reflects its pool fee, including any dynamic fee produced by pool imbalance. Gas remains separate because the network prices each state change. When allowance is missing, the wallet estimates approval gas and swap gas as 2 transactions rather than one.

The subject is unpacked in detail. The native-token cost moves with network demand and call complexity. A direct pool exchange can use less gas than a 5-hop route, yet a richer route can return more output. Compare the final minimum received after pool fees with the wallet’s separate gas estimate; the preferable route changes with trade size, pool depth and network demand.

USDC and USDT amounts beneath the ticker display

Token decimals are display metadata that convert integer contract balances into the human-readable amounts shown in Curve’s swap form.

USDC and Ethereum USDT each use 6 decimals, so 1 token equals 1,000,000 base units. DAI and WETH use 18 decimals, placing 1 token at 10^18 base units, while WBTC uses 8 decimals and 100,000,000 base units. The ERC-20 standard makes decimals one of 3 optional metadata methods with name and symbol; contracts still move uint256 integers. Curve normalizes those scales when quoting across a pool, preventing USDC’s six-place representation from being treated like DAI’s 18-place representation. The approval amount uses the input token’s scale, not the output token’s.

Two assets can display similar symbols while referencing different contracts or chains. Match the selected asset to its chain-specific token contract before approving, because the spender receives permission for that exact contract only.

Router calldata and minimum-output enforcement

The Curve Swap Router is a transaction contract that receives approved input, executes a computed route and enforces a final minimum output.

At the other end, Curve Router can perform up to 5 swaps inside one transaction. Its route layout provides 11 address slots, arranged as the input token followed by alternating pool-or-zap and token addresses. A 5-by-5 parameter matrix supplies coin indexes, swap type, pool type and coin count for each hop. Route search happens off-chain; on-chain execution follows the calldata you sign. The min_dy value is the final output floor. If execution would return less, the transaction reverts and the input transfer doesn’t settle, while network gas remains spent.

A USDC-to-USDT path normally draws on a Stableswap pool because those assets target a similar value. Curve Router can also compose basepools, metapools and wrapping steps, whereas Cryptoswap pools serve independently priced assets such as ETH and WBTC. The top-level spender still pulls only the authorized input amount. Pool balances, gas estimates and available contracts determine whether the route stays direct or expands into several legs.

Practical questions about Curve swap guide

Does a Curve approval move USDC out of my wallet?

An approval doesn’t transfer USDC; it writes an allowance for a specified spender in the USDC token contract. Your balance remains unchanged until the router’s swap transaction calls transferFrom and completes. The approval still costs network gas because it changes on-chain state. Its receipt includes an Approval event with the owner, spender and value, whereas the later swap receipt records the token transfers and Curve exchange execution.

Why can the swap quote change after approval confirms?

A Curve quote can change because approval and exchange are separate transactions with time between their confirmations. Pool balances, dynamic fees and network gas estimates can move before the swap is built. After approval, the interface requests a fresh route and recalculates the minimum received amount. Read that second quote as a new decision: the confirmed allowance authorizes spending up to its value, but it doesn’t lock a rate or reserve pool liquidity.

Which receipt field proves that the USDC allowance changed?

The Approval event in the USDC transaction receipt records the allowance update. EIP-20 defines three event values: owner, spender and value; owner and spender are indexed addresses, while value is the approved uint256 amount. A successful receipt plus that log confirms the state-changing call reached the token contract. To determine the remaining permission later, read the token’s allowance function, because subsequent transferFrom calls reduce ordinary finite allowances.

Could a Safe multisig execute approval and swap together?

A Safe smart account can package an approval and a Curve swap into a multisend transaction when its interface and transaction builder encode both calls correctly. The Safe owners still approve the bundle under the account’s signature threshold, and the account needs the chain’s native gas funding or an available sponsored execution path. If the Curve route changes before execution, rebuild the swap calldata so its minimum output and spender match the bundled approval.