Astar入門 「Shibuya」ネットワークでコントラクトを作ってみよう(「BUILDERS WEEKEND」からの内容)
こんにちは、CryptoGamesのユウキです。
こちらの「BUILDERS WEEKEND」というイベントに参加しました。
本日は、そこで説明のありました、Shidenのテストネットワーク「Shibuya」によるコントラクトの作成を紹介いたします。
1. Shibuyaネットワークの追加
では、まずはメタマスクに「Shibuya」ネットワークを入れていきます。
メタマスクから「ネットワークを追加」
「ネットワークを手動で追加」を選択
ここで、下のように入力して行きます。
■ネットワーク名
Shibuya Testnet
■新しいRPC URL
https://evm.shibuya.astar.network
■チェーンID
81
■通貨記号
SBY
■ブロックエクスプローラーのURL(任意)
https://blockscout.com/shibuya
私の場合は、すでに入っているのでエラーになっています。
こちらを入力後、「保存」を入力して、完了です。
なお、このあたりの入力項目は、こちらの公式から確認ができます。
https://docs.astar.network/docs/quickstart/endpoints
https://docs.astar.network/docs/quickstart/explorers
2. SBYトークンを取得する
では、次に、SBYトークンを取得しましょう。
下から、AstarのDiscordに入って行きます。
「TESTNET」の「shibuya-faucet」から入り、「/drip」と入力
すると、下のようになるので、選択
「network」に「Shibuya」と入力し、「address」に自分のウォレットアドレスを入れ、Enterを押します。
すると、すぐに下のような画面になり、10SBYが入力したアドレスに送られます。
少し待つと、SBYがウォレットアドレスに入ります。
3. Remixでデフォルトのコントラクトを作成する
では、Remixというツールを使って、コントラクトを作成していきましょう。
こちらから入って行きます。
まずは、デフォルトで用意されている、「Storage.sol」というコントラクトを作ってみます。
下のように、「store」という関数で、入力する値を設定し、「retrieve」という関数で、設定した値を取り出すコントラクトです。
下のように、「Compile」を選択します。
設定しているバージョンが7.0以上9.0未満なので、今回はデフォルトの8.7を使用します。
では、デプロイをするために、下のように「Injected Provider」を選択します。
ここで、必ず、下のように81(ShibuyaのchainID)となっていることを確認してください。
なっていない場合は、メタマスクのネットワークを変更してください。
「Deploy」を選択し、「確認」を押します。
この際、Shibuyaのテストネットになっていることを再度ご確認ください。
しばらくすると、下のようになり、コントラクトがデプロイできました。
4. できたコントラクトを動かしてみる
では、実際に動かしてみましょう。
任意の値を下のように入れて、「store」を押します。
下のように、トランザクションが通ったら、「retrieve」で今入力した値が取り出せることを確認してみてください。
このようになれば成功です。
5. チェーン上にデプロイされていることを確認する
では、「Shibuya」テストネット上にデプロイされていることを確認してみましょう。
まずは、下のように、今回できたコントラクトアドレスをコピーします。
次に、「Shibuya」のblockscoutに行ってみます。
先ほどコピーしたコントラクトアドレスで検索すると、下のように見つかりました。
下に行ってみると、確かに、コントラクトが作られ、実行されていることが確認できました。
6. OpenZeppelinを用いたコントラクトを作ってみよう
では、OpenZeppelinを継承したコントラクトを作ってみましょう。
下のように、「contracts」フォルダからファイルを追加します。
今回は、下のコードを貼り付けます。
こちらは、「BUILDERS WEEKEND」で実際に使われたテストコードです。
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol";
contract TestErc20 is ERC20PresetMinterPauser{
constructor(string memory name, string memory symbol) ERC20PresetMinterPauser(name, symbol){}
}
ファイル名は、下のように、「TestErc20.sol」としています。
今回は詳細は省きますが、「is ERC20PresetMinterPauser」の部分で「継承」を行っています。
では、下のように、先ほどと同様にcompileを行います。
デプロイ前に、下のように、「Injected Provider」を選択し、81となっていることを確認します。
今回は、初期値として、「Name」と「Symbol」の2つを渡すので、こちらを選択します。
すると、入力箇所が現れるので、任意の名前とシンボルを入れて、「transact」
すると、下のようにコントラクトがデプロイされました。
7. できたコントラクトを動かしてみよう
では、このコントラクトを動かしてみましょう。
ERC20なので、ミントをすることができます。
下のボタンを選択
「to」にミント先のウォレットアドレス、「amount」にミント量を入れて、「transact」
トランザクションが完了したら、「totalSupply」を確認します。
下のように、ミント量が確認できれば成功です。
その他、「balanceOf」からミントしたウォレットアドレスを入れ、そのアドレスに入っているかも確認することができます。
8. メタマスクにコントラクトを入れてみよう
では、今作ったコントラクトをメタマスクに入れてみましょう。
まずは、下のようにコントラクトアドレスをコピーします。
メタマスクの「アセット」から「トークンをインポート」
コントラクトアドレスを入れると、シンボルと小数桁数が自動で入ります。
「カスタムトークンを追加」を選択
「トークンをインポート」を選択
すると、下のように、メタマスクで作ったトークンを確認することができました。
今回は以上です。
最後までありがとうございました。
Discussion