🌠

Astar入門 「Shibuya」ネットワークでコントラクトを作ってみよう(「BUILDERS WEEKEND」からの内容)

2022/12/18に公開

こんにちは、CryptoGamesのユウキです。

こちらの「BUILDERS WEEKEND」というイベントに参加しました。
https://twitter.com/BuildersWeekend/status/1604086877585575936

本日は、そこで説明のありました、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に入って行きます。


https://docs.astar.network/

「TESTNET」の「shibuya-faucet」から入り、「/drip」と入力

すると、下のようになるので、選択

「network」に「Shibuya」と入力し、「address」に自分のウォレットアドレスを入れ、Enterを押します。

すると、すぐに下のような画面になり、10SBYが入力したアドレスに送られます。

少し待つと、SBYがウォレットアドレスに入ります。

3. Remixでデフォルトのコントラクトを作成する

では、Remixというツールを使って、コントラクトを作成していきましょう。
こちらから入って行きます。

https://remix.ethereum.org

まずは、デフォルトで用意されている、「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に行ってみます。

https://blockscout.com/shibuya

先ほどコピーしたコントラクトアドレスで検索すると、下のように見つかりました。

下に行ってみると、確かに、コントラクトが作られ、実行されていることが確認できました。

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