UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

44 lines 2.13 kB
import { rootLogger } from '@hyperlane-xyz/utils'; import { ExplorerFamily } from '../../metadata/chainMetadataTypes.js'; import { MultiGeneric } from '../../utils/MultiGeneric.js'; import { ContractVerifier } from './ContractVerifier.js'; import { ZKSyncContractVerifier } from './ZKSyncContractVerifier.js'; export class PostDeploymentContractVerifier extends MultiGeneric { multiProvider; logger = rootLogger.child({ module: 'PostDeploymentContractVerifier', }); contractVerifier; zkSyncContractVerifier; constructor(verificationInputs, multiProvider, apiKeys, buildArtifact, licenseType) { super(verificationInputs); this.multiProvider = multiProvider; this.contractVerifier = new ContractVerifier(multiProvider, apiKeys, buildArtifact, licenseType); this.zkSyncContractVerifier = new ZKSyncContractVerifier(multiProvider); } verify(targets = this.chains()) { return Promise.allSettled(targets.map(async (chain) => { // can check explorer family here to avoid doing these checks for each input in verifier const { family } = this.multiProvider.getExplorerApi(chain); let contractVerifier = this.contractVerifier; if (family === ExplorerFamily.ZkSync) { this.logger.debug('Using ZkSync verifier'); contractVerifier = this.zkSyncContractVerifier; } if (family === ExplorerFamily.Other) { this.logger.warn(`Skipping verification for ${chain} due to unsupported explorer family.`); return; } this.logger.debug(`Verifying ${chain}...`); for (const input of this.get(chain)) { try { await contractVerifier.verifyContract(chain, input, this.logger); } catch (error) { this.logger.error({ name: input.name, address: input.address }, `Failed to verify contract on ${chain}`, error); } } })); } } //# sourceMappingURL=PostDeploymentContractVerifier.js.map