External Plugin

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

npm (tag)

# hardhat-tenderly

Hardhat(opens new window) plugin for integration with Tenderly(opens new window) .

# What

This plugin will help you verify your Solidity contracts, as well as allow you to privately push contracts to Tenderly(opens new window) .

# Installation

npm install --save-dev @tenderly/hardhat-tenderly

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

require("@tenderly/hardhat-tenderly");

Or, if you are using typescript:

import "@tenderly/hardhat-tenderly"

# Tasks

This plugin adds the tenderly:verify task to Hardhat:

Usage: hardhat [GLOBAL OPTIONS] tenderly:verify ...contracts

POSITIONAL ARGUMENTS:

  contracts     Addresses and names of contracts that will be verified formatted ContractName=Address 

tenderly-verify: Verifies contracts on Tenderly

And the tenderly:push task:

Usage: hardhat [GLOBAL OPTIONS] tenderly:push ...contracts

POSITIONAL ARGUMENTS:

  contracts     Addresses and names of contracts that will be verified formatted ContractName=Address 

tenderly-push: Privately pushes contracts to Tenderly

# Environment extensions

This plugin extends the Hardhat Runtime Environment by adding a tenderly field whose type is Tenderly.

This field has the verify and push methods.

This is an example on how you can call it from your scripts (using ethers to deploy a contract):

    const Greeter = await ethers.getContractFactory("Greeter");
    const greeter = await Greeter.deploy("Hello, Hardhat!");

    await bre.tenderly.verify({
        name: "Greeter",
        address: greeter.address,
    })

Both functions accept variadic parameters:

    const contracts = [
    {
        name: "Greeter",
        address: "123"
    },
    {
        name: "Greeter2",
        address: "456"
    }]

    await bre.tenderly.verify(...contracts)

# Configuration

This plugin extends the HardhatConfig object with optional project and username fields.

This is an example of how to set it:

module.exports = {
    tenderly: {
        project: "",
        username: "",
    }
};

# Usage

For this plugin to function you need to create a config.yaml file at $HOME/.tenderly/config.yaml or %HOMEPATH%\.tenderly\config.yaml and add an access_key field to it:

access_key: super_secret_access_key

You can find the access token on the Tenderly dashboard(opens new window) , under Settings -> Authorization.

Alternatively, this step can be skipped by doing tenderly login on the tenderly-cli

After this you can access Tenderly(opens new window) through the Hardhat Runtime Environment anywhere you need it (tasks, scripts, tests, etc).