XRP Ledger Apex is back in Amsterdam

Register Now
Last updated
Edit

NFToken

NFTokenオブジェクトは、1つの非代替性トークン(NFT)を表します。単体では保存されず、他のNFTokenオブジェクトと共にNFTokenPage オブジェクトに格納されます。

(NonFungibleTokensV1_1 amendmentにより追加されました。)

NFToken JSONの例

{
    "TokenID": "000B013A95F14B0044F78A264E41713C64B5F89242540EE208C3098E00000D65",
    "URI": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf4dfuylqabf3oclgtqy55fbzdi"
}

通常のレジャーエントリとは異なり、NFTokenにはオブジェクトのタイプや現在の所有者を特定するフィールドはありません。NFTokenオブジェクトは、そのオブジェクトのタイプを暗黙的に定義し、所有者を特定するページにグループ化されます。

NFTokenID

NFTokenID, 任意, 文字列, Hash256

この複合フィールドは、トークンを一意に識別するものであり、以下のセクションから構成されます。

A) 16ビットのNFTokenのフラグや設定の識別子

B) 16ビットのNFTokenに関連する送金手数料のエンコード化された値(送金手数料が設定されている場合)

C) 160ビットの発行者のアカウント識別子

D) 32ビットの発行者が指定するNFTokenTaxon

E) 32ビットの(自動生成される)単調増加するシーケンス番号

トークンIDの内訳

16ビットのフラグ、送金手数料フィールド、32ビットのNFTokenTaxon、シーケンス番号フィールドはビッグエンディアン形式で格納されます。

NFToken フラグ

フラグは、NFTokenオブジェクトに関連するプロパティやその他のオプションです。

フラグ名フラグ値説明
lsfBurnable0x0001設定されている場合、発行者(または発行者が許可したエンティティ)がNFTokenを破棄できることを示します。オブジェクトの所有者は常に破棄することができます。
lsfOnlyXRP0x0002設定されている場合、NFTokenはXRPに対してのみオファーまたは売却できることを示します。
lsfTrustLine0x0004廃止 設定されている場合、送金手数料を保持するためのトラストラインを自動的に作成します。設定されていない場合、発行者がそのトークンのトラストラインを持っていない場合、このNFTokenをそのトークンで売買することは失敗します。fixRemoveNFTokenAutoTrustLine amendmentにより、このフラグは利用できなくなります。
lsfTransferable0x0008設定されている場合、このNFTokenは所有者から別の所有者に転送することができます。設定されていない場合、所有者は発行者との間でのみ譲渡が可能です。
lsfReservedFlag0x8000将来の使用に備えて確保されています。このフラグを設定しようとすると失敗します。

NFTokenのフラグは変更できません。NFTokenMint トランザクションでのみ設定可能で、後で変更することはできません。

この例では、lsfBurnable(0x0001), lsfOnlyXRP(0x0002), lsfTransferable(0x0008)の3つのフラグを設定しています。1+2+8 = 11、つまりビッグエンディアン形式で0x000Bです。

フラグ

送金手数料

TransferFeeには、トークンの二次販売時に発行者が請求する手数料を1/100,000単位で指定します。このフィールドの有効な値は0から50,000までです。1の値は1bpsまたは0.01%に相当し、0%から50%の間の送金手数料が設定可能です。

この値では、転送手数料は31.4bps(0.314%)に設定されます。

送金手数料

発行者の識別

NFTokenIDの3番目のセクションは、発行者のアドレスをビッグエンディアンで表現したものです。

発行者アドレス

NFTokenTaxon(分類群)

4番目のセクションは、発行者が指定するNFTokenTaxonです。

`NFTokenTaxon` の概要図

発行者は同じNFTokenTaxonを持つ複数のNFTokenを発行する可能性があります。NFTokenが複数のページにまたがるようにするため、NFTokenTaxonは第5セクションの連番を乱数発生器のシード値として乱数化されています。乱数化された値はNFTokenと共に保存されますが、乱数化されていない値が実際のNFTokenTaxonとなります。

NFTokenTaxonの値は0xBC8B858Eですが、これは発行者が指定したNFTokenTaxonの値が乱数化されたものであることに注意してください。NFTokenTaxonの実際の値は 乱数化されていない 値です。

トークン連番

5番目のセクションは、発行者がNFTokenを作成するたびに増加するシーケンス番号です。

シーケンス番号

NFTokenMint トランザクションではNFTokenIDのこのフィールドをIssuerアカウントのMintedNFTokensフィールドを基に自動的に設定します。発行者のAccountRoot オブジェクトMintedNFTokensフィールドを持っていない場合、そのフィールドは値 0 と見なされます。フィールドの値は1ずつ増加します。

URI

URIフィールドは、NFTokenに関連するデータまたはメタデータを指します。このフィールドはHTTPやHTTPSのURLである必要はありません。IPFS URIや紐づくリンク、RFC2379 "data" URL、あるいはカスタムされたのエンコード値である可能性もあります。URIの有効性はチェックされませんが、フィールドの長さは最大256バイトに制限されます。

注意: URIは変更不可能であるため、例えば、存在しないウェブサイトにリンクしていたとしても、誰もそれを更新することはできません。

NFTokenデータとメタデータの取得

機能を犠牲にしたり不必要な制限を課したりすることなくNFTokensの容量を最小にするために、XRPL NFTは任意のデータフィールドを持ちません。その代わり、データは別に管理され、NFTokenによって参照されます。URIはHashに対して不変のコンテンツへの参照を提供し、NFTokenオブジェクトに対しては任意の変更可能なデータを提供します。

URIフィールドは、従来とは異なるピアツーピア(P2P)URLを参照する際に特に有用です。例えば、惑星間ファイルシステム(IPFS)を使用してNFTokenデータやメタデータを保存する発行者は、URIフィールドを使用してIPFS上のデータを様々な方法で参照することができ、それぞれが異なるユースケースに適しています。NFTデータの保存に使用できるIPFSリンクの種類については、Best Practices for Storing NFT Data using IPFSをご覧ください。

TXTレコードの形式

TXTレコードのフォーマットは以下の通りです。

xrpl-nft-data-token-info-v1 IN TXT "https://host.example.com/api/token-info/{tokenid}"

情報を問い合わせようとしたときに、文字列{tokenid}をリクエストされたトークンのNFTokenID(64バイトの16進文字列)に置き換えてください。

実装では、TXTレコードの存在を確認し、存在すればそれらのクエリ文字列を使用する必要があります。文字列が存在しない場合、実装はデフォルトのURLを使用するように試みるべきです。ドメインが example.com であると仮定すると、デフォルトのURLは次のようになります。

https://example.com/.well-known/xrpl-nft/{tokenid}

NFTokenMintトランザクションを使用してNFTokenを作成します。NFTokenBurnトランザクションを使用してNFTokenを破棄することもできます。