NFTokenMint
NFTokenMint
トランザクションは非代替性トークンを作成し、NFTokenMinter
に紐付くNFTokenPageオブジェクトにNFTokenオブジェクトとして追加します。このトランザクションはNFTokenMinter
にとって、不変と定義されているトークンフィールド(例えばFlags
)を設定することができる唯一の方法です。
(NonFungibleTokensV1_1 amendmentにより追加されました)
NFTokenMint JSONの例
{ "TransactionType": "NFTokenMint", "Account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "TransferFee": 314, "NFTokenTaxon": 0, "Flags": 8, "Fee": "10", "URI": "697066733A2F2F62616679626569676479727A74357366703775646D37687537367568377932366E6634646675796C71616266336F636C67747179353566627A6469", "Memos": [ { "Memo": { "MemoType": "687474703A2F2F6578616D706C652E636F6D2F6D656D6F2F67656E65726963", "MemoData": "72656E74" } } ] }
NFTokenMint フィールド
共通フィールドに加えて、NFTokenMintトランザクションは以下のフィールドを使用します。
フィールド | JSONの型 | 内部の型 | 説明 |
---|---|---|---|
NFTokenTaxon | 数値 | UInt32 | トークンに関連する分類群。Taxonは通常、トークンの発行者が選択した値です。1つのTaxonは複数のトークンに使用することができます。0xFFFFFFFF より大きいTaxonの識別子は使用できません。 |
Issuer | 文字列 | AccountID | (省略可) 送信元アカウントが他のアカウントの代理としてトークンを発行する場合における、トークンの発行者。トランザクションを送信するアカウントが NFToken の発行者である場合、このフィールドは指定してはいけません。指定される場合、発行者のAccountRootオブジェクトには NFTokenMinter フィールドが、このトランザクションの送信者(このトランザクションのAccount フィールド)に設定されていなければなりません。 |
TransferFee | 数値 | UInt16 | (省略可) この値は、NFToken の二次販売が許可されている場合に、発行者が徴収する手数料を指定します。このフィールドの有効な値は0から50000の間で、0.001刻みで0.00%から50.00%の送金手数料を設定することができます。このフィールドが設定されている場合、トランザクションはtfTransferable フラグ を有効にしなければなりません。 |
URI | 文字列 | Blob | (省略可) 最大256バイトの任意のデータ。JSONでは、16進数の文字列としてエンコードされる必要があります。URIを16進数に変換するために、xrpl.convertStringToHex ユーティリティを使用することができます。これは、NFTに関連するデータまたはメタデータを指し示すURIであることを想定しています。コンテンツは、HTTPまたはHTTPS URL、IPFS URI、マグネットリンク、RFC2379 "data" URL としてエンコードされた即値データ、あるいは発行者固有のエンコーディングにデコードされていることがあります。URIの有効性はチェックされません。 |
Amount | Currency Amount | Amount | (Optional) Indicates the amount expected or offered for the corresponding NFToken . The amount must be non-zero, except where this is an offer to sell and the asset is XRP; then, it is legal to specify an amount of zero, which means that the current owner of the token is giving it away, gratis, either to anyone at all, or to the account identified by the Destination field. |
Expiration | Number | UInt32 | (Optional) Time after which the offer is no longer active, in seconds since the Ripple Epoch. Results in an error if the Amount field is not specified. |
Destination | String | AccountID | (Optional) If present, indicates that this offer may only be accepted by the specified account. Attempts by other accounts to accept this offer MUST fail. Results in an error if the Amount field is not specified. |
NFTokenMintのフラグ
NFTokenMint型のトランザクションでは、以下のようにFlags
フィールドに追加の値を設定することが可能です。
フラグ名 | 16進数値 | 整数値 | 説明 |
---|---|---|---|
tfBurnable | 0x00000001 | 1 | 発行者(または発行者が許可した者)がNFToken を破棄できるようにします。(NFToken の所有者は常に破棄することができます)。 |
tfOnlyXRP | 0x00000002 | 2 | 発行されたNFToken はXRPでのみ売買が可能です。これは、トークンに送金手数料がかかり、発行者がXRP以外のトークンで手数料を受け取りたくない場合に望ましいでしょう。 |
tfTrustLine | 0x00000004 | 4 | 非推奨 発行者が、発行したNFToken を転送する際に受け取る手数料を保有するために、自動的にトラストライン を作成します。fixRemoveNFTokenAutoTrustLine Amendmentにより、このフラグの設定は無効となります。 |
tfTransferable | 0x00000008 | 8 | 発行されたNFToken は他の人に譲渡することができます。このフラグが 有効でない 場合、トークンは 発行者から 、または 発行者へ のみ転送することができます。 |
追加情報の埋め込み
発行時に追加情報を指定する必要がある場合(たとえば、特定の区画を参照して不動産を特定できる詳細情報、車両識別番号を指定して車両を特定できる詳細情報、その他オブジェクト固有の説明)、取引メモを使用することができます。メモは署名された取引の一部であり、履歴アーカイブから入手できますが、レジャーの状態データには保存されません。
他のアカウントの代わりとして発行する
別のアカウントでNFTを発行する場合、次の2つを実行する必要があります。アカウント Aがあなたのアカウントで、アカウント BがNFTokenを発行したいアカウントであるとします。
- アカウントBの
NFTokenMinter
アカウント設定を、アカウントAに設定します。(これは、アカウントBが自分に代わってNFTを作成するためにアカウントAを信頼することを意味します)。 - NFTokenを発行する際、
Issuer
フィールドをアカウントBに設定します。
NFTokenMintと発行者の組み合わせ例
{ "TransactionType": "NFTokenMint", "Account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "Issuer": "rNCFjv8Ek5oDrNiMJ3pw6eLLFtMjZLJnf2", "TransferFee": 25000, "NFTokenTaxon": 0, "Flags": 8, "Fee": "10", "URI": "697066733A2F2F62616679626569676479727A74357366703775646D37687537367568377932366E6634646675796C71616266336F636C67747179353566627A6469", "Memos": [ { "Memo": { "MemoType": "687474703A2F2F6578616D706C652E636F6D2F6D656D6F2F67656E65726963", "MemoData": "72656E74" } } ] }
このトランザクションは、発行者であるrNCFjv8Ek5oDrNiMJ3pw6eLFtMjZLJnf2
がそのAccountRoot
のNFTokenMinter
フィールド rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B
と設定して、そのアカウントが自身に代わってトークンを発行する権限を与えていると想定したものです。
エラーケース
すべてのトランザクションで発生する可能性のあるエラーに加えて、NFTokenMintトランザクションでは、次のトランザクション結果コードが発生する可能性があります。
エラーコード | 説明 |
---|---|
temDISABLED | NonFungibleTokensV1 Amendmentは有効ではありません。 |
temBAD_NFTOKEN_TRANSFER_FEE | TransferFee が許容範囲外です。 |
temINVALID_FLAG | Flags 値には、許可されていない、または有効なフラグでないビットが有効になっています。fixRemoveNFTokenAutoTrustLine amendmentが有効になっている場合、tfTrustLine フラグはこのエラーを発生させます。 |
temMALFORMED | トランザクションが正しく指定されていません。例えば、URI フィールドが256バイトより長い場合です。 |
tecNO_ISSUER | Issuer は、レジャーに存在しないアカウントを指定しています。 |
tecNO_PERMISSION | Issuer フィールドで参照されるアカウントは、このトランザクションの送信者(NFTokenMinter 設定を使用)が自身の代わりに発行することを承認していません。 |
tecINSUFFICIENT_RESERVE | トークンを発行した後、オーナーは更新された準備金要件を満たせなくなります。新しいNFToken は、新しいNFTokenPageオブジェクトを必要とする場合にのみ、オーナーの準備金を増加させることに注意する必要があり、それぞれ最大32NFTを格納することができます。 |
tecMAX_SEQUENCE_REACHED | Issuer のMintedNFTokens フィールドはすでに最大値になっています。これは、発行者またはその代理人が合計で232-1つのNFToken を発行した場合にのみ発生します。 |