====== Goerli テストネットの使用(Hardhat編) ====== ===== MetaMask の設定 ===== 以下の手順で MetaMask が接続するネットワークを Goerli に設定します。 - 1をクリックして「表示・非表示」をクリック \\ {{:blockchain:metamaskropsten002.png?600|}} - 「テストネットワークを表示」を「オン」にする \\ {{:blockchain:metamaskropsten003.png?600|}} - ネットワーク選択で「Goerliテストネットワーク」を選択する \\ {{:blockchain:metamaskropsten004.png?600|}} ===== Hardhat の設定 ===== ==== alchemy への登録と API KEY の取得 ==== [[https://www.alchemy.com|alchemy]]にアクセスし右上の「ログイン→」をクリックして、アカウントを作成してください。 アカウントが作成できたら、以下の手順で API KEY を取得します。 - 「Ethereum」がチェックされていることを確認して「Get Started」をクリック \\ {{:blockchain:alchemy001.png?600|}} - 1と2を自由に命名し、3で「Goerli」を選択して「Create App」をクリック \\ {{:blockchain:alchemy002.png?600|}} - 「Continue」をクリック \\ {{:blockchain:alchemy003.png?600|}} - 「Skip for now」をクリック \\ {{:blockchain:alchemy004.png?600|}} - 「Skip for now」をクリック \\ {{:blockchain:alchemy005.png?600|}} - 「Continue」をクリック \\ {{:blockchain:alchemy006.png?600|}} - 1を自由に入力して「Let's Go」をクリック \\ {{:blockchain:alchemy007.png?600|}} - 「VIEW KEY」をクリック \\ {{:blockchain:alchemy008.png?600|}} - 「API KEY」をコピーしてメモしておきます \\ {{:blockchain:alchemy009.png?600|}} ===== Faucet から ETH を貰う ===== 以下の手順で「GOERLI FAUCET」から Goerli で使用できる 0.05 ETH を貰うことができます。 (Faucetは「蛇口」という意味。) - ブラウザで [[https://goerlifaucet.com/|GOERLI FAUCET]] にアクセス - 「Please signup or login」をクリック - アドレスに自分のアカウントを入力 - 「Send Me ETH」ボタンをクリック ==== MetaMask アカウントプライベートキーの取得 ==== - Goerli にアクセスしているアカウントを選択し「アカウントの詳細」をクリック \\ {{:blockchain:metamaskprivatekey001.png?600|}} - 「秘密鍵のエクスポート」クリック \\ {{:blockchain:metamaskprivatekey002.png?600|}} - MetaMask のパスワードを入力して「確認」をクリック \\ {{:blockchain:metamaskprivatekey003.png?600|}} - 秘密鍵をコピーしてメモしておいてください。「完了」をクリック \\ {{:blockchain:metamaskprivatekey004.png?600|}} ==== 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|https://goerli.etherscan.io/address/0xaceae7f921287fa5b255d37e83a1859793052d8b)]] で上記のスマートコントラクトアドレスをスキャンすると、Greeter スマートコントラクトのソースコードや ABI が確認できます。