lesson-1_SolanaのNFTは何が違うのか?
🐸 Metaplex について
Metaplex はNFTの作成とミント、オークション、Webアプリケーションにウォレット連携を実装するためのフレームワークを提供する、Solanaを利用したプロトコルを指します。
Metaplexを使用することで、Solana上で簡単にNFTを発行できます。
Ethereumと比較してみましょう!
Ethereumでは、NFTを作成するために、以下を実行します。
1. 独自のカスタムOpenZeppelin ERC-721 NFTコントラクトを作成する
2. コントラクトをイーサリアムネットワーク上にデプロイする
3. NFTをミントしたい場合は、カスタムコントラクトでミント関数を呼び出す
一方Metaplexは、コントラクトを作成する必要はありません。NFTコレクションを構築できる独自の標準NFTコントラクトをすでに持っています。
自分でコントラクトを書くこともできますが、Solanaが並列処理を用いているため、難易度は高く非常に複雑です。
※「5人が同時にNFTを作成し、残りが2人だけの場合、誰がそれを取得するのか」などのケースを考慮する必要があります。
イーサリアムでは、これは簡単です。すべて同期的で直列的ですので、上記の問題を検討する必要はありません。
ですが、Solanaのセールスポイントもまた並列処理を実行できることです。これにより処理は高速になります。しかし、並列処理のためにコードは複雑になります。
Metaplexのようなツールは非常に便利です。彼らは私たちのエッジケースを処理し、私たちがインタラクティブなスマートコントラクトを提供します。
🍭 Candy Machine について
本プロジェクト全体を通して、「Candy Machine」を中心に説明します。 Candy Machineは、Metaplex CLIを利用してNFTを生成し、画像と関連するメタデータをNFTトークンにリンクし、「フェアなオークション」を設定するツールです。
Candy Machineの非常に優れている特徴の1つとして、販売するNFTがなくなるとユーザーの資金を受け取らないことが挙げられます。
大したことないと思うかもしれませんが、並列処理を採用するSolanaでこれを実現することは難しいです。たとえば、次の例を見てみましょう。
1. 1つのNFTが残っています。
2. 人物Aと人物Bが同時にミントをクリックします。
3. 並行して、スマートコントラクトは、個人Aと個人BがNFTの支払いに必要な資金を持っているかどうかをチェックします。またミントできるNFTが残っているかどうかもチェックします。
4. プログラムは、NFTの支払いのために、個人Aのアカウントと個人Bのアカウントから資金を引き出します。
5. プログラムは、たまたま最初に並行して処理された人物BのNFTを作成します。人物Aは、「NFTはもうありません」のようなエラーを受け取ります。
6. AさんはNFTを受け取ることができず、お金も失いました。Bさんは幸せです。
これは、並列コンピューティングにおける、典型的な課題です。解決策としては ミューテックス と アトミックトランザクションの使用が挙げられます。
これらは実装がかなり複雑です。
Metaplex の Candy Machine は私たちのためにこのようなものを実装しています。
Candy Machineにはほかにもいく つかの機能がありますが、これについては後で説明します。
🙋♂️ 質問する
ここまでの作業で何かわからないことがある場合は、Discordの#solana
で質問をしてください。
次のレッスンに進んで、環境構築を行いましょう 🎉