feat: Uniswap X deployment script
--- don't change below this line --- ENG-4675 Took 23 minutes
This commit is contained in:
@@ -66,4 +66,22 @@ For each of the following, you must select one of `tenderly_ethereum`, `tenderly
|
|||||||
2. The scripts deploy-executors, remove-executor, set-roles and revoke-role all support this.
|
2. The scripts deploy-executors, remove-executor, set-roles and revoke-role all support this.
|
||||||
1. If `SAFE_ADDRESS` is set, then it will propose a transaction to the safe wallet and later on it needs to be
|
1. If `SAFE_ADDRESS` is set, then it will propose a transaction to the safe wallet and later on it needs to be
|
||||||
approved in their UI to execute on chain.
|
approved in their UI to execute on chain.
|
||||||
2. If it's not set, it will submit the transaction directly to the chain.
|
2. If it's not set, it will submit the transaction directly to the chain.
|
||||||
|
|
||||||
|
## Deploy Uniswap X filler
|
||||||
|
|
||||||
|
The current script deploys an Uniswap X filler and verifies it in the corresponding blockchain explorer.
|
||||||
|
|
||||||
|
Make sure to run `unset HISTFILE` in your terminal before setting the private key. This will prevent the private key
|
||||||
|
from being stored in the shell history.
|
||||||
|
|
||||||
|
1. Set the following environment variables:
|
||||||
|
|
||||||
|
```
|
||||||
|
export RPC_URL=<chain-rpc-url>
|
||||||
|
export PRIVATE_KEY=<deploy-wallet-private-key>
|
||||||
|
export BLOCKCHAIN_EXPLORER_API_KEY=<blockchain-explorer-api-key>
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Confirm that the variables `tychoRouter`, `uniswapXReactor` and `nativeToken` are correctly set in the script.
|
||||||
|
3. Run `npx hardhat run scripts/deploy-uniswap-x-filler.js --network NETWORK`.
|
||||||
|
|||||||
62
foundry/scripts/deploy-uniswap-x-filler.js
Normal file
62
foundry/scripts/deploy-uniswap-x-filler.js
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
require('dotenv').config();
|
||||||
|
const {ethers} = require("hardhat");
|
||||||
|
const hre = require("hardhat");
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const network = hre.network.name;
|
||||||
|
let tychoRouter;
|
||||||
|
let uniswapXReactor;
|
||||||
|
let nativeToken;
|
||||||
|
if (network === "ethereum") {
|
||||||
|
tychoRouter = "0xfD0b31d2E955fA55e3fa641Fe90e08b677188d35";
|
||||||
|
uniswapXReactor = "0x00000011F84B9aa48e5f8aA8B9897600006289Be";
|
||||||
|
nativeToken = "0x0000000000000000000000000000000000000000";
|
||||||
|
} else if (network === "base") {
|
||||||
|
tychoRouter = "0xea3207778e39EB02D72C9D3c4Eac7E224ac5d369";
|
||||||
|
uniswapXReactor = "0x000000001Ec5656dcdB24D90DFa42742738De729";
|
||||||
|
nativeToken = "0x0000000000000000000000000000000000000000";
|
||||||
|
} else if (network === "unichain") {
|
||||||
|
tychoRouter = "0xFfA5ec2e444e4285108e4a17b82dA495c178427B";
|
||||||
|
uniswapXReactor = "0x00000006021a6Bce796be7ba509BBBA71e956e37";
|
||||||
|
nativeToken = "0x0000000000000000000000000000000000000000";
|
||||||
|
} else {
|
||||||
|
throw new Error(`Unsupported network: ${network}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`Deploying Uniswap X filler to ${network} with:`);
|
||||||
|
console.log(`- Tycho router: ${tychoRouter}`);
|
||||||
|
console.log(`- Uniswap X reactor: ${uniswapXReactor}`);
|
||||||
|
console.log(`- Native token: ${nativeToken}`);
|
||||||
|
|
||||||
|
const [deployer] = await ethers.getSigners();
|
||||||
|
console.log(`Deploying with account: ${deployer.address}`);
|
||||||
|
console.log(`Account balance: ${ethers.utils.formatEther(await deployer.getBalance())} ETH`);
|
||||||
|
|
||||||
|
const UniswapXFiller = await ethers.getContractFactory("UniswapXFiller");
|
||||||
|
const filler = await UniswapXFiller.deploy(tychoRouter, uniswapXReactor, nativeToken);
|
||||||
|
|
||||||
|
await filler.deployed();
|
||||||
|
console.log(`Uniswap X Filler deployed to: ${filler.address}`);
|
||||||
|
|
||||||
|
console.log("Waiting for 1 minute before verifying the contract on the blockchain explorer...");
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 60000));
|
||||||
|
|
||||||
|
// Verify on Etherscan
|
||||||
|
try {
|
||||||
|
await hre.run("verify:verify", {
|
||||||
|
address: filler.address,
|
||||||
|
constructorArguments: [tychoRouter, uniswapXReactor, nativeToken],
|
||||||
|
});
|
||||||
|
console.log(`Uniswap X filler verified successfully on blockchain explorer!`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Error during blockchain explorer verification:`, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
.then(() => process.exit(0))
|
||||||
|
.catch((error) => {
|
||||||
|
console.error("Deployment failed:", error);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user