見出し画像

【NFT】独自コントラクトでNFTを発行してみよう:導入編

Openseaが共有コントラクトでのNFTの発行数を制限するというアナウンスがあってから、独自コントラクトでNFTを発行したい、という方が増えているようなので、このシリーズを書くことにしました!

今回が導入編となる「独自コントラクトでNFTを発行してみよう」シリーズは、NFTの発行者・保有者が適切にオーナーシップを持ってNFTを管理できるようになることをゴールとして、連載していきます!

NFTとは?

独自コントラクトの前に、NFTとは何かを簡単に理解するには、こちらの動画がわかりやすくておすすめです!

簡単に要約すると、NFTとはブロックチェーン上のスマートコントラクトという仕組みを使ってデジタル上の物を所有する仕組み、とのことです。

NFTの中身のデータ形式について

NFTのデジタル上の物を所有する仕組みは、スマートコントラクトの中で下記のように表現されています。

mapping(uint256 => address) owners;

上記は、このトークンIDはこのウォレットアドレスが保有しています、というマッピング情報を保持するコードです。

Metamaskなどのウォレットを利用したことがある方はご存知だと思うのですが、ウォレットアドレスは下記のような文字列のことです。

0x0730Ad49738206C0f5fdfB1C1f4448Ec9D2edb07 //僕の2022年用のクリエイターアドレスです!

トークンIDとは、デジタルアセットひとつひとつに割り当てられたIDのことです。例えば僕が保有しているHashmasksというNFTは、下記の画像に0番から16383番までのIDが割り当てられて、それぞれに所有者であるウォレットアドレスがマッピングされています。

画像1

共有コントラクトと独自コントラクトについて

共有コントラクトとは一個のコントラクトの中で複数のコレクションのアセットがまとめて管理されている実装パターンのことをいいます。先ほど話題に上がったOpenseaで発行したNFTの場合、複数のNFTのコレクションをまとめて一個の共有コントラクトで管理しています。

この共有コントラクトと対照となる、独自コントラクトとは一個のコントラクトの中で一個のコレクションの全てのアセットが管理されている実装パターンのことです。先ほど紹介したHashmasksでは、一個の独自コントラクトの中にはHashmasksのNFTしか管理されていません。

独自コントラクトを独自のロジックが実装されたコントラクト、と解釈することもありますが、この記事では共有コントラクトと対照の実装パターンとして独自コントラクトを整理しています。

NFTのオーナーシップ

共有コントラクトと独自コントラクトどっちがいいのか、という点については一概に判断するのが難しく、下記の観点をどのように実装しているのか、を考えていくことの方がより大事だと考えています。

・NFTのコントラクト発行者適切なオーナーシップを持っているか
・NFTのアセットに保有者が適切
なオーナーシップを持っているか
・NFTのデータに発行者・保有者が適切なオーナーシップを持っているか

コントラクト上で実装されたオーナーシップは所有の裏付けとなる概念であり、デジタル上の物を所有するNFTにおいて、とても大切な要素です。

プラットフォームが提供する共有コントラクトでは、プラットフォーム運営者のオーナーシップが介在するため、発行者・保有者が適切なオーナーシップを持った実装になっていないケースがよくあります。

独自コントラクトを利用する場合は、NFT発行者自身がプラットフォームとなるため、適切にオーナーシップを持たせることを実現しやすいです。

次の記事では、このオーナーシップの概念をより深掘りしつつ、独自コントラクトにおける適切なオーナーシップの考え方を整理していきますのでお楽しみに!!

この記事が気に入ったらサポートをしてみませんか?