dexorder
This commit is contained in:
37
script/Deploy.sol
Normal file
37
script/Deploy.sol
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
pragma solidity 0.8.26;
|
||||
|
||||
import "@forge-std/Script.sol";
|
||||
import "@forge-std/console2.sol";
|
||||
import "../src/more/FeeManagerLib.sol";
|
||||
import "../src/core/VaultImpl.sol";
|
||||
import "../src/core/VaultFactory.sol";
|
||||
import "../src/more/QueryHelper.sol";
|
||||
import "../src/more/Dexorder.sol";
|
||||
import {IWETH9} from "../lib_uniswap/v3-periphery/contracts/interfaces/external/IWETH9.sol";
|
||||
import "../src/core/Router.sol";
|
||||
|
||||
contract Deploy is Script {
|
||||
function run() external {
|
||||
vm.startBroadcast();
|
||||
Dexorder dexorder = new Dexorder();
|
||||
IRouter router = new ArbitrumRouter();
|
||||
FeeManager feeManager = FeeManagerLib.debugFeeManager(
|
||||
payable(msg.sender),
|
||||
payable(0x90F79bf6EB2c4f870365E785982E1f101E93b906), // order fees (native) => dev account #3 (fee=three)
|
||||
payable(0x976EA74026E726554dB657fA54763abd0C3a0aa9), // gas fees (native) => dev account #6 (g=6)
|
||||
payable(0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65) // fill fees (tokens) => dev account #4 (fill=four, 4 us)
|
||||
);
|
||||
VaultImpl impl = new VaultImpl(router, feeManager, address(0));
|
||||
VaultFactory factory = new VaultFactory(msg.sender, address(impl), 2 * 60); // 2-minute upgrade notice
|
||||
QueryHelper query = new QueryHelper(UniswapV3Arbitrum.factory);
|
||||
vm.stopBroadcast();
|
||||
|
||||
console2.log('VaultFactory');
|
||||
console2.log(address(factory));
|
||||
console2.log('QueryHelper');
|
||||
console2.log(address(query));
|
||||
console2.log('Dexorder');
|
||||
console2.log(address(dexorder));
|
||||
}
|
||||
}
|
||||
39
script/DeployArbitrum.sol
Normal file
39
script/DeployArbitrum.sol
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
pragma solidity 0.8.26;
|
||||
|
||||
import "@forge-std/Script.sol";
|
||||
import "@forge-std/console2.sol";
|
||||
import "../src/more/FeeManagerLib.sol";
|
||||
import "../src/core/VaultImpl.sol";
|
||||
import "../src/core/VaultFactory.sol";
|
||||
import "../src/more/QueryHelper.sol";
|
||||
import "../src/more/Dexorder.sol";
|
||||
import "../src/core/Router.sol";
|
||||
|
||||
contract DeployArbitrum is Script {
|
||||
function run() external {
|
||||
address admin = address(0x12DB90820DAFed100E40E21128E40Dcd4fF6B331);
|
||||
address payable orderFeeAccount = payable(0x078E0C1112262433375b9aaa987BfF09a08e863C);
|
||||
address payable gasFeeAccount = payable(0x411c418C005EBDefB551e5E6B734520Ef2591f51);
|
||||
address payable fillFeeAccount = payable(0x152a3a04cE063dC77497aA06b6A09FeFD271E716);
|
||||
address WETH = address(0x82aF49447D8a07e3bd95BD0d56f35241523fBab1);
|
||||
|
||||
vm.startBroadcast();
|
||||
|
||||
Dexorder dexorder = new Dexorder();
|
||||
IRouter router = new ArbitrumRouter();
|
||||
FeeManager feeManager = FeeManagerLib.defaultFeeManager(admin, orderFeeAccount, gasFeeAccount, fillFeeAccount);
|
||||
VaultImpl impl = new VaultImpl(router, feeManager, WETH);
|
||||
VaultFactory factory = new VaultFactory(admin, address(impl), 24 * 60 * 60); // 24-hour upgrade notice
|
||||
QueryHelper query = new QueryHelper(UniswapV3Arbitrum.factory);
|
||||
|
||||
vm.stopBroadcast();
|
||||
|
||||
console2.log('ArbitrumRouter', address(router));
|
||||
console2.log('Dexorder', address(dexorder));
|
||||
console2.log('FeeManager', address(feeManager));
|
||||
console2.log('QueryHelper', address(query));
|
||||
console2.log('VaultFactory', address(factory));
|
||||
console2.log('VaultImpl', address(impl));
|
||||
}
|
||||
}
|
||||
21
script/DeployMirror.sol
Normal file
21
script/DeployMirror.sol
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
pragma solidity 0.8.26;
|
||||
|
||||
import "../test/MirrorEnv.sol";
|
||||
import "@forge-std/console2.sol";
|
||||
import "@forge-std/Script.sol";
|
||||
import {UniswapV3Arbitrum} from "../src/core/UniswapV3.sol";
|
||||
|
||||
contract DeployMirror is Script {
|
||||
function run() external {
|
||||
address nfpm = vm.envOr('NFPM', address(UniswapV3Arbitrum.nfpm));
|
||||
address swapRouter = vm.envOr('SWAP_ROUTER', address(UniswapV3Arbitrum.swapRouter));
|
||||
console2.log('Using NFPM at');
|
||||
console2.log(nfpm);
|
||||
vm.startBroadcast();
|
||||
MirrorEnv mirror = new MirrorEnv(INonfungiblePositionManager(nfpm), ISwapRouter(swapRouter));
|
||||
vm.stopBroadcast();
|
||||
console2.log('Deployed MirrorEnv to');
|
||||
console2.log(address(mirror));
|
||||
}
|
||||
}
|
||||
17
script/DeployMock.sol
Normal file
17
script/DeployMock.sol
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
pragma solidity 0.8.26;
|
||||
|
||||
import "@forge-std/Script.sol";
|
||||
import "@forge-std/console2.sol";
|
||||
import "../test/MockEnv.sol";
|
||||
|
||||
contract DeployMock is Script {
|
||||
function run() external {
|
||||
vm.startBroadcast();
|
||||
MockEnv mock = new MockEnv();
|
||||
mock.initDebugFees();
|
||||
vm.stopBroadcast();
|
||||
console2.log('MockEnv');
|
||||
console2.log(address(mock));
|
||||
}
|
||||
}
|
||||
39
script/Upgrade.sol
Normal file
39
script/Upgrade.sol
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
pragma solidity 0.8.26;
|
||||
|
||||
import "@forge-std/Script.sol";
|
||||
import "@forge-std/console2.sol";
|
||||
import {IWETH9} from "../lib_uniswap/v3-periphery/contracts/interfaces/external/IWETH9.sol";
|
||||
import "../src/interface/IVaultFactory.sol";
|
||||
import "../src/core/VaultImpl.sol";
|
||||
import {ArbitrumRouter} from "../src/core/Router.sol";
|
||||
|
||||
contract Upgrade is Script {
|
||||
function run() external {
|
||||
address factoryAddr = vm.envAddress('FACTORY');
|
||||
console2.log(factoryAddr);
|
||||
require( factoryAddr != address(0), 'Must set FACTORY envvar');
|
||||
IVaultFactory factory = IVaultFactory(factoryAddr);
|
||||
address upgrader = factory.upgrader();
|
||||
console2.log('upgrader');
|
||||
console2.log(upgrader);
|
||||
console2.log(msg.sender);
|
||||
require( msg.sender == upgrader, 'Must be upgrader account');
|
||||
|
||||
console2.log('old implementation');
|
||||
IVaultImpl oldImpl = IVaultImpl(factory.implementation());
|
||||
console2.log(address(oldImpl));
|
||||
IFeeManager feeManager = oldImpl.feeManager();
|
||||
console2.log('fee manager');
|
||||
console2.log(address(feeManager));
|
||||
vm.startBroadcast();
|
||||
console2.log('deploy new router (Arbitrum)');
|
||||
IRouter router = new ArbitrumRouter();
|
||||
console2.log('deploy new implementation');
|
||||
VaultImpl impl = new VaultImpl(router, feeManager, oldImpl.wrapper());
|
||||
console2.log('invoke upgrade');
|
||||
factory.upgradeImplementation(address(impl));
|
||||
console2.log('impl upgrade proposed');
|
||||
vm.stopBroadcast();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user