Balancer is a Decentralized Exchange Protocol for Programmable ERC-20 Liquidity Pools
Balancer is a swap interface that turns a selected token amount into a quoted route, an ERC-20 spending permission when required, a signed on-chain transaction, and a verifiable receipt. The operational sequence is precise: connect the intended wallet on the intended network, choose the input and output token contracts, enter an amount, inspect quoted output and price impact, resolve the allowance step, confirm the swap, and wait for a successful receipt. The quote does not move tokens. The approval only authorizes spending. Execution changes balances only after the swap transaction succeeds. This handbook follows those states in order and shows which identifiers, limits, and records prove that each state completed.
Updated
The short version: A missing ERC-20 allowance adds one on-chain approval before the swap transaction can be submitted.
From wallet connection to confirmed receipt
The Balancer swap workflow advances through connection, quotation, authorization, execution, and receipt confirmation in that order.
Begin with the account that will supply the input token and pay network gas. MetaMask and WalletConnect expose the selected account and chain to the interface. Ethereum uses chain ID 1, Arbitrum uses 42161, Base uses 8453, and Gnosis Chain uses 100. One transaction executes on one chain, so the token contract, allowance, balance, and gas asset must all belong to that same network. A balance held on Base does not fund an Ethereum swap. The connected 20-byte wallet address remains the sender throughout the sequence (more on this in Balancer limits ).
Select tokens by their chain-specific contracts, then enter the exact input amount. USDC, WETH, DAI, and BAL use different contract addresses, even when a familiar ticker appears across networks. Balancer sends the pair and amount to its Smart Order Router, which searches available pool paths and queries current on-chain state.
The returned quote supplies an expected output and the data needed to build the call. Review the token pair, input amount, quoted output, price impact, slippage setting, and estimated network cost before opening the wallet request. If the ERC-20 allowance is insufficient, the interface inserts an approval step. A Balancer V3 route then uses a Permit2 signature when building the swap call. The wallet finally broadcasts the prepared transaction.
Broadcasting produces a transaction hash, not proof of completion. The interface waits for a receipt, and a successful receipt commits the token transfers as one atomic state change.
What does the approval transaction authorize?
The Balancer approval transaction authorizes a defined spender to transfer the selected ERC-20 from the connected account.
ERC-20 defines approve(spender, amount) with 2 arguments and stores the result as an allowance for one owner, one token contract, and one spender. The amount uses an unsigned 256-bit integer in the token's smallest units. A successful approval emits an Approval event; it does not exchange tokens or promise a quoted output. For Balancer V3, the token approval points to Permit2. A typed-data Permit2 signature then authorizes the Balancer Router to use the permitted amount within the signed conditions. Permit2 keeps token approval and operation authorization as distinct layers.
An insufficient allowance therefore adds 1 on-chain approval before the swap. The initial sequence has 2 transaction receipts: one for approval and one for execution, with a Permit2 message signature between them on a V3 route. A sufficient existing allowance removes the first transaction. Native ETH needs no ERC-20 allowance, while WETH does. After approval confirms, refresh the quote to incorporate the latest pool balances and network conditions.
Quote controls before wallet confirmation
Balancer's quote controls define the acceptable execution boundary before the wallet submits a swap. Expected output is the simulated return; price impact measures the route's own effect on the exchange rate; slippage tolerance becomes a minimum output for an exact-input swap or a maximum input for an exact-output swap. These figures answer different questions and should be read separately. Basis-point arithmetic is fixed: 1 basis point equals 0.01%, 50 basis points equal 0.50%, and 100 basis points equal 1%. A refreshed quote replaces the earlier snapshot.
Fixed identifiers and execution limits
Fixed transaction parameters let a Balancer swap be checked without relying on ticker labels or changing market data.
In day-to-day use, Balancer V3 accepts pool tokens with at most 18 decimals, sets the minimum trade amount to 1e6 scaled units, and caps router token amounts at 2^128–1. Scaling occurs after token-decimal and rate adjustments, and the minimum applies to each participating side of a swap.
| Parameter | Fixed value | Operational use | Hard limit or threshold |
|---|---|---|---|
| ERC-20 allowance amount | uint256 | Encodes approved token units | 0 through 2^256–1 |
| Balancer V3 token decimals | Up to 18 | Normalizes pool accounting | 18-decimal maximum |
| Minimum trade amount | 1e6 scaled units | Validates swap input and output | Each participating side meets the floor |
| Router token amount | Up to 2^128–1 | Fits packed balance accounting | uint128 maximum |
| EVM address width | 20 bytes | Identifies account, token, and spender | Exactly 40 hexadecimal digits after 0x |
| Transaction hash width | 32 bytes | Locates approval or swap execution | Exactly 64 hexadecimal digits after 0x |
Token precision determines how the interface converts display amounts into integers. USDC uses 6 decimals, while WETH, DAI, and BAL use 18. A 20-byte address distinguishes the token contract from the wallet and spender. The 32-byte transaction hash identifies one submitted operation. Record these full values; shortened interface labels are presentation aids, not execution identifiers.
How do you verify the executed swap?
A Balancer swap is verified by a successful receipt plus matching balance and Transfer-event changes on the selected chain.
Start with the swap hash returned by the wallet. Open that hash on the explorer for the selected network, such as Etherscan for Ethereum, Arbiscan for Arbitrum, BaseScan for Base, or GnosisScan for Gnosis Chain. Match the connected wallet, chain, destination contract, and block number. The receipt status has 2 defined outcomes: 1 means the top-level call succeeded, while 0 means it failed and its state changes were not applied.
Next, inspect ERC-20 Transfer logs and the wallet's post-transaction balances. The standard event contains 3 arguments: 2 indexed addresses and 1 unsigned 256-bit amount. A routed swap may emit several pool and intermediary transfers, so isolate the input leaving the wallet and the final output entering it. Network gas changes the native-asset balance separately. Decode each raw token amount with that contract's decimals before comparing it with the interface.
A compact operating record should preserve the chain ID, wallet address, input and output contracts, approval hash when present, swap hash, block number, status, and actual output. The receipt records execution; the earlier quote records an expectation. Once the actual output agrees with the decoded logs and wallet delta, the remaining decision concerns allowance maintenance.
Recovery and allowance maintenance
Day to day, Balancer swap recovery starts by identifying whether the failure occurred before approval, after approval, or during swap execution.
A wrong-network selection is the common setup error. Align the wallet and Balancer interface to the chain that holds the input token, then reselect both token contracts and request a fresh quote. Chain ID 1, 42161, 8453, or 100 must match the intended deployment. A wallet request rejected before broadcast creates no transaction hash and spends no gas. An approval submitted on another network does not create an allowance on the intended chain.
If approval reached status 1 but the swap was rejected or reached status 0, the approval remains a separate confirmed state change. Refresh the allowance and quote instead of approving again automatically. A failed swap receipt consumes network gas but leaves the swap's token transfers unapplied. When repeated use is not planned, setting the token allowance to 0 removes that spender's ERC-20 permission. Revocation is another on-chain transaction and does not reverse a completed swap. After any recovery step, request a new quote before the next swap.
Helpful answers about Balancer
Do I pay network gas if I reject the Balancer approval request?
Rejecting a Balancer approval request before broadcast costs no network gas. The wallet has not submitted a transaction, so no hash or receipt exists. Gas becomes payable only when the network includes a broadcast transaction on-chain, including one that later returns receipt status 0. An off-chain Permit2 message signature also carries no gas charge by itself, although the swap transaction that consumes that signature does.
Can a hardware wallet complete the Balancer approval and swap sequence?
A hardware wallet can complete the Balancer sequence when it connects through compatible EVM wallet software. Ledger and Trezor devices commonly operate through interfaces such as MetaMask, while WalletConnect links other supported wallet clients. Expect separate device reviews for an ERC-20 approval and the swap transaction when allowance is missing, plus a typed-data signature for a Balancer V3 Permit2 route. The device account and selected chain must remain unchanged throughout the sequence. Confirm requests on the device screen.
Why is the output token missing from my wallet after a successful receipt?
A successful receipt can coexist with a wallet interface that has not added the output token to its asset list. Match the chain, wallet address, output-token contract, and ERC-20 Transfer log first. Then add that exact token contract to the wallet's display if required. The on-chain balance does not depend on whether the wallet renders the ticker, icon, or fiat estimate. No second transfer updates that display.
Does closing the Balancer tab cancel a transaction that already has a hash?
Closing the Balancer tab does not cancel a transaction that the wallet already broadcast. The selected network continues processing it independently of the browser session. Preserve the 32-byte transaction hash, reopen the relevant block explorer, and inspect the eventual receipt. Reopening Balancer may restore interface tracking, but the receipt remains the authoritative execution record. A wallet request closed before broadcast is different: it produces no transaction hash and creates no pending on-chain operation. Record the wallet address and chain ID beside it.
Which native asset pays gas on Ethereum, Arbitrum, Base, and Gnosis Chain?
The selected chain's native asset pays gas for each on-chain transaction. Ethereum, Arbitrum, and Base use ETH for gas, while Gnosis Chain uses xDAI. The input token does not replace this requirement unless it is also the chain's native gas asset and the wallet keeps enough outside the swap amount. An adequate USDC, WETH, DAI, or BAL balance alone therefore does not guarantee that the wallet can broadcast the operation.