👷

Mumbaiにスマートコントラクトをデプロイする方法【動画あり】

2022/07/26に公開

この記事について

この記事ではPolygonのテストネットであるMumbaiHardhatを使ってスマートコントラクトをデプロイする方法について紹介します。内容についてはAlchemy DocumentationのHello World Smart Contractチュートリアルをベースにしています。この記事の関連リソースを下記に示します。

https://www.youtube.com/watch?v=3J6167FdJcc

秘密鍵の作成

コントラクトをデプロイするためには秘密鍵が必要になりますが、普段使っているアカウントの秘密鍵を使うのは危険なのでテスト用のアカウントを作成します。

テスト用のアカウントを作成するのにMetaMaskを使いますがインストールしていない場合はchromeウェブストアのMetaMaskのページからインストールします。

MetaMaskを起動してMy Accounts(画面右上にある丸いアイコン)> Create Accountをクリックします。

アカウント名を入力してからCreateボタンをクリックします。

アカウントを作成したらアドレスを後の手順のためにエディタなどにコピー&ペーストします。アカウント名をクリックするのが便利です。

Account Options(画面右上にある3つのドットアイコン)> Account details > Export Private Keyをクリックします。

パスワードを入力してからConfirmボタンをクリックします。

秘密鍵が表示されるので後の手順ためにエディタなどにコピー&ペーストします。

参考画像

MATICの入手

Polygon Faucetのページにアクセスして下記の内容を入力してからSubmitボタンをクリックします。

  • Network: Mumbai
  • Select Token: MATIC Token
  • Wallet Address: アカウントのアドレス

確認モーダルが表示されたらConfirmボタンをクリックします。

1〜2分後にMetaMaskで残高が増えていることを確認できます。なお、2022年7月25日の時点では0.2 MATICをもらえました。

参考画像

コーディングの準備

ターミナルで下記のコマンドを実行してコーディングの準備をします。

mkdir mumbai-smart-contract
cd mumbai-smart-contract
mkdir contracts scripts
npm init -y
npm install --save dotenv
npm install --save-dev @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan ethers hardhat
touch .env contracts/HelloWorld.sol scripts/deploy.js scripts/interact.js hardhat.config.js

コーディング

エディタで下記のファイルを開いて内容を入力します。

contracts/HelloWorld.sol

hardhat.config.js

scripts/deploy.js

scripts/interact.js

.env

下記2点を入力します。

例を下記に示します。

なお、上記の例ではPOLYGONSCAN_API_KEYが含まれていますがこの記事の作業手順では不要です。

コントラクトのコンパイル

下記のコマンドを実行してスマートコントラクトをコンパイルします。

npx hardhat compile

実行結果を下記に示します。

Compiled 1 Solidity file successfully

コントラクトのデプロイ

下記のコマンドを実行してスマートコントラクトをデプロイします。

npx hardhat run scripts/deploy.js

実行結果を下記に示します。

Contract deployed to address: 0x3B035c975Ab7053479C012bce13523c931FD20E3

デプロイされたスマートコントラクトのアドレスを.envのCONTRACT_ADDRESSにコピー&ペーストします。

動作確認

下記のコマンドを実行してスマートコントラクトのデータを読み書きします。

npx hardhat run scripts/interact.js

実行結果を下記に示します。

The message is: Hello World!
Updating the mesaage...
The message is: Hello World!!

コントラクトへのデータの書き込みには数十分程度のとても長い時間が必要になる場合があります。何でだろう...

おわりに

最初はEthereumのテストネットにスマートコントラクトをデプロイしようとしたのですが、待てど暮らせどFaucetからetherをもらえないので痺れを切らしてMumbaiにデプロイした次第です。数カ月前にやった時はうまく行ったのですが、久々にやったら色々とつまづいたので自分の備忘のためにも手順をまとめておくことは重要だと感じました。

GitHubで編集を提案

Discussion