目次

Goerli テストネットの使用(Hardhat編)

MetaMask の設定

以下の手順で MetaMask が接続するネットワークを Goerli に設定します。

  1. 1をクリックして「表示・非表示」をクリック
  2. 「テストネットワークを表示」を「オン」にする
  3. ネットワーク選択で「Goerliテストネットワーク」を選択する

Hardhat の設定

alchemy への登録と API KEY の取得

alchemyにアクセスし右上の「ログイン→」をクリックして、アカウントを作成してください。

アカウントが作成できたら、以下の手順で API KEY を取得します。

  1. 「Ethereum」がチェックされていることを確認して「Get Started」をクリック
  2. 1と2を自由に命名し、3で「Goerli」を選択して「Create App」をクリック
  3. 「Continue」をクリック
  4. 「Skip for now」をクリック
  5. 「Skip for now」をクリック
  6. 「Continue」をクリック
  7. 1を自由に入力して「Let's Go」をクリック
  8. 「VIEW KEY」をクリック
  9. 「API KEY」をコピーしてメモしておきます

Faucet から ETH を貰う

以下の手順で「GOERLI FAUCET」から Goerli で使用できる 0.05 ETH を貰うことができます。 (Faucetは「蛇口」という意味。)

  1. ブラウザで GOERLI FAUCET にアクセス
  2. 「Please signup or login」をクリック
  3. アドレスに自分のアカウントを入力
  4. 「Send Me ETH」ボタンをクリック

MetaMask アカウントプライベートキーの取得

  1. Goerli にアクセスしているアカウントを選択し「アカウントの詳細」をクリック
  2. 「秘密鍵のエクスポート」クリック
  3. MetaMask のパスワードを入力して「確認」をクリック
  4. 秘密鍵をコピーしてメモしておいてください。「完了」をクリック

Hardhat 設定ファイルの編集

Hardhat の設定ファイルが接続する ethereum ブロックチェーンを Goerli に切り替える方法です。

hardhat.config.js の networks プロパティに Goerli を追記します。 追記しているのは「ALCHEMY_API_KEY」「GOERLI_PRIVATE_KEY」と modules.exports の「networks:」です。 環境に合わせてマージしてください。

require("@nomiclabs/hardhat-waffle");
 
// This is a sample Hardhat task. To learn how to create your own go to
// https://hardhat.org/guides/create-task.html
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
  const accounts = await hre.ethers.getSigners();
 
  for (const account of accounts) {
    console.log(account.address);
  }
});
 
// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more
 
// Go to https://www.alchemyapi.io, sign up, create
// a new App in its dashboard, and replace "KEY" with its key
const ALCHEMY_API_KEY = "YOUR_ALCHEMY_API_KEY";
 
// Replace this private key with your Goerli account private key
// To export your private key from Metamask, open Metamask and
// go to Account Details > Export Private Key
// Be aware of NEVER putting real Ether into testing accounts
const GOERLI_PRIVATE_KEY = "YOUR_GOERLI_PRIVATE_KEY";
 
/**
 * @type import('hardhat/config').HardhatUserConfig
 */
module.exports = {
  solidity: "0.8.4",
  networks: {
    hardhat: {},
    goerli: {
      url: `https://eth-goerli.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
      accounts: [`${GOERLI_PRIVATE_KEY}`]
    }
  }
};

Goerli にスマートコントラクトをデプロイする

Goerli にスマートコントラクトをデプロイして実行するコマンドの例です。

「–network goerli」オプションを付けることで Goerli ネットワークを選択しているのがポイントです。

Goerli に Greeter スマートコントラクトをデプロイ

hardhat_project> npx hardhat run .\scripts\sample-script.js --network goerli
Downloading compiler 0.8.4
Compiled 2 Solidity files successfully
Greeter deployed to: 0xaCeAe7f921287fA5B255d37e83a1859793052D8B

Goerli にコンソール接続し Greeter スマートコントラクトを実行

hardhat_project> npx hardhat console --network goerli
Welcome to Node.js v16.15.0.
Type ".help" for more information.
> const Greeter = await ethers.getContractAt('Greeter', '0xaCeAe7f921287fA5B255d37e83a1859793052D8B');
undefined
> await Greeter.greet();
'Hello, Hardhat!'

今回デプロイした Greeter スマートコントラクトはインターネット上で稼働する Goerli にデプロイされているため、どこからでもアクセスすることができます。https://goerli.etherscan.io/address/0xaceae7f921287fa5b255d37e83a1859793052d8b) で上記のスマートコントラクトアドレスをスキャンすると、Greeter スマートコントラクトのソースコードや ABI が確認できます。