Dodo is a Swap Interface from Token Approval to On-Chain Verification
Dodo is a guided swap interface that turns a same-chain token request into two separate wallet decisions when an ERC-20 allowance is missing: approve the spending contract, then confirm the routed swap. Before signing, the user reviews the network, token contract, input, estimated output, route, slippage limit, transaction deadline, and gas estimate. After inclusion, wallet balances change only if every routed call succeeds; the transaction hash and token-transfer logs provide durable proof of execution.
The short version: It is a DEX interface where wallet users review quotes, use network gas to approve token spending and confirm swaps, then verify execution on-chain.
From Pair Selection to a Signable Route
The Dodo swap walkthrough converts one requested token pair into a quoted route, an allowance decision, and one final EVM transaction for the wallet to sign.
Start with the connected account and network because every balance, allowance, and route belongs to one chain. MetaMask, Trust Wallet, TokenPocket, imToken, SafePal, and Coinbase Wallet expose the selected chain before Dodo reads token balances. Searching by token contract address is more reliable than a symbol when several assets share a ticker. SmartTrade then asks liquidity sources on that chain for paths between the input and output tokens. Ethereum, Arbitrum, Base, Polygon, BNB Smart Chain, and Avalanche keep separate state; a balance on one never satisfies a swap on another.
Quote and Route
SmartTrade compares linear, split-order, and external paths. A linear path sends the whole amount through one sequence of pools; a split path divides it across pools; an external path delegates execution to a supported router such as 0x, 1inch, or ParaSwap. The interface returns an estimated output, exchange rate, price impact, route, gas estimate, minimum received amount, and deadline. Those fields describe a snapshot rather than a reserved price.
Approval and Final Signature
If the input is an ERC-20 token and allowance is insufficient, Dodo presents approval before the swap. The first flow therefore requires two on-chain transactions: one approval and one swap. A sufficient existing allowance reduces the sequence to one. A native input uses zero ERC-20 approvals because its value travels with the payable swap call. The approval grants spending authority; the final swap consumes the quote and route.
The Pre-Sign Decision Checklist
The Dodo confirmation screen is a decision gate: its network, token addresses, bounded output, route, deadline, and gas currency must agree with the intended trade.
Chain identity is an exact integer, not a network label. Dodo's routing interface recognizes Ethereum as chain ID 1, Optimism as 10, BNB Smart Chain as 56, Polygon as 137, Base as 8453, Arbitrum as 42161, and Avalanche C-Chain as 43114. A wallet signs for one ID, so the same account address does not make a transaction portable. The slippage field sets the lowest acceptable output, while the deadline limits how long the calldata remains executable. The interface blocks submission above 20% slippage unless Expert Mode is enabled, turning that percentage into a deliberate extra decision.
Before the wallet opens, check five concrete conditions:
- The connected account holds the input token and native gas asset on the displayed chain.
- Input and output contract addresses and decimals match the intended assets.
- The approval amount covers the input without exceeding the spending scope chosen in the wallet.
- Minimum received and deadline match the intended tolerance for quote movement and confirmation delay.
- Route detail justifies any intermediary tokens or pool splits; enable Disable Indirect Routing when a direct-only path is required.
A refreshed quote reflects changed settings, whereas the earlier snapshot reflects the discarded choices.
Allowance Scope and Failure Boundaries
The Dodo allowance boundary determines whether the router can collect the input token, while the minimum output and deadline determine whether settlement completes.
Finite and Maximum Allowances
The ERC-20 approve call carries exactly two arguments - a 20-byte spender address and a 256-bit allowance value - and successful approval requires an Approval event. Dodo offers Use site suggestion, custom, and MAX approval choices. A custom amount below the intended input produces insufficient allowance; MAX covers more than the present swap. The conventional maximum integer is 2^256−1, but the wallet prompt reveals whether that value, the wallet balance, or another amount is being signed. Approval sets token-contract state without moving tokens.
Deadline and Output Reverts
The swap has two contract-level boundaries. First, the deadline must be at least the block timestamp when execution begins. Second, the received amount must meet minReturnAmount, which the route contract requires to be greater than 0. A route call that misses either condition reverts its token transfers and pool updates. Gas already used by that failed transaction remains charged, while an approval confirmed in an earlier transaction remains in token storage.
A finite allowance limits reusable spending authority; MAX favors fewer approval transactions.
What Changes On-Chain After Confirmation?
After Dodo confirmation, one atomic swap transaction collects the input, executes every route leg, checks the output floor, sends proceeds, and records logs. The adjacent topic is explained in Dodo working with guide requirements.
Token Intake and Route Execution
The route collects ERC-20 input through Dodo's approval stack, while native input enters as transaction value and is wrapped where the path requires it.
For an ERC-20 input, the token allowance names the Dodo approval contract, and the route reaches it through the registered approval proxy to call transferFrom for the swap's input amount. Tokens then move to the first pool, adapter, or router named by the calldata. A native input arrives as transaction value and is wrapped when an EVM route needs its ERC-20 representation. SmartTrade chooses among three route shapes exposed by the routing contract: linear mixSwap, split dodoMutliSwap, and externalSwap for delegated execution. The wallet signs one outer transaction even when that call crosses several pools, so every leg shares one success or revert outcome.
Minimum Return and Atomic Settlement
On completion, the route calculates received output from the balance change, applies route-fee data, and compares the distributable amount with minReturnAmount. The contract rejects a zero minimum and reverts when the final amount falls below the bound. Because EVM execution is atomic, a later failure unwinds earlier pool transfers inside that same transaction. The approval remains separate because it was mined under its own transaction hash.
Receipt and Order History
Successful settlement lowers the input balance, raises the output balance, spends native gas, and emits an OrderHistory event with five values: from token, to token, sender, input amount, and return amount. ERC-20 token contracts also emit Transfer logs along the route. Dodo Order History mirrors user-facing fields such as status, rate, creation time, and transaction hash, while the chain receipt remains the authoritative state record.
Reading the Transaction Receipt
The Dodo transaction receipt verifies execution by matching one hash to the intended chain, sender, router, status, gas use, and token-transfer logs.
An EVM transaction hash is 32 bytes, displayed as 64 hexadecimal digits after the 0x prefix. An EVM address is 20 bytes, displayed as 40 hexadecimal digits after the same prefix. That makes a hash 66 characters and an address 42. On explorers such as Etherscan, Arbiscan, BaseScan, BscScan, PolygonScan, and SnowTrace, receipt status 1 means success and status 0 means failure. Match the sender, destination contract, block number, and token transfers rather than relying only on the wallet's notification.
Each ERC-20 Transfer log carries three values: from, to, and amount; the first two addresses are indexed for search. Compare the net output sent to the connected account with Dodo Order History. On Ethereum, 12-second slots and 32-slot epochs provide timing context, so one epoch spans 6.4 minutes. Other supported chains use their own confirmation and finality rules. Order History is convenient; the explorer receipt supplies independent ledger evidence.
Recovery from a Network Mismatch
A Dodo network mismatch is corrected by switching the wallet to the quote's chain, reconnecting the account, and generating a new route before signing.
The common setup error appears when the interface shows one chain while the wallet prepares another chain ID. Balances vanish, the pair becomes unavailable, or the wallet declines the request because transaction data and selected network disagree. Cancel the unsigned prompt, switch networks inside the wallet, reconnect Dodo, reselect both token contract addresses, and request a fresh quote. Do not reuse the previous route: pool addresses, wrapped native tokens, approval contracts, gas assets, and deadlines are chain-specific. A rejected prompt broadcasts zero transactions and spends zero gas, so recovery remains off-chain until a new signature is submitted.
If an approval was confirmed on the wrong chain, it exists only there. The intended chain still reads its own allowance, starting at 0 unless that account previously approved the relevant Dodo contract. Submit a new approval only after the correct chain ID and token address appear in the wallet prompt. Ethereum's chain ID 1 and Arbitrum's 42161 therefore produce separate approval receipts, even when the account's 20-byte address looks identical.
Quick answers about Dodo
Which asset pays gas for a Dodo swap?
The chain's native asset pays gas for a Dodo swap, even when neither traded token is native. Ethereum, Arbitrum, Base, and Optimism use ETH; BNB Smart Chain uses BNB; Avalanche C-Chain uses AVAX; and Polygon uses POL. The wallet needs enough native balance for both approval and swap when two transactions are required. An ERC-20 balance cannot automatically substitute for the gas asset, so a valid quote still waits if the native balance is insufficient.
Does closing the browser tab stop a submitted Dodo swap?
Closing the browser does not stop a submitted Dodo swap because the signed transaction already sits with the chain's nodes. Execution continues until the transaction is included, replaced, dropped, or rejected by a contract condition such as the deadline or minimum return. Reopening Dodo can restore Order History, while the transaction hash remains usable in a block explorer. A quote that was never signed and broadcast has no on-chain life, so closing the tab discards only that local interface state.
Can I revoke a Dodo allowance after the swap?
Yes, an ERC-20 allowance granted for Dodo can be overwritten with 0 after the swap by sending another token-contract transaction. Revocation costs gas because it changes on-chain storage, and it applies only to that owner, token, spender, and chain combination. A finite allowance may already be lower after transferFrom, while a broad allowance can remain available. Check the recorded spender before submitting the 0 approval; changing an unrelated router address leaves the original allowance unchanged.
Why is the output token missing after a successful Dodo receipt?
The output token can be present on-chain even when the wallet does not list it in the visible asset view. Match the successful receipt's token-transfer log to the connected account, confirm the chain ID, and add the output asset using its contract address. Wallet displays use each token's decimals to format raw integer balances, so the correct contract matters. If the transfer log names another recipient, compare that address with the account that signed the Dodo transaction before changing display settings.
When can I submit a second Dodo swap while the first is pending?
A second Dodo swap can be submitted immediately, but EVM transactions from one account use sequential nonces. A later nonce normally waits behind an earlier pending nonce, even when its gas offer is higher. Replacing the first transaction requires the same nonce and a stronger fee offer through the wallet's replacement function. Two independently signed swaps also use separate quotes, minimum returns, deadlines, and gas limits, so one pending route never refreshes the other.
Do wallet account changes preserve a Dodo approval and quote?
Switching wallet accounts does not preserve the relevant Dodo allowance because ERC-20 approval state is keyed to the token owner and spender. The displayed quote describes market routing rather than account authority, yet the new account has a different balance, allowance, nonce, and gas position. Reconnect the new account, reread both token balances, and request a fresh quote before signing. The same 20-byte address format does not merge state between accounts or between chain IDs.