紹介

概要

Token Metadataプログラムは、SolanaブロックチェーンでNFTやFungible アセットを扱う際の基盤となるプログラムです。この概要では、このプログラムが何を行い、その様々な機能を高レベルでどのように活用できるかを説明します。

Please note that certain Token Metadata instructions will require protocol fees. Please review the Protocol Fees page for up-to-date information.

プロトコル手数料

インストラクションSolana
Create0.01 SOL

はじめに

お好みの言語またはライブラリを選択し、Solanaでデジタルアセットの開発を始めましょう。

APIリファレンス

何か特定のものをお探しですか?APIリファレンスをご覧になり、回答を見つけてください。

紹介

Token Metadataプログラムは、SolanaブロックチェーンでNFTを扱う際に最も重要なプログラムの1つです。その主な目標は、SolanaのFungibleまたは非Fungible トークンに追加データを添付することです。

これは、Mintアカウントのアドレスから_派生_されるProgram Derived Addresses (PDA) を使用して実現されます。SolanaのTokenプログラムに馴染みがない場合、_Mintアカウント_はトークンのグローバル情報を保存し、_トークンアカウント_はウォレットとMintアカウントの関係を保存する責任があります。

Mintアカウントは現在の供給量などいくつかのデータ属性を含んでいますが、アプリやマーケットプレイスが理解できる標準化されたデータを注入する機能は提供していません。

これがToken MetadataプログラムがPDAを介してMintアカウントに付加されるMetadataアカウントを提供する理由です。

そのMetadataアカウントは、エコシステム全体で使用できる多くの貴重な情報を保持しています。例えば、トークンの作成者のリストを維持します。各作成者にはVerified属性があり、Trueの場合、そのトークンがその作成者によって署名されたことを保証します。各作成者にはShare属性もあり、マーケットプレイスがロイヤルティを配分するために使用できます。

Mintアカウントにより多くのデータを付加することで、Token Metadataプログラムは通常のオンチェーントークンをデジタルアセットにすることができます

JSON標準

Metadataアカウントの重要な属性の1つは、オフチェーンのJSONファイルを指すURI属性です。これは、オンチェーンデータの保存に関わる費用の制約を受けることなく、安全に追加のデータを提供するために使用されます。そのJSONファイルは、誰でもトークンの有用な情報を見つけるために使用できる特定の標準に従います。

なお、このJSONファイルは、更新できないことを保証するためにArweaveなどの永続ストレージソリューションを使用して保存できます。さらに、MetadataアカウントのIs Mutable属性を使用してそれを不変にし、したがってURI属性—およびNameCreatorsなどの他の属性—が変更されることを禁止できます。この組み合わせを使用することで、オフチェーンJSONファイルの不変性を保証できます。

NFTs

あなたは疑問に思うかもしれません:これはNFTと何の関係があるのでしょうか?実際、NFTは非Fungibleな特殊なトークンです。

より正確に言うと、SolanaのNFTは以下の特性を持つMintアカウントです:

  • 供給量が1である、つまり流通しているトークンは1つだけです。
  • 小数点以下が0である、つまり0.5トークンのようなものは存在できません。
  • ミント権限がない、つまり誰も追加のトークンをミントできません。

最終的に得られるのは、同じ種類のものと交換できないトークンであり、これが非Fungibleトークン(NFT)の定義です。

この特殊でありながら人気のあるケースでは、Metadataアカウントの目標は、そのNFTの実際のデータを提供して有用なデジタルアセットにすることです。

さらに、Token Metadataプログラムは、NFT専用のMaster Editionアカウントと呼ばれる別のアカウントを提供します。このアカウントもMintアカウントから派生されるPDAです。

このアカウントを作成する前に、Token Metadataプログラムは上記の非Fungibleトークンの特殊な特性が満たされていることを確認します。ただし、Mint Authorityを無効にする代わりに、Mint AuthorityとFreeze AuthorityをMaster Edition PDAに転送し、Token Metadataプログラムを通さずに誰もトークンをミントまたはフリーズできないようにすることは注目に値します。なぜこの決定が行われたかについてはFAQで詳しく読むことができます

したがって、Master Editionアカウントの存在は、そのMintアカウントの非Fungibility性の証明として機能します

エディションの印刷

非Fungibility性の証拠であることに加えて、Master EditionアカウントはユーザーがNFTの1つまたは複数のコピーを印刷することも可能にします。

この機能は、1/1 NFTの複数のコピーをオーディエンスに提供したいクリエイターにとって特に有用です。

Master Editionアカウントには、この方法で印刷できるNFTの最大数を決定するオプションのMax Supply属性が含まれています。0に設定すると、印刷は無効になります。Noneに設定すると、無制限の数のコピーを印刷できます。

Master Edition NFT(別名オリジナルNFT)は、コピー(別名プリントNFT)を印刷するために使用できるマスターレコードとして機能します。

各プリントNFTは、独自のMintアカウントと、オリジナルNFTからデータがコピーされた独自のMetadataアカウントで構成されています。ただし、MintアカウントにMaster Editionアカウントを付加する代わりに、プリントNFTはEditionアカウントと呼ばれるさらに別のPDAアカウントを使用します。このアカウントは、エディション番号とそれが由来する親Master Editionを追跡します。

Master EditionアカウントとEditionアカウントは、PDAで同じシードを共有することに注意してください。これは、NFTが一方または他方になることはできるが、両方にはなれないことを意味します。

半Fungibleトークン

NFTがToken Metadataプログラムの最大のユースケースですが、このプログラムはFungibleトークンや、いわゆる半Fungibleトークンまたは Fungibleアセットとも連動することに注意することが重要です。

結局のところ、Metadataアカウントは、トークンのFungibility性に関係なく、トークンにデータを付加することに役立ちます。ただし、オフチェーンJSONファイルの標準は、それらのニーズに対応するために若干異なります。

トークンのFungibility性を安全に識別し、したがって使用すべき標準を決定するために、Metadataアカウントはその情報をToken Standard属性で追跡します。この属性はプログラムによって自動的に計算され、手動で更新することはできません。以下の値を取ることができます。

  • NonFungible: MintアカウントはMaster Editionアカウントに関連付けられており、したがって非Fungibleです。これは典型的なNFT標準です。
  • NonFungibleEdition: これはNonFungibleと同じですが、NFTはオリジナルNFTから印刷されたものであり、したがってMaster EditionアカウントではなくEditionアカウントに関連付けられています。
  • FungibleAsset: MintアカウントはFungibleですが、小数点以下は0です。小数点以下が0であることは、供給量が1に限定されていないアセットとしてトークンを扱うことができることを意味します。例えば、Fungibleアセットはゲーム業界で「木材」や「鉄」などのリソースを保存するために使用できます。
  • Fungible: MintアカウントはFungibleであり、小数点以下が1以上です。これは分散型通貨として使用されるトークンである可能性が高いでしょう。
  • ProgrammableNonFungible: カスタム認可ルールを強制するために常時フリーズされる特殊なNonFungibleトークンです。詳細については次のセクションをご覧ください。

これらの標準についてはこちらで詳しく読むことができます

プログラマブルNFT

Token MetadataプログラムはSolana Tokenプログラムの上に構築されているため、誰でもToken Metadataプログラムを通さずにトークン(Fungibleかどうかに関係なく)を転送できます。これはプログラムの構成可能性にとって素晴らしいことですが、Token Metadataプログラムが付加されているトークンに対してルールを強制できないことも意味します。

これが問題になる理由の良い例は、Token Metadataがセカンダリセールロイヤルティを強制できないことです。MetadataアカウントにはSeller Fee Basis Points属性がありますが、これは純粋に指標的であり、誰でもロイヤルティを尊重しないマーケットプレイスを作成できました—これは実際に起こりました。

プログラマブルNFTは、この問題を解決するために導入されました。これらは、基礎となるトークンアカウントを常時フリーズ状態に保つ新しい_オプトイン_トークン標準です。そうすることで、Token Metadataプログラムを通さずに誰もプログラマブルNFTを転送、ロック、またはバーンできません。

次に、Token Metadataプログラムによって強制されるカスタムオペレーション固有の認可ルールを定義するのはクリエイター次第です。これらは、Metadataアカウントに付加される特別なRuleSetアカウントで定義されます。そのようなRuleSetの例は、ロイヤルティを尊重するプログラムアドレスの許可リストです。RuleSetは、Token Auth Rulesと呼ばれる新しいMetaplexプログラムの一部です。

プログラマブルNFTについてはこちらで詳しく読むことができます

その他多数

これはToken Metadataプログラムとそれが提供するものの良い概要を提供しますが、それでもやれることはまだたくさんあります。

このドキュメンテーションの他のページは、さらに詳しくドキュメント化し、重要な機能をそれぞれ個別のページで説明することを目的としています。