Skip to content

Commit

Permalink
OP deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
ultrasecreth committed Oct 2, 2023
1 parent 90338f9 commit ad78b87
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 7 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
4 changes: 1 addition & 3 deletions script/ArbitrumDeploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 2 additions & 1 deletion script/Base.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
43 changes: 43 additions & 0 deletions script/OptimismDeploy.s.sol
Original file line number Diff line number Diff line change
@@ -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));
}
}

0 comments on commit ad78b87

Please sign in to comment.