
Balancer V2 Deployments

This package contains the addresses and ABIs of all Balancer V2 deployed contracts for Ethereum mainnet, Polygon, Arbitrum, Optimism, Gnosis, BSC and Avalanche, as well as various test networks. Each deployment consists of a deployment script (called 'task'), inputs (script configuration, such as dependencies), outputs (typically contract addresses), ABIs and bytecode files of related contracts.
Addresses and ABIs can be consumed from the package in JavaScript environments, or manually retrieved from the GitHub repository.
Note that some protocol contracts are created dynamically: for example, WeightedPool contracts are deployed by the canonical WeightedPoolFactory. While the ABIs of these contracts are stored in the abi directory of each deployment, their addresses are not. Those can be retrieved by querying the on-chain state or processing emitted events.
Overview
Deploying Contracts
For more information on how to create new deployments or run existing ones in new networks, head to the deployment guide.
Installation
$ npm install @balancer-labs/v2-deployments
Usage
Import @balancer-labs/v2-deployments to access the different ABIs and deployed addresses. To see all current Task IDs and their associated contracts, head to Active Deployments.
Past deployments that are currently not in use or have been superseded can be accessed in the Deprecated Deployments section. Use deprecated/ as prefix when referring to a deprecated task ID.
⚠️ Exercise care when interacting with deprecated deployments: there's often a very good reason why they're no longer active.
You can find information on why each deployment has been deprecated in their corresponding readme file.
- async function getBalancerContract(taskID, contract, network)
Returns an Ethers contract object for a canonical deployment (e.g. the Vault, or a Pool factory).
Note: requires using Hardhat with the hardhat-ethers plugin.
- async function getBalancerContractAt(taskID, contract, address)
Returns an Ethers contract object for a contract dynamically created at a known address (e.g. a Pool created from a factory).
Note: requires using Hardhat with the hardhat-ethers plugin.
- function getBalancerContractAbi(taskID, contract)
Returns a contract's ABI.
- function getBalancerContractBytecode(taskID, contract)
Returns a contract's creation code.
- function getBalancerContractAddress(taskID, contract, network)
Returns the address of a contract's canonical deployment.
- function getBalancerDeployment(taskID, network)
Returns an object with all contracts from a deployment and their addresses.
Active Deployments
| Authorizer, governance contract | 20210418-authorizer |
| Vault, main protocol contract | 20210418-vault |
| Rate Provider for wstETH | 20210812-wsteth-rate-provider |
| Liquidity Bootstrapping Pools | 20211202-no-protocol-fee-lbp |
| Authorizer Adaptor for extending governance | 20220325-authorizer-adaptor |
| Wallet for the BAL token | 20220325-bal-token-holder-factory |
| Admin of the BAL token | 20220325-balancer-token-admin |
| Liquidity Mining: veBAL, Gauge Controller and Minter | 20220325-gauge-controller |
| Test Balancer Token | 20220325-test-balancer-token |
| Delegation of veBAL boosts | 20220325-ve-delegation |
| Gauges on child networks (L2s and sidechains) | 20220413-child-chain-gauge-factory |
| veBAL Smart Wallet Checker | 20220420-smart-wallet-checker |
| Relayer with the fix for the Double Entrypoint issue | 20220513-double-entrypoint-fix-relayer |
| Protocol Fee Withdrawer | 20220517-protocol-fee-withdrawer |
| Child Chain Gauge Token Adder | 20220527-child-chain-gauge-token-adder |
| Preseeded Voting Escrow Delegation | 20220530-preseeded-voting-escrow-delegation |
| Distribution Scheduler for reward tokens on gauges | 20220707-distribution-scheduler |
| Fee Distributor for veBAL holders V2 | 20220714-fee-distributor-v2 |
| Swap, join and exit simulations (queries) | 20220721-balancer-queries |
| Protocol fee percentages provider | 20220725-protocol-fee-percentages-provider |
| Child Chain Gauge Reward Helper | 20220812-child-chain-reward-helper |
| Mainnet Staking Gauges V2 | 20220822-mainnet-gauge-factory-v2 |
| Arbitrum Root Gauges V2, for veBAL voting | 20220823-arbitrum-root-gauge-factory-v2 |
| Optimism Root Gauges V2, for veBAL voting | 20220823-optimism-root-gauge-factory-v2 |
| Polygon Root Gauges V2, for veBAL voting | 20220823-polygon-root-gauge-factory-v2 |
| Batch Relayer V4 | 20220916-batch-relayer-v4 |
| Pool Recovery Helper | 20221123-pool-recovery-helper |
| Authorizer Adaptor Entrypoint | 20221124-authorizer-adaptor-entrypoint |
| Timelock Authorizer, governance contract | 20221202-timelock-authorizer |
| L2 Gauge Checkpointer | 20221205-l2-gauge-checkpointer |
| VeBoost V2 | 20221205-veboost-v2 |
| Gauge Registrant V3, supporting the Adaptor entrypoint | 20230109-gauge-adder-v3 |
| Weighted Pool V3 | 20230206-weighted-pool-v3 |
| Composable Stable Pools V3 | 20230206-composable-stable-pool-v3 |
| Linear Pools for ERC4626 Tokens V3 | 20230206-erc4626-linear-pool-v3 |
| Linear Pools for Aave aTokens (with rebalancing) V4 | 20230206-aave-rebalanced-linear-pool-v4 |
| Linear Pools for Euler Tokens | 20230208-euler-linear-pool |
| Linear Pools for Yearn Tokens | 20230213-yearn-linear-pool |
| Linear Pools for Gearbox Tokens | 20230213-gearbox-linear-pool |
| Single Recipient Stakeless Gauges V2 | 20230215-single-recipient-gauge-factory |
| Gnosis Root Gauge, for veBAL voting | 20230217-gnosis-root-gauge-factory |
| Merkle Orchard Distributor V2 | 20230222-merkle-orchard-v2 |
Scripts
These are deployments for script-like contracts (often called 'coordinators') which are typically granted some permission by Governance and then executed, after which they become useless.
Deprecated Deployments
These deployments have been deprecated because they're either outdated and have been replaced by newer versions, or because they no longer form part of the current infrastructure. In almost all cases they should no longer be used, and are only kept here for historical reasons.
Go to each deprecated deployment's readme file to learn more about why it is deprecated, and what the replacement deployment is (if any).