Linear Pools


Linear Pools are Balancer pools that facilitate the exchange of an asset and its wrapped, yield bearing counterpart at a known (calculated or queried) exchange rate. For example, DAI and wrapped aDAI from Aave. Linear Pools have target ranges to incentivize how much of the native token should be kept available for swaps vs the yield bearing counterpart. They use a fee/reward mechanism to incentivize arbitrageurs to maintain a desired ratio between the two tokens (pay fees for leaving the target range, receive reward for returning to range). One additional critical feature of Linear Pools is that they allow users to trade directly to BPT; no joins or exits are needed. The pools use Linear Math and are usually used as a component in a Boosted Pool.


Since there are lots of ways to generate yield in DeFi there are different interfaces for yield bearing tokens. ERC-4626open in new window is a standard to unify the API for tokenized yield-bearing vaults and is the primary Linear Pool type.

A few sample Linear Pools (see all pools in the repoopen in new window):

Protocol Id

During the creation of a LinearPool a protocolId parameter needs to be passed. One and the same LinearPoolFactory can however be used to create Linear Pools for multiple different protocols, if they are for example forks. Since the creation of of a LinearPool is permissionless a process to register protocolsopen in new window is required to allow data-consumers to distinguish which pool belongs to which protocol, even if the pool has been created from the same factory.