====== Ropsten テストネットの使用 ======
===== MetaMask の設定 =====
以下の手順で MetaMask が接続するネットワークを Ropsten に設定します。
- 1をクリックして「表示・非表示」をクリック \\ {{:blockchain:metamaskropsten002.png?600|}}
- 「テストネットワークを表示」を「オン」にする \\ {{:blockchain:metamaskropsten003.png?600|}}
- ネットワーク選択で「Ropstenテストネットワーク」を選択する \\ {{:blockchain:metamaskropsten004.png?600|}}
===== Faucet から ETH を貰う =====
以下の手順で「MetaMask Ether Faucet」から Ropsten で使用できる 1 ETH を貰うことができます。
(Faucetは「蛇口」という意味。)
- 「購入」をクリック \\ {{:blockchain:metamaskropsten005.png?600|}}
- 「Etherを取得」をクリック \\ {{:blockchain:metamaskropsten006.png?600|}}
- 「request 1 ether from faucet」をクリック \\ {{:blockchain:metamaskropsten007.png?600|}}
- 適切なアカウントを選択して「次へ」をクリック \\ {{:blockchain:metamaskropsten008.png?600|}}
- 「接続」をクリック \\ {{:blockchain:metamaskropsten008.png?600|}}
- しばらくは「0 ETH」のままです \\ {{:blockchain:metamaskropsten009.png?600|}}
- 30秒から1分ほど(?)待つと「1 ETH」受領した状態になります \\ {{:blockchain:metamaskropsten010.png?600|}}
===== Hardhat の設定 =====
==== alchemy への登録と API KEY の取得 ====
[[https://www.alchemy.com|alchemy]]にアクセスし右上の「ログイン→」をクリックして、アカウントを作成してください。
アカウントが作成できたら、以下の手順で API KEY を取得します。
- 「Ethereum」がチェックされていることを確認して「Get Started」をクリック \\ {{:blockchain:alchemy001.png?600|}}
- 1と2を自由に命名し、3で「Ropsten」を選択して「Create App」をクリック \\ {{:blockchain:alchemy002.png?600|}}
- 「Continue」をクリック \\ {{:blockchain:alchemy003.png?600|}}
- 「Skif for now」をクリック \\ {{:blockchain:alchemy004.png?600|}}
- 「Skif 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|}}
==== MetaMask アカウントプライベートキーの取得 ====
- Ropsten にアクセスしているアカウントを選択し「アカウントの詳細」をクリック \\ {{:blockchain:metamaskprivatekey001.png?600|}}
- 「秘密鍵のエクスポート」クリック \\ {{:blockchain:metamaskprivatekey002.png?600|}}
- MetaMask のパスワードを入力して「確認」をクリック \\ {{:blockchain:metamaskprivatekey003.png?600|}}
- 秘密鍵をコピーしてメモしておいてください。「完了」をクリック \\ {{:blockchain:metamaskprivatekey004.png?600|}}
==== Hardhat 設定ファイルの編集 ====
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 にスマートコントラクトをデプロイする ====
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 にデプロイされているため、どこからでもアクセスすることができます。[[https://ropsten.etherscan.io/address/0xaceae7f921287fa5b255d37e83a1859793052d8b#code|Etherscan(0xaCeAe7f921287fA5B255d37e83a1859793052D8B)]] で上記のスマートコントラクトアドレスをスキャンすると、Greeter スマートコントラクトのソースコードや ABI が確認できます。