Balancer on the EVM
Balancer is an automated portfolio manager, liquidity provider, and price sensor.
Balancer turns the concept of an index fund on its head: instead of a paying fees to portfolio managers to rebalance your portfolio, you collect fees from traders, who rebalance your portfolio by following arbitrage opportunities.
Balancer is based on an N-dimensional invariant surface which is a generalization of the constant product formula described by Vitalik Buterin and proven viable by the popular Uniswap dapp.
The 🍂Bronze Release🍂 is the first of 3 planned releases of the Balancer Protocol. Bronze emphasizes code clarity for audit and verification, and does not go to great lengths to optimize for gas.
The ❄️Silver Release❄️ will bring many gas optimizations and architecture changes that will reduce transaction overhead and enable more flexibility for managed pools.
The ☀️Golden Release☀️ will introduce a curious new liquidity mechanism to the market.
The full documentation can be found at https://docs.balancer.finance
Most users will want to consume the ABI definitions for BFactory and BPool.
This project follows the standard Truffle project structure.
yarn compile # build artifacts to `build/contracts` yarn testrpc # run ganache yarn test # run the tests
Tests can be run verbosely to view approximation diffs:
Contract: BPool With fees pAi expected: 10.891089108910892) actual : 10.891089106783580001) relDif : 1.9532588879656032e-10) Pool Balance expected: 98010000000000030000) actual : 98010000001320543977) relDif : 1.3473294888276702e-11) Dirt Balance expected: 3921200210105053000) actual : 3921200210099248361) relDif : 1.480428360949332e-12) Rock Balance expected: 11763600630315160000) actual : 11763600630334527239) relDif : 1.6464292361378058e-12) ✓ exitswap_ExternAmountOut (537ms)
Complete API docs are available at https://docs.balancer.finance/smart-contracts/api