From 50b5de1242f22284e31084b64dda51a30034fa84 Mon Sep 17 00:00:00 2001 From: An-tol <88716253+An-tol@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:29:25 +0300 Subject: [PATCH 1/2] Update adcs.ts I optimized the code to make it more readable, reusable, and structured: Added a check for the absence of ADCSCoordinator before any contract-related action. Created a helper function processOracles to handle registering and deregistering oracles to avoid code duplication. Removed redundant checks by moving them to the initialization stage or the beginning of the loop. Added logical comments to better understand where each part of the process occurs. --- contracts/deploy/adcs/adcs.ts | 107 ++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 51 deletions(-) diff --git a/contracts/deploy/adcs/adcs.ts b/contracts/deploy/adcs/adcs.ts index e6061ff..735418a 100644 --- a/contracts/deploy/adcs/adcs.ts +++ b/contracts/deploy/adcs/adcs.ts @@ -1,88 +1,93 @@ -import { HardhatRuntimeEnvironment } from 'hardhat/types' - -import path from 'node:path' +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import path from 'node:path'; import { loadJson, loadMigration, updateMigration, validateCoordinatorDeployConfig, - validateSetConfig -} from '../../scripts/utils' + validateSetConfig, +} from '../../scripts/utils'; module.exports = async ({ getNamedAccounts, deployments, network, - ethers + ethers, }: HardhatRuntimeEnvironment) => { - const { deploy } = deployments - const { deployer } = await getNamedAccounts() + const { deploy } = deployments; + const { deployer } = await getNamedAccounts(); - const migrationDirPath = `./migration/${network.name}/ADCS` - const migrationFilesNames = await loadMigration(migrationDirPath) + const migrationDirPath = `./migration/${network.name}/ADCS`; + const migrationFilesNames = await loadMigration(migrationDirPath); for (const migration of migrationFilesNames) { - const config = await loadJson(path.join(migrationDirPath, migration)) - let ADCSCoordinator = undefined + const config = await loadJson(path.join(migrationDirPath, migration)); + + let ADCSCoordinator = config.ADCSCoordinatorAddress + ? await ethers.getContractAt('ADCSCoordinator', config.ADCSCoordinatorAddress) + : undefined; - // Deploy ADCSCoordinator //////////////////////////////////////// + // Deploy ADCSCoordinator if specified in config if (config.deploy) { - console.log('deploy') - const deployConfig = config.deploy - if (!validateCoordinatorDeployConfig(deployConfig)) { - throw new Error('Invalid RRC deploy config') - } + console.log('Deploying ADCSCoordinator...'); - const ADCSCoordinatorName = `ADCSCoordinator_${deployConfig.version}` + if (!validateCoordinatorDeployConfig(config.deploy)) { + throw new Error('Invalid ADCS deploy config'); + } + const ADCSCoordinatorName = `ADCSCoordinator_${config.deploy.version}`; const ADCSDeployment = await deploy(ADCSCoordinatorName, { contract: 'ADCSCoordinator', args: [], from: deployer, - log: true - }) + log: true, + }); - ADCSCoordinator = await ethers.getContractAt('ADCSCoordinator', ADCSDeployment.address) + ADCSCoordinator = await ethers.getContractAt('ADCSCoordinator', ADCSDeployment.address); } - ADCSCoordinator = ADCSCoordinator - ? ADCSCoordinator - : await ethers.getContractAt('ADCSCoordinator', config.ADCSCoordinatorAddress) + if (!ADCSCoordinator) { + throw new Error('ADCSCoordinator is not deployed or address is missing in config.'); + } - // Register Oracle ////////////////////////////////////////////////////////// - if (config.registerOracle) { - console.log('registerOracle', await ADCSCoordinator.getAddress()) + // Helper function to process Oracle registration/deregistration + const processOracles = async (action, oracles, method) => { + console.log(`${action} Oracles...`); - for (const oracle of config.registerOracle) { - const tx: any = await (await ADCSCoordinator.registerOracle(oracle)).wait() - const log = ADCSCoordinator.interface.parseLog(tx.logs[0]) - console.log('Oracle Registered', log?.args.oracle) - } + await Promise.all( + oracles.map(async (oracle) => { + const tx = await (await ADCSCoordinator[method](oracle)).wait(); + const log = ADCSCoordinator.interface.parseLog(tx.logs[0]); + console.log(`${action} Oracle`, log?.args.oracle); + }) + ); + }; + + // Register Oracles + if (config.registerOracle) { + await processOracles('Registering', config.registerOracle, 'registerOracle'); } - // Deregister Oracle //////////////////////////////////////////////////////// + // Deregister Oracles if (config.deregisterOracle) { - console.log('deregisterOracle') - - for (const oracle of config.deregisterOracle) { - const tx: any = await (await ADCSCoordinator.deregisterOracle(oracle)).wait() - const log = ADCSCoordinator.interface.parseLog(tx.logs[0]) - console.log('Oracle Deregistered', log?.args.oracle) - } + await processOracles('Deregistering', config.deregisterOracle, 'deregisterOracle'); } - // Configure Request-Response coordinator /////////////////////////////////// + // Configure ADCSCoordinator if (config.setConfig) { - console.log('setConfig') - const setConfig = config.setConfig - if (!validateSetConfig(setConfig)) { - throw new Error('Invalid RRC setConfig config') + console.log('Setting ADCSCoordinator Config...'); + + if (!validateSetConfig(config.setConfig)) { + throw new Error('Invalid ADCS setConfig config'); } - await ( - await ADCSCoordinator.setConfig(setConfig.maxGasLimit, setConfig.gasAfterPaymentCalculation) - ).wait() + const { maxGasLimit, gasAfterPaymentCalculation } = config.setConfig; + await (await ADCSCoordinator.setConfig(maxGasLimit, gasAfterPaymentCalculation)).wait(); + console.log('Configuration updated successfully.'); } - await updateMigration(migrationDirPath, migration) + + // Update migration status + await updateMigration(migrationDirPath, migration); + console.log(`Migration ${migration} processed successfully.`); } -} +}; From 8eb057780f0cc86fc228acb65f56a5fe87cc4ef5 Mon Sep 17 00:00:00 2001 From: doclt Date: Sat, 22 Mar 2025 12:18:19 +0700 Subject: [PATCH 2/2] formated code + defined type for variable --- contracts/deploy/adcs/adcs.ts | 70 +++++++++++++++++------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/contracts/deploy/adcs/adcs.ts b/contracts/deploy/adcs/adcs.ts index 735418a..c4f8acc 100644 --- a/contracts/deploy/adcs/adcs.ts +++ b/contracts/deploy/adcs/adcs.ts @@ -1,93 +1,93 @@ -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import path from 'node:path'; +import { HardhatRuntimeEnvironment } from 'hardhat/types' +import path from 'node:path' import { loadJson, loadMigration, updateMigration, validateCoordinatorDeployConfig, - validateSetConfig, -} from '../../scripts/utils'; + validateSetConfig +} from '../../scripts/utils' module.exports = async ({ getNamedAccounts, deployments, network, - ethers, + ethers }: HardhatRuntimeEnvironment) => { - const { deploy } = deployments; - const { deployer } = await getNamedAccounts(); + const { deploy } = deployments + const { deployer } = await getNamedAccounts() - const migrationDirPath = `./migration/${network.name}/ADCS`; - const migrationFilesNames = await loadMigration(migrationDirPath); + const migrationDirPath = `./migration/${network.name}/ADCS` + const migrationFilesNames = await loadMigration(migrationDirPath) for (const migration of migrationFilesNames) { - const config = await loadJson(path.join(migrationDirPath, migration)); + const config = await loadJson(path.join(migrationDirPath, migration)) let ADCSCoordinator = config.ADCSCoordinatorAddress ? await ethers.getContractAt('ADCSCoordinator', config.ADCSCoordinatorAddress) - : undefined; + : undefined // Deploy ADCSCoordinator if specified in config if (config.deploy) { - console.log('Deploying ADCSCoordinator...'); + console.log('Deploying ADCSCoordinator...') if (!validateCoordinatorDeployConfig(config.deploy)) { - throw new Error('Invalid ADCS deploy config'); + throw new Error('Invalid ADCS deploy config') } - const ADCSCoordinatorName = `ADCSCoordinator_${config.deploy.version}`; + const ADCSCoordinatorName = `ADCSCoordinator_${config.deploy.version}` const ADCSDeployment = await deploy(ADCSCoordinatorName, { contract: 'ADCSCoordinator', args: [], from: deployer, - log: true, - }); + log: true + }) - ADCSCoordinator = await ethers.getContractAt('ADCSCoordinator', ADCSDeployment.address); + ADCSCoordinator = await ethers.getContractAt('ADCSCoordinator', ADCSDeployment.address) } if (!ADCSCoordinator) { - throw new Error('ADCSCoordinator is not deployed or address is missing in config.'); + throw new Error('ADCSCoordinator is not deployed or address is missing in config.') } // Helper function to process Oracle registration/deregistration - const processOracles = async (action, oracles, method) => { - console.log(`${action} Oracles...`); + const processOracles = async (action: string, oracles: string[], method: string) => { + console.log(`${action} Oracles...`) await Promise.all( oracles.map(async (oracle) => { - const tx = await (await ADCSCoordinator[method](oracle)).wait(); - const log = ADCSCoordinator.interface.parseLog(tx.logs[0]); - console.log(`${action} Oracle`, log?.args.oracle); + const tx = await (await (ADCSCoordinator as any)[method](oracle)).wait() + const log = ADCSCoordinator.interface.parseLog(tx.logs[0]) + console.log(`${action} Oracle`, log?.args.oracle) }) - ); - }; + ) + } // Register Oracles if (config.registerOracle) { - await processOracles('Registering', config.registerOracle, 'registerOracle'); + await processOracles('Registering', config.registerOracle, 'registerOracle') } // Deregister Oracles if (config.deregisterOracle) { - await processOracles('Deregistering', config.deregisterOracle, 'deregisterOracle'); + await processOracles('Deregistering', config.deregisterOracle, 'deregisterOracle') } // Configure ADCSCoordinator if (config.setConfig) { - console.log('Setting ADCSCoordinator Config...'); + console.log('Setting ADCSCoordinator Config...') if (!validateSetConfig(config.setConfig)) { - throw new Error('Invalid ADCS setConfig config'); + throw new Error('Invalid ADCS setConfig config') } - const { maxGasLimit, gasAfterPaymentCalculation } = config.setConfig; - await (await ADCSCoordinator.setConfig(maxGasLimit, gasAfterPaymentCalculation)).wait(); - console.log('Configuration updated successfully.'); + const { maxGasLimit, gasAfterPaymentCalculation } = config.setConfig + await (await ADCSCoordinator.setConfig(maxGasLimit, gasAfterPaymentCalculation)).wait() + console.log('Configuration updated successfully.') } // Update migration status - await updateMigration(migrationDirPath, migration); - console.log(`Migration ${migration} processed successfully.`); + await updateMigration(migrationDirPath, migration) + console.log(`Migration ${migration} processed successfully.`) } -}; +}