BPool contract object
Balance: The total token balance of a pool. Does not refer to any user balance.
Denorm: Denormalized weight. Weights on a BPool are configured and stored in their denormalized form.
Controller: The pool's "owner"; an address that can call
Factory: The official BPool factory. Pools deployed from this factory appear in tools and explorers for Balancer.
Any user can create a new pool by calling
newBPool() on the
BFactory contract. The caller is set as the
controller or pool owner.
Pools can exist in one of two states:
finalized. Pools start in a controlled state and the controller may choose to make the pool finalized by calling
finalize(). Finalize is a one-way transition. While in a controlled state, outside actors cannot add liquidity. A controlled state allows the controller to set the pool's tokens and weights.
One very powerful feature of Balancer is the concept of smart-contract owned controlled pools. A smart-contract controlled pool can fully emulate a finalized pool, while also allowing complex logic to readjust balances, weights, and fees. Some examples include:
Pool that adjusts swap fees as a function of the volatility of the pool's assets
Updating weights to deploy a certain market-opinionated strategy
More complex dynamic strategies for asset allocation
Notice that e.g.
joinswap requires both
A token can be "bound" or not -- if it's bound, it has a valid balance, denorm, and can be interacted with, assuming your address has a role with the right capabilities