79 lines
3.6 KiB
Solidity
79 lines
3.6 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.30;
|
|
|
|
import "forge-std/console2.sol";
|
|
import {CommonBase} from "../lib/forge-std/src/Base.sol";
|
|
import {Script} from "../lib/forge-std/src/Script.sol";
|
|
import {StdChains} from "../lib/forge-std/src/StdChains.sol";
|
|
import {StdCheatsSafe} from "../lib/forge-std/src/StdCheats.sol";
|
|
import {StdUtils} from "../lib/forge-std/src/StdUtils.sol";
|
|
import {IERC20} from "../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
|
|
import {NativeWrapper} from "../src/NativeWrapper.sol";
|
|
import {PartyInfo} from "../src/PartyInfo.sol";
|
|
import {PartyPlanner} from "../src/PartyPlanner.sol";
|
|
import {PartyPoolInitCode, PartyPoolBalancedPairInitCode} from "../src/PartyPoolDeployer.sol";
|
|
import {PartyPoolMintImpl} from "../src/PartyPoolMintImpl.sol";
|
|
import {PartyPoolSwapImpl} from "../src/PartyPoolSwapImpl.sol";
|
|
|
|
contract DeployEthereum is Script {
|
|
address constant public PROTOCOL_FEE_ADDRESS = 0x0E280F5eDA58872d7cDaA8AC0A57A55fD6133AEd;
|
|
uint256 constant public PROTOCOL_FEE_PPM = 10_0000; // 10% of LP fees
|
|
NativeWrapper constant public WETH = NativeWrapper(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
|
|
IERC20 constant public USDT = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
|
|
IERC20 constant public USDC = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48);
|
|
IERC20 constant public WBTC = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);
|
|
IERC20 constant public BNB = IERC20(0xB8c77482e45F1F44dE1745F52C74426C631bDD52);
|
|
IERC20 constant public TRX = IERC20(0x50327c6c5a14DCaDE707ABad2E27eB517df87AB5);
|
|
IERC20 constant public WSOL = IERC20(0xd1D82d3Ab815E0B47e38EC2d666c5b8AA05Ae501); // IBC not Wormhole
|
|
IERC20 constant public PEPE = IERC20(0x6982508145454Ce325dDbE47a25d4ec3d2311933);
|
|
IERC20 constant public SHIB = IERC20(0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE);
|
|
|
|
function run() public {
|
|
require(block.chainid == 1, 'Not Ethereum');
|
|
|
|
vm.startBroadcast();
|
|
|
|
vm.label(address(WETH), 'WETH');
|
|
vm.label(address(USDT), 'USDT');
|
|
vm.label(address(USDC), 'USDC');
|
|
vm.label(address(WBTC), 'WBTC');
|
|
vm.label(address(BNB), 'BNB');
|
|
vm.label(address(TRX), 'TRX');
|
|
vm.label(address(WSOL), 'WSOL');
|
|
vm.label(address(PEPE), 'PEPE');
|
|
vm.label(address(SHIB), 'SHIB');
|
|
|
|
console2.log('creating swap impl');
|
|
PartyPoolSwapImpl swapImpl = new PartyPoolSwapImpl(WETH);
|
|
console2.log('creating mint impl');
|
|
PartyPoolMintImpl mintImpl = new PartyPoolMintImpl(WETH);
|
|
console2.log('deploying info');
|
|
PartyInfo info = new PartyInfo(swapImpl, mintImpl);
|
|
console2.log('creating pool init');
|
|
PartyPoolInitCode poolInit = new PartyPoolInitCode();
|
|
console2.log('creating bppool init');
|
|
PartyPoolBalancedPairInitCode bpInit = new PartyPoolBalancedPairInitCode();
|
|
console2.log('creating planner');
|
|
PartyPlanner planner = new PartyPlanner(
|
|
msg.sender, // admin address is the same as the deployer
|
|
WETH,
|
|
swapImpl,
|
|
mintImpl,
|
|
poolInit,
|
|
bpInit,
|
|
PROTOCOL_FEE_PPM,
|
|
PROTOCOL_FEE_ADDRESS
|
|
);
|
|
console2.log('broadcast completed');
|
|
vm.stopBroadcast();
|
|
|
|
console2.log();
|
|
console2.log(' PartyPlanner', address(planner));
|
|
console2.log(' PartyInfo', address(info));
|
|
console2.log(' SwapImpl', address(swapImpl));
|
|
console2.log(' MintImpl', address(mintImpl));
|
|
console2.log(' PoolCode', address(poolInit));
|
|
console2.log(' BPPoolCode', address(bpInit));
|
|
}
|
|
}
|