Conla Docs
  • Greetings to Conla Docs
  • About Conla
    • What is Conla?
    • Consumer chain on TON
    • Technical Features
    • Architecture
  • Users
    • Onboarding
      • Install MetaMask
      • Add to MetaMask
      • Faucet tTON
    • Community
  • Developers
    • Quick start
      • Connect to Conla
      • Faucet tBTC
    • AA wallet & Paymaster
      • SDK integration
      • Conla Wallet
    • dApp
      • Write a contract
      • Deploy with Foundry
      • Deploy with Hardhat
      • Verify a contract
    • Run a Conla Node
    • Conla Verifier
  • Reference
    • Sovereign SDK
    • reth
    • Celestia
    • ERC-4337: Account Abstraction
Powered by GitBook
On this page
  • Get Started
  • 1) Install Hardhat
  • 2) Create a project
  • 3) Install plugin
  • 4) Add plugin reference to config file
  • Config Custom Networks
  • Deploy and Verify
  • Confirm Verification on Conla Explorer
  1. Developers
  2. dApp

Verify a contract

PreviousDeploy with HardhatNextRun a Conla Node

Get Started

1) Install Hardhat

If you are starting from scratch, create an npm project by going to an empty folder, running npm init, and following the instructions. Recommend npm 7 or higher.

Once your project is ready:

npm instructions

npm install --save-dev hardhat

yarn instructions

yarn add --dev hardhat

2) Create a project

Run npx hardhat in your project folder and follow the instructions to create ().

3) Install plugin

Install the (requires v3.0.0+).

npm

npm install --save-dev @nomicfoundation/hardhat-verify

yarn

yarn add --dev @nomicfoundation/hardhat-verify

4) Add plugin reference to config file

Add the following statement to your hardhat.config.js.

require("@nomicfoundation/hardhat-verify");
import "@nomicfoundation/hardhat-verify";

Config Custom Networks

You have to specify the explorer details under a customChains object. It includes:

  • chainID - 11118

  • apiURL - https://explorer.conla.com/api

  • browserURL - https://explorer.conla.com/

import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "@nomicfoundation/hardhat-verify";

const PRIVATE_KEY = vars.get("PRIVATE_KEY");

const config: HardhatUserConfig = {
  solidity: "0.8.24",
  networks: {
    conla-testnet: {
      url: 'https://rpc.testnet.conla.com',
      accounts: [PRIVATE_KEY],
    },
  },
  etherscan: {
    apiKey: {
      // Is not required. Can be any non-empty string
      sepolia: "abc"
    },
    customChains: [
      {
        network: "conla-testnet",
        chainId: 11118,
        urls: {
          apiURL: "https://explorer.conla.com/api",
          browserURL: "https://explorer.conla.com/",
        }
      }
    ]
  },
  sourcify: {
    enabled: false
  }
};

export default config;

Deploy and Verify

Deploy

D:\hard_hat>npx hardhat ignition deploy ./ignition/modules/Lock.ts --network conla-testnet
✔ Confirm deploy to network conla-testnet (11118)? … yes
Compiled 1 Solidity file successfully (evm target: paris).
Hardhat Ignition 🚀

Deploying [ LockModule ]

Batch #1
  Executed LockModule#Lock

[ LockModule ] successfully deployed 🚀

Deployed Addresses

LockModule#Lock - 0x15447991b46862f6cF9a5dB358a923f768a9Fadb

Verify

The plugin requires you to include constructor arguments with the verify task and ensures that they correspond to expected ABI signature. However, Conla Explorer ignores those arguments, so you may specify any values that correspond to the ABI.

npx hardhat verify --network conla-testnet DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1"

Example.

D:\hard_hat>npx hardhat verify --network conla-testnet 0x15447991b46862f6cF9a5dB358a923f768a9Fadb 1234
Successfully submitted source code for contract
contracts/Lock.sol:Lock at 0x15447991b46862f6cF9a5dB358a923f768a9Fadb
for verification on the block explorer. Waiting for verification result...

Successfully verified contract Lock on the block explorer.
https://explorer.conla.com/address/0x15447991b46862f6cF9a5dB358a923f768a9Fadb#code

Note the verify task may not be listed in the available tasks lists at npx hardhat --help but should work as expected.

If not, check you have the minimum required version of the nomiclabs-hardhat-etherscan plugin (v3.0.0+) installed

Automatically verified contracts

The contract 0x15447991b46862f6cF9a5dB358a923f768a9Fadb has already been verified on Etherscan.
https://explorer.conla.com/address/0x15447991b46862f6cF9a5dB358a923f768a9Fadb#code

In that case, you may try to enforce using --force flag*.

It prevents Hardhat to check if the contract is already verified, and force it to send verification request anyway. Notice, that it is helpful only if the contract was automatically verified partially. That way, a new verification sources would be saved. If the contract was fully verified already, that just returns an error.

npx hardhat verify --network conla-testnet DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1" --force
  • The flag is available starting from @nomicfoundation/hardhat-verify@2.0.7

Confirm Verification on Conla Explorer

Scroll down to see verified status. A green checkmark ✅ means the contract is verified.

If your screen size is limited, you may need to click the 3 dots to view and click through to the contract.

Scroll down to see and interact with the contract code.

If using TypeScript, add this to your hardhat.config.ts. .

Your basic (hardhat.config.js or hardhat.config.ts) will be setup to support Conla Testnet.

For deployment we will use - built-in Hardhat deployment system.

Sometimes the contract may be automatically verified via service. In that case you may see the following response:

Go to and paste the contract address into the search bar.

more info here
hardhat-verify plugin
More info on using typescript with hardhat available here
Hardhat config file
Hardhat Ignition
Ethereum Bytecode Database
Conla Explorer