Skip to content

Updated Ledger Entries

This page describes changes to existing ledger entry types for Sponsored Fees and Reserves.

Common Ledger Entry Updates

A new Sponsor field is added to the common ledger entry fields:

Field NameJSON TypeInternal TypeRequired?Description
SponsorStringAccountIDNoThe sponsor paying the owner reserve for this ledger object. When present, this indicates that the reserve burden for this object has shifted from the owner to the sponsor.

The Sponsor field may appear on the following ledger entry types:

  • AccountRoot
  • Offer
  • Escrow
  • Check
  • PayChannel
  • DepositPreauth
  • Ticket
  • NFTokenPage
  • NFTokenOffer
  • AMM
  • Bridge
  • XChainOwnedClaimID
  • XChainOwnedCreateAccountClaimID
  • DID
  • Any other ledger entry type that contributes to an account's owner reserve.
Note

NFTs are stored in NFTokenPage objects, not as individual ledger entries. When sponsoring NFTs, the Sponsor field applies to the entire NFTokenPage, which can hold up to 32 NFTs. All NFTs within a sponsored page share the same sponsor.

AccountRoot Updates

Example JSON

{
  "LedgerEntryType": "AccountRoot",
  "Account": "rfkDkFai4jUfCvAJiZ5Vm7XvvWjYvDqeYo",
  "Balance": "100000000", // 100 XRP in drops
  "OwnerCount": 5,
  "Sponsor": "rN7n7otQDd6FczFgLdlqtyMVrn3HMfXpf",
  "SponsoredOwnerCount": 2,
  "SponsoringOwnerCount": 1,
  "SponsoringAccountCount": 1,
  "PreviousTxnID": "1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF",
  "PreviousTxnLgrSeq": 12345679
}

AccountRoot Fields

AccountRoot ledger entries can include the following new fields:

Field NameJSON TypeInternal TypeRequired?Description
SponsorStringAccountIDNoThe sponsor paying the account reserve for this account.
SponsoredOwnerCountNumberUInt32NoThe number of objects this account owns that are sponsored by another account.
SponsoringOwnerCountNumberUInt32NoThe number of objects this account is sponsoring the reserve for.
SponsoringAccountCountNumberUInt32NoThe number of accounts this account is sponsoring the account reserve for.

RippleState Updates

Example JSON

{
  "LedgerEntryType": "RippleState",
  "Balance": {
    "currency": "USD",
    "issuer": "rLowAccountAddressXXXXXXXXXXXXXXX",
    "value": "-10"
  },
  "HighLimit": {
    "currency": "USD",
    "issuer": "rHighAccountAddressXXXXXXXXXXXXXX",
    "value": "100"
  },
  "LowLimit": {
    "currency": "USD",
    "issuer": "rLowAccountAddressXXXXXXXXXXXXXXX",
    "value": "0"
  },
  "HighSponsor": "rN7n7otQDd6FczFgLdlqtyMVrn3HMfXpf",
  "LowSponsor": "rN7n7otQDd6FczFgLdlqtyMVrn3HMfXpf",
  "Flags": 262144,
  "HighNode": "0000000000000000",
  "LowNode": "0000000000000000",
  "PreviousTxnID": "ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
  "PreviousTxnLgrSeq": 12345680
}

RippleState Fields

RippleState ledger entries can include the following new fields:

Field NameJSON TypeInternal TypeRequired?Description
HighSponsorStringAccountIDNoThe sponsor paying the reserve on behalf of the high account on the trust line.
LowSponsorStringAccountIDNoThe sponsor paying the reserve on behalf of the low account on the trust line.

The HighSponsor and LowSponsor fields exist because bidirectional trust lines may have the reserve held by two accounts.