diff --git a/CHANGELOG.md b/CHANGELOG.md index 0233e03c..8aed1202 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Deployed V3 Liquidity Bootstrapping Pool to Mainnet, Gnosis, Arbitrum, Base and Sepolia. - Deployed V3 Hook Examples to Sepolia. - Deployed V3 Protocol Fee Controller V2 to Mainnet, Gnosis, Arbitrum, Base and Sepolia. +- Deployed V3 Protocol Fee Controller Migration to Mainnet, Gnosis, Arbitrum, Base and Sepolia. #### V2 diff --git a/action-ids/arbitrum/action-ids.json b/action-ids/arbitrum/action-ids.json index c818bd1a..ee8de2d9 100644 --- a/action-ids/arbitrum/action-ids.json +++ b/action-ids/arbitrum/action-ids.json @@ -1048,5 +1048,14 @@ "withdrawProtocolFeesForToken(address,address,address)": "0x610537725ddaed423abcb2b23d9191781b990fceb0f445f4bfe56f049514ff4c" } } + }, + "20250221-protocol-fee-controller-migration": { + "ProtocolFeeControllerMigration": { + "useAdaptor": false, + "actionIds": { + "finalizeMigration()": "0xf2e99293214bb798dd007d998933c26df87063dcace3335292200398836b4327", + "migratePools(address[])": "0xfe18fcf002cb32980254e2e611de6b99756f16047b4a767bc36fc6f51156462f" + } + } } } \ No newline at end of file diff --git a/action-ids/base/action-ids.json b/action-ids/base/action-ids.json index 624e5276..b19dabbd 100644 --- a/action-ids/base/action-ids.json +++ b/action-ids/base/action-ids.json @@ -613,5 +613,14 @@ "withdrawProtocolFeesForToken(address,address,address)": "0x0ef595d0eed0a6e5adfc1fe810c72ad3d4b23e7c0d66a74fd4799e2f799af0bf" } } + }, + "20250221-protocol-fee-controller-migration": { + "ProtocolFeeControllerMigration": { + "useAdaptor": false, + "actionIds": { + "finalizeMigration()": "0xb2ea78ad7492bf6616d379d1c842b07b58cc73d263d08a1f4b1b9d30bc26efac", + "migratePools(address[])": "0x8c8aaef94887d0b21bb3337531084db882c8c20fdc0c70bac758746dd38bf477" + } + } } } \ No newline at end of file diff --git a/action-ids/gnosis/action-ids.json b/action-ids/gnosis/action-ids.json index e80679d1..0dbc2551 100644 --- a/action-ids/gnosis/action-ids.json +++ b/action-ids/gnosis/action-ids.json @@ -762,5 +762,14 @@ "withdrawProtocolFeesForToken(address,address,address)": "0x7c0fa8c5add2fab51cc64b00dc8278f6829e8235e9ac804973fc336736b88ba6" } } + }, + "20250221-protocol-fee-controller-migration": { + "ProtocolFeeControllerMigration": { + "useAdaptor": false, + "actionIds": { + "finalizeMigration()": "0x522351475deb850093dc3f48122e83134d8eca074fc3385c06fd4f16904e046d", + "migratePools(address[])": "0xeebbba261ff01c78dfb8d0ca3998caeb6a29762281eb4bb355fba072716234aa" + } + } } } \ No newline at end of file diff --git a/action-ids/mainnet/action-ids.json b/action-ids/mainnet/action-ids.json index 52b57586..7bfd5add 100644 --- a/action-ids/mainnet/action-ids.json +++ b/action-ids/mainnet/action-ids.json @@ -1755,5 +1755,14 @@ "withdrawProtocolFeesForToken(address,address,address)": "0x9fe8e7d354d4d4c9b828af97a9fb461b79747eb597d1d1919127b884ed03a3df" } } + }, + "20250221-protocol-fee-controller-migration": { + "ProtocolFeeControllerMigration": { + "useAdaptor": false, + "actionIds": { + "finalizeMigration()": "0xebf97e324090ac50c328482b5ab66d37fb0e4bb5afe45fb890915675775ffc62", + "migratePools(address[])": "0xd164fa6b7677a2d8dd3fbca8e238117766cc02a275535f42d6ea11bbc1389bd6" + } + } } } \ No newline at end of file diff --git a/action-ids/sepolia/action-ids.json b/action-ids/sepolia/action-ids.json index fe435eaa..43a88568 100644 --- a/action-ids/sepolia/action-ids.json +++ b/action-ids/sepolia/action-ids.json @@ -868,5 +868,14 @@ "withdrawProtocolFeesForToken(address,address,address)": "0xf489956ed3a8dd00249abca47f304d128e3b1efd58ccde48fcbafc3e48d510c8" } } + }, + "20250221-protocol-fee-controller-migration": { + "ProtocolFeeControllerMigration": { + "useAdaptor": false, + "actionIds": { + "finalizeMigration()": "0x8c292d8e1af8e556f1aa3edc7a1214d5e14b9fb1afa68649633af554a5a6b881", + "migratePools(address[])": "0x5da11bd4a075f242f7d1c1b44155f4fb690bd3476a3bc58330904891b1ca3e49" + } + } } } \ No newline at end of file diff --git a/addresses/arbitrum.json b/addresses/arbitrum.json index c361d1fa..20a67852 100644 --- a/addresses/arbitrum.json +++ b/addresses/arbitrum.json @@ -1003,6 +1003,16 @@ "status": "ACTIVE", "version": "v3" }, + "20250221-protocol-fee-controller-migration": { + "contracts": [ + { + "name": "ProtocolFeeControllerMigration", + "address": "0xdDea349828096DcdC0Cc5B7Db5F924f146AadD90" + } + ], + "status": "SCRIPT", + "version": "v3" + }, "20250221-v3-cow-swap-fee-burner": { "contracts": [ { diff --git a/addresses/base.json b/addresses/base.json index 9d63d9f5..4e8ac7eb 100644 --- a/addresses/base.json +++ b/addresses/base.json @@ -603,6 +603,16 @@ "status": "ACTIVE", "version": "v3" }, + "20250221-protocol-fee-controller-migration": { + "contracts": [ + { + "name": "ProtocolFeeControllerMigration", + "address": "0x1b6F057520B4e826271D47b8bdab98E35Af17E59" + } + ], + "status": "SCRIPT", + "version": "v3" + }, "20250221-v3-cow-swap-fee-burner": { "contracts": [ { diff --git a/addresses/gnosis.json b/addresses/gnosis.json index 36157f0e..e9b29743 100644 --- a/addresses/gnosis.json +++ b/addresses/gnosis.json @@ -723,6 +723,16 @@ "status": "ACTIVE", "version": "v3" }, + "20250221-protocol-fee-controller-migration": { + "contracts": [ + { + "name": "ProtocolFeeControllerMigration", + "address": "0x6B1Da720Be2D11d95177ccFc40A917c2688f396c" + } + ], + "status": "SCRIPT", + "version": "v3" + }, "20250221-v3-cow-swap-fee-burner": { "contracts": [ { diff --git a/addresses/mainnet.json b/addresses/mainnet.json index 69c651c7..cc23722a 100644 --- a/addresses/mainnet.json +++ b/addresses/mainnet.json @@ -1551,6 +1551,16 @@ "status": "ACTIVE", "version": "v3" }, + "20250221-protocol-fee-controller-migration": { + "contracts": [ + { + "name": "ProtocolFeeControllerMigration", + "address": "0x75635f85600Fc357906417f6b78AAf8755d2888D" + } + ], + "status": "SCRIPT", + "version": "v3" + }, "20250221-v3-cow-swap-fee-burner": { "contracts": [ { diff --git a/addresses/sepolia.json b/addresses/sepolia.json index 4065e750..ff74c212 100644 --- a/addresses/sepolia.json +++ b/addresses/sepolia.json @@ -841,6 +841,16 @@ "status": "ACTIVE", "version": "v3" }, + "20250221-protocol-fee-controller-migration": { + "contracts": [ + { + "name": "ProtocolFeeControllerMigration", + "address": "0x79232d3431463dC2B8Fd8fb28B352B9Ba92Eb280" + } + ], + "status": "SCRIPT", + "version": "v3" + }, "20250221-v3-cow-swap-fee-burner": { "contracts": [ { diff --git a/deployment-txs/arbitrum.json b/deployment-txs/arbitrum.json index cf4f7821..b8c59f06 100644 --- a/deployment-txs/arbitrum.json +++ b/deployment-txs/arbitrum.json @@ -133,5 +133,6 @@ "0xbC169a08cBdCDB218d91Cd945D29B59F78c96B77": "0xb060e5e512b014e37b742ce34da7f511e6db0e0c7af472ab62f042435efe07dc", "0x4BB42f71CAB7Bd13e9f958dA4351B9fa2d3A42FF": "0x228dfaabff50f2d035a189d6f280b04a635d4b37d7c2bbe5ecc561724ef8331c", "0x9d3E72c11aD7bF7132a141FF6F716491c6d01518": "0xcd632709a737532599a4f5d5e4d49c2eeacaea367134a9b092ed088deb7a58f4", - "0x4638ab64022927C9bD5947607459D13f57f1551C": "0xb82524d1c08f1b460a36b8517daec94b15388bf357adc9b4128da5b943b1f4a8" + "0x4638ab64022927C9bD5947607459D13f57f1551C": "0xb82524d1c08f1b460a36b8517daec94b15388bf357adc9b4128da5b943b1f4a8", + "0xdDea349828096DcdC0Cc5B7Db5F924f146AadD90": "0x9d1c32e7e4613447aaf1e5f0d5a98281336ec17e41e0bd34e4084eaf39a91c63" } \ No newline at end of file diff --git a/deployment-txs/base.json b/deployment-txs/base.json index 494a8a4a..e8ebfbbc 100644 --- a/deployment-txs/base.json +++ b/deployment-txs/base.json @@ -79,5 +79,6 @@ "0x5DbAd78818D4c8958EfF2d5b95b28385A22113Cd": "0xabd8175c001b552de99936ded29fa0032099a702c7f1ccf09e40cb346d47c7d6", "0x662112B8CB18889e81459b92CA0f894a2ef2c1B8": "0x180ca26e5161143171e3ec630e79e2d09d72082dfc9063ef7e3f4af361a68884", "0x9Ce89Efb4EbE2BC692003Af804e7A33FBBE93043": "0xf500b23b868bd6f950e198539dc083917239ff0c8c42aee228f5dc1851d9af49", - "0x2FF226CD12C80511a641A6101F071d853A4e5363": "0xf7d2d372f9a5398b2a9c11c66900b313beb7a310eeea71d1212e7151e67fdb57" + "0x2FF226CD12C80511a641A6101F071d853A4e5363": "0xf7d2d372f9a5398b2a9c11c66900b313beb7a310eeea71d1212e7151e67fdb57", + "0x1b6F057520B4e826271D47b8bdab98E35Af17E59": "0xa14b5ca70f4c7c3476f95abe671b7e8fcb9160e3609f54d65e4809fab23fa043" } \ No newline at end of file diff --git a/deployment-txs/gnosis.json b/deployment-txs/gnosis.json index a0c4ab6b..56f85376 100644 --- a/deployment-txs/gnosis.json +++ b/deployment-txs/gnosis.json @@ -95,5 +95,6 @@ "0xAE563E3f8219521950555F5962419C8919758Ea2": "0x378fc93acf3fbe9a9004b025a9f6c11a97aa40ed91ed5ccbe79fee0e8767a89d", "0x6eE18fbb1BBcC5CF700cD75ea1aef2bb21e3cB3F": "0x4f7c8c50da5b332f44f6c06212732d7517796dde45412883665069e2109271eb", "0xc08dDF053003efa63eC7CA1B0ecd4024445A5c51": "0x9428fa9f68c9244f911fd3763370bd4689cacafe4d67c483e218c466d8f3a309", - "0xa7d524046ef89de9F8e4f2d7B029f66cCB738d48": "0xfe856c93d059d68888b48bc26d8f54f5d1c78390c616964ed1ef5e57d5d2ed76" + "0xa7d524046ef89de9F8e4f2d7B029f66cCB738d48": "0xfe856c93d059d68888b48bc26d8f54f5d1c78390c616964ed1ef5e57d5d2ed76", + "0x6B1Da720Be2D11d95177ccFc40A917c2688f396c": "0xf1ae80ae9d5a33d9934362523e178a96cde018dfcaf6168192a9dc2afc5dca41" } \ No newline at end of file diff --git a/deployment-txs/mainnet.json b/deployment-txs/mainnet.json index ef4a396e..2690e898 100644 --- a/deployment-txs/mainnet.json +++ b/deployment-txs/mainnet.json @@ -194,5 +194,6 @@ "0x0E800D8d2E8b4694610AEdc385Aa6D763492B106": "0x59796d239fbc3f452e401e3c82ea5ec05cc8a92b46ec89797c4855ea6b19f9fb", "0x4eff2d77D9fFbAeFB4b141A3e494c085b3FF4Cb5": "0x2f15b5edae8f2e18a42a409b5c568f74c119c1ff86d9d32951b29c53edfc6cd4", "0xdBB8aD38C990Bd4ca2c88A6E6CfDF5045B0d4FB0": "0x4b858e90f3901823fa347543123d6c47a66226a4ab317827d717d1f476259068", - "0x212F884252792ebaaA811FB0678444b21c7C2879": "0x33f5b66b4770d10bedb9bc46f4ac8a2e6dd771068a6a6aa2d8c16fbbc512ffdd" + "0x212F884252792ebaaA811FB0678444b21c7C2879": "0x33f5b66b4770d10bedb9bc46f4ac8a2e6dd771068a6a6aa2d8c16fbbc512ffdd", + "0x75635f85600Fc357906417f6b78AAf8755d2888D": "0xc2230af0ba9fecf37a8da0e2808a227997f640008146330fa883b32799f077d8" } \ No newline at end of file diff --git a/deployment-txs/sepolia.json b/deployment-txs/sepolia.json index 33b08b19..653114fd 100644 --- a/deployment-txs/sepolia.json +++ b/deployment-txs/sepolia.json @@ -113,5 +113,6 @@ "0x3400AaFA47C6dC0D8Ffc2380D3665f701cD53eBc": "0xa77de078ac7b3b8962e6c43fa7a8a3124ec224c1203a2f359d9cd69d1aeafb15", "0xA714753434481DbaBf7921963f18190636eCde69": "0x0cd109852b120305517211c9df21dcd99afe0e803a91989c6379708a76dfb895", "0x410E6933B5d9F7ffBAB35AF4aAbCaA82a4C1F287": "0xb48230c909c2e18c6380a5eb6ec9dfc6a66a01a9b402524a789818c0f222acfd", - "0x931d2a630f6bdfe872F98ea967447c8F99d4823a": "0x9e4f758c9ee4fbe851b89a9eff0f51b6dff035bd6c1f9c31dfa166c919138132" + "0x931d2a630f6bdfe872F98ea967447c8F99d4823a": "0x9e4f758c9ee4fbe851b89a9eff0f51b6dff035bd6c1f9c31dfa166c919138132", + "0x79232d3431463dC2B8Fd8fb28B352B9Ba92Eb280": "0x3e55eae81b04fb999f194da6dd1435683d007b21eae39f2d4bb5303fe2445b85" } \ No newline at end of file diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/index.ts b/v3/scripts/20250221-protocol-fee-controller-migration/index.ts index d984cb14..b36a6a23 100644 --- a/v3/scripts/20250221-protocol-fee-controller-migration/index.ts +++ b/v3/scripts/20250221-protocol-fee-controller-migration/index.ts @@ -7,8 +7,4 @@ export default async (task: Task, { force, from }: TaskRunOptions = {}): Promise const args = [input.Vault, input.ProtocolFeeController]; await task.deployAndVerify('ProtocolFeeControllerMigration', args, from, force); - - // Deploy a version of the WeightedPoolFactory that allows pool creators. - const factoryArgs = [input.Vault, 0, '', '']; - await task.deployAndVerify('WeightedPoolFactory', factoryArgs, from, force); }; diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/output/arbitrum.json b/v3/scripts/20250221-protocol-fee-controller-migration/output/arbitrum.json new file mode 100644 index 00000000..d58729ea --- /dev/null +++ b/v3/scripts/20250221-protocol-fee-controller-migration/output/arbitrum.json @@ -0,0 +1,3 @@ +{ + "ProtocolFeeControllerMigration": "0xdDea349828096DcdC0Cc5B7Db5F924f146AadD90" +} \ No newline at end of file diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/output/base.json b/v3/scripts/20250221-protocol-fee-controller-migration/output/base.json new file mode 100644 index 00000000..f6d132e1 --- /dev/null +++ b/v3/scripts/20250221-protocol-fee-controller-migration/output/base.json @@ -0,0 +1,3 @@ +{ + "ProtocolFeeControllerMigration": "0x1b6F057520B4e826271D47b8bdab98E35Af17E59" +} \ No newline at end of file diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/output/gnosis.json b/v3/scripts/20250221-protocol-fee-controller-migration/output/gnosis.json new file mode 100644 index 00000000..2d3df973 --- /dev/null +++ b/v3/scripts/20250221-protocol-fee-controller-migration/output/gnosis.json @@ -0,0 +1,3 @@ +{ + "ProtocolFeeControllerMigration": "0x6B1Da720Be2D11d95177ccFc40A917c2688f396c" +} \ No newline at end of file diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/output/mainnet.json b/v3/scripts/20250221-protocol-fee-controller-migration/output/mainnet.json new file mode 100644 index 00000000..7f7f5292 --- /dev/null +++ b/v3/scripts/20250221-protocol-fee-controller-migration/output/mainnet.json @@ -0,0 +1,3 @@ +{ + "ProtocolFeeControllerMigration": "0x75635f85600Fc357906417f6b78AAf8755d2888D" +} \ No newline at end of file diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/output/sepolia.json b/v3/scripts/20250221-protocol-fee-controller-migration/output/sepolia.json new file mode 100644 index 00000000..f792c12a --- /dev/null +++ b/v3/scripts/20250221-protocol-fee-controller-migration/output/sepolia.json @@ -0,0 +1,3 @@ +{ + "ProtocolFeeControllerMigration": "0x79232d3431463dC2B8Fd8fb28B352B9Ba92Eb280" +} \ No newline at end of file diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/readme.md b/v3/scripts/20250221-protocol-fee-controller-migration/readme.md index b2423ef9..c9defe97 100644 --- a/v3/scripts/20250221-protocol-fee-controller-migration/readme.md +++ b/v3/scripts/20250221-protocol-fee-controller-migration/readme.md @@ -7,5 +7,10 @@ We then simulate a second migration, this time using the full infrastructure in ## Useful Files - [Code](https://github.com/balancer/balancer-v3-monorepo/commit/40b4cd30889103dd17c0d87bc7d3d397823b65a0). +- [Ethereum mainnet addresses](./output/mainnet.json) +- [Gnosis mainnet addresses](./output/gnosis.json) +- [Arbitrum mainnet addresses](./output/arbitrum.json) +- [Base mainnet addresses](./output/base.json) +- [Sepolia testnet addresses](./output/sepolia.json) - [`ProtocolFeeControllerMigration` artifact](./artifact/ProtocolFeeControllerMigration.json) - [`WeightedPoolFactory` artifact](./artifact/WeightedPoolFactory.json) diff --git a/v3/scripts/20250221-protocol-fee-controller-migration/test/task.fork.ts b/v3/scripts/20250221-protocol-fee-controller-migration/test/task.fork.ts index c463e659..f07f65dc 100644 --- a/v3/scripts/20250221-protocol-fee-controller-migration/test/task.fork.ts +++ b/v3/scripts/20250221-protocol-fee-controller-migration/test/task.fork.ts @@ -220,8 +220,9 @@ describeForkTest('ProtocolFeeControllerMigration', 'mainnet', 22020651, function }); it('deploys a pool with a creator', async () => { - // Special version that allows pool creators. - const factory = await migrationTask.deployedInstance('WeightedPoolFactory'); + // Deploy a version of the WeightedPoolFactory that allows pool creators. + const factoryArgs = [input.Vault, 0, '', '']; + const factory = await migrationTask.deploy('WeightedPoolFactory', factoryArgs, admin, true); const tokensTask = new Task('00000000-tokens', TaskMode.READ_ONLY, getForkedNetwork(hre));