This commit is contained in:
dexorder
2024-10-17 02:42:28 -04:00
commit 25def69c66
878 changed files with 112489 additions and 0 deletions

37
script/Deploy.sol Normal file
View 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
View 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
View 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
View 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
View 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();
}
}