最終更新:
編集

NFTokenCancelOffer

NFTokenCancelOfferトランザクションは、NFTokenCreateOfferを使用して作成した既存のトークンへのオファーをキャンセルするために使用できます。

NFTokenCancelOffer JSONの例

{
      "TransactionType": "NFTokenCancelOffer",
      "Account": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
      "NFTokenOffers": [
      "9C92E061381C1EF37A8CDE0E8FC35188BFC30B1883825042A64309AC09F4C36D"
    ]
}

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

アクセス権

NFTokenOffer オブジェクトで表される既存のオファーは、以下の方法でキャンセルすることができます。

  • NFTokenOfferを最初に作成したアカウント
  • NFTokenOfferDestinationフィールドのアカウント(存在する場合)
  • NFTokenOfferが有効期限を指定しており、NFTokenCancelOfferが含まれる親レジャーのクローズ時刻が有効期限より大きい場合、任意のアカウントに設定することができます

このトランザクションは、リストアップされたNFTokenOfferオブジェクトがあればレジャーから削除し、それに応じて必要な準備金を調整します。NFTokenOfferが見つからなくてもエラーにはなりません。その場合、トランザクションは正常に完了するでしょう。

NFTokenCancelOffer フィールド

共通フィールドに加えて、NFTokenCancelOfferトランザクションは以下のフィールドを使用します。

フィールドJSONの型内部の型説明
NFTokenOffers配列VECTOR256キャンセルするNFTokenOfferオブジェクトのIDの配列(NFTokenオブジェクトのIDではなく、NFTokenOfferオブジェクトのID)です。各エントリはNFTokenOfferオブジェクトの異なるオブジェクトIDである必要があり、配列に重複した項目がある場合、トランザクションはエラーとなります。

NFTokenOffersフィールドのIDの1つ以上が、レジャーに現在存在するオブジェクトを参照していない場合でも、トランザクションは成功します(たとえば、それらのオファーはすでに削除されている可能性があります)。IDの1つが存在するオブジェクトを指していても、NFTokenOfferオブジェクトでない場合は、エラーでトランザクションが失敗します。

注意すべき点は、誤ってnft_offer_indexではなくnft_idを指定してしまった場合、tesSUCCESSレスポンスを受け取る可能性があることです。適切にフォーマットされたID値が見つからない場合、システムはNFTokenOfferが既に削除されたと判断するからです。

IDがNFTokenOfferオブジェクトでないオブジェクトを指している場合、トランザクションはエラーで失敗します。

エラーケース

すべてのトランザクションで発生する可能性のあるエラーに加えて、NFTokenCancelOfferトランザクションでは、次のトランザクション結果コードが発生する可能性があります。

エラーコード説明
temDISABLEDNonFungibleTokensV1 Amendmentは有効ではありません。
temMALFORMEDトランザクションが有効なフォーマットではありませんでした。たとえば、NFTokenOffers配列が空であるか、一度にキャンセルできるオファーの最大数を超える数を含んでいた場合です。
tecNO_PERMISSIONNFTokenOffersフィールドのIDのうち少なくとも1つが、キャンセルできないオブジェクトを参照しています。例えば、このトランザクションの送信者がオファーの所有者やDestinationではない場合や、オブジェクトがNFTokenOfferタイプのオブジェクトではなかった場合などです。