⛑️

hardhatからEtherscanにコードを登録する方法

2022/01/23に公開

概要

Etherscanにコードを登録する方法のうち、hardhatから登録する日本語記事が見当たらなかったので実際に登録するにあたってやったことを共有します

コードを登録すると以下のようにetherscanからコントラクトのメソッドを呼び出すことができるようになります。
「直コンでmintする」みたいなのはコレですね。

環境

  • 2022/01/23現在
  • hardhat 2.8.3
  • テストネットで検証
    • ほぼ同じ方法でメインネットやpolygonチェーンでも可能

手順

準備

関連ライブラリのインストール

npm install --save-dev @nomiclabs/hardhat-etherscan

hardhat.config.js の最上部に以下を追記

// hardhat.config.js
require("@nomiclabs/hardhat-etherscan");

// ...

ネットワーク情報の追加

以下を参考に、ネットワーク情報を hardhat.config.js に追記する

https://hardhat.org/tutorial/deploying-to-a-live-network.html#deploying-to-remote-networks

デプロイ

hardhatからテストネットにコントラクトをデプロイする

# NETWORK_NAME は前ステップで追記したネットワーク名に置き換える
npx hardhat run scripts/deploy.js --network NETWORK_NAME

APIキーの発行と登録

  • API keys created on Etherscan.io can be used for the Kovan, Rinkeby, Ropsten, and Goerli Testnets.
  • Etherscan.ioで作成されたAPIキーは、Kovan、Rinkeby、Ropsten、およびGoerliTestnetsで使用できます。
  • hardhat.config.js を編集
module.exports = {
  networks: {
    mainnet: { ... }
  },
  etherscan: {
    apiKey: "発行したAPIKey"
  }
};

コードの登録

# API_KEY を先程発行した34文字のAPIキーに置き換える
npx hardhat verify --network NETWORK_NAME デプロイしたコントラクトAddress

コンパイル等問題なければ、成功ログが表示される

Nothing to compile
Compiling 1 file with 0.8.4
Successfully submitted source code for contract
contracts/TakaiSushiLimitedMembership.sol:TakaiSushiLimitedMembership at 0x2949c658ED864a79B6DdbbDA3BeEB6Bb4a80ACDA
for verification on the block explorer. Waiting for verification result...

Successfully verified contract TakaiSushiLimitedMembership on Etherscan.
https://rinkeby.etherscan.io/address/0x2949c658ED864a79B6DdbbDA3BeEB6Bb4a80ACDA

今回のサンプル↓

https://rinkeby.etherscan.io/address/0x2949c658ED864a79B6DdbbDA3BeEB6Bb4a80ACDA

まとめ

  • hardhatからetherscanにコードを登録し、直コンで○○をできるようにした

参考リンク

etc

Solidityについてワイワイ学ぶコミュニティ「solidity-jp」を作りました!
いまから学んでみたい/学習中だけどの日本語の情報が少ない/古くて時間がかかっているという方、一緒に学びましょう〜!!

https://solidity-jp.dev/

また、TwitterにてSolidityに関する技術情報を発信しています。良ければフォローお願いします!

https://twitter.com/k0uhashi

Discussion