Skip to content

Commit 39d7f4d

Browse files
authored
Fallback to the default Balancer Vault address during the deployment (#243)
## Description This PR updates the GPv2Settlement SC deployment script to default to the deterministic Balancer Vault address(`0xBA12222222228d8Ba445958a75a0704d566BF2C8`) when it is not actually deployed yet. While the GPv2Settlement contract accepts a Balancer Vault address in its constructor, it does not strictly require the Vault to be deployed for basic ERC20 settlement functionality. This was confirmed in internal discussion: - On Gnosis Chain, we used the Settlement contract before the Balancer Vault was even available. - The contract only interacts with the Vault for advanced balance sources (non-ERC20 tokens), which are not required for standard usage. - Vault-dependent logic is guarded and will not be triggered unless certain preconditions (e.g. balanceOpCount > 0) are met ## Test Plan Created an Avalanche fork on Tenderly before the Balancer Vault deployment, and the deployment worked well: https://dashboard.tenderly.co/cow-protocol/barn/testnet/14090eef-bc20-43fc-994d-2353743159cb ## Potential risks SAFE core contract addresses on ZK rollups differ from those on optimistic ones. Not sure if there is a chance that the Balancer Vault will be deployed later with a different address.
1 parent 08f8627 commit 39d7f4d

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/deploy/002_settlement.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import Vault from "../../balancer/Vault.json";
77
import BALANCER_NETWORKS from "../../balancer/networks.json";
88
import { CONTRACT_NAMES, SALT } from "../ts/deploy";
99

10+
const DEFAULT_VAULT_ADDRESS = "0xBA12222222228d8Ba445958a75a0704d566BF2C8";
11+
1012
const deploySettlement: DeployFunction = async function ({
1113
deployments,
1214
ethers,
@@ -46,10 +48,13 @@ const deploySettlement: DeployFunction = async function ({
4648
>;
4749
const vaultDeployment = vaultNetworks[chainId];
4850
if (vaultDeployment === undefined) {
49-
throw new Error(`Vault not deployed on chain ${chainId}`);
51+
console.warn(
52+
`Vault not deployed on chain ${chainId}, using default address.`,
53+
);
54+
vaultAddress = DEFAULT_VAULT_ADDRESS;
55+
} else {
56+
vaultAddress = vaultDeployment.address;
5057
}
51-
52-
vaultAddress = vaultDeployment.address;
5358
}
5459

5560
await deploy(settlement, {

0 commit comments

Comments
 (0)