External Plugin

This is a third-party plugin. Please report issues in its Github Repository(opens new window)

# hardhat-etherscan-abi Build Status(opens new window) npm(opens new window) hardhat(opens new window)

Hardhat(opens new window) plugin that fetches verified contract ABI from Etherscan(opens new window) .

# What

This plugin adds extra features on top of @nomiclabs/hardhat-ethers and allows creating contract instances without manually downloading ABI: ethers.getVerifiedContractAt('<address>'). It supports Mainnet, BSC, and most testnets.

# Installation

npm install --save-dev hardhat-etherscan-abi

And add the following statement to your hardhat.config.js:

require("hardhat-etherscan-abi");

Or, if you are using TypeScript, add this to your hardhat.config.ts:

import "hardhat-etherscan-abi";

# Tasks

This plugin creates no additional tasks.

# Environment extensions

This object has adds some extra hardhat-etherscan-abi specific functionalities by adding new extra fields to hre.ethers

# Helpers

These helpers are added to the ethers object:

export async function getVerifiedContractAt(
  hre: HardhatRuntimeEnvironment,
  address: string,
  signer?: ethers.Signer
): Promise<ethers.Contract>;

# Usage

You need to add the following Etherscan config to your hardhat.config.js file. Etherscan API key is optional but without it Etherscan allows only 1 request per 5 seconds.

module.exports = {
  networks: {
    mainnet: { ... }
  },
  etherscan: {
    // Your API key for Etherscan
    // Obtain one at https://etherscan.io/
    apiKey: "YOUR_ETHERSCAN_API_KEY"
  }
};

Then use the function:

const contract = await hre.ethers.getVerifiedContractAt('<address>');

It requires only contract address and will fetch the ABI for the contract automatically from Etherscan