サイオステクノロジーPS/SLの佐々木寛太です。
今回は日本でバズワード的にはやっているNFTについて解説したいと思います。
NFTと聞くとブロックチェーン関係の何かというざっくりとした認識の方も多いと思いますので、現行の画像データとNFTの違いを理解する手助けになればと思います。
NFTの辞書的な説明
NFTとはNon Fungible Tokenの略で日本語では代替不可能なトークンという意味を持ちます。
これによりNFTとなった画像は複製できないただ一つの画像としてOpen SeaといったNFTマーケットプレイスで価値を持つようになっています。
例えば今財布に入っている1000円札とお釣りでもらった1000円札は同じものとして扱うことができます。これはFungible Tokenです。
一方同じコンサートのチケットでも1枚1枚座席が決まっておりAさんが持っているものとBさんが持っているものを同等に扱うことはできません。これが Non Fungible Tokenです。
画像データに固有のIDをブロックチェーン上で割り当てることにより画像データに一意性と所有権を持たせることができ、これをNFTと呼んでいます。
(ここでは画像データを例に挙げていますが音声データや動画データであっても同様にNFTにすることができます)
NFTの仕組み
ではどのようにしてNFTを作成するのかを解説していきます。
①ユーザーが画像を登録する
②先ほど登録した画像のURLを含めたMetadata作成しIPFSに登録する
③所有者となるユーザーのWalletAddress meta dataのURL tokenIdをブロックチェーンに登録する
手順としては上記3ステップでNFTを作成します。
詳細な解説
まずユーザーが画像をクラウド上のファイルサーバーなどにアップロードします。
アップロードした画像のURI、画像タイトル、説明などの情報を持つメタ情報をjson形式で記録しIPFSというP2Pの分散型ファイルシステムにアップロードします。
ここでポイントとなるのが画像データはEthereumとは異なるサーバー上に保存されている点です。
これはIPFSに一度にアップロードできる容量に制限があるため大容量の画像データはアップロードできなかったり、Ethereumのチェーン上に保存するとトランザクション手数料(ガス代)がかかってしまうため手数料回避のため別のサーバーに保存するのが一般的です。
ただし画像データなどもEthereum上に保存する設計もあり「フルオンチェーンNFT」と呼ばれています。
最後にEthereumにNFTを発行します。
発行する際にはIPFSのURI、所有者情報(例: MetamaskのWalletAddress)、TokenIdの三つをブロックチェーンに保存しています。
このようにすることでNFTのID(TokenID)から所有者情報とメタデータへの参照を取得することができ、メタデータから実際の画像データのURIを取得することができ、所有者情報と実際の画像がリンクされていることがわかります。
NFTはこのようにして画像の所有権を表現しています。
終わりに
最後まで読んでいただきありがとうございます。
今回はNFTの仕組みをざっくりと紹介させていただきました。
次回以降はERC721やERC1155,ERC2981といったNFTを具体的に実装していく上での規格やOpenZeppelinというSolidityフレームワークを使ったNFTを発行するスマートコントラクトの実装方法などを解説していく予定です。
まだ自分も勉強中のため何か間違い等ございましたらコメントで教えていただけると幸いです。