ブロックチェーン入門 chapter 08

トークン管理情報について

NFTマーケットプレイスを彩るアートやゲームなどで使われるNFTのパラメータですが、 これらはコントラクトからtokenURI() という関数を使用して表示するようになっています。 OpenSeaなどに表示される画像は以下のような流れで取得されています。
実際に画像が取得されて表示されるまでの流れは以下の通りです。

NFTトークン画像表示までの流れ
図1 NFTトークン画像表示までの流れ

画像やパラメータなどのデータを、すべてブロックチェーン上に格納するとトランザクション手数料が上がってしまいます。 このため、ある資産 (トークン) のための明確な統一資源識別子 (URI) をトークンごとに設定し、 ブロックチェーン「外」からトークンに関する管理情報 (Metadata) を取得して利用します。 これらの情報は、自身のシステムやクライアントアプリ側で利用する他に、 対象の資産を外部サイト (OpenSeaなど) で取り扱う場合にも参照されることがあります。 このトークン管理情報を取り扱うためのERCや標準的な規格について、簡単に紹介します。

【目次】






ERC-721 Non-Funginable Token (NFT) におけるMetadata (メタデータ)

もっとも利用されているであろうERC-721のERC上では、以下のようなインターフェースが定義されています。

interface ERC721Metadata {
  function name() external view returns (string _name);
  function symbol() external view returns (string _symbol);
  function tokenURI(uint256 _tokenId) external view returns (string);
  }

ここから取得できるURIからJSONを取得することになります。 ただし、ERC721で規定されているJSONスキーマの情報は以下の3つのみです。

image このNFTが表すアセットを表すMIMEタイプimageのリソースを指し示すURI。 画像は、幅320〜1080ピクセル、アスペクト比1.91:1〜4:5が推奨。
description このNFTが表す資産の概要。
name このNFTが表す資産の名称。





ERC-1155 Multi Token StandardにおけるMetadata

ERC-1155では複数のタイプのトークンを管理する関係上、より拡張されたJSONスキーマが定義されています。 追加されているのは以下の3つです。

properties 任意のプロパティ。値は文字列、数値、オブジェクト、配列のいずれでもよい。
decimals トークン量を表示する小数点以下の桁数。 例えば18の場合、トークン量を1,000,000,000,000,000,000で割ってユーザー表示にすることを意味する。
localization トークン詳細情報の内容を言語によって分ける際に使用する。

propertiesは自由度が高い設定項目ですが、以下のようなデータを格納します。

ERC-1155 Metadataにおけるproperties
図2 ERC-1155 Metadataにおけるproperties

localizationは、言語ごとにuri() で取得したJSONデータの属性を上書きするようなファイルを作成しておき、 ブラウザ側の言語設定などによって言語切替が可能なようにデータを定義します。
ERC-1155 Metadataにおけるlocalization
図3 ERC-1155 Metadataにおけるlocalization

またERC20では、トークンコントラクト全体の設定であったdecimalsは、1つのコントラクトで多数のタイプの トークンを取り扱うERC-1155の性質上、コントラクトで管理する値からMetadata側で管理する値に扱いが変わっています。






ERC-4906 Metadata Update Extension

ERC-4906はmetadata本体の定義ではなく、 各NFTマーケットサイトなどでキャッシュしたメタデータを更新するかどうかを判定するためのSolidityイベント定義です。 OpenSeaなどは手動でmetadataの更新を指示することも可能ですが、 本イベントの発行を検知してmetadata部分の更新を行います。

ERC-4906 Metadata Update Extension
図4 ERC-4906 Metadata Update Extension






OpenSeaにおけるmetadata標準

メタデータ標準: https://docs.opensea.io/docs/metadata-standards
NFTオープンマーケット大手のOpenSeaでは、 ERC標準に定められていない追加のプロパティを受けつけられるようになっています。 サイトの表示に直結したいくつかの属性が存在し、 ある程度の範囲で任意に対象のトークンに対する情報表示のカスタマイズが可能です。

image アイテムの画像へのURLです。 あらゆる種類の画像 (SVGを含む。OpenSeaによってPNGにキャッシュされる) を使用でき、 IPFS URLまたはパスを使用できます。 350 x 350 の画像を使用することをお勧めします。
image_data その場で画像を生成したい場合 (非推奨) SVGの生画像データです。 imageパラメータを含まない場合のみ使用します。
external_url OpenSea上のアセットの画像の下に表示されるURLです。 ユーザーがOpenSeaを出て、あなたのサイトでアイテムを見ることができるようにします。
description 項目に関する人間が読める説明文です。 Markdownがサポートされています。
name アイテムの名前です。
attributes アイテムの属性で、アイテムのOpenSeaページで表示されます。
(下記、「図5 OpenSea独自属性とWeb画面への反映」参照)
background_color OpenSea上のアイテムの背景色です。 6文字の16進数で、プリペイドの「#」を含まない形式で指定します。 (例:FFFFFF, 66B0EF)
animation_url アイテムのマルチメディア添付ファイルのURLです。 ファイル拡張子 GLTF、GLB、WEBM、MP4、M4V、OGV、OGG に加え、 音声のみの拡張子 MP3、WAV、OGA がサポートされています。 Animation_url は HTMLページもサポートしており、 JavaScript canvasやWebGLなどを使用したリッチな体験やインタラクティブなNFTを構築できます。 スクリプトとHTMLページ内の相対パスがサポートされるようになりました。 ただし、ブラウザの拡張機能へのアクセスはサポートされていません。
youtube_url YouTubeの動画へのURLを指定します。
OpenSea独自属性とWeb画面への反映
図5 OpenSea独自属性とWeb画面への反映

コントラクトのメタデータ: https://docs.opensea.io/docs/contract-level-metadata
また、ERCの標準ではトークン単位のメタデータのみ定義されていますが、 OpenSeaに関しては「コントラクト自体のメタデータ」を管理することができるようになっています。 (コントラクト側にも関数の実装対応が必要)

OpenSea のコントラクトメタデータとWeb画面への反映
図6 OpenSea のコントラクトメタデータとWeb画面への反映





まとめ

NFTマーケットプレイスを彩るアートやゲームなどで使われるNFTの画像やデータを、 ブロックチェーン「外」からトークンに関する管理情報 (Metadata) として利用します。

  • ERC-721 Non-Funginable Token (NFT) におけるMetadata
    ERC-721で定義されているインターフェースで取得できるJSONスキーマの情報は、 image, description, nameの3つです。
  • ERC-1155 Multi Token StandardにおけるMetadata
    複数のタイプのトークンを管理するため、JSONスキーマ情報として properties, decimals, localizationが追加されます。
  • ERC-4906 Metadata Update Extension
    各NFTマーケットサイトなどでキャッシュしたメタデータを更新するかどうかを判定するための Solidityイベント定義です。
  • OpenSeaにおけるmetadata標準
    NFTオープンマーケット大手のOpenSeaでは、ERC標準に定められていない追加のプロパティを 受け付けるようになっています。
ビジネスを考えられる方々にとっては、ブロックチェーンはブラックボックスとして、 その特徴やメリット、デメリットを踏まえた上でうまく活用することに注力されるとよいかと存じます。
NTTテクノクロスでは、このようなブロックチェーンを活用したビジネスの検証サービスとして ContractGate PoC Service PUSH! をご提供しております。

ブロックチェーンを身近なものに

執筆者紹介

執筆者 兼松 和広 写真

兼松 和広(かねまつ かずひろ)

高度専門人材 / テックリード
2002年NTTテクノクロス(旧NTTソフトウェア)に入社。
さまざまなシステム開発や保守運用を担当しながら、データベースの専門家として 技術支援や研修講師を担い、数々の表彰を受賞。
2015年からブロックチェーンやweb3についての自らの知見や技術力を活用し、 多くのプロジェクトに参画。
2023年に高度専門人材として社内で任命される。
ブロックチェーンの団体であるEthereum Enterprise Alliance Japanのイーサリアム性能評価ワークショップに参加し、 ブロックチェーンのビジネス利用に必要な性能評価観点【ETHTerakoya × Blockchain EXE 】の発表等も実施。
日々、専門性を高めるべく自身を磨き続けている。

ContractGate製品についてのお問い合わせ、ブロックチェーン導入にあたってのご相談など
お気軽にお問い合わせください。

お問い合わせはこちらから

「5分でわかるシリーズ」
ホワイトペーパーのお申し込みはこちらです。

ホワイトペーパーはこちらから

トップへ