Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/chainIds.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export const CHAIN_IDS = {
HPP: 190415,
XTZEVM: 42793,
H: 6985385,
HOODETH: 999999, //TODO: update with correct mainnet chain ID when available
HOODETH: 4663,
INKETH: 57073,
HEMIETH: 43111,
ABSTRACTETH: 2741,
Expand Down
31 changes: 28 additions & 3 deletions deployUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,24 @@ import fs from 'fs';
import { BaseContract, getCreateAddress } from 'ethers';
import { HardhatRuntimeEnvironment } from 'hardhat/types';
import { verifyOnCustomEtherscan } from './scripts/customContractVerifier';
import { CHAIN_IDS } from './config/chainIds';

const OUTPUT_FILE = 'output.json';

// Per-chain verification overrides for chains with slow block times or restricted explorers.
// All other chains use the defaults in VERIFICATION_CONFIG.
const CHAIN_VERIFICATION_OVERRIDES: Partial<
Record<
number,
{
confirmationBlocks: number;
maxRetries: number;
}
>
> = {
[CHAIN_IDS.HOODETH]: { confirmationBlocks: 2, maxRetries: 2 }
};

// Balance check configuration
/**
* Safety multiplier for balance checks.
Expand Down Expand Up @@ -461,11 +476,21 @@ export async function waitAndVerify(
throw new Error(errorMsg);
}

const chainId = hre.network?.config?.chainId;
const override = chainId ? CHAIN_VERIFICATION_OVERRIDES[chainId] : undefined;
const confirmationBlocks =
override?.confirmationBlocks ?? VERIFICATION_CONFIG.CONFIRMATION_BLOCKS;
const maxRetries = override?.maxRetries ?? VERIFICATION_CONFIG.MAX_RETRIES;

// Wait for block confirmations
const contractAddress = await waitForConfirmations(contract, contractName);
const contractAddress = await waitForConfirmations(
contract,
contractName,
confirmationBlocks
);

// Perform verification with retry logic
for (let attempt = 1; attempt <= VERIFICATION_CONFIG.MAX_RETRIES; attempt++) {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
logger.info(`Verification attempt #${attempt} for ${contractName}...`);

try {
Comment thread
yashvanthbl137-crypto marked this conversation as resolved.
Expand All @@ -490,7 +515,7 @@ export async function waitAndVerify(
}

// If we get here, verification failed and we should retry
if (attempt < VERIFICATION_CONFIG.MAX_RETRIES) {
if (attempt < maxRetries) {
const delaySeconds = VERIFICATION_CONFIG.RETRY_DELAY_MS / 1000;
logger.info(`Waiting ${delaySeconds} seconds before retrying...`);
await delay(VERIFICATION_CONFIG.RETRY_DELAY_MS);
Expand Down
7 changes: 4 additions & 3 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -931,7 +931,8 @@ const config: HardhatUserConfig = {
]
},
hoodeth: {
url: 'https://rpc.testnet.chain.robinhood.com', // TODO: update to mainnet RPC when available
url: 'https://ac23019b22f1ae5a.offchainlabs.com/rpc/a6186cb065b52ca24da0d197e33b303c',
Comment thread
yashvanthbl137-crypto marked this conversation as resolved.
chainId: CHAIN_IDS.HOODETH,
accounts: [
`${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`,
`${PLACEHOLDER_KEY}`,
Expand Down Expand Up @@ -1977,8 +1978,8 @@ const config: HardhatUserConfig = {
network: 'hoodethMainnet',
chainId: CHAIN_IDS.HOODETH,
urls: {
apiURL: 'https://explorer.testnet.chain.robinhood.com/api', // TODO: update to mainnet explorer API when available
browserURL: 'https://explorer.testnet.chain.robinhood.com' // TODO: update to mainnet explorer when available
apiURL: 'https://8crv4vmq6tiu1yqr.blockscout.com/api',
browserURL: 'https://8crv4vmq6tiu1yqr.blockscout.com'
}
},
{
Expand Down
7 changes: 6 additions & 1 deletion scripts/chainConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -363,14 +363,19 @@ export async function getChainConfig(chainId: number): Promise<ChainConfig> {
case CHAIN_IDS.UNICHAIN_TESTNET:
case CHAIN_IDS.HPP:
case CHAIN_IDS.HPP_TESTNET:
case CHAIN_IDS.HOODETH:
case CHAIN_IDS.HOODETH_TESTNET:
case CHAIN_IDS.INKETH:
case CHAIN_IDS.INKETH_TESTNET:
forwarderContractName = 'ForwarderV4';
forwarderFactoryContractName = 'ForwarderFactoryV4';
break;

case CHAIN_IDS.HOODETH:
gasParams = { ...gasParams, gasLimit: 50_000_000 };
forwarderContractName = 'ForwarderV4';
forwarderFactoryContractName = 'ForwarderFactoryV4';
break;

case CHAIN_IDS.H:
case CHAIN_IDS.H_TESTNET:
forwarderContractName = 'ForwarderV4';
Expand Down
Loading