From 40ce69e9a1ada60a0e84e1f9d4a97ff514e3425e Mon Sep 17 00:00:00 2001 From: Sam MacPherson Date: Tue, 10 Dec 2024 13:58:59 -0700 Subject: [PATCH 1/6] refactor staging to most up to date and do another deploy --- Makefile | 5 +- deploy/ControllerInit.sol | 34 ++-- script/input/1/base-staging.json | 4 - script/input/1/common.json | 5 - script/input/1/mainnet-staging.json | 7 +- .../1/base-staging-release-20241210.json | 12 ++ .../1/mainnet-staging-release-20241210.json | 22 +++ script/staging/DeployEthereum.s.sol | 37 ---- ...oymentBase.sol => FullStagingDeploy.s.sol} | 185 ++++++++---------- script/staging/mocks/MockDaiUsds.sol | 27 --- script/staging/mocks/MockPSM.sol | 43 ---- script/staging/mocks/MockSUsds.sol | 14 -- 12 files changed, 134 insertions(+), 261 deletions(-) delete mode 100644 script/input/1/common.json create mode 100644 script/output/1/base-staging-release-20241210.json create mode 100644 script/output/1/mainnet-staging-release-20241210.json delete mode 100644 script/staging/DeployEthereum.s.sol rename script/staging/{StagingDeploymentBase.sol => FullStagingDeploy.s.sol} (78%) delete mode 100644 script/staging/mocks/MockDaiUsds.sol delete mode 100644 script/staging/mocks/MockPSM.sol delete mode 100644 script/staging/mocks/MockSUsds.sol diff --git a/Makefile b/Makefile index e8703e0..9f1b5c4 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,9 @@ +# Staging Full Deployment with Dependencies +deploy-staging-full :; forge script script/staging/FullStagingDeploy.s.sol:FullStagingDeploy --sender ${ETH_FROM} --broadcast --verify + # Staging Deployments -deploy-mainnet-staging-full :; ENV=staging forge script script/Deploy.s.sol:DeployMainnetFull --sender ${ETH_FROM} --broadcast --verify deploy-mainnet-staging-controller :; ENV=staging forge script script/Deploy.s.sol:DeployMainnetController --sender ${ETH_FROM} --broadcast --verify -deploy-base-staging-full :; CHAIN=base ENV=staging forge script script/Deploy.s.sol:DeployForeignFull --sender ${ETH_FROM} --broadcast --verify deploy-base-staging-controller :; CHAIN=base ENV=staging forge script script/Deploy.s.sol:DeployForeignController --sender ${ETH_FROM} --broadcast --verify # Production Deployments diff --git a/deploy/ControllerInit.sol b/deploy/ControllerInit.sol index f1f86a2..eb72883 100644 --- a/deploy/ControllerInit.sol +++ b/deploy/ControllerInit.sol @@ -135,11 +135,11 @@ library MainnetControllerInit { addresses.susds ); - _setRateLimitData(controller.LIMIT_USDS_MINT(), rateLimits, data.usdsMintData, "usdsMintData", 18); - _setRateLimitData(controller.LIMIT_USDS_TO_USDC(), rateLimits, data.usdsToUsdcData, "usdsToUsdcData", 6); - _setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); - _setRateLimitData(domainKeyBase, rateLimits, data.cctpToBaseDomainData, "cctpToBaseDomainData", 6); - _setRateLimitData(susdsKey, rateLimits, data.susdsDepositData, "susdsDepositData", 18); + setRateLimitData(controller.LIMIT_USDS_MINT(), rateLimits, data.usdsMintData, "usdsMintData", 18); + setRateLimitData(controller.LIMIT_USDS_TO_USDC(), rateLimits, data.usdsToUsdcData, "usdsToUsdcData", 6); + setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); + setRateLimitData(domainKeyBase, rateLimits, data.cctpToBaseDomainData, "cctpToBaseDomainData", 6); + setRateLimitData(susdsKey, rateLimits, data.susdsDepositData, "susdsDepositData", 18); // Step 4: Configure the mint recipients on other domains @@ -176,7 +176,7 @@ library MainnetControllerInit { IPSMLike(psm).kiss(almProxy); // To allow using no fee functionality } - function _setRateLimitData( + function setRateLimitData( bytes32 key, IRateLimits rateLimits, RateLimitData memory data, @@ -296,14 +296,14 @@ library ForeignControllerInit { CCTPForwarder.DOMAIN_ID_CIRCLE_ETHEREUM ); - _setRateLimitData(_makeKey(depositKey, addresses.usdc), rateLimits, data.usdcDepositData, "usdcDepositData", 6); - _setRateLimitData(_makeKey(withdrawKey, addresses.usdc), rateLimits, data.usdcWithdrawData, "usdcWithdrawData", 6); - _setRateLimitData(_makeKey(depositKey, addresses.usds), rateLimits, data.usdsDepositData, "usdsDepositData", 18); - _setRateLimitData(_makeKey(withdrawKey, addresses.usds), rateLimits, data.usdsWithdrawData, "usdsWithdrawData", 18); - _setRateLimitData(_makeKey(depositKey, addresses.susds), rateLimits, data.susdsDepositData, "susdsDepositData", 18); - _setRateLimitData(_makeKey(withdrawKey, addresses.susds), rateLimits, data.susdsWithdrawData, "susdsWithdrawData", 18); - _setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); - _setRateLimitData(domainKeyEthereum, rateLimits, data.cctpToEthereumDomainData, "cctpToEthereumDomainData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usdc), rateLimits, data.usdcDepositData, "usdcDepositData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usdc), rateLimits, data.usdcWithdrawData, "usdcWithdrawData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usds), rateLimits, data.usdsDepositData, "usdsDepositData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usds), rateLimits, data.usdsWithdrawData, "usdsWithdrawData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.susds), rateLimits, data.susdsDepositData, "susdsDepositData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.susds), rateLimits, data.susdsWithdrawData, "susdsWithdrawData", 18); + setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); + setRateLimitData(domainKeyEthereum, rateLimits, data.cctpToEthereumDomainData, "cctpToEthereumDomainData", 6); // Step 3: Configure the mint recipients on other domains @@ -312,11 +312,7 @@ library ForeignControllerInit { } } - function _makeKey(bytes32 actionKey, address asset) internal pure returns (bytes32) { - return RateLimitHelpers.makeAssetKey(actionKey, asset); - } - - function _setRateLimitData( + function setRateLimitData( bytes32 key, IRateLimits rateLimits, RateLimitData memory data, diff --git a/script/input/1/base-staging.json b/script/input/1/base-staging.json index 164c213..8e5affa 100644 --- a/script/input/1/base-staging.json +++ b/script/input/1/base-staging.json @@ -1,9 +1,5 @@ { - "admin": "0x6F3066538A648b9CFad0679DF0a7e40882A23AA4", - "almProxy": "0x94eA1518cACD45786Dbe0fe646F93446F94d21FE", "cctpTokenMessenger": "0x1682Ae6375C4E4A97e4B583BC394c861A46D8962", - "psm": "0x1601843c5E9bC251A3272907010AFa41Fa18347E", - "rateLimits": "0x79F826786953fb42aed02796F792EF8f2701d18b", "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", "freezer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" diff --git a/script/input/1/common.json b/script/input/1/common.json deleted file mode 100644 index 2b7a667..0000000 --- a/script/input/1/common.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ilk": "ALLOCATOR-SPARK-A", - "usdcUnitSize": 10, - "usdsUnitSize": 10 -} diff --git a/script/input/1/mainnet-staging.json b/script/input/1/mainnet-staging.json index 7c41094..294d050 100644 --- a/script/input/1/mainnet-staging.json +++ b/script/input/1/mainnet-staging.json @@ -1,12 +1,11 @@ { - "admin": "0x6F3066538A648b9CFad0679DF0a7e40882A23AA4", - "allocatorVault": "0x8E20650287635aE6e20ce38EcD3E795919D52354", - "almProxy": "0xC29D06ce81137E6B3C3DC090713636d81600a347", + "ilk": "ALLOCATOR-SPARK-A", + "usdcUnitSize": 10, + "usdsUnitSize": 10, "cctpTokenMessenger": "0xBd3fa81B58Ba92a82136038B25aDec7066af3155", "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", "psm": "0x91AA02EDe82D3C2f49A2d5a7efBA7ba4403100C8", - "rateLimits": "0x9A140AC56CC28A00B2c036F454F202c2459ca84c", "relayer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", "freezer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", diff --git a/script/output/1/base-staging-release-20241210.json b/script/output/1/base-staging-release-20241210.json new file mode 100644 index 0000000..7474efe --- /dev/null +++ b/script/output/1/base-staging-release-20241210.json @@ -0,0 +1,12 @@ +{ + "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", + "almProxy": "0xE81A5b3657605FB2B9D8B35B17bfe27d3Bd6219d", + "controller": "0x61Baf0Ce69D23C8318c786e161D1cAc285AA4EA3", + "freezer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", + "psm": "0xe1e4953C93Da52b95eDD0ffd910565D3369aCd6b", + "rateLimits": "0x205216D89a00FeB2a73273ceecD297BAf89d576d", + "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", + "susds": "0x76B3D354FEe58523E4687a2142c2CCc6a4d35e8B", + "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "usds": "0x3C258BCaC2ab3615fC8BCfcD878e8B8df81fFA06" +} \ No newline at end of file diff --git a/script/output/1/mainnet-staging-release-20241210.json b/script/output/1/mainnet-staging-release-20241210.json new file mode 100644 index 0000000..cf7e5ae --- /dev/null +++ b/script/output/1/mainnet-staging-release-20241210.json @@ -0,0 +1,22 @@ +{ + "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", + "allocatorBuffer": "0x08F72DC80943284A1d2d50eDCB0a7EDc27148758", + "allocatorOracle": "0xfDE179F68E4BF6Aa5Ff969df4354423C4A2D731B", + "allocatorRegistry": "0xaFaeAf9eEF4710629ca8c827b82091B3FF1a2701", + "allocatorRoles": "0x5117899510D9F4232c24376e2BBa622c64A90aFD", + "allocatorVault": "0xb3Df65B801529D128ce97307067a1b6dA4f7abcA", + "almProxy": "0xEA428cDa449c23Bd5475E6b0723c2F1636f1Bb37", + "controller": "0xDE7ba05f63B7918D2F8e2c1b1Dcdd439Fc7AC291", + "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", + "freezer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", + "jug": "0x985B99384d922f167Ca80E00e56545B3143a00e8", + "psm": "0x42B3D76B2cEb919F33337E7d04bf4E60FFC94B99", + "rateLimits": "0x27c4c9b33E270713876fF505f21ED1BDD03Cb916", + "relayer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", + "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", + "usdc": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "usds": "0xdC035D45d973E3EC169d2276DDab16f1e407384F", + "usdsJoin": "0x00df3C06AED70d70e1FA2996cEeAE40BD515A69B", + "vat": "0xcCBA298E63411df1156c6432Ec332a1aB04B41d7" +} \ No newline at end of file diff --git a/script/staging/DeployEthereum.s.sol b/script/staging/DeployEthereum.s.sol deleted file mode 100644 index 7d19503..0000000 --- a/script/staging/DeployEthereum.s.sol +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.21; - -import { ScriptTools } from "dss-test/ScriptTools.sol"; - -import { stdJson } from "forge-std/StdJson.sol"; - -import { Domain, StagingDeploymentBase } from "./StagingDeploymentBase.sol"; - -contract DeployEthereumStaging is StagingDeploymentBase { - - using stdJson for string; - using ScriptTools for string; - - function run() public { - vm.setEnv("FOUNDRY_ROOT_CHAINID", "1"); - vm.setEnv("FOUNDRY_EXPORTS_OVERWRITE_LATEST", "true"); - - deployer = msg.sender; - - mainnet = Domain({ - name : "mainnet", - config : ScriptTools.loadConfig("mainnet"), - forkId : vm.createFork(getChain("mainnet").rpcUrl), - admin : deployer - }); - base = Domain({ - name : "base", - config : ScriptTools.loadConfig("base"), - forkId : vm.createFork(getChain("base").rpcUrl), - admin : deployer - }); - - _runFullDeployment({ useLiveContracts: true }); - } - -} diff --git a/script/staging/StagingDeploymentBase.sol b/script/staging/FullStagingDeploy.s.sol similarity index 78% rename from script/staging/StagingDeploymentBase.sol rename to script/staging/FullStagingDeploy.s.sol index 7cbc19e..dc5862e 100644 --- a/script/staging/StagingDeploymentBase.sol +++ b/script/staging/FullStagingDeploy.s.sol @@ -44,11 +44,10 @@ import { RateLimitData } from "../../deploy/ControllerInit.sol"; -import { MockDaiUsds } from "./mocks/MockDaiUsds.sol"; +import { IRateLimits } from "../../src/interfaces/IRateLimits.sol"; + import { MockJug } from "./mocks/MockJug.sol"; -import { MockPSM } from "./mocks/MockPSM.sol"; import { MockRateProvider } from "./mocks/MockRateProvider.sol"; -import { MockSUsds } from "./mocks/MockSUsds.sol"; import { MockUsdsJoin } from "./mocks/MockUsdsJoin.sol"; import { MockVat } from "./mocks/MockVat.sol"; import { PSMWrapper } from "./mocks/PSMWrapper.sol"; @@ -60,23 +59,11 @@ struct Domain { address admin; } -contract StagingDeploymentBase is Script { +contract FullStagingDeploy is Script { using stdJson for string; using ScriptTools for string; - /**********************************************************************************************/ - /*** Existing addresses (populated from JSON) ***/ - /**********************************************************************************************/ - - address CCTP_TOKEN_MESSENGER_BASE; - address CCTP_TOKEN_MESSENGER_MAINNET; - - address SAFE_MAINNET; - address SAFE_BASE; - address USDC; - address USDC_BASE; - /**********************************************************************************************/ /*** Mainnet existing/mock deployments ***/ /**********************************************************************************************/ @@ -87,6 +74,7 @@ contract StagingDeploymentBase is Script { address psm; address susds; address usds; + address usdc; // Mocked MCD contracts address jug; @@ -140,13 +128,29 @@ contract StagingDeploymentBase is Script { /*** Helper functions ***/ /**********************************************************************************************/ - function _setUpDependencies(bool useLiveContracts) internal { + function _setUpDependencies() internal { vm.selectFork(mainnet.forkId); vm.startBroadcast(); - // Step 1: Deploy or use existing contracts for tokens, DaiUsds and PSM - if (useLiveContracts) _useLiveContracts(); - else _setUpMocks(); + // Step 1: Use existing contracts for tokens, DaiUsds and PSM + + dai = mainnet.config.readAddress(".dai"); + usds = mainnet.config.readAddress(".usds"); + susds = mainnet.config.readAddress(".susds"); + usdc = mainnet.config.readAddress(".usdc"); + daiUsds = mainnet.config.readAddress(".daiUsds"); + livePsm = mainnet.config.readAddress(".psm"); + + // This contract is necessary to get past the `kiss` requirement from the pause proxy. + // It wraps the `noFee` calls with regular PSM swap calls. + psm = address(new PSMWrapper(usdc, dai, livePsm)); + + // NOTE: This is a HACK to make sure that `fill` doesn't get called until the call reverts. + // Because this PSM contract is a wrapper over the real PSM, the controller queries + // the DAI balance of the PSM to check if it should fill or not. Filling with DAI + // fills the live PSM NOT the wrapper, so the while loop will continue until the + // function reverts. Dealing DAI into the wrapper will prevent fill from being called. + IERC20(dai).transfer(psm, USDS_UNIT_SIZE); // Step 2: Deploy mocked MCD contracts @@ -169,53 +173,12 @@ contract StagingDeploymentBase is Script { ScriptTools.exportContract(mainnet.name, "jug", jug); ScriptTools.exportContract(mainnet.name, "psm", psm); ScriptTools.exportContract(mainnet.name, "susds", susds); - ScriptTools.exportContract(mainnet.name, "usdc", USDC); + ScriptTools.exportContract(mainnet.name, "usdc", usdc); ScriptTools.exportContract(mainnet.name, "usds", usds); ScriptTools.exportContract(mainnet.name, "usdsJoin", usdsJoin); ScriptTools.exportContract(mainnet.name, "vat", vat); } - function _useLiveContracts() internal { - dai = mainnet.config.readAddress(".dai"); - usds = mainnet.config.readAddress(".usds"); - susds = mainnet.config.readAddress(".susds"); - daiUsds = mainnet.config.readAddress(".daiUsds"); - livePsm = mainnet.config.readAddress(".psm"); - - // This contract is necessary to get past the `kiss` requirement from the pause proxy. - // It wraps the `noFee` calls with regular PSM swap calls. - psm = address(new PSMWrapper(USDC, dai, livePsm)); - - // NOTE: This is a HACK to make sure that `fill` doesn't get called until the call reverts. - // Because this PSM contract is a wrapper over the real PSM, the controller queries - // the DAI balance of the PSM to check if it should fill or not. Filling with DAI - // fills the live PSM NOT the wrapper, so the while loop will continue until the - // function reverts. Dealing DAI into the wrapper will prevent fill from being called. - IERC20(dai).transfer(psm, USDS_UNIT_SIZE); - } - - function _setUpMocks() internal { - require(IERC20(USDC).balanceOf(deployer) >= USDC_UNIT_SIZE * 10, "USDC balance too low"); - - dai = address(new MockERC20("DAI", "DAI", 18)); - usds = address(new MockERC20("USDS", "USDS", 18)); - susds = address(new MockSUsds(usds)); - - daiUsds = address(new MockDaiUsds(mainnet.admin, dai, usds)); - psm = address(new MockPSM(mainnet.admin, USDC, dai)); - - // Mint USDS into deployer so it can be transferred into usdsJoin - MockERC20(usds).mint(deployer, USDS_UNIT_SIZE); - - // Fill the psm with dai and usdc - IERC20(USDC).transfer(psm, USDC_UNIT_SIZE * 10); - MockERC20(dai).mint(psm, USDS_UNIT_SIZE); - - // Fill the DaiUsds contract with both tokens - MockERC20(dai).mint(daiUsds, USDS_UNIT_SIZE); - MockERC20(usds).mint(daiUsds, USDS_UNIT_SIZE); - } - function _setUpAllocationSystem() internal { vm.selectFork(mainnet.forkId); vm.startBroadcast(); @@ -275,7 +238,7 @@ contract StagingDeploymentBase is Script { vault : vault, psm : psm, daiUsds : daiUsds, - cctp : CCTP_TOKEN_MESSENGER_MAINNET, + cctp : mainnet.config.readAddress(".cctpTokenMessenger"), susds : susds }); @@ -304,16 +267,16 @@ contract StagingDeploymentBase is Script { MainnetControllerInit.subDaoInitFull({ addresses: MainnetControllerInit.AddressParams({ admin : mainnet.admin, - freezer : makeAddr("freezer"), - relayer : SAFE_MAINNET, + freezer : mainnet.config.readAddress(".freezer"), + relayer : mainnet.config.readAddress(".relayer"), oldController : address(0), psm : psm, vault : vault, buffer : buffer, - cctpMessenger : CCTP_TOKEN_MESSENGER_MAINNET, + cctpMessenger : mainnet.config.readAddress(".cctpTokenMessenger"), dai : dai, daiUsds : daiUsds, - usdc : USDC, + usdc : usdc, usds : usds, susds : susds }), @@ -328,6 +291,22 @@ contract StagingDeploymentBase is Script { mintRecipients: mintRecipients }); + // Extra rate limit configuration + MainnetControllerInit.setRateLimitData({ + key: MainnetController(instance.controller).LIMIT_USDE_MINT(), + rateLimits: IRateLimits(instance.rateLimits), + data: rateLimitData6, + name: "usdeMintData", + decimals: 6 + }); + MainnetControllerInit.setRateLimitData({ + key: MainnetController(instance.controller).LIMIT_USDE_BURN(), + rateLimits: IRateLimits(instance.rateLimits), + data: rateLimitData18, + name: "usdeBurnData", + decimals: 18 + }); + // Step 3: Transfer ownership of mock usdsJoin to the vault (able to mint usds) MockUsdsJoin(usdsJoin).transferOwnership(vault); @@ -336,7 +315,8 @@ contract StagingDeploymentBase is Script { // Step 4: Export all deployed addresses - ScriptTools.exportContract(mainnet.name, "safe", SAFE_MAINNET); + ScriptTools.exportContract(mainnet.name, "freezer", mainnet.config.readAddress(".freezer")); + ScriptTools.exportContract(mainnet.name, "relayer", mainnet.config.readAddress(".relayer")); ScriptTools.exportContract(mainnet.name, "almProxy", instance.almProxy); ScriptTools.exportContract(mainnet.name, "controller", instance.controller); ScriptTools.exportContract(mainnet.name, "rateLimits", instance.rateLimits); @@ -354,7 +334,7 @@ contract StagingDeploymentBase is Script { psmBase = PSM3Deploy.deploy({ owner : deployer, - usdc : USDC_BASE, + usdc : base.config.readAddress(".usdc"), usds : usdsBase, susds : susdsBase, rateProvider : address(new MockRateProvider()) @@ -364,7 +344,7 @@ contract StagingDeploymentBase is Script { ScriptTools.exportContract(base.name, "usds", usdsBase); ScriptTools.exportContract(base.name, "susds", susdsBase); - ScriptTools.exportContract(base.name, "usdc", USDC_BASE); + ScriptTools.exportContract(base.name, "usdc", base.config.readAddress(".usdc")); ScriptTools.exportContract(base.name, "psm", psmBase); } @@ -377,8 +357,8 @@ contract StagingDeploymentBase is Script { ControllerInstance memory instance = ForeignControllerDeploy.deployFull({ admin : base.admin, psm : address(psmBase), - usdc : USDC_BASE, - cctp : CCTP_TOKEN_MESSENGER_BASE + usdc : base.config.readAddress(".usdc"), + cctp : base.config.readAddress(".cctpTokenMessenger") }); baseAlmProxy = instance.almProxy; @@ -409,12 +389,12 @@ contract StagingDeploymentBase is Script { ForeignControllerInit.init({ addresses: ForeignControllerInit.AddressParams({ admin : base.admin, - freezer : makeAddr("freezer"), - relayer : SAFE_BASE, + freezer : base.config.readAddress(".freezer"), + relayer : base.config.readAddress(".relayer"), oldController : address(0), psm : psmBase, - cctpMessenger : CCTP_TOKEN_MESSENGER_BASE, - usdc : USDC_BASE, + cctpMessenger : base.config.readAddress(".cctpTokenMessenger"), + usdc : base.config.readAddress(".usdc"), usds : usdsBase, susds : susdsBase }), @@ -441,7 +421,8 @@ contract StagingDeploymentBase is Script { // Step 4: Export all deployed addresses - ScriptTools.exportContract(base.name, "safe", SAFE_BASE); + ScriptTools.exportContract(base.name, "freezer", base.config.readAddress(".freezer")); + ScriptTools.exportContract(base.name, "relayer", base.config.readAddress(".relayer")); ScriptTools.exportContract(base.name, "almProxy", instance.almProxy); ScriptTools.exportContract(base.name, "controller", instance.controller); ScriptTools.exportContract(base.name, "rateLimits", instance.rateLimits); @@ -459,50 +440,42 @@ contract StagingDeploymentBase is Script { vm.stopBroadcast(); } - function _transferOwnershipOfMocks() internal { - vm.selectFork(mainnet.forkId); - vm.startBroadcast(); - - MockDaiUsds(daiUsds).transferOwnership(mainnetAlmProxy); - MockPSM(psm).transferOwnership(mainnetAlmProxy); - - vm.stopBroadcast(); + function _runFullDeployment() internal { } - function _runFullDeployment(bool useLiveContracts) internal { - // Step 1: Load general configuration + function run() public { + vm.setEnv("FOUNDRY_ROOT_CHAINID", "1"); + vm.setEnv("FOUNDRY_EXPORTS_OVERWRITE_LATEST", "true"); - string memory common = ScriptTools.loadConfig("common"); + deployer = msg.sender; - ilk = common.readString(".ilk").stringToBytes32(); + mainnet = Domain({ + name : "mainnet-staging", + config : ScriptTools.loadConfig("mainnet-staging"), + forkId : vm.createFork(getChain("mainnet").rpcUrl), + admin : deployer + }); + base = Domain({ + name : "base-staging", + config : ScriptTools.loadConfig("base-staging"), + forkId : vm.createFork(getChain("base").rpcUrl), + admin : deployer + }); // Ballpark sizing of rate limits, tokens in PSMs, etc // Ballpark sizing of USDS to put in the join contracts, PSMs, etc - USDC_UNIT_SIZE = common.readUint(".usdcUnitSize") * 1e6; - USDS_UNIT_SIZE = common.readUint(".usdsUnitSize") * 1e18; - - // Step 2: Load domain-specific configurations - - CCTP_TOKEN_MESSENGER_MAINNET = mainnet.config.readAddress(".cctpTokenMessenger"); - CCTP_TOKEN_MESSENGER_BASE = base.config.readAddress(".cctpTokenMessenger"); + USDC_UNIT_SIZE = mainnet.config.readUint(".usdcUnitSize") * 1e6; + USDS_UNIT_SIZE = mainnet.config.readUint(".usdsUnitSize") * 1e18; - SAFE_MAINNET = mainnet.config.readAddress(".safe"); - USDC = mainnet.config.readAddress(".usdc"); + // Run deployment scripts after setting storage variables - SAFE_BASE = base.config.readAddress(".safe"); - USDC_BASE = base.config.readAddress(".usdc"); - - // Step 3: Run deployment scripts after setting storage variables - - _setUpDependencies(useLiveContracts); + _setUpDependencies(); _setUpAllocationSystem(); _setUpALMController(); _setUpBasePSM(); _setUpBaseALMController(); _setBaseMintRecipient(); - if (!useLiveContracts) _transferOwnershipOfMocks(); - ScriptTools.exportContract(mainnet.name, "admin", deployer); ScriptTools.exportContract(base.name, "admin", deployer); } diff --git a/script/staging/mocks/MockDaiUsds.sol b/script/staging/mocks/MockDaiUsds.sol deleted file mode 100644 index 6e64f00..0000000 --- a/script/staging/mocks/MockDaiUsds.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.21; - -import { IERC20 } from "forge-std/interfaces/IERC20.sol"; - -import { Ownable } from "openzeppelin-contracts/contracts/access/Ownable.sol"; - -contract MockDaiUsds is Ownable { - - IERC20 public immutable dai; - IERC20 public immutable usds; - - constructor(address owner_, address dai_, address usds_) Ownable(owner_) { - dai = IERC20(dai_); - usds = IERC20(usds_); - } - - function daiToUsds(address usr, uint256 wad) external onlyOwner { - dai.transferFrom(usr, address(this), wad); - usds.transfer(usr, wad); - } - - function usdsToDai(address usr, uint256 wad) external onlyOwner { - usds.transferFrom(usr, address(this), wad); - dai.transfer(usr, wad); - } -} diff --git a/script/staging/mocks/MockPSM.sol b/script/staging/mocks/MockPSM.sol deleted file mode 100644 index c8a3fe7..0000000 --- a/script/staging/mocks/MockPSM.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.21; - -import { IERC20 } from "forge-std/interfaces/IERC20.sol"; - -import { Ownable } from "openzeppelin-contracts/contracts/access/Ownable.sol"; - -contract MockPSM is Ownable { - - IERC20 public immutable gem; - IERC20 public immutable dai; - - constructor(address owner_, address gem_, address dai_) Ownable(owner_) { - gem = IERC20(gem_); - dai = IERC20(dai_); - } - - function buyGemNoFee(address usr, uint256 usdcAmount) external onlyOwner returns (uint256 daiAmount) { - daiAmount = usdcAmount * 1e12; - - dai.transferFrom(usr, address(this), daiAmount); - gem.transfer(usr, usdcAmount); - } - - function sellGemNoFee(address usr, uint256 usdcAmount) external onlyOwner returns (uint256 daiAmount) { - daiAmount = usdcAmount * 1e12; - - gem.transferFrom(usr, address(this), usdcAmount); - dai.transfer(usr, daiAmount); - } - - function pocket() external view returns(address) { - return address(this); - } - - function to18ConversionFactor() external pure returns (uint256) { - return 1e12; - } - - function fill() external { - } - -} diff --git a/script/staging/mocks/MockSUsds.sol b/script/staging/mocks/MockSUsds.sol deleted file mode 100644 index 81b5f9e..0000000 --- a/script/staging/mocks/MockSUsds.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.21; - -import { MockERC20 } from "erc20-helpers/MockERC20.sol"; - -contract MockSUsds is MockERC20 { - - address public usds; - - constructor(address usds_) MockERC20("sUSDS", "sUSDS", 18) { - usds = usds_; - } - -} From 10f616d23e2213ff77dd827847f161bcadb039ab Mon Sep 17 00:00:00 2001 From: Sam MacPherson Date: Tue, 10 Dec 2024 15:53:37 -0700 Subject: [PATCH 2/6] remove custom psm in favour of real one --- script/input/1/base-staging.json | 5 ++- script/staging/FullStagingDeploy.s.sol | 55 +++-------------------- script/staging/mocks/MockRateProvider.sol | 10 ----- 3 files changed, 9 insertions(+), 61 deletions(-) delete mode 100644 script/staging/mocks/MockRateProvider.sol diff --git a/script/input/1/base-staging.json b/script/input/1/base-staging.json index 8e5affa..904585b 100644 --- a/script/input/1/base-staging.json +++ b/script/input/1/base-staging.json @@ -2,5 +2,8 @@ "cctpTokenMessenger": "0x1682Ae6375C4E4A97e4B583BC394c861A46D8962", "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", "freezer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", - "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" + "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "psm": "0x1601843c5E9bC251A3272907010AFa41Fa18347E", + "usds": "0x820C137fa70C8691f0e44Dc420a5e53c168921Dc", + "susds": "0x5875eEE11Cf8398102FdAd704C9E96607675467a" } diff --git a/script/staging/FullStagingDeploy.s.sol b/script/staging/FullStagingDeploy.s.sol index dc5862e..a20169b 100644 --- a/script/staging/FullStagingDeploy.s.sol +++ b/script/staging/FullStagingDeploy.s.sol @@ -47,7 +47,6 @@ import { import { IRateLimits } from "../../src/interfaces/IRateLimits.sol"; import { MockJug } from "./mocks/MockJug.sol"; -import { MockRateProvider } from "./mocks/MockRateProvider.sol"; import { MockUsdsJoin } from "./mocks/MockUsdsJoin.sol"; import { MockVat } from "./mocks/MockVat.sol"; import { PSMWrapper } from "./mocks/PSMWrapper.sol"; @@ -102,15 +101,6 @@ contract FullStagingDeploy is Script { address mainnetAlmProxy; address mainnetController; - /**********************************************************************************************/ - /*** Base dependency deployments ***/ - /**********************************************************************************************/ - - address usdsBase; - address susdsBase; - - address psmBase; - /**********************************************************************************************/ /*** Deployment-specific variables ***/ /**********************************************************************************************/ @@ -322,32 +312,6 @@ contract FullStagingDeploy is Script { ScriptTools.exportContract(mainnet.name, "rateLimits", instance.rateLimits); } - function _setUpBasePSM() public { - vm.selectFork(base.forkId); - vm.startBroadcast(); - - usdsBase = address(new MockERC20("USDS", "USDS", 18)); - susdsBase = address(new MockERC20("sUSDS", "sUSDS", 18)); - - // Mint enough for seeded deposit - MockERC20(usdsBase).mint(deployer, 1e18); - - psmBase = PSM3Deploy.deploy({ - owner : deployer, - usdc : base.config.readAddress(".usdc"), - usds : usdsBase, - susds : susdsBase, - rateProvider : address(new MockRateProvider()) - }); - - vm.stopBroadcast(); - - ScriptTools.exportContract(base.name, "usds", usdsBase); - ScriptTools.exportContract(base.name, "susds", susdsBase); - ScriptTools.exportContract(base.name, "usdc", base.config.readAddress(".usdc")); - ScriptTools.exportContract(base.name, "psm", psmBase); - } - function _setUpBaseALMController() public { vm.selectFork(base.forkId); vm.startBroadcast(); @@ -356,7 +320,7 @@ contract FullStagingDeploy is Script { ControllerInstance memory instance = ForeignControllerDeploy.deployFull({ admin : base.admin, - psm : address(psmBase), + psm : base.config.readAddress(".psm"), usdc : base.config.readAddress(".usdc"), cctp : base.config.readAddress(".cctpTokenMessenger") }); @@ -392,11 +356,11 @@ contract FullStagingDeploy is Script { freezer : base.config.readAddress(".freezer"), relayer : base.config.readAddress(".relayer"), oldController : address(0), - psm : psmBase, + psm : base.config.readAddress(".psm"), cctpMessenger : base.config.readAddress(".cctpTokenMessenger"), usdc : base.config.readAddress(".usdc"), - usds : usdsBase, - susds : susdsBase + usds : base.config.readAddress(".usds"), + susds : base.config.readAddress(".susds") }), controllerInst: instance, data: ForeignControllerInit.InitRateLimitData({ @@ -412,14 +376,9 @@ contract FullStagingDeploy is Script { mintRecipients: mintRecipients }); - // Step 3: Seed ALM Proxy with initial amounts of USDS and sUSDS - - MockERC20(usdsBase).mint(baseAlmProxy, USDS_UNIT_SIZE); - MockERC20(susdsBase).mint(baseAlmProxy, USDS_UNIT_SIZE); - vm.stopBroadcast(); - // Step 4: Export all deployed addresses + // Step 3: Export all deployed addresses ScriptTools.exportContract(base.name, "freezer", base.config.readAddress(".freezer")); ScriptTools.exportContract(base.name, "relayer", base.config.readAddress(".relayer")); @@ -440,9 +399,6 @@ contract FullStagingDeploy is Script { vm.stopBroadcast(); } - function _runFullDeployment() internal { - } - function run() public { vm.setEnv("FOUNDRY_ROOT_CHAINID", "1"); vm.setEnv("FOUNDRY_EXPORTS_OVERWRITE_LATEST", "true"); @@ -472,7 +428,6 @@ contract FullStagingDeploy is Script { _setUpDependencies(); _setUpAllocationSystem(); _setUpALMController(); - _setUpBasePSM(); _setUpBaseALMController(); _setBaseMintRecipient(); diff --git a/script/staging/mocks/MockRateProvider.sol b/script/staging/mocks/MockRateProvider.sol deleted file mode 100644 index 7eaf424..0000000 --- a/script/staging/mocks/MockRateProvider.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.21; - -contract MockRateProvider { - - function getConversionRate() external pure returns (uint256) { - return 1.2e27; - } - -} From c7c546f6bdce73187316826bd6b6903ab76939c8 Mon Sep 17 00:00:00 2001 From: Sam MacPherson Date: Tue, 10 Dec 2024 16:38:52 -0700 Subject: [PATCH 3/6] new deploy and add sUSDe rate limits --- .../1/base-staging-release-20241210.json | 12 +++------ .../1/mainnet-staging-release-20241210.json | 24 ++++++++--------- script/staging/FullStagingDeploy.s.sol | 27 +++++++++++++++---- 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/script/output/1/base-staging-release-20241210.json b/script/output/1/base-staging-release-20241210.json index 7474efe..879c1e8 100644 --- a/script/output/1/base-staging-release-20241210.json +++ b/script/output/1/base-staging-release-20241210.json @@ -1,12 +1,8 @@ { "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", - "almProxy": "0xE81A5b3657605FB2B9D8B35B17bfe27d3Bd6219d", - "controller": "0x61Baf0Ce69D23C8318c786e161D1cAc285AA4EA3", + "almProxy": "0x2627d5D0AF0B88Ee58BD7346F20A429f67a73e00", + "controller": "0xa3091Dfa6c02B6611250733852c95A59a127E00F", "freezer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", - "psm": "0xe1e4953C93Da52b95eDD0ffd910565D3369aCd6b", - "rateLimits": "0x205216D89a00FeB2a73273ceecD297BAf89d576d", - "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", - "susds": "0x76B3D354FEe58523E4687a2142c2CCc6a4d35e8B", - "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", - "usds": "0x3C258BCaC2ab3615fC8BCfcD878e8B8df81fFA06" + "rateLimits": "0xAe20F9093eB3301b2D83871A3505935eFc8498C6", + "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047" } \ No newline at end of file diff --git a/script/output/1/mainnet-staging-release-20241210.json b/script/output/1/mainnet-staging-release-20241210.json index cf7e5ae..f2bb983 100644 --- a/script/output/1/mainnet-staging-release-20241210.json +++ b/script/output/1/mainnet-staging-release-20241210.json @@ -1,22 +1,22 @@ { "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", - "allocatorBuffer": "0x08F72DC80943284A1d2d50eDCB0a7EDc27148758", - "allocatorOracle": "0xfDE179F68E4BF6Aa5Ff969df4354423C4A2D731B", - "allocatorRegistry": "0xaFaeAf9eEF4710629ca8c827b82091B3FF1a2701", - "allocatorRoles": "0x5117899510D9F4232c24376e2BBa622c64A90aFD", - "allocatorVault": "0xb3Df65B801529D128ce97307067a1b6dA4f7abcA", - "almProxy": "0xEA428cDa449c23Bd5475E6b0723c2F1636f1Bb37", - "controller": "0xDE7ba05f63B7918D2F8e2c1b1Dcdd439Fc7AC291", + "allocatorBuffer": "0x36138584868028D1913bf01359D7c736E6773008", + "allocatorOracle": "0xfC0E1fFBF9cCd82688c775b1587c45506cebDBdf", + "allocatorRegistry": "0xfd0A671c07309f14b05ec72c741C86AEA02e873c", + "allocatorRoles": "0xF954e125E979e104974882ca94063B4f088cf71D", + "allocatorVault": "0xAB0d4019B1182021C4cAa2F3D078EFe55cD5B5A6", + "almProxy": "0x675fc95BF2b42Fc61FF0f2E9969d9Ab19b65cda5", + "controller": "0x08c830bc14b52A65E7e62aBc7365e1C53933D4Bf", "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", "freezer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", - "jug": "0x985B99384d922f167Ca80E00e56545B3143a00e8", - "psm": "0x42B3D76B2cEb919F33337E7d04bf4E60FFC94B99", - "rateLimits": "0x27c4c9b33E270713876fF505f21ED1BDD03Cb916", + "jug": "0xf999576B81c53BFf473550354eeD98cD7b126184", + "psm": "0x8ac160e388a3F975c9Db1D41DeB76C574702CFa9", + "rateLimits": "0x449F100E37CF9CC4631c044efC4726609Be26766", "relayer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", "usdc": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "usds": "0xdC035D45d973E3EC169d2276DDab16f1e407384F", - "usdsJoin": "0x00df3C06AED70d70e1FA2996cEeAE40BD515A69B", - "vat": "0xcCBA298E63411df1156c6432Ec332a1aB04B41d7" + "usdsJoin": "0xAd309294c38EB44C929a9bB2A9452B1C8D96965e", + "vat": "0x373E0699D8bFDdd99d78248e5b993E6a02061B0e" } \ No newline at end of file diff --git a/script/staging/FullStagingDeploy.s.sol b/script/staging/FullStagingDeploy.s.sol index a20169b..650fca4 100644 --- a/script/staging/FullStagingDeploy.s.sol +++ b/script/staging/FullStagingDeploy.s.sol @@ -19,14 +19,10 @@ import { AllocatorVault } from "dss-allocator/src/AllocatorVault.sol"; import { ScriptTools } from "dss-test/ScriptTools.sol"; -import { MockERC20 } from "erc20-helpers/MockERC20.sol"; - import { IERC20 } from "forge-std/interfaces/IERC20.sol"; import { Script } from "forge-std/Script.sol"; import { stdJson } from "forge-std/StdJson.sol"; -import { PSM3Deploy } from "spark-psm/deploy/PSM3Deploy.sol"; - import { CCTPForwarder } from "xchain-helpers/src/forwarders/CCTPForwarder.sol"; import { @@ -44,7 +40,8 @@ import { RateLimitData } from "../../deploy/ControllerInit.sol"; -import { IRateLimits } from "../../src/interfaces/IRateLimits.sol"; +import { IRateLimits } from "../../src/interfaces/IRateLimits.sol"; +import { RateLimitHelpers } from "../../src/RateLimitHelpers.sol"; import { MockJug } from "./mocks/MockJug.sol"; import { MockUsdsJoin } from "./mocks/MockUsdsJoin.sol"; @@ -296,6 +293,26 @@ contract FullStagingDeploy is Script { name: "usdeBurnData", decimals: 18 }); + MainnetControllerInit.setRateLimitData({ + key: RateLimitHelpers.makeAssetKey( + MainnetController(instance.controller).LIMIT_4626_DEPOSIT(), + address(MainnetController(instance.controller).susde()) + ), + rateLimits: IRateLimits(instance.rateLimits), + data: rateLimitData18, + name: "susdsMintData", + decimals: 18 + }); + MainnetControllerInit.setRateLimitData({ + key: RateLimitHelpers.makeAssetKey( + MainnetController(instance.controller).LIMIT_4626_WITHDRAW(), + address(MainnetController(instance.controller).susde()) + ), + rateLimits: IRateLimits(instance.rateLimits), + data: rateLimitData18, + name: "susdsMintData", + decimals: 18 + }); // Step 3: Transfer ownership of mock usdsJoin to the vault (able to mint usds) From 46e568e0fb1bdd191540f725fc8f64b3d05c385b Mon Sep 17 00:00:00 2001 From: Sam MacPherson Date: Wed, 11 Dec 2024 09:38:50 -0700 Subject: [PATCH 4/6] formating and fixed some modifiers --- deploy/ControllerInit.sol | 17 +++++---- script/staging/FullStagingDeploy.s.sol | 52 +++++++++----------------- test/base-fork/DeployAndInit.t.sol | 6 +-- test/mainnet-fork/DeployAndInit.t.sol | 2 +- 4 files changed, 31 insertions(+), 46 deletions(-) diff --git a/deploy/ControllerInit.sol b/deploy/ControllerInit.sol index eb72883..11b9c90 100644 --- a/deploy/ControllerInit.sol +++ b/deploy/ControllerInit.sol @@ -296,14 +296,15 @@ library ForeignControllerInit { CCTPForwarder.DOMAIN_ID_CIRCLE_ETHEREUM ); - setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usdc), rateLimits, data.usdcDepositData, "usdcDepositData", 6); - setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usdc), rateLimits, data.usdcWithdrawData, "usdcWithdrawData", 6); - setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usds), rateLimits, data.usdsDepositData, "usdsDepositData", 18); - setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usds), rateLimits, data.usdsWithdrawData, "usdsWithdrawData", 18); - setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.susds), rateLimits, data.susdsDepositData, "susdsDepositData", 18); - setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.susds), rateLimits, data.susdsWithdrawData, "susdsWithdrawData", 18); - setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); - setRateLimitData(domainKeyEthereum, rateLimits, data.cctpToEthereumDomainData, "cctpToEthereumDomainData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usdc), rateLimits, data.usdcDepositData, "usdcDepositData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usdc), rateLimits, data.usdcWithdrawData, "usdcWithdrawData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usds), rateLimits, data.usdsDepositData, "usdsDepositData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usds), rateLimits, data.usdsWithdrawData, "usdsWithdrawData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.susds), rateLimits, data.susdsDepositData, "susdsDepositData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.susds), rateLimits, data.susdsWithdrawData, "susdsWithdrawData", 18); + + setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); + setRateLimitData(domainKeyEthereum, rateLimits, data.cctpToEthereumDomainData, "cctpToEthereumDomainData", 6); // Step 3: Configure the mint recipients on other domains diff --git a/script/staging/FullStagingDeploy.s.sol b/script/staging/FullStagingDeploy.s.sol index 650fca4..66927f7 100644 --- a/script/staging/FullStagingDeploy.s.sol +++ b/script/staging/FullStagingDeploy.s.sol @@ -279,40 +279,24 @@ contract FullStagingDeploy is Script { }); // Extra rate limit configuration - MainnetControllerInit.setRateLimitData({ - key: MainnetController(instance.controller).LIMIT_USDE_MINT(), - rateLimits: IRateLimits(instance.rateLimits), - data: rateLimitData6, - name: "usdeMintData", - decimals: 6 - }); - MainnetControllerInit.setRateLimitData({ - key: MainnetController(instance.controller).LIMIT_USDE_BURN(), - rateLimits: IRateLimits(instance.rateLimits), - data: rateLimitData18, - name: "usdeBurnData", - decimals: 18 - }); - MainnetControllerInit.setRateLimitData({ - key: RateLimitHelpers.makeAssetKey( - MainnetController(instance.controller).LIMIT_4626_DEPOSIT(), - address(MainnetController(instance.controller).susde()) - ), - rateLimits: IRateLimits(instance.rateLimits), - data: rateLimitData18, - name: "susdsMintData", - decimals: 18 - }); - MainnetControllerInit.setRateLimitData({ - key: RateLimitHelpers.makeAssetKey( - MainnetController(instance.controller).LIMIT_4626_WITHDRAW(), - address(MainnetController(instance.controller).susde()) - ), - rateLimits: IRateLimits(instance.rateLimits), - data: rateLimitData18, - name: "susdsMintData", - decimals: 18 - }); + bytes32 mintKey = MainnetController(instance.controller).LIMIT_USDE_MINT(); + bytes32 burnKey = MainnetController(instance.controller).LIMIT_USDE_BURN(); + + bytes32 susdsDepositKey = RateLimitHelpers.makeAssetKey( + MainnetController(instance.controller).LIMIT_4626_DEPOSIT(), + address(MainnetController(instance.controller).susde()) + ); + + bytes32 susdsWithdrawKey = RateLimitHelpers.makeAssetKey( + MainnetController(instance.controller).LIMIT_4626_WITHDRAW(), + address(MainnetController(instance.controller).susde()) + ); + + // Extra rate limit configuration + MainnetControllerInit.setRateLimitData(mintKey, IRateLimits(instance.rateLimits), rateLimitData6, "usdeMintData", 6); + MainnetControllerInit.setRateLimitData(burnKey, IRateLimits(instance.rateLimits), rateLimitData18, "usdeBurnData", 18); + MainnetControllerInit.setRateLimitData(susdsDepositKey, IRateLimits(instance.rateLimits), rateLimitData18, "susdsDepositData", 18); + MainnetControllerInit.setRateLimitData(susdsWithdrawKey, IRateLimits(instance.rateLimits), rateLimitData18, "susdsWithdrawData", 18); // Step 3: Transfer ownership of mock usdsJoin to the vault (able to mint usds) diff --git a/test/base-fork/DeployAndInit.t.sol b/test/base-fork/DeployAndInit.t.sol index 6ce4fb8..776c768 100644 --- a/test/base-fork/DeployAndInit.t.sol +++ b/test/base-fork/DeployAndInit.t.sol @@ -868,7 +868,7 @@ contract ForeignControllerDeployAndInitSuccessTests is ForeignControllerDeployAn assertEq(rateLimits.hasRole(rateLimits.CONTROLLER(), newController), true); } - function _assertDepositRateLimitData(IERC20 asset, RateLimitData memory expectedData) internal { + function _assertDepositRateLimitData(IERC20 asset, RateLimitData memory expectedData) internal view { bytes32 assetKey = RateLimitHelpers.makeAssetKey( foreignController.LIMIT_PSM_DEPOSIT(), address(asset) @@ -877,7 +877,7 @@ contract ForeignControllerDeployAndInitSuccessTests is ForeignControllerDeployAn _assertRateLimitData(assetKey, expectedData); } - function _assertWithdrawRateLimitData(IERC20 asset, RateLimitData memory expectedData) internal { + function _assertWithdrawRateLimitData(IERC20 asset, RateLimitData memory expectedData) internal view { bytes32 assetKey = RateLimitHelpers.makeAssetKey( foreignController.LIMIT_PSM_WITHDRAW(), address(asset) @@ -886,7 +886,7 @@ contract ForeignControllerDeployAndInitSuccessTests is ForeignControllerDeployAn _assertRateLimitData(assetKey, expectedData); } - function _assertRateLimitData(bytes32 domainKey, RateLimitData memory expectedData) internal { + function _assertRateLimitData(bytes32 domainKey, RateLimitData memory expectedData) internal view { IRateLimits.RateLimitData memory data = rateLimits.getRateLimitData(domainKey); assertEq(data.maxAmount, expectedData.maxAmount); diff --git a/test/mainnet-fork/DeployAndInit.t.sol b/test/mainnet-fork/DeployAndInit.t.sol index 38ff7d1..db6a52b 100644 --- a/test/mainnet-fork/DeployAndInit.t.sol +++ b/test/mainnet-fork/DeployAndInit.t.sol @@ -720,7 +720,7 @@ contract MainnetControllerDeployAndInitSuccessTests is MainnetControllerDeployIn assertEq(rateLimits.hasRole(rateLimits.CONTROLLER(), newController), true); } - function _assertRateLimitData(bytes32 domainKey, RateLimitData memory expectedData) internal { + function _assertRateLimitData(bytes32 domainKey, RateLimitData memory expectedData) internal view { IRateLimits.RateLimitData memory data = rateLimits.getRateLimitData(domainKey); assertEq(data.maxAmount, expectedData.maxAmount); From 1c86f7e1353dffd805a39010076e9aba9b35091f Mon Sep 17 00:00:00 2001 From: Sam MacPherson Date: Wed, 11 Dec 2024 09:49:53 -0700 Subject: [PATCH 5/6] split out into deps and release json --- .../1/base-staging-deps-release-20241022.json | 8 +++ .../1/base-staging-deps-release-20241210.json | 5 ++ .../1/base-staging-release-20241022.json | 8 +-- .../1/base-staging-release-20241210.json | 7 +-- ...mainnet-staging-deps-release-20241022.json | 18 ++++++ ...mainnet-staging-deps-release-20241210.json | 19 ++++++ .../1/mainnet-staging-release-20241022.json | 18 +----- .../1/mainnet-staging-release-20241210.json | 21 +------ script/staging/FullStagingDeploy.s.sol | 61 ++++++++++--------- 9 files changed, 89 insertions(+), 76 deletions(-) create mode 100644 script/output/1/base-staging-deps-release-20241022.json create mode 100644 script/output/1/base-staging-deps-release-20241210.json create mode 100644 script/output/1/mainnet-staging-deps-release-20241022.json create mode 100644 script/output/1/mainnet-staging-deps-release-20241210.json diff --git a/script/output/1/base-staging-deps-release-20241022.json b/script/output/1/base-staging-deps-release-20241022.json new file mode 100644 index 0000000..ce097ad --- /dev/null +++ b/script/output/1/base-staging-deps-release-20241022.json @@ -0,0 +1,8 @@ +{ + "admin": "0x6F3066538A648b9CFad0679DF0a7e40882A23AA4", + "psm": "0x6b728c4Fa4746a78e9af2cD75C712b5Bf2A90Ae7", + "susds": "0x4ae97016a03C132d2F600444E2493C62B01C9497", + "safe": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", + "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "usds": "0x4e9BEe8F2b33d8893a5A219854AC52e9518ee328" +} diff --git a/script/output/1/base-staging-deps-release-20241210.json b/script/output/1/base-staging-deps-release-20241210.json new file mode 100644 index 0000000..d80ca76 --- /dev/null +++ b/script/output/1/base-staging-deps-release-20241210.json @@ -0,0 +1,5 @@ +{ + "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", + "freezer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", + "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047" +} diff --git a/script/output/1/base-staging-release-20241022.json b/script/output/1/base-staging-release-20241022.json index edb474c..98aa25a 100644 --- a/script/output/1/base-staging-release-20241022.json +++ b/script/output/1/base-staging-release-20241022.json @@ -1,11 +1,5 @@ { - "admin": "0x6F3066538A648b9CFad0679DF0a7e40882A23AA4", "almProxy": "0x94eA1518cACD45786Dbe0fe646F93446F94d21FE", "controller": "0xD26112Ce8f7BE0834dBcfd018042bF76d68Ff42a", - "psm": "0x6b728c4Fa4746a78e9af2cD75C712b5Bf2A90Ae7", - "rateLimits": "0x79F826786953fb42aed02796F792EF8f2701d18b", - "susds": "0x4ae97016a03C132d2F600444E2493C62B01C9497", - "safe": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", - "usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", - "usds": "0x4e9BEe8F2b33d8893a5A219854AC52e9518ee328" + "rateLimits": "0x79F826786953fb42aed02796F792EF8f2701d18b" } diff --git a/script/output/1/base-staging-release-20241210.json b/script/output/1/base-staging-release-20241210.json index 879c1e8..ea6f4df 100644 --- a/script/output/1/base-staging-release-20241210.json +++ b/script/output/1/base-staging-release-20241210.json @@ -1,8 +1,5 @@ { - "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", "almProxy": "0x2627d5D0AF0B88Ee58BD7346F20A429f67a73e00", "controller": "0xa3091Dfa6c02B6611250733852c95A59a127E00F", - "freezer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047", - "rateLimits": "0xAe20F9093eB3301b2D83871A3505935eFc8498C6", - "relayer": "0xaB959A6F88b8D966c44a7cDC2049Ba9669EBf047" -} \ No newline at end of file + "rateLimits": "0xAe20F9093eB3301b2D83871A3505935eFc8498C6" +} diff --git a/script/output/1/mainnet-staging-deps-release-20241022.json b/script/output/1/mainnet-staging-deps-release-20241022.json new file mode 100644 index 0000000..0dea83b --- /dev/null +++ b/script/output/1/mainnet-staging-deps-release-20241022.json @@ -0,0 +1,18 @@ +{ + "admin": "0x6F3066538A648b9CFad0679DF0a7e40882A23AA4", + "allocatorBuffer": "0x6b728c4Fa4746a78e9af2cD75C712b5Bf2A90Ae7", + "allocatorOracle": "0x4ae97016a03C132d2F600444E2493C62B01C9497", + "allocatorRegistry": "0x6f75E221ccd8D7C496a48Ff4fd854C2319F2DaE2", + "allocatorRoles": "0x87E8A7537875661d12a31912FAaF07f50043e3D7", + "allocatorVault": "0x8E20650287635aE6e20ce38EcD3E795919D52354", + "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", + "jug": "0x464c46b3bFCf261ABFe440F90f08a08A39a59DD4", + "psm": "0x91AA02EDe82D3C2f49A2d5a7efBA7ba4403100C8", + "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", + "safe": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", + "usdc": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "usds": "0xdC035D45d973E3EC169d2276DDab16f1e407384F", + "usdsJoin": "0xA1CCf21b7012874fB2CD81704e0eeeF083DDe1b8", + "vat": "0xea53A79Fc3e024C887f37E844FA24B3DEbEC84B4" +} diff --git a/script/output/1/mainnet-staging-deps-release-20241210.json b/script/output/1/mainnet-staging-deps-release-20241210.json new file mode 100644 index 0000000..9144c31 --- /dev/null +++ b/script/output/1/mainnet-staging-deps-release-20241210.json @@ -0,0 +1,19 @@ +{ + "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", + "allocatorBuffer": "0x36138584868028D1913bf01359D7c736E6773008", + "allocatorOracle": "0xfC0E1fFBF9cCd82688c775b1587c45506cebDBdf", + "allocatorRegistry": "0xfd0A671c07309f14b05ec72c741C86AEA02e873c", + "allocatorRoles": "0xF954e125E979e104974882ca94063B4f088cf71D", + "allocatorVault": "0xAB0d4019B1182021C4cAa2F3D078EFe55cD5B5A6", + "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", + "freezer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", + "jug": "0xf999576B81c53BFf473550354eeD98cD7b126184", + "psm": "0x8ac160e388a3F975c9Db1D41DeB76C574702CFa9", + "relayer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", + "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", + "usdc": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "usds": "0xdC035D45d973E3EC169d2276DDab16f1e407384F", + "usdsJoin": "0xAd309294c38EB44C929a9bB2A9452B1C8D96965e", + "vat": "0x373E0699D8bFDdd99d78248e5b993E6a02061B0e" +} diff --git a/script/output/1/mainnet-staging-release-20241022.json b/script/output/1/mainnet-staging-release-20241022.json index 4656819..909bd36 100644 --- a/script/output/1/mainnet-staging-release-20241022.json +++ b/script/output/1/mainnet-staging-release-20241022.json @@ -1,21 +1,5 @@ { - "admin": "0x6F3066538A648b9CFad0679DF0a7e40882A23AA4", - "allocatorBuffer": "0x6b728c4Fa4746a78e9af2cD75C712b5Bf2A90Ae7", - "allocatorOracle": "0x4ae97016a03C132d2F600444E2493C62B01C9497", - "allocatorRegistry": "0x6f75E221ccd8D7C496a48Ff4fd854C2319F2DaE2", - "allocatorRoles": "0x87E8A7537875661d12a31912FAaF07f50043e3D7", - "allocatorVault": "0x8E20650287635aE6e20ce38EcD3E795919D52354", "almProxy": "0xC29D06ce81137E6B3C3DC090713636d81600a347", "controller": "0xcc0c5ADF6649256d3cE6084eCf94AF5D01440b6C", - "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", - "jug": "0x464c46b3bFCf261ABFe440F90f08a08A39a59DD4", - "psm": "0x91AA02EDe82D3C2f49A2d5a7efBA7ba4403100C8", - "rateLimits": "0x9A140AC56CC28A00B2c036F454F202c2459ca84c", - "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", - "safe": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", - "usdc": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "usds": "0xdC035D45d973E3EC169d2276DDab16f1e407384F", - "usdsJoin": "0xA1CCf21b7012874fB2CD81704e0eeeF083DDe1b8", - "vat": "0xea53A79Fc3e024C887f37E844FA24B3DEbEC84B4" + "rateLimits": "0x9A140AC56CC28A00B2c036F454F202c2459ca84c" } diff --git a/script/output/1/mainnet-staging-release-20241210.json b/script/output/1/mainnet-staging-release-20241210.json index f2bb983..1c9379d 100644 --- a/script/output/1/mainnet-staging-release-20241210.json +++ b/script/output/1/mainnet-staging-release-20241210.json @@ -1,22 +1,5 @@ { - "admin": "0xd1236a6A111879d9862f8374BA15344b6B233Fbd", - "allocatorBuffer": "0x36138584868028D1913bf01359D7c736E6773008", - "allocatorOracle": "0xfC0E1fFBF9cCd82688c775b1587c45506cebDBdf", - "allocatorRegistry": "0xfd0A671c07309f14b05ec72c741C86AEA02e873c", - "allocatorRoles": "0xF954e125E979e104974882ca94063B4f088cf71D", - "allocatorVault": "0xAB0d4019B1182021C4cAa2F3D078EFe55cD5B5A6", "almProxy": "0x675fc95BF2b42Fc61FF0f2E9969d9Ab19b65cda5", "controller": "0x08c830bc14b52A65E7e62aBc7365e1C53933D4Bf", - "dai": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "daiUsds": "0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A", - "freezer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", - "jug": "0xf999576B81c53BFf473550354eeD98cD7b126184", - "psm": "0x8ac160e388a3F975c9Db1D41DeB76C574702CFa9", - "rateLimits": "0x449F100E37CF9CC4631c044efC4726609Be26766", - "relayer": "0x611C7c37F296240c2fF5a92f0B4a398B01B237c4", - "susds": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", - "usdc": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "usds": "0xdC035D45d973E3EC169d2276DDab16f1e407384F", - "usdsJoin": "0xAd309294c38EB44C929a9bB2A9452B1C8D96965e", - "vat": "0x373E0699D8bFDdd99d78248e5b993E6a02061B0e" -} \ No newline at end of file + "rateLimits": "0x449F100E37CF9CC4631c044efC4726609Be26766" +} diff --git a/script/staging/FullStagingDeploy.s.sol b/script/staging/FullStagingDeploy.s.sol index 66927f7..afc30ee 100644 --- a/script/staging/FullStagingDeploy.s.sol +++ b/script/staging/FullStagingDeploy.s.sol @@ -50,6 +50,7 @@ import { PSMWrapper } from "./mocks/PSMWrapper.sol"; struct Domain { string name; + string nameDeps; string config; uint256 forkId; address admin; @@ -155,15 +156,15 @@ contract FullStagingDeploy is Script { // Step 4: Export all deployed addresses - ScriptTools.exportContract(mainnet.name, "dai", dai); - ScriptTools.exportContract(mainnet.name, "daiUsds", daiUsds); - ScriptTools.exportContract(mainnet.name, "jug", jug); - ScriptTools.exportContract(mainnet.name, "psm", psm); - ScriptTools.exportContract(mainnet.name, "susds", susds); - ScriptTools.exportContract(mainnet.name, "usdc", usdc); - ScriptTools.exportContract(mainnet.name, "usds", usds); - ScriptTools.exportContract(mainnet.name, "usdsJoin", usdsJoin); - ScriptTools.exportContract(mainnet.name, "vat", vat); + ScriptTools.exportContract(mainnet.nameDeps, "dai", dai); + ScriptTools.exportContract(mainnet.nameDeps, "daiUsds", daiUsds); + ScriptTools.exportContract(mainnet.nameDeps, "jug", jug); + ScriptTools.exportContract(mainnet.nameDeps, "psm", psm); + ScriptTools.exportContract(mainnet.nameDeps, "susds", susds); + ScriptTools.exportContract(mainnet.nameDeps, "usdc", usdc); + ScriptTools.exportContract(mainnet.nameDeps, "usds", usds); + ScriptTools.exportContract(mainnet.nameDeps, "usdsJoin", usdsJoin); + ScriptTools.exportContract(mainnet.nameDeps, "vat", vat); } function _setUpAllocationSystem() internal { @@ -206,12 +207,12 @@ contract FullStagingDeploy is Script { // Step 4: Export all deployed addresses - ScriptTools.exportContract(mainnet.name, "allocatorOracle", oracle); - ScriptTools.exportContract(mainnet.name, "allocatorRegistry", registry); - ScriptTools.exportContract(mainnet.name, "allocatorRoles", roles); + ScriptTools.exportContract(mainnet.nameDeps, "allocatorOracle", oracle); + ScriptTools.exportContract(mainnet.nameDeps, "allocatorRegistry", registry); + ScriptTools.exportContract(mainnet.nameDeps, "allocatorRoles", roles); - ScriptTools.exportContract(mainnet.name, "allocatorBuffer", buffer); - ScriptTools.exportContract(mainnet.name, "allocatorVault", vault); + ScriptTools.exportContract(mainnet.nameDeps, "allocatorBuffer", buffer); + ScriptTools.exportContract(mainnet.nameDeps, "allocatorVault", vault); } function _setUpALMController() internal { @@ -306,8 +307,9 @@ contract FullStagingDeploy is Script { // Step 4: Export all deployed addresses - ScriptTools.exportContract(mainnet.name, "freezer", mainnet.config.readAddress(".freezer")); - ScriptTools.exportContract(mainnet.name, "relayer", mainnet.config.readAddress(".relayer")); + ScriptTools.exportContract(mainnet.nameDeps, "freezer", mainnet.config.readAddress(".freezer")); + ScriptTools.exportContract(mainnet.nameDeps, "relayer", mainnet.config.readAddress(".relayer")); + ScriptTools.exportContract(mainnet.name, "almProxy", instance.almProxy); ScriptTools.exportContract(mainnet.name, "controller", instance.controller); ScriptTools.exportContract(mainnet.name, "rateLimits", instance.rateLimits); @@ -381,8 +383,9 @@ contract FullStagingDeploy is Script { // Step 3: Export all deployed addresses - ScriptTools.exportContract(base.name, "freezer", base.config.readAddress(".freezer")); - ScriptTools.exportContract(base.name, "relayer", base.config.readAddress(".relayer")); + ScriptTools.exportContract(base.nameDeps, "freezer", base.config.readAddress(".freezer")); + ScriptTools.exportContract(base.nameDeps, "relayer", base.config.readAddress(".relayer")); + ScriptTools.exportContract(base.name, "almProxy", instance.almProxy); ScriptTools.exportContract(base.name, "controller", instance.controller); ScriptTools.exportContract(base.name, "rateLimits", instance.rateLimits); @@ -407,16 +410,18 @@ contract FullStagingDeploy is Script { deployer = msg.sender; mainnet = Domain({ - name : "mainnet-staging", - config : ScriptTools.loadConfig("mainnet-staging"), - forkId : vm.createFork(getChain("mainnet").rpcUrl), - admin : deployer + name : "mainnet-staging", + nameDeps : "mainnet-staging-deps", + config : ScriptTools.loadConfig("mainnet-staging"), + forkId : vm.createFork(getChain("mainnet").rpcUrl), + admin : deployer }); base = Domain({ - name : "base-staging", - config : ScriptTools.loadConfig("base-staging"), - forkId : vm.createFork(getChain("base").rpcUrl), - admin : deployer + name : "base-staging", + nameDeps : "base-staging-deps", + config : ScriptTools.loadConfig("base-staging"), + forkId : vm.createFork(getChain("base").rpcUrl), + admin : deployer }); // Ballpark sizing of rate limits, tokens in PSMs, etc @@ -432,8 +437,8 @@ contract FullStagingDeploy is Script { _setUpBaseALMController(); _setBaseMintRecipient(); - ScriptTools.exportContract(mainnet.name, "admin", deployer); - ScriptTools.exportContract(base.name, "admin", deployer); + ScriptTools.exportContract(mainnet.nameDeps, "admin", deployer); + ScriptTools.exportContract(base.nameDeps, "admin", deployer); } } From d71ca835ce810c60186c3d2e48844366dc522927 Mon Sep 17 00:00:00 2001 From: Sam MacPherson Date: Wed, 11 Dec 2024 11:21:01 -0700 Subject: [PATCH 6/6] formatting --- deploy/ControllerInit.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/deploy/ControllerInit.sol b/deploy/ControllerInit.sol index 12830da..46ab465 100644 --- a/deploy/ControllerInit.sol +++ b/deploy/ControllerInit.sol @@ -295,12 +295,12 @@ library ForeignControllerInit { CCTPForwarder.DOMAIN_ID_CIRCLE_ETHEREUM ); - setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usdc), rateLimits, data.usdcDepositData, "usdcDepositData", 6); - setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usdc), rateLimits, data.usdcWithdrawData, "usdcWithdrawData", 6); - setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usds), rateLimits, data.usdsDepositData, "usdsDepositData", 18); - setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usds), rateLimits, data.usdsWithdrawData, "usdsWithdrawData", 18); - setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.susds), rateLimits, data.susdsDepositData, "susdsDepositData", 18); - setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.susds), rateLimits, data.susdsWithdrawData, "susdsWithdrawData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usdc), rateLimits, data.usdcDepositData, "usdcDepositData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usdc), rateLimits, data.usdcWithdrawData, "usdcWithdrawData", 6); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.usds), rateLimits, data.usdsDepositData, "usdsDepositData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.usds), rateLimits, data.usdsWithdrawData, "usdsWithdrawData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, addresses.susds), rateLimits, data.susdsDepositData, "susdsDepositData", 18); + setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, addresses.susds), rateLimits, data.susdsWithdrawData, "susdsWithdrawData", 18); setRateLimitData(controller.LIMIT_USDC_TO_CCTP(), rateLimits, data.usdcToCctpData, "usdcToCctpData", 6); setRateLimitData(domainKeyEthereum, rateLimits, data.cctpToEthereumDomainData, "cctpToEthereumDomainData", 6);