スマートコントラクトをEtherscanに送信する
この記事では、スマートコントラクトのABIをEtherscanに送信して、誰でもコントラクトのメソッドと変数を確認できるようにする方法を紹介します。
前回の記事の続きになります。
1. Etherscanのアカウントを登録
Etherscanにアクセスして、アカウントを作成します。
必要事項を入力して、Create an Accountを押します。
ログインしたら、右上のユーザー名を押して、「My Profile」ボタンを選択します。
左側にあるタブ バーの「API Keys」に移動して、「Add」 を押します。
アプリにhello-worldの名前を入力して、「Create New Api Key」を押します。
Api Keyが追加されました。
.envにEtherscanのAPIキーを追加します。
API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
API_KEY = "your-api-key"
PRIVATE_KEY = "your-private-account-address"
ETHERSCAN_API_KEY = "your-etherscan-key"
2-1. HardhatにEtherscanの設定を追加
Etherscanにコントラクトを公開するため、Hardhatに必要な設定を追加していきます。
npmで、etherscanプラグインをインストールします。
$ npm install --save-dev @nomiclabs/hardhat-etherscan
インストールしたら、 hardhat.config.jsにEtherscanの構成オプションを追加します。
/**
* @type import('hardhat/config').HardhatUserConfig
*/
require('dotenv').config();
require("@nomiclabs/hardhat-ethers");
require("@nomiclabs/hardhat-etherscan");
const { API_URL, PRIVATE_KEY } = process.env;
const ETHERSCAN_API_KEY = process.env.ETHERSCAN_API_KEY;
module.exports = {
solidity: "0.7.3",
defaultNetwork: "sepolia",
networks: {
hardhat: {},
sepolia: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
}
},
etherscan: {
// Etherscanの設定を追加
apiKey: ETHERSCAN_API_KEY
}
};
コントラクトのアドレスとデプロイ時に使用した最初のメッセージを渡して、コマンドを実行します。
DEPLOYED_CONTRACT_ADDRESSは、デプロイしたコントラクトアドレスに置き換えます。
またHello Worldスマートコントラクトでデプロイした文字列と同じ値('Hello World!')である必要があります。
$ npx hardhat verify --network sepolia DEPLOYED_CONTRACT_ADDRESS 'Hello World!'
Successfully submitted source code for contract
contracts/HelloWorld.sol:HelloWorld at 0xdeployed-contract-address
for verification on Etherscan. Waiting for verification result...
Successfully verified contract HelloWorld on Etherscan.
https://sepolia.etherscan.io/address/<contract-address>#contracts
出力されたURLを確認するとEtherscanにHello Worldコントラクトが公開されたことが確認できます!
2-2. Etherscanの画面からコントラクトを公開
別の方法として、Etherscanの画面からverifyする方法も記します。
デプロイしたコントラクトから、「Verify and Publish」を押します。
Solidityのバージョンとライセンスタイプを選択します。
コントラクトのコードから確認できます。
// HelloWorld.sol
// SPDX-License-Identifier: UNLICENSED
// 1. solidityのバージョンを指定
pragma solidity >=0.7.3;
コードを貼り付けます。
下までスクロールして、「Verify and Publish」を押します。
成功してコントラクトが公開されました!
外部からコードが確認できるようになっています。