DynamicNFTってなに?

サイオステクノロジーの佐々木です。

今までSIOS TECH.LABではオーソドックスなNFT仕組みやの作り方、規格の紹介からフルオンチェーンのNFTの作り方を紹介してきました。

今回はDynamicNFTというNFTの作り方を説明します。

DynamicNFTとは

DynamicNFTとはブロックチェーン内外のデータを使用してメタデータを変化させることでNFTの画像を変更することができます。

しかしNFTのmetadataを保存しているIPFSは基本的に改変ができないためmetadataを変更することができません。ではどうするか。

DynamicNFTの規格について

現在(2023/08/14)DynamicNFTについて厳密に規格は決まっていません。

いくつかDynamicNFTを実装する指針は出ていますので紹介します。

①mintするタイミングで複数パターンのmetadataと対応する画像をuploadしスマートコントラクトでtokenURIを取得する際にどのmetadataを見に行くかを確定させる

②フルオンチェーンのNFTを利用してSVGモジュールを作成する際に動的な値を渡すことでmetadataの情報を変化させる

③tokenURIを取得する際に返されるURIをAPIのエンドポイントにすることで、API側でどのようなmetadataを返すかというロジックをすべて持つことができる

それぞれの方法の特徴

①の方法は最もオーソドックスな実装方法になっているため様々な事例や実装例が紹介されています。一方でこの方法だとmintする際にmetadataをuploadする必要があるため新しいパターンのNFTを追加しようと思った際に変更することが難しいです。

②の方法は以前紹介したフルオンチェーンのNFTを使用する方法です。この方法はSVGを作成するスマートコントラクトの関数に外部データを渡すことでSVGの画像を動的にさせることができます。この方法は非中央集権的に画像を変化させることができるので理想的な方法ではありますが、ブロックチェーンの最大容量をクリアする必要があるのと、プログラマブルな画像である必要があるという制約があります。

③の方法は少し邪道かもしれませんが、metadataをIPFSに保存したりSVGをエンコードしてmetadataとして扱うのではなく、metadataのURIをAPIのエンドポイントとします。
ここで設定しているAPIはmetadataを都度生成するAPIになっており、様々なデータを考慮して最適なmetadataを生成するようにします。
このようにすることでmetadataの内容を制約なく動的に作成することができます。

ただしこの方法はAPIが中央集権的な管理になってしまうため、APIサーバーがダウンしたりそもそもmetadataを返すAPIがサーバーの管理者によって削除されてしまったら、NFTの持ち主やマーケットプレイスは画像や動画データにアクセスする手段を失ってしまうこととなり、web3.0の思想に反する設計になるとも言えます。

①~③のNFTを私も作成したのですが、現在OpenSeaではどのパターンでも画像を表示できることを確認しました。

各実装方針のイメージ

※省略している点はいくつかあり、これはあくまでも簡易的なイメージになります。

またスマートコントラクトがweb2.0の世界にあるデータを取得するためにはOracleを使用する必要があります。

Oracleを提供している最も有名なサービスの一つに、Chainlinkというものがあります。

本記事では詳細な使用方法は説明しません(別記事でやります)が興味のある方はリンクを張っておくので確認してみてください。

DynamicNFTは何に使われているのか

以下にいくつかのUseCaseを示します。

  • ゲームの世界で自分の所有しているキャラクターのステータスが一定以上になったら、キャラクターが変化する
  • 不動産など実世界の資産に対して築年数、市場価値、メンテナンス履歴を記録したものをトークン化する
  • Daoコミュニティの貢献度によって、会員証(NFT)のグレードが進化する

終わりに

今回はDynamicNFTとはというところから、実装方針、UseCaseまで紹介しました。

まだ統一された実装規格も決まっておらずまたNFTなのに動的に変化するという違和感もありますが、一方でNFTでは表現することができなかったユーザー体験を所有権という概念を持たせながら実現することができるものなので、今後の動向を追っていきたいと思います。

参考資料

NFTの仕組み

NFTの実装方法

フルオンチェーンNFTの実装方法

アイキャッチ画像 著作者:Freepik

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です