以下の手順で MetaMask が接続するネットワークを Ropsten に設定します。
以下の手順で「MetaMask Ether Faucet」から Ropsten で使用できる 1 ETH を貰うことができます。 (Faucetは「蛇口」という意味。)
Hardhat の設定ファイルが接続する ethereum ブロックチェーンを Ropsten に切り替える方法です。
hardhat.config.js の networks プロパティに Ropsten を追記します。 追記しているのは「ALCHEMY_API_KEY」「ROPSTEN_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 Ropsten 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 ROPSTEN_PRIVATE_KEY = "YOUR_ROPSTEN_PRIVATE_KEY"; /** * @type import('hardhat/config').HardhatUserConfig */ module.exports = { solidity: "0.8.4", networks: { hardhat: {}, ropsten: { url: `https://eth-ropsten.alchemyapi.io/v2/${ALCHEMY_API_KEY}`, accounts: [`${ROPSTEN_PRIVATE_KEY}`] } } };
Ropsten にスマートコントラクトをデプロイして実行するコマンドの例です。
「–network ropsten」オプションを付けることで Ropsten ネットワークを選択しているのがポイントです。
Ropsten に Greeter スマートコントラクトをデプロイ
hardhat_project> npx hardhat run .\scripts\sample-script.js --network ropsten Downloading compiler 0.8.4 Compiled 2 Solidity files successfully Greeter deployed to: 0xaCeAe7f921287fA5B255d37e83a1859793052D8B
Ropsten にコンソール接続し Greeter スマートコントラクトを実行
hardhat_project> npx hardhat console --network ropsten 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 スマートコントラクトはインターネット上で稼働する Ropsten にデプロイされているため、どこからでもアクセスすることができます。Etherscan(0xaCeAe7f921287fA5B255d37e83a1859793052D8B) で上記のスマートコントラクトアドレスをスキャンすると、Greeter スマートコントラクトのソースコードや ABI が確認できます。