Balancer is a programmable AMM: join a pool, track BPT, adjust liquidity and exit safely

Balancer is a programmable automated market maker for entering token pools, receiving Balancer Pool Tokens (BPT), adjusting liquidity and redeeming the underlying assets. A position begins when the Vault accepts the selected tokens and mints BPT to the recipient. Its later status is read from that BPT balance, the pool's total supply and the pool's changing reserves.

Updated on

This page follows that lifecycle from one join through routine top-ups to a partial or complete exit. It keeps fees and live yields in context while concentrating on the records needed to close the position cleanly.

Entering a two-token pool with WETH and USDC

2 tokens are enough to demonstrate a Balancer join: supply WETH and USDC in the pool's displayed proportions, then receive BPT in the connected wallet. The confirmation should identify the exact pool, input amounts, minimum BPT output and recipient address.

WETH uses 18 decimals while USDC uses 6, yet the Vault scales both balances to 18-decimal precision for pool mathematics. This normalization happens inside one settlement. A proportional deposit follows the pool's current balance ratio and avoids the internal trade created by an uneven contribution. Flexible entry with only USDC remains possible where the pool permits unbalanced liquidity, but excess input is treated economically like a swap. Price impact and the pool's swap fee therefore sit beside the convenience of supplying 1 token.

A proportional join touches every registered token; a single-token join touches 1 and handles the imbalance economically inside the pool.

Network identity remains part of the position record. Ethereum uses chain ID 1, Arbitrum One uses 42161, Base uses 8453, Optimism uses 10, Gnosis uses 100 and Avalanche C-Chain uses 43114. Balancer deployments on these chains settle independently, so a BPT contract on Base is unrelated to an identically named token elsewhere. Keep the pool address, transaction hash and chain ID together.

Choosing among six liquidity routes

6 user-facing routes cover the usual Balancer position changes, with 3 additions and 3 removals distinguished by their BPT target and non-zero token count at settlement. The route determines whether the user fixes the token amount or the BPT amount.

Liquidity route Bound fixed by the transaction Non-zero token count
Proportional add Maximum inputs and minimum BPT out 2-8 supplied tokens
Unbalanced add Exact inputs and minimum BPT out 1-8 supplied tokens
Single-token exact-BPT add Exact BPT out and maximum input 1 supplied token
Proportional remove Exact BPT in and minimum outputs 2-8 returned tokens
Single-token exact-BPT remove Exact BPT in and minimum output 1 returned token
Single-token exact-output remove Exact token out and maximum BPT in 1 returned token

The V3 type system defines 5 add-liquidity kinds and 4 remove-liquidity kinds. Donation and custom calls account for the extra add paths, while custom removal supplies the fourth exit path. Donation deliberately mints no BPT, so it does not establish or enlarge a user position. A pool configuration may disable unbalanced liquidity, leaving proportional operations available. When both routes exist, proportional movement preserves the pool ratio; single-sided movement buys convenience through internal price impact.

What does your BPT balance actually measure?

18 decimal places define every Balancer Pool Token, while economic ownership equals the wallet's BPT balance divided by total BPT supply and then multiplied by 100. Minting raises both the holder's balance and supply; burning lowers both.

Every Balancer V3 BPT uses 18 decimal places and implements ERC-20 behavior, including transfers, allowances and balance queries. The token also supports ERC-2612 permits, where 1 nonce is consumed when each permit is executed and the signature carries a deadline.

A wallet balance is complete only while the BPT remains in that wallet. Depositing BPT into a Balancer gauge moves the token into the gauge contract and creates a staked balance there. Aura can add another custody layer for supported pools. The underlying pool share still follows the amount controlled for the user, but a simple ERC-20 wallet query no longer finds all of it. Add direct BPT, gauge deposits and any wrapped position before judging whether the displayed share is complete.

Reading the position after the transaction

1 confirmed add transaction creates 3 essential records for a Balancer position: wallet BPT balance, pool total supply and underlying token composition on that chain. Together they separate token quantity from economic value.

The V3 LiquidityAdded event contains 6 fields: pool, liquidity provider, operation kind, total supply, raw amounts added and raw swap-fee amounts. Its removal counterpart reports the same 6-part structure for amounts leaving the pool. Etherscan and Blockscout expose these logs when an interface view is delayed. The event confirms settlement; the wallet balance confirms present custody.

A transaction receipt proves the join occurred. It does not prove the BPT remained at the recipient address afterward.

Position value requires a fresh view of every reserve token. Swaps alter reserve quantities, fees accrue inside the pool and market prices change outside it, so a stable BPT count does not imply a stable valuation. DAI, USDC and WETH also carry different price behavior despite sharing the same accounting path. If a pricing service omits one token, the on-chain BPT balance and pool share remain readable even though the currency estimate is incomplete.

Adding more liquidity without losing the baseline

1 additional liquidity action should preserve a recorded BPT baseline, because the new balance must reconcile with minted BPT and any transferred or staked amount. Record BPT before the add, the quoted minimum output and the balance after confirmation. A proportional top-up changes the position size without introducing an internal imbalance. A flexible top-up changes size and composition at once, so compare its BPT output with a proportional quote before signing.

How do you exit without leaving an unintended balance?

1 proportional Balancer exit burns the selected BPT amount and returns every registered pool token, subject to minimum outputs shown before wallet confirmation and final settlement. Selecting the full available balance closes the directly held share; selecting less leaves a smaller BPT position.

Before a full exit, count BPT held directly, deposited in a gauge or held through another contract. Only BPT supplied to the removal call is burned. The returned assets arrive on the same chain and follow the selected recipient, so native gas remains necessary for the transaction. Balancer's Composite Liquidity Router unwraps supported Aave ERC-4626 shares when the underlying-token route is selected; the preview should distinguish underlying assets from wrapped vault shares.

A partial exit leaves the remaining BPT exposed to subsequent reserve changes, swap activity and the pool's continuing token mix.

Paused-state timing is bounded rather than indefinite: the Vault's maximum pause window is 4 years and its buffer period is capped at 180 days. Those figures are upper limits for configuration, not remaining time for a particular pool. Recovery mode provides a proportional withdrawal path when enabled. When normal routes are available, proportional removal returns the pool basket directly, while a single-token exit incorporates an internal trade.

The Vault mechanics behind minting and burning

5 add-liquidity kinds and 4 remove-liquidity kinds sit behind Balancer V3, while the Vault converts raw token amounts into 18-decimal values for pool mathematics and settlement. Routers translate a wallet choice into those typed calls.

A Balancer V3 Vault pool registers between 2 and 8 tokens, and every registered token must report 18 decimals or fewer. Raw balances retain each token's native units, while live scaled balances apply decimal scaling and rate-provider data. This distinction matters for ERC-4626 shares whose exchange rate changes relative to their underlying asset.

An ERC-4626 buffer contains exactly 2 assets, the wrapped share and its underlying token, while buffer LP accounting stays internal to the Vault rather than minting ordinary BPT. Standard pools mint BPT on addition and burn BPT on removal. The BPT rate is the pool invariant divided by total supply, giving integrations a common share measure. Compared with a Uniswap v3 ERC-721 position, a Balancer BPT balance is fungible and percentage-based rather than tied to a chosen tick range.

What to know about Balancer

Why does my wallet show less BPT after I stake the position?

Staking moves BPT from your wallet into the gauge or another staking contract. The direct ERC-20 balance therefore falls, sometimes to zero, while the contract records the deposited amount for your address. Read the wallet balance together with Balancer gauge deposits and any Aura position. When you unstake, the BPT returns to the chosen recipient, after which it can be burned in a liquidity-removal transaction.

When should a Balancer user keep the returned ERC-4626 shares?

Keeping ERC-4626 shares makes sense when the intended asset is the yield-bearing wrapper itself. An underlying-token exit asks the Composite Liquidity Router to unwrap supported shares, while a wrapped-token exit leaves that conversion undone. For an Aave-backed boosted pool, compare the preview's token addresses and amounts before signing. The two outputs represent different assets even when their displayed currency values appear close, and later redemption follows the ERC-4626 vault's exchange rate.

Where do the tokens appear after a proportional Balancer exit?

A proportional exit sends each registered pool token to the recipient encoded in the transaction. In the standard interface, that recipient is normally the connected wallet, and all assets remain on the pool's chain. WETH arrives as WETH unless the chosen router path explicitly unwraps it. Check the receipt's token transfers and the recipient's balances; a bridge transfer is a separate action and is never implied by burning BPT.

Does adding liquidity create a separate BPT lot?

No, an additional Balancer deposit mints more of the same fungible BPT contract for that pool. ERC-20 accounting combines the new units with the existing balance, so the protocol does not preserve separate purchase dates or cost lots. Keep your own transaction records if those distinctions matter. A later partial exit burns a quantity of BPT, not a selected historical deposit, and the remaining units continue to represent the same pool.

Are WETH and native ETH treated as the same pool token?

Native ETH and WETH are distinct assets at the contract level, even though WETH is redeemable for ETH at a fixed one-to-one token amount. Balancer pools register the ERC-20 WETH address, while supported router calls may wrap incoming ETH or unwrap outgoing WETH. The transaction preview must show the selected behavior. On chains where the native asset is not ETH, the corresponding wrapped-native token and route rules differ.

Could my position value change while the BPT count stays fixed?

A fixed BPT count can represent a different value from one block to the next. Trades alter reserve quantities, swap fees accrue inside the pool and external markets reprice WETH, USDC or other constituents. Total BPT supply also changes when other liquidity providers join or leave, adjusting your percentage even if your balance does not move. Read balance, total supply and reserve composition together before comparing two dates.