見出し画像

【保存版】ImmutableXでNFTを作成してみませんか?(ImmutableX超入門)

0ー1 はじめに

こんにちは、CryptoGamesの高橋です。

クリスペの会社です。

皆さん、ゼロ知識証明を用いたImmutableXにはご興味がありますか?

私はとても興味があります。

もしより深く知ってみたい場合は、ぜひこちらもご参照ください。

ImmutableXでのNFTの作成方法については、実は公式で詳細に書かれておりました。

「START BUILDING」から

スクリーンショット 2022-01-30 11.43.13

「docs here」に行って

スクリーンショット 2022-01-30 11.44.22

こちらの「Onboarding」からが具体的な説明になってきます。

スクリーンショット 2022-01-30 11.45.44

英語ではありますが、とてもわかりやすく書かれておりますので、ぜひ読んでみてください。

0ー2 ImmutableXキーを設定しよう

イメージをつかむためにも、先にサイトを見るのも良いかもしれません。

ちなみに、流れとしましては、次のようになります

① ウォレット接続をする
② ①で接続したウォレットでサインインする
③ ImmutableXキーを設定する

0ー2ー1 ウォレット接続する

「connect wallet」でウォレット接続を行います。

スクリーンショット (792)

0ー2ー2 接続ウォレットでサインインする

下のように「sign in」でサインインします。

スクリーンショット (793)

ちなみに、こちらに書かれているように、サインのリクエストは私たちがアクションを初期化したときにだけ行われるようです。

つまり、何も変更などを行っていないときにサインのリクエストが行われた場合は、何かおかしいことはないか考える必要があると思います。

0ー2ー3 ImmutableXキーを設定する

この設定で、ImmutableXキーとウォレットがリンクするようです。

スクリーンショット (794)

利用規約に同意が出来る場合は、チェックを入れて、「Set up」を行いましょう。

スクリーンショット (795)

これで設定が完了しました。

また、「重要」として、サインリクエストはアクションの初期化を行ったときにのみ行われると書かれています。

セキュリティ上、安易に「サイン」を行わないよう、ご注意ください。

では、次の章から具体的な作成に移っていきます。

1 VScodeをインストールしましょう。

もちろん、VScodeでなくても大丈夫です。

エディタ(コードを便利に操作するもの)を利用したことがなければ、VScodeをインストールしてみてください。

2 テスト用のコントラクトを作ろう

2ー1 普通のコントラクトとは何が違うの?

まずはImmutableX用のコントラクトを作る必要があります。

実は「mintFor()」という特別な関数が必要になります。

でも大丈夫です。公式でサンプルが既に用意されています。

今回は、「Ropsten」というテストネットで作っていきます。

2ー2 公式のサンプルをクローンする

こちらのコントラクトをgit cloneしてください。

(2ー2ー6までは、普段コードを触っていない方向けの詳細です。エンジニアの方などは飛ばしてください。)

2ー2ー1 作業用のフォルダを作る

任意の場所に作業用のフォルダを作ってください。

2ー2ー2 VScodeで作業用のフォルダを指定する

VScodeを開き、下のように行って、作業用のフォルダを指定してください。

スクリーンショット 2022-01-30 11.58.15

2ー2ー3 ターミナルを開く

下のようにして、ターミナル(コマンドプロンプト)を開いてください。

スクリーンショット 2022-01-30 12.03.40

2ー2ー4 githubでレジストリをコピーする

上のサイトに行き、下のようにコピーを行います。

スクリーンショット 2022-01-30 12.06.43

2ー2ー5 git clone する

下のように、「git clone 」の後に上でコピーしたものを貼り付け、「Enter」を押します。

スクリーンショット 2022-01-30 12.09.34

2ー2ー6 確認しましょう

下のように、フォルダができれば成功です。

スクリーンショット 2022-01-30 12.13.53

2ー3 EtherscanのAPIキーを取得する。

次のステップでEtherscanのAPIキーが必要になりますので、ここで取得しましょう。

2ー3ー1 Etherscanに登録する

まずはEtherscanを登録しましょう。

今回は、こちらのフリープランで進めていきます。

https://etherscan.io/apis

スクリーンショット 2022-01-28 19.45.08

2ー3ー2 APIキーを取得する

ここの「+ Add」を選択して

スクリーンショット 2022-01-28 19.50.24

プロジェクトの名前をつけたら、

スクリーンショット 2022-01-28 19.50.53

こんな感じで取得できました。

スクリーンショット 2022-01-28 19.51.10

こちらは外に漏れたら、勝手に使われてしまいますので、厳重に保管してください。

2ー4 環境変数を設定する

実際に行く前に、下を必ずお読みください。

注意
「.env」の扱いには十分注意してください。
特に、あまりプログラミングに慣れていない方などは、例えばテスト用のアカウントの秘密鍵で実施するなど、十分に注意してください。
(私は以下、テスト用のアカウントで実施しています。)

2ー4−1 .envファイルを作る

「imx-contracts」 の中にある「.env.example」をコピーして「.env」という名前のファイルを作成します。

スクリーンショット 2022-01-30 12.26.40

2ー4ー2 環境変数を設定する

自分が作りたいコントラクト名など、下の5つを環境変数として、入れていきます。

①コントラクトの所有者アドレス
⇨ CONTRACT_OWNER_ADDRESS
②コントラクトの名前
⇨ CONTRACT_NAME
③コントラクトのシンボル名
⇨ CONTRACT_SYMBOL
④EtherscanのAPIキー(上で取得)
⇨ ETHERSCAN_API_KEY
⑤秘密鍵(厳重に扱ってください!)
⇨ DEPLOYER_ROPSTEN_PRIVATE_KEY (MAINNETも)

画像15

2ー5 テスト用のEthe(Ropsten)を取得する

https://faucet.ropsten.be/

上のサイトなどから、テスト用のEtherが取得できます。

スクリーンショット (804)

取得してみてください。

2ー6 コントラクトをデプロイしよう

2ー6ー1 yarn add を行う

次のコマンドで、依存関係(必要となるもの一式)をインストールしてください。

yarn add @imtbl/imx-contracts

スクリーンショット 2022-01-30 12.48.42

2ー6ー2 コントラクトをデプロイする

下のように、「imx-contracts」フォルダに行ってから

cd imx-contracts  

下のように、デプロイを行います。

yarn hardhat run deploy/asset.ts --network ropsten

すると、次のようにコントラクトがデプロイされました。

(この時点でエラーが出た場合は、「.envファイル」の書き方を見直してみましょう。)

スクリーンショット 2022-01-30 13.06.28

そして、コントラクトをデプロイするから5分待ってと表示されます。

2ー6ー3 エラーが出ますが、心配しないで

待っていると、こんな風にエラーが出てきます。

スクリーンショット 2022-01-30 13.13.41

でも読んでみると、「すでに検証されているから」と出ました。

よく考えると、このImmutableXのコントラクトは既にたくさんの方が同じように作成しているはずです。

そのため、もう検証済みだよというエラーが出たようです。

2ー6ー4 Etherscanで見てみよう

念の為、Etherscanで見てみましょう。

「Ropsten」になりますのでご注意ください。

https://ropsten.etherscan.io/

このようにデプロイされたコントラクトを検索すると。

スクリーンショット 2022-01-30 13.19.36

このように検証済みのコントラクトができたことがわかりました。

画像44

3 コントラクトを登録する

では、コントラクトができましたので、これをImmutableXに登録していきましょう。

3ー1 事前準備を行う。

3ー1ー1 git cloneを行う

第2章とは別の場所に次のレポジトリをgit cloneしてみましょう。(私は一つ上の階層にしました。)

やり方の詳細につきましては、2ー2をご参考ください。

git clone git@github.com:immutable/imx-examples.git

スクリーンショット 2022-01-30 14.13.24

3ー1ー2 「.env」ファイルを作り、環境変数を入れる

注意
「.env」の扱いには十分注意してください。
特に、あまりプログラミングに慣れていない方などは、例えばテスト用のアカウントの秘密鍵で実施するなど、十分に注意してください。
(私は以下、テスト用のアカウントで実施しています。)

やり方は2ー4と同様です。

「.env.example」をコピーして、「.env」ファイルを作り、今回はPrivate Key(秘密鍵)とコントラクトアドレスを入れます。

スクリーンショット 2022-01-30 14.19.01

3ー1ー3 npm installを行う。

「imx-examples」フォルダに移動して、次のコマンドを実行します。

npm install 

スクリーンショット 2022-01-30 14.24.46

3ー2 ユーザー登録を行おう

では、次に、こちらのコマンドでユーザー登録を行います。

npm run onboarding:user-registration

スクリーンショット 2022-01-30 14.29.37

私は既に作成済みのため、「User already exists」と出ますが、このように、アカウントができました。

3ー3 プロジェクトを作成する

次はプロジェクトを作成します。

まずは、「2-create-project.ts」の下の箇所にプロジェクト名などを入れていきます。

スクリーンショット 2022-01-30 14.36.40

できましたら、次のコマンドを実行します。

npm run onboarding:create-project

スクリーンショット 2022-01-30 14.41.10

プロジェクトができ、プロジェクトIDも振られました。

3ー4 コレクションを追加する

では次に、できたプロジェクトにコレクションを追加していきます。

一つのプロジェクトにコレクションは複数作成することができます。

3ー4ー1 プロジェクトIDを設定する

まずは「.env」ファイルに先ほどできたプロジェクトIDを設定しましょう。

スクリーンショット 2022-01-30 14.49.33

3ー4ー2 コレクションの情報を設定する

こちらにコレクションの情報を入れていきます。

スクリーンショット 2022-01-30 14.45.34

「metadata_api_url」はとても大事な情報ですが、ImmutableXに特有のものではないので詳細は割愛します。

スクリーンショット 2022-01-30 14.55.16

ざっくりと、このようにダブルクォーテーション(")で区切られて値が格納されています。(JSON形式)

URLの末尾の数値が変わると中の情報も変わります。

今回はテストとして、OpenSeaのメタデータを用います。

https://opensea-creatures-api.herokuapp.com/api/creature

スクリーンショット 2022-01-30 16.06.31

他にも入れて、上のようになりました。

設定が完了しましたので、次のコマンドを実行します。

npm run onboarding:create-collection

スクリーンショット 2022-01-30 16.11.44

これでコレクションが追加されました。

3ー5 メタデータのスキーマ(構成)を追加する

今回こちらは省略しますが、ユーザーが検索する際に非常に役に立ちます。

スクリーンショット 2022-01-30 16.28.13

下の場所に追加していくことになります。

スクリーンショット 2022-01-30 16.30.41

なお、この部分につきましては、記事を別に作ろうと思います。

今回は、特に内容は変えずに、次のコマンドを実行します。

npm run onboarding:add-metadata-schema

スクリーンショット 2022-01-30 16.33.44

これでメタデータのスキーマも追加できました。

4 ミントを行おう

4ー1 ミント情報を設定する

まずはミントの情報を入力しましょう。

「.env」ファイルに次のように入力していきましょう。

スクリーンショット 2022-01-30 16.44.29

4ー2 ミントを実行しよう

設定ができましたら、次のコマンドを実行しましょう。

npm run bulk-mint -- -n 20 -w <YOUR_WALLET_ADDRESS>

スクリーンショット 2022-01-30 16.48.48

これで指定したウォレットに指定した番号分、ミントができました。

5 ImmutableXのテストネットを見てみよう

ImmutableXのテストネットを見てみましょう。

「Inventory」を見てみると、このようにNFTが出来ていました!

スクリーンショット (796)

6 マーケットプレイスに展示しよう

では、値段をつけて、マーケットプレイスに展示しましょう。

売りたいものを選んで、「List for sale」

スクリーンショット (797)

どの通貨でいくらで売るかを記載して、「Confirm」

スクリーンショット (798)

同様の手順でいくつか実施を行い、マーケットプレイスを確認すると、このように、展示されていました。

スクリーンショット (801)

いかがでしたでしょうか。

今回の記事はあくまでも入門編になります。

公式のドキュメントは英語ですが、とても大事なことがたくさん書かれていますので、よかったらそちらも見てみてください。

では、今回は以上です。

最後までお読みいただきありがとうございました。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊