最終更新:
編集

トランザクションのメタデータ

トランザクションのメタデータは、トランザクションの処理後にトランザクションに追加されるひとまとまりのデータです。レジャーに記録されるトランザクションは、トランザクションが成功するかどうかにかかわらず、メタデータを保持しています。トランザクションのメタデータには、トランザクションの結果の詳細が含まれます。

警告: トランザクションのメタデータに示された変更が最終的なものになるのは、トランザクションが検証済みバージョンのレジャーに記録された場合のみです。

以下に、トランザクションのメタデータに含まれる可能性があるフィールドをいくつか示します。

フィールド説明
AffectedNodes配列このトランザクションで作成、削除、または修正されたレジャーオブジェクトのリストと、個々のオブジェクトに対する具体的な変更内容。
DeliveredAmount通貨額廃止予定。delivered_amountで置き換えられます。Partial Paymentsでない場合は省略されます。
TransactionIndex符号なし整数トランザクションが記録されているレジャーでのトランザクションの位置。この配列は0から始まります。(例えば、値が2の場合、そのレジャーの3番目のトランザクションであったことを意味します)。
TransactionResult文字列トランザクションが成功したか、どのような理由で失敗したかを示す結果コード
delivered_amount通貨額Destinationアカウントが実際に受取った通貨額。このフィールドは、トランザクションがPartial Paymentsであるかどうかにかかわらず、送金された金額を特定するために使用します。

メタデータの例

次のJSONオブジェクトは、XRPからUSDへの交換のメタデータを示しています。

"meta": {
  "AffectedNodes": [
    {
      "ModifiedNode": {
        "FinalFields": {
          "Account": "rBTwLga3i2gz3doX6Gva3MgEV8ZCD8jjah",
          "Balance": "27724423128",
          "Flags": 0,
          "OwnerCount": 14,
          "Sequence": 129693478
        },
        "LedgerEntryType": "AccountRoot",
        "LedgerIndex": "1ED8DDFD80F275CB1CE7F18BB9D906655DE8029805D8B95FB9020B30425821EB",
        "PreviousFields": {
          "Balance": "27719423228",
          "Sequence": 129693477
        },
        "PreviousTxnID": "3110F983CDC090750B45C9BFB74B8CE629CA80F57C35612402B2760153822BA5",
        "PreviousTxnLgrSeq": 86724072
      }
    },
    {
      "DeletedNode": {
        "FinalFields": {
          "Account": "rPx6Rbh8fStXeP3LwECBisownN2ZyMyzYS",
          "BookDirectory": "DFA3B6DDAB58C7E8E5D944E736DA4B7046C30E4F460FD9DE4E1566CBCC208000",
          "BookNode": "0",
          "Flags": 0,
          "OwnerNode": "0",
          "PreviousTxnID": "DCB061EC44BBF73BBC20CE0432E9D8D7C4B8B28ABA8AE5A5BA687476E7A796EF",
          "PreviousTxnLgrSeq": 86724050,
          "Sequence": 86586865,
          "TakerGets": "0",
          "TakerPays": {
            "currency": "USD",
            "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
            "value": "0"
          }
        },
        "LedgerEntryType": "Offer",
        "LedgerIndex": "348AF66EBD872FBF2BD23085D3FB4A200E15509451475027C4A5EE8D8B77C623",
        "PreviousFields": {
          "TakerGets": "5000000",
          "TakerPays": {
            "currency": "USD",
            "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
            "value": "3.012"
          }
        }
      }
    },
    {
      "ModifiedNode": {
        "FinalFields": {
          "Flags": 0,
          "Owner": "rPx6Rbh8fStXeP3LwECBisownN2ZyMyzYS",
          "RootIndex": "4A68E363398C8DA470CF85237CA4A044476CD38BA7D5C9B8E8F19417A13B01C1"
        },
        "LedgerEntryType": "DirectoryNode",
        "LedgerIndex": "4A68E363398C8DA470CF85237CA4A044476CD38BA7D5C9B8E8F19417A13B01C1"
      }
    },
    {
     "ModifiedNode": {
        "FinalFields": {
          "Balance": {
            "currency": "USD",
            "issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
            "value": "-3.0120000001701"
          },
          "Flags": 2228224,
          "HighLimit": {
            "currency": "USD",
            "issuer": "rPx6Rbh8fStXeP3LwECBisownN2ZyMyzYS",
            "value": "0"
          },
          "HighNode": "0",
          "LowLimit": {
            "currency": "USD",
            "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
            "value": "0"
          },
          "LowNode": "bd5"
        },
        "LedgerEntryType": "RippleState",
        "LedgerIndex": "7345788A2C9121EB8168D2755950887CED3887CCDBC882015BC070A61C2AD1DA",
        "PreviousFields": {
          "Balance": {
            "currency": "USD",
            "issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
            "value": "-0.0000000001701"
          }
        },
        "PreviousTxnID": "B4726FC087FAB3DB3578A34095B96F9055075A86A16CE741B406D91202685998",
        "PreviousTxnLgrSeq": 86722015
      }
    },
    {
      "ModifiedNode": {
        "FinalFields": {
          "Balance": {
            "currency": "USD",
            "issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
            "value": "-52157.74818800332"
          },
          "Flags": 2228224,
          "HighLimit": {
            "currency": "USD",
            "issuer": "rBTwLga3i2gz3doX6Gva3MgEV8ZCD8jjah",
            "value": "1000000000"
          },
          "HighNode": "0",
          "LowLimit": {
            "currency": "USD",
            "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
            "value": "0"
          },
          "LowNode": "b29"
        },
        "LedgerEntryType": "RippleState",
        "LedgerIndex": "8250CE37F6495903C1F7D16E072E8823ECE06FA73F011A0F8D79D5626BF581BB",
        "PreviousFields": {
          "Balance": {
            "currency": "USD",
            "issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
            "value": "-52160.76470600332"
          }
        },
        "PreviousTxnID": "B4726FC087FAB3DB3578A34095B96F9055075A86A16CE741B406D91202685998",
        "PreviousTxnLgrSeq": 86722015
      }
    },
    {
      "ModifiedNode": {
        "FinalFields": {
          "Account": "rPx6Rbh8fStXeP3LwECBisownN2ZyMyzYS",
          "Balance": "52479871",
          "Flags": 0,
          "OwnerCount": 2,
         "Sequence": 86586866
        },
        "LedgerEntryType": "AccountRoot",
        "LedgerIndex": "9D398F1DEA77448C78196D6B01289A13D32DFCB4F9023A2A06338F893FA85521",
        "PreviousFields": {
          "Balance": "57479871",
          "OwnerCount": 3
        },
        "PreviousTxnID": "DCB061EC44BBF73BBC20CE0432E9D8D7C4B8B28ABA8AE5A5BA687476E7A796EF",
        "PreviousTxnLgrSeq": 86724050
      }
    },
    {
      "DeletedNode": {
        "FinalFields": {
          "ExchangeRate": "4e1566cbcc208000",
          "Flags": 0,
          "RootIndex": "DFA3B6DDAB58C7E8E5D944E736DA4B7046C30E4F460FD9DE4E1566CBCC208000",
          "TakerGetsCurrency": "0000000000000000000000000000000000000000",
          "TakerGetsIssuer": "0000000000000000000000000000000000000000",
          "TakerPaysCurrency": "0000000000000000000000005553440000000000",
          "TakerPaysIssuer": "0A20B3C85F482532A9578DBB3950B85CA06594D1"
        },
        "LedgerEntryType": "DirectoryNode",
        "LedgerIndex": "DFA3B6DDAB58C7E8E5D944E736DA4B7046C30E4F460FD9DE4E1566CBCC208000"
      }
    }
  ],
  "TransactionIndex": 5,
  "TransactionResult": "tesSUCCESS"
}

AffectedNodes

AffectedNodes配列には、このトランザクションが何らかの変更を加えたレジャーエントリの完全なリストが格納されます。この配列の各項目は、何が起こったかを示すトップレベルのフィールドを1つ持つオブジェクトです。

  • CreatedNode: トランザクションが新しいレジャーエントリを作成したことを示します。
  • DeletedNode: トランザクションが新しいレジャーエントリを削除したことを示します。
  • ModifiedNode: トランザクションが既存のレジャーエントリを更新したことを示します。

これらの各フィールドの値は、レジャーエントリに行われた変更を記述するJSONオブジェクトです。

CreatedNodeのフィールド

CreatedNodeオブジェクトは次のフィールドを含みます。

フィールド説明
LedgerEntryType文字列作成されたレジャーエントリの種類
LedgerIndex文字列 - ハッシュレジャーの状態ツリー内のこのレジャーエントリのID注意: 名前が非常に似ていますがこれはレジャーインデックスとは異なります
NewFieldsオブジェクト新しく作成されたレジャーエントリの内容を示すフィールド。どのフィールドが存在するかは、作成されたレジャーエントリの種類によって異なります。

DeletedNodeのフィールド

DeletedNodeオブジェクトは次のフィールドを含みます。

フィールド説明
LedgerEntryType文字列削除されたレジャーエントリの種類
LedgerIndex文字列 - ハッシュレジャーの状態ツリー内のこのレジャーエントリのID注意: 名前が非常に似ていますがこれはレジャーインデックスとは異なります
FinalFieldsオブジェクト削除されたレジャーエントリの最後の内容を示すフィールド。どのフィールドが存在するかは、削除されたレジャーエントリの種類によって異なります。

ModifiedNodeのフィールド

ModifiedNodeオブジェクトは次のフィールドを含みます。

フィールド説明
LedgerEntryType文字列更新されたレジャーエントリの種類
LedgerIndex文字列 - ハッシュレジャーの状態ツリー内のこのレジャーエントリのID注意: 名前が非常に似ていますがこれはレジャーインデックスとは異なります
FinalFieldsオブジェクトこのトランザクションからの変更を適用した後のレジャーエントリの内容を示すフィールド。どのフィールドが存在するかは、作成されたレジャーエントリの種類によって異なります。ほとんどのタイプのレジャーエントリにはPreviousTxnIDフィールドとPreviousTxnLgrSeqフィールドがありますが、これは省略されます。
PreviousFieldsオブジェクトこのトランザクションの結果として変更されたオブジェクトのすべてのフィールドの以前の値。トランザクションがオブジェクトにフィールドを追加しただけの場合、このフィールドは空のオブジェクトです。
PreviousTxnID文字列 - ハッシュ(省略可能) このレジャーエントリを変更する前のトランザクションの識別用ハッシュPreviousTxnIDフィールドを持たないレジャーエントリの種類では省略されます。
PreviousTxnLgrSeq数値 - レジャーインデックス(省略可能) このレジャーエントリを変更する前のトランザクションを含むレジャーバージョンのレジャーインデックスPreviousTxnLgrSeqフィールドを持たないレジャーエントリの種類では省略されます。

注記: 変更されたレジャーエントリにPreviousTxnIDフィールドとPreviousTxnLgrSeqフィールドがある場合、トランザクションは常にトランザクションの識別ハッシュとトランザクションを含むレジャーバージョンのインデックスでそれらを更新しますが、これらのフィールドの新しい値はModifiedNodeオブジェクトのFinalFieldsにはリストされず、以前の値はネストされたPreviousFieldsオブジェクトではなくModifiedNodeオブジェクトのトップレベルにリストされます。

NFTのフィールド

NFTを含むトランザクション(txaccount_tx)はメタデータに以下のフィールドを含むことができます。これらの値はリクエスト時にサーバによって追加され、ハッシュ化されたバイナリメタデータには格納されません。

フィールド説明
nftoken_id文字列トランザクションの結果、レジャー上で変更されたNFTokenNFTokenIDを示します。トランザクションがNFTokenMintまたはNFTokenAcceptOfferの場合のみ表示されます。NFTokenIDをご覧ください。
nftoken_ids配列トランザクションの結果、レジャー上で変更されたNFTokenのすべてのNFTokenIDを表示します。トランザクションが NFTokenCancelOfferの場合のみ表示されます。
offer_id文字列NFTokenCreateOfferトランザクションからのレスポンスに、新しいNFTokenOfferOfferIDを表示します。

delivered_amount

PaymentトランザクションによってDestinationに実際送金された金額を表します。トランザクションが成功すると、Partial Paymentsであった場合を除いて、 宛先は当該の金額を受取ります(Partial Paymentsの場合、Amountを上限とする正の金額が受取られます)。Amountフィールドを信頼するかどうかを選択するのではなく、メタデータのdelivered_amountフィールドを使用して、宛先に実際に到達する金額を確認してください。

トランザクションのメタデータのdelivered_amountフィールドは、成功したすべてのPaymentトランザクションが保持しており、フォーマットは通常の通貨額と同様です。ただし、送金額は、以下の両方の条件に該当するトランザクションについては使用できません。

  • Partial Paymentsである
  • 2014-01-20よりも前の検証済みレジャーに含まれている

両方の条件に該当する場合、delivered_amountには、実際の金額ではなく文字列値unavailableが記述されます。この場合、トランザクションのメタデータにあるAffectedNodesを読み取ることが、実際に送金された金額を割り出せる唯一の手段になります。

注記: delivered_amountフィールドはリクエストに対してオンデマンドで生成され、トランザクションメタデータのバイナリフォーマットには含まれず、トランザクションメタデータのハッシュを計算する際にも使用されません。一方、DeliveredAmountフィールドは2014-01-20以降のpartial paymentトランザクションのバイナリフォーマットに 含まれます

関連項目: Partial Payments