From ad78b8774cacfa0bf26484efaa92bb36370c0f44 Mon Sep 17 00:00:00 2001 From: "ultrasecr.eth" <241804+ultrasecreth@users.noreply.github.com> Date: Mon, 2 Oct 2023 15:48:00 +0100 Subject: [PATCH] OP deploy --- README.md | 6 +++--- script/ArbitrumDeploy.s.sol | 4 +--- script/Base.s.sol | 3 ++- script/OptimismDeploy.s.sol | 43 +++++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 script/OptimismDeploy.s.sol diff --git a/README.md b/README.md index bf0cb2c..0374dea 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ Contracts are deployed at the same address for all supported networks. | Contract | Lender | Address | Networks | | ---- | ---- | ---- | ---- | -|[AaveWrapper](src/aave/AaveWrapper.sol)|Aave v3|0x02C7632b84B3447845531541d0285D67E656e50c|Arbitrum One| -|[BalancerWrapper](src/balancer/BalancerWrapper.sol)|Balancer v2|0x3d4DF8596e5750A4F721c8764d585dcc8623d009|Arbitrum One| -|[UniswapV3Wrapper](src/uniswapV3/UniswapV3Wrapper.sol)|Uniswap v3|0x23de8e0bB91A105bEFf9d40d8d75C1A9fE40f523|Arbitrum One| +|[AaveWrapper](src/aave/AaveWrapper.sol)|Aave v3|0x02C7632b84B3447845531541d0285D67E656e50c|Arbitrum One, Optimism| +|[BalancerWrapper](src/balancer/BalancerWrapper.sol)|Balancer v2|0x3d4DF8596e5750A4F721c8764d585dcc8623d009|Arbitrum One, Optimism| +|[UniswapV3Wrapper](src/uniswapV3/UniswapV3Wrapper.sol)|Uniswap v3|0x23de8e0bB91A105bEFf9d40d8d75C1A9fE40f523|Arbitrum One, Optimism| When a contract requires constructor parameters which vary per network, these are supplied by the [Registry](https://github.com/alcueca/registry) deployed at 0x05caE14d1A348B29d2b169697b4BE51009a9C4dF in each supported network. diff --git a/script/ArbitrumDeploy.s.sol b/script/ArbitrumDeploy.s.sol index d851bc8..45a844f 100644 --- a/script/ArbitrumDeploy.s.sol +++ b/script/ArbitrumDeploy.s.sol @@ -24,9 +24,7 @@ contract ArbitrumDeploy is BaseScript { IPoolAddressesProvider internal provider = IPoolAddressesProvider(0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb); - function run() public broadcast { - require(block.chainid == 42_161, "Only deploy on Arbitrum"); - + function run() public broadcast("https://arbitrum.llamarpc.com") { console2.log("Deploying as %s", msg.sender); Registry registry = new Registry{salt: SALT}(msg.sender); diff --git a/script/Base.s.sol b/script/Base.s.sol index f0a7d2e..ba5634b 100644 --- a/script/Base.s.sol +++ b/script/Base.s.sol @@ -4,7 +4,8 @@ pragma solidity >=0.8.19 <=0.9.0; import { Script } from "forge-std/Script.sol"; abstract contract BaseScript is Script { - modifier broadcast() { + modifier broadcast(string memory fork) { + vm.createSelectFork(fork); vm.startBroadcast(); _; vm.stopBroadcast(); diff --git a/script/OptimismDeploy.s.sol b/script/OptimismDeploy.s.sol new file mode 100644 index 0000000..46cd057 --- /dev/null +++ b/script/OptimismDeploy.s.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity >=0.8.19 <=0.9.0; + +import { BaseScript } from "./Base.s.sol"; +import { console2 } from "forge-std/console2.sol"; + +import { Registry } from "lib/registry/src/Registry.sol"; + +import { UniswapV3Wrapper } from "../src/uniswapV3/UniswapV3Wrapper.sol"; +import { AaveWrapper, IPoolAddressesProvider } from "../src/aave/AaveWrapper.sol"; +import { BalancerWrapper, IFlashLoaner } from "../src/balancer/BalancerWrapper.sol"; + +/// @dev See the Solidity Scripting tutorial: https://book.getfoundry.sh/tutorials/solidity-scripting +contract OptimismDeploy is BaseScript { + bytes32 public constant SALT = keccak256("ERC7399-wrappers"); + + address internal factory = 0x1F98431c8aD98523631AE4a59f267346ea31F984; + address internal usdc = 0x7F5c764cBc14f9669B88837ca1490cCa17c31607; + address internal usdt = 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58; + address internal weth = 0x4200000000000000000000000000000000000006; + + IFlashLoaner internal balancer = IFlashLoaner(0xBA12222222228d8Ba445958a75a0704d566BF2C8); + + IPoolAddressesProvider internal provider = IPoolAddressesProvider(0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb); + + function run() public broadcast("https://optimism.llamarpc.com") { + console2.log("Deploying as %s", msg.sender); + + Registry registry = new Registry{salt: SALT}(msg.sender); + + console2.log("Registry deployed at: %s", address(registry)); + + registry.set("UniswapV3Wrapper", abi.encode(factory, weth, usdc, usdt)); + UniswapV3Wrapper uniswapV3Wrapper = new UniswapV3Wrapper{salt: SALT}(registry); + console2.log("UniswapV3Wrapper deployed at: %s", address(uniswapV3Wrapper)); + + BalancerWrapper balancerWrapper = new BalancerWrapper{salt: SALT}(balancer); + console2.log("BalancerWrapper deployed at: %s", address(balancerWrapper)); + + AaveWrapper aaveWrapper = new AaveWrapper{salt: SALT}(provider); + console2.log("AaveWrapper deployed at: %s", address(aaveWrapper)); + } +}