Balancer is a weighted-pool lifecycle from entry to exit
Balancer is an automated market maker where a weighted-pool position begins when deposited tokens mint Balancer Pool Tokens (BPT). Those ERC-20 shares represent a proportional claim on the pool’s registered assets. The position changes when more BPT are minted or burned, while pool trades and asset prices alter the value and token mix behind each share. A clean lifecycle uses a fresh quote, explicit transaction limits, BPT balance tracking and a proportional or single-token exit.
Key takeaway: It is an automated market maker where users join weighted pools, track Balancer Pool Token shares, adjust liquidity, and exit by redeeming those shares.
Entry and exit fee paths
Where that applies, Balancer weighted-pool entry costs combine network gas with any swap fee applied to the non-proportional part of the deposit.
Proportional entry and proportional exit preserve the pool’s balance ratios, so the Vault doesn’t assess an internal swap fee on those operations. An unbalanced entry or single-token exit creates an imbalance that resembles a trade. The calculation charges the pool’s swap fee only on the non-proportional portion. Standard Balancer v3 weighted pools restrict that percentage to a minimum of 0.001% and a maximum of 10%. The pool’s configured value inside that band drives the quote.
Network gas remains separate and changes with chain demand. The Vault stores fee percentages in 24 bits at 0.00001% resolution, while its fee math uses 18-decimal fixed-point values. A routed swap, token wrap or ERC-4626 redemption adds its own execution steps and gas consumption.
Limits that bound large position changes
Balancer weighted-pool limits reject oversized changes before the Vault updates balances or mints and burns any BPT.
Weighted swap math caps both a direct amount in and amount out at 30% of the relevant pool balance. Non-proportional liquidity has separate invariant boundaries: an add keeps the new-to-old invariant ratio at or below 300%, while a single-token removal keeps it at or above 70%. Transaction limits add another layer. A proportional join specifies maximum token inputs, an unbalanced join specifies minimum BPT output and an exit specifies minimum asset outputs or maximum BPT input. Crossing any bound reverts the entire state change.
Entering with a quoted weighted-pool deposit
Weighted-pool entry starts with one add-liquidity quote that specifies token inputs, expected BPT and execution limits for the chosen pool.
The quote must identify the exact pool contract, registered tokens, fixed weights and connected chain. The Balancer interface or Balancer SDK reads the current Vault balances and calculates either token amounts for a proportional BPT target or BPT output for an unbalanced deposit. Missing ERC-20 allowances require authorization before the join. ERC-2612 support may replace a separate approval for a compatible token, but each input contract defines its own authorization method.
The signed state change is the add-liquidity transaction itself.
- Connect the wallet to the pool’s network.
- Select proportional or unbalanced entry.
- Review token amounts, pool weights and the BPT quote.
- Set maximum inputs or minimum BPT output.
- Approve missing allowances and sign the join.
Worked example: every changing input is hypothetical: a proportional join requests exactly 10.000 BPT, the quote requires 0.20 WETH and 500 USDC and the wallet chooses 1% input tolerance. Multiplying both token quotes by 1.01 sets caps of 0.202 WETH and 505 USDC. The transaction mints 10.000 BPT if requirements stay below both caps; otherwise, the whole call reverts.
Reading BPT as a changing pool share
A Balancer Pool Token balance records a wallet’s ERC-20 share units while total BPT supply provides the ownership denominator.
The ownership ratio equals wallet BPT divided by total BPT supply, multiplied by 100%. Balancer Pool Tokens use 18 decimal places and a proportional exit returns each registered asset using the same BPT-to-supply fraction. New liquidity mints additional BPT alongside additional pool assets, while removals burn BPT as assets leave. Pool trades change reserve balances and collected fees remain within those balances, so a fixed BPT amount represents a claim whose composition and value move over time.
Direct wallet BPT is only one status location. Depositing BPT into a Balancer gauge moves the pool tokens to that contract and records a separate stake balance. Tracking the full position therefore combines unstaked BPT, gauge balances and any wrapper token that represents deposited BPT.
Adding to or trimming an existing allocation
An existing Balancer allocation changes when the wallet mints more BPT, burns part of it or selects another withdrawal mix, which is covered in Balancer guide.
Ahead of that, Balancer v3 defines five addition kinds: proportional, unbalanced, single-token exact-out, donation and custom. It defines four removal kinds: proportional, single-token exact-in, single-token exact-out and custom. Standard weighted-pool adjustments use the proportional, unbalanced and single-token paths exposed by the selected Router. A donation adds assets without minting BPT, so it doesn’t increase the sender’s share. Fixed pool weights don’t function as personal settings; exposure changes through the amount of BPT held and the assets chosen during removal.
Which exit returns the pool’s full token basket?
A proportional Balancer exit returns the pool’s complete registered token basket, scaled to the BPT amount burned during that transaction.
The proportional route takes an exact BPT input and calculates every token output from the same share fraction. Minimum amounts protect each asset against balance changes before execution. A single-token exact-in route instead burns a fixed BPT amount and returns one selected asset after charging the pool fee on the non-proportional portion. Single-token exact-out targets a fixed asset amount and calculates the required BPT, subject to a maximum input. Proportional removal therefore provides the most direct full-basket unwind.
Registered assets determine the receipt. A standard exit from a pool containing WETH returns WETH unless the route requests native ETH handling. An explicit Composite Liquidity Router path unwraps supported ERC-4626 shares into underlying assets; the ordinary proportional path returns the registered share tokens.
Network and wrapper checks before signing
Network identity and token wrappers determine whether a quoted Balancer position matches the assets that the connected wallet spends or receives.
Ethereum uses chain ID 1, Optimism 10, Gnosis Chain 100, Base 8453 and Arbitrum One 42161. A pool on one network owns different contracts and balances from a similarly named pool elsewhere. MetaMask or a WalletConnect-compatible wallet must show the pool’s chain before signing. Contract identity also matters because canonical USDC uses 6 decimal places while WETH uses 18. An ERC-20 allowance belongs to one token contract on one chain. Match the pool address, token addresses, chain ID and WETH-or-ETH setting before approving the transaction.
How does the Vault turn token balances into BPT?
The Balancer Vault scales token balances, runs weighted invariant math and mints BPT from the invariant increase remaining after fees.
A standard Balancer v3 weighted pool accepts up to eight tokens, requires normalized weights to sum to 100% and enforces a 1% minimum weight per token. Those weights remain fixed after deployment. The invariant multiplies each scaled token balance raised to its normalized weight. Proportional deposits raise every balance by the same fraction, so BPT supply grows by that fraction. Unbalanced deposits first identify each token amount above the proportional balance, charge the configured swap fee on that excess and mint shares from the fee-adjusted invariant.
For an exact proportional mint, each token input equals its pool balance multiplied by BPT output and divided by total BPT supply. The calculation rounds token inputs upward. A proportional removal applies the reverse fraction and rounds outputs downward. These directions keep the final amounts within the pool’s accounting boundaries.
Closing the position and reconciling the receipt
Closing a Balancer position means burning the intended BPT, receiving every expected asset and confirming the final on-chain balances.
The transaction receipt should show the BPT burn and transfers of each registered output token. A complete direct exit leaves the wallet’s BPT balance at zero. If BPT sits in a Balancer gauge or wrapper, the wallet must first release those shares or use a compatible exit route. Compare received assets with the quoted minimums, including WETH, native ETH or ERC-4626 underlying tokens selected by the route. Any ERC-20 allowance created for entry remains at its configured value until the wallet changes it. Together, the receipt, direct BPT balance and gauge or wrapper balance establish the completed unwind.
Questions and answers about Balancer
Does adding liquidity require separate approval for every input token?
Each ERC-20 input needs enough allowance for the contract that executes the Balancer add-liquidity route. A wallet therefore requests authorization for each missing allowance before the join. Existing allowances reduce that count, while permit-capable tokens or bundled transactions may combine authorization and execution. The BPT mint itself needs no approval because the pool creates those shares for the recipient.
Can I add only one asset to a Balancer weighted pool?
Single-asset entry is supported through a single-token or unbalanced liquidity route when the selected pool and interface expose it. The Vault treats the amount above a proportional contribution as swap-like imbalance and applies the pool’s fee to that portion. The quote’s minimum BPT output protects the join, while the weighted pool’s 300% maximum invariant ratio bounds one operation.
When does an unbalanced join mint fewer BPT than the preview?
An unbalanced join mints fewer BPT when pool balances move between the quote and execution or when the deposited mix creates a larger fee-bearing imbalance. The Router checks the minimum BPT output; if actual output falls below that floor, the transaction reverts instead of accepting fewer shares. A fresh quote resets the inputs and limit to the pool’s latest state.
Is BPT still visible after it is deposited in a Balancer gauge?
Gauge-deposited BPT no longer appears in the wallet’s direct BPT balance because the gauge holds the pool tokens and records the depositor’s stake separately. Position tracking therefore combines the gauge balance with any unstaked BPT. A complete exit first withdraws the stake or uses a route that handles the gauge position, then burns the released BPT for pool assets.
Do I need BAL to remove liquidity from a weighted pool?
BAL isn’t required merely to burn BPT and remove liquidity from a weighted pool. The wallet needs the BPT or associated staked position plus the network’s native gas token, such as ETH on Ethereum, Arbitrum, Base and Optimism. A reward claim or gauge action may introduce separate token flows, but the pool exit itself uses BPT as its input.
Which asset arrives when I unwrap WETH during a Balancer exit?
Native ETH arrives when the selected Balancer Router path supports WETH unwrapping and the exit sets the WETH-as-ETH option. Without that option, the wallet receives WETH as the registered ERC-20 asset. For an ERC-4626 pool token, underlying redemption requires a supported Composite Liquidity Router path; a standard proportional exit returns the registered share token.
Last updated