見出し画像

スマートコントラクトをEtherscanに送信する

この記事では、スマートコントラクトのABIをEtherscanに送信して、誰でもコントラクトのメソッドと変数を確認できるようにする方法を紹介します。

Etherscanは、Ethereumブロックチェーンのブロック、トランザクション、アカウント、スマートコントラクトなどのデータを表示・検索するためのブロックチェーンエクスプローラーです。
Ethereumの「検索エンジン」のような役割を果たしており、誰でもブロックチェーン上の公開データにアクセスして確認できるツールです。

chatGPT

前回の記事の続きになります。


1. Etherscanのアカウントを登録

Etherscanにアクセスして、アカウントを作成します。

https://etherscan.io/register

必要事項を入力して、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」を押します。


成功してコントラクトが公開されました!


外部からコードが確認できるようになっています。

いいなと思ったら応援しよう!