Pools are the fundamental building blocks of the Balancer Protocol; they are smart contracts that define how traders can swap between tokens on Balancer. What makes Balancer Pools unique from those of other protocols is their limitless flexibility. While other exchanges have pools with constrained parameters, Balancer can accommodate pools of any composition and underlying math. Balancer's architecture allows for anyone to develop their own pool type, opening the door for customized pricing functions in trading pools.
Weighted Pools are a generalization of the standard constant product AMM popularized by Uniswap. Each pool can contain up to 8 different tokens and each token is assigned a weight defining what fraction of the pool is made up by each asset. Balancer's weighted pool equation is a generalization of the x*y=k by accounting for uneven weights and more assets:
where V is constant, B is an asset's balance, and W is an asset's weight in the pool.
As the price of each token changes, traders and arbitrageurs rebalance the pool by making swaps. This maintains the desired weighting of the value held by each token whilst collecting trading fees from the traders.
For certain assets that are expected to consistently trade at near parity (e.g. different varieties of stablecoins or synthetics) a more efficient design is the StableSwap AMM as popularized by Curve. These pools allow for larger trades of these assets before encountering significant price impact.
These pools are useful for launching tokens and swapping large amounts over time. They feature weight shifting mechanisms that results in high start prices with continuously changing sell pressure. See LBP's for Token Launches for details.
Boosted Pools bring the best of both worlds to Liquidity Providers and Swappers. Swappers get access to deep stablecoin liquidity with near-parity exchange rates while Liquidity Providers get their liquidity positions sent to external protocols, such as Yearn.Finance.
These versions of Stable Pools don't directly hold the stablecoins themselves, but rather hold the pool tokens of nested Linear Pools, which, for the Yearn.Finance example, maintain proper balances of TOKEN and aTOKEN.