Skip to content

Commit

Permalink
feat: add script for batcher contract deploy
Browse files Browse the repository at this point in the history
Ticket: COIN-956
  • Loading branch information
mohitkh7 committed Jul 8, 2024
1 parent 9a93e13 commit 45f1000
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
2 changes: 1 addition & 1 deletion hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const config: HardhatUserConfig = {
loggingEnabled: false
},
eth: {
url: `https://ultra-empty-sanctuary.quiknode.pro/${QUICKNODE_ETH_MAINNET_API_KEY}`,
url: `https://ethereum-rpc.publicnode.com`,
accounts: [`${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`]
},
hteth: {
Expand Down
68 changes: 68 additions & 0 deletions scripts/deployBatcherContract.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import { ethers } from 'hardhat';
const hre = require('hardhat');
const fs = require('fs');

async function main() {
const output = {
walletImplementation: '',
walletFactory: '',
forwarderImplementation: '',
forwarderFactory: '',
batcher: ''
};

const contractName = 'Batcher';
const transferGasLimit = '200000';

const Batcher = await ethers.getContractFactory(contractName);
const batcher = await Batcher.deploy(transferGasLimit);
await batcher.deployed();
output.batcher = batcher.address;
console.log('Batcher deployed at ' + batcher.address);

fs.writeFileSync('output.json', JSON.stringify(output));

// Wait 5 minutes. It takes some time for the etherscan backend to index the transaction and store the contract.
console.log('Waiting for 5 minutes before verifying.....');
await new Promise((r) => setTimeout(r, 1000 * 300));

console.log('Done waiting, verifying');
await verifyContract(contractName, batcher.address, [transferGasLimit]);
console.log('Contracts verified');
}

async function verifyContract(
contractName: string,
contractAddress: string,
constructorArguments: string[],
contract?: string
) {
try {
const verifyContractArgs: {
address: string;
constructorArguments: string[];
contract?: string;
} = {
address: contractAddress,
constructorArguments: constructorArguments
};

if (contract) {
verifyContractArgs.contract = contract;
}

await hre.run('verify:verify', verifyContractArgs);
} catch (e) {
// @ts-ignore
// We get a failure API response if the source code has already been uploaded, don't throw in this case.
if (!e.message.includes('Reason: Already Verified')) {
throw e;
}
}
console.log(`Verified ${contractName} on Etherscan!`);
}

main().catch((error) => {
console.error(error);
process.exitCode = 1;
});

0 comments on commit 45f1000

Please sign in to comment.