メインコンテンツまでスキップ

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で質問をしてください。


次のレッスンに進んで、環境構築を行いましょう 🎉