Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The Amendments
object type contains a list of Amendments that are currently active. Each ledger version contains at most one Amendments
object.
Amendments
Array
Vector256
No
Array of 256-bit amendment IDs for all currently enabled amendments. If omitted, there are no enabled amendments.
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for Amendments
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0066
, mapped to the string Amendments
, indicates that this object describes the status of amendments to Xahau.
Majorities
Array
STArray
No
Array of objects describing the status of amendments that have majority support but are not yet enabled. If omitted, there are no pending amendments with majority support.
Each member of the Majorities
field, if it is present, is an object with one field, Majority
, whose contents are a nested object with the following fields:
Amendment
String
Hash256
The Amendment ID of the pending amendment.
CloseTime
Number
UInt32
The close_time
field of the ledger version where this amendment most recently gained a majority.
In the amendment process, a consensus of validators adds a new amendment to the Majorities
field using an [EnableAmendment][] pseudo-transaction with the tfGotMajority
flag when 80% or more of validators support it. If support for a pending amendment goes below 80%, an [EnableAmendment][] pseudo-transaction with the tfLostMajority
flag removes the amendment from the Majorities
array. If an amendment remains in the Majorities
field for at least 2 weeks, an [EnableAmendment][] pseudo-transaction with no flags removes it from Majorities
and permanently adds it to the Amendments
field.
Note: Technically, all transactions in a ledger are processed based on which amendments are enabled in the ledger version immediately before it. While applying transactions to a ledger version where an amendment becomes enabled, the rules don't change mid-ledger. After the ledger is closed, the next ledger uses the new rules as defined by any new amendments that apply.
The Amendments
object ID is the hash of the Amendments
space key (0x0066
) only. This means that the ID of the Amendments
object in a ledger is always:
(Don't mix up the ID of the Amendments
ledger object type with the Amendment ID of an individual amendment.)
(Added by the [Checks amendment][].)
A Check
object describes a check, similar to a paper personal check, which can be cashed by its destination to get money from its sender. (The potential payment has already been approved by its sender, but no money moves until it is cashed. Unlike an Escrow, the money for a Check is not set aside, so cashing the Check could fail due to lack of funds.)
A Check
object has the following fields:
Account
String
Account
Yes
The sender of the Check. Cashing the Check debits this address's balance.
Destination
String
Account
Yes
The intended recipient of the Check. Only this address can cash the Check, using a [CheckCash transaction][].
DestinationNode
String
UInt64
No
A hint indicating which page of the destination's owner directory links to this object, in case the directory consists of multiple pages.
DestinationTag
Number
UInt32
No
An arbitrary tag to further specify the destination for this Check, such as a hosted recipient at the destination address.
Expiration
Number
UInt32
No
Indicates the time after which this Check is considered expired. See [Specifying Time][] for details.
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for Check
objects. The value is always 0
.
InvoiceID
String
Hash256
No
Arbitrary 256-bit hash provided by the sender as a specific reason or identifier for this Check.
LedgerEntryType
String
UInt16
Yes
The value 0x0043
, mapped to the string Check
, indicates that this object is a Check object.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the sender's owner directory links to this object, in case the directory consists of multiple pages. Note: The object does not contain a direct link to the owner directory containing it, since that value can be derived from the Account
.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
SendMax
String or Object
Amount
Yes
The maximum amount of currency this Check can debit the sender. If the Check is successfully cashed, the destination is credited in the same currency for up to this amount.
Sequence
Number
UInt32
Yes
The sequence number of the [CheckCreate transaction][] that created this check.
SourceTag
Number
UInt32
No
An arbitrary tag to further specify the source for this Check, such as a hosted recipient at the sender's address.
The ID of a Check
object is the [SHA-512Half][] of the following values, concatenated in order:
The Check space key (0x0043
)
The AccountID of the sender of the [CheckCreate transaction][] that created the Check
object
The Sequence
number of the [CheckCreate transaction][] that created the Check
object. If the CheckCreate transaction used a Ticket, use the TicketSequence
value instead.
Each ledger version in the XRP Ledger is made up of three parts:
Ledger Header: Metadata about this ledger version itself.
Transaction Set: All the transactions that were executed to create this ledger version.
State Data: The complete record of objects representing accounts, settings, and balances as of this ledger version. (This is also called the "account state".)
Each ledger version's state data is a set of ledger objects, sometimes called ledger entries, which collectively represent all settings, balances, and relationships at a given point in time. To store or retrieve an object in the state data, the protocol uses that object's unique Ledger Object ID.
In the peer protocol, ledger objects have a canonical binary format. In xahaud
APIs, ledger objects are represented as JSON objects.
A ledger object's data fields depend on the type of object; the Xahau Ledger supports the following types:
The DirectoryNode
object type provides a list of links to other objects in the ledger's state tree. A single conceptual Directory takes the form of a doubly linked list, with one or more DirectoryNode objects each containing up to 32 IDs of other objects. The first object is called the root of the directory, and all objects other than the root object can be added or deleted as necessary.
There are two kinds of Directories:
Owner directories list other objects owned by an account, such as RippleState
(trust line) or Offer
objects.
Offer directories list the offers available in the decentralized exchange. A single Offer directory contains all the offers that have the same exchange rate for the same token (currency code and issuer).
Offer Directory
Owner Directory
Owner
String
AccountID
No
(Owner Directories only) The address of the account that owns the objects in this directory.
TakerGetsCurrency
String
Hash160
No
(Offer Directories only) The currency code of the TakerGets
amount from the offers in this directory.
TakerGetsIssuer
String
Hash160
No
(Offer Directories only) The issuer of the TakerGets
amount from the offers in this directory.
TakerPaysCurrency
String
Hash160
No
(Offer Directories only) The currency code of the TakerPays
amount from the offers in this directory.
TakerPaysIssuer
String
Hash160
No
(Offer Directories only) The issuer of the TakerPays
amount from the offers in this directory.
ExchangeRate
String
UInt64
No
(Offer Directories only) DEPRECATED. Do not use.
ReferenceCount
String
UInt64
No
Reference counting in the ledger reduces storage burden and fees by allowing multiple installations of the same Hook to point to the same object on the ledger, only removing it when no accounts have the Hook installed.
Indexes
Array
Vector256
Yes
The contents of this Directory: an array of IDs of other objects.
IndexNext
Number
UInt64
No
If this Directory consists of multiple pages, this ID links to the next object in the chain, wrapping around at the end.
IndexPrevious
Number
UInt64
No
If this Directory consists of multiple pages, this ID links to the previous object in the chain, wrapping around at the beginning.
NFTokenID
String
Hash256
No
Unused
There are three different formulas for creating the ID of a DirectoryNode, depending on which of the following the DirectoryNode represents:
The first page (also called the root) of an Owner Directory
The first page of an Offer Directory
Later pages of either type
The first page of an Owner Directory has an ID that is the [SHA-512Half][] of the following values, concatenated in order:
The Owner Directory space key (0x004F
)
The AccountID from the Owner
field.
The first page of an Offer Directory has a special ID: the higher 192 bits define the order book, and the remaining 64 bits define the exchange rate of the offers in that directory. (The ID is big-endian, so the book is in the more significant bits, which come first, and the quality is in the less significant bits which come last.)
This provides a way to iterate through an order book from best offers to worst. Specifically: the first 192 bits are the first 192 bits of the [SHA-512Half][] of the following values, concatenated in order:
The Book Directory space key (0x0042
)
The 160-bit currency code from the TakerPaysCurrency
The 160-bit currency code from the TakerGetsCurrency
The AccountID from the TakerPaysIssuer
The AccountID from the TakerGetsIssuer
The lower 64 bits of an Offer Directory's ID represent the TakerPays
amount divided by TakerGets
amount from the offer(s) in that directory as a 64-bit number in Xahau's internal amount format.
If the DirectoryNode is not the first page in the Directory (regardless of whether it is an Owner Directory or an Offer Directory), then it has an ID that is the [SHA-512Half][] of the following values, concatenated in order:
The DirectoryNode space key (0x0064
)
The ID of the root DirectoryNode
The page number of this object. (Since 0 is the root DirectoryNode, this value is an integer 1 or higher.)
(Added by the [Hooks amendment][].)
An EmittedTxn
object describes a transaction that has been emitted by a hook. The object contains all the fields of the original transaction, along with additional details about the emission.
An EmittedTxn
object has the following fields:
EmitDetails
Object
Object
Yes
Contains details about the emission. This includes the generation of the emission, the burden of the emission, the callback address, the hash of the hook that emitted the transaction, the nonce of the emission, and the ID of the parent transaction.
TransactionType
String
UInt16
Yes
The type of the transaction that was emitted.
Account
String
Account
Yes
The account that emitted the transaction.
Fee
String
Amount
Yes
The fee paid for the transaction.
Sequence
Number
UInt32
Yes
The sequence number of the transaction.
SigningPubKey
String
Blob
Yes
The public key that signs the transaction.
The EmittedTxn
object also contains all the fields of the original transaction.
An EmitDetails
object has the following fields:
EmitGeneration
Number
UInt32
Yes
This field keeps track of a chain of emitted transactions that in turn cause other transactions to be emitted.
EmitBurden
String
UInt64
Yes
This field is a heuristic for detecting forkbombs. Fees are based on burden and will increase exponentially when a chain reaction is started to prevent the network becoming overun by self-reinforcing emitted transactions.
EmitParentTxnID
String
Hash256
Yes
The Hook Execution that emitted the transaction is connected to the Originating Transaction. Therefore this field is always required for the efficient tracing of behaviour.
EmitNonce
String
Hash256
Yes
Emitted Transactions would be identical with the same fields and therefore have identical transaction hashes if a nonce were not used. However every node on the network needs to agree on the nonce, so a special Hook API to produce a deterministic nonce is made available.
EmitCallback
String
AccountID
No
This field is used by xahld when it needs to intitate a callback, such that it knows which Hook and account to initate the callback on. Callbacks happen when an emitted transaction is accepted into a ledger.
EmitHookHash
String
Hash256
Yes
The SHA512H of the Hook at the time it was executed.
(Added by the [Hooks amendment][].)
A Hook
object describes a smart contract, which can be triggered by a transaction to perform predefined operations. The operations are defined by the Hook
creator and can interact with the ledger and transactions.
A Hook
object has the following fields:
Account
String
Account
Yes
The account that created the Hook.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner's directory links to this object, in case the directory consists of multiple pages.
PreviousTxnID
String
Hash256
Yes
The ID of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [ledger index][] of the ledger that contains the transaction that most recently modified this object.
Hooks
Array
Array
Yes
An array of hook objects. Each object has the following fields: HookHash
, CreateCode
, HookGrants
, HookNamespace
, HookParameters
, HookOn
, HookApiVersion
, Flags
.
LedgerEntryType
String
UInt16
Yes
The value 0x0043
, mapped to the string Hook
, indicates that this object is a Hook object.
The following fields are used in the hook object:
HookHash
String
Hash256
The hash of the hook.
HookParameters
Array
Array
The parameters of the hook.
Flags
Number
UInt32
Additional flags for the hook.
The ID of a Hook
object is the [SHA-512Half][] of the following values, concatenated in order:
The Hook space key (0x0048
)
The AccountID of the sender of the [SetHook transaction][] that created the Hook
object
The FeeSettings
object type contains the current base transaction cost and reserve amounts as determined by fee voting. Each ledger version contains at most one FeeSettings
object.
Example FeeSettings
object:
The FeeSettings
object has the following fields:
BaseFee
String
UInt64
Yes
The transaction cost of the "reference transaction" in drops of XAH as hexadecimal.
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for FeeSettings
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0073
, mapped to the string FeeSettings
, indicates that this object contains the ledger's fee settings.
ReferenceFeeUnits
Number
UInt32
Yes
The BaseFee
translated into "fee units".
ReserveBase
Number
UInt32
Yes
The base reserve for an account in Xahau, as drops of XAH.
ReserveIncrement
Number
UInt32
Yes
The incremental owner reserve for owning objects, as drops of XAH.
XahauActivationLgrSeq
Number
UInt32
No
The ledger index where Xahau genesis was activated.
AccountCount
Number
UInt32
No
The number of accounts created on the Xahau network.
NetworkID
Number
UInt32
No
The ID of the network
Warning: The JSON format for this ledger object type is unusual. The BaseFee
, ReserveBase
, and ReserveIncrement
indicate drops of XAH but not in the usual format for [specifying XAH][Currency Amount].
If the [XAHFees amendment][] is enabled, the FeeSettings
object has these fields instead:
BaseFeeDrops
String
Amount
Yes
The transaction cost of the "reference transaction" in drops of XAH.
Flags
Number
UInt32
Yes
A bitmap of boolean flags enabled for this object. Currently, the protocol defines no flags for FeeSettings
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0073
, mapped to the string FeeSettings
, indicates that this object contains the ledger's fee settings.
ReserveBaseDrops
String
Amount
Yes
The base reserve for an account in the XAH Ledger, as drops of XAH.
ReserveIncrementDrops
String
Amount
Yes
The incremental owner reserve for owning objects, as drops of XAH.
XahauActivationLgrSeq
Number
UInt32
No
The ledger index where Xahau genesis was activated.
AccountCount
Number
UInt32
No
The number of accounts created on the Xahau network.
NetworkID
Number
UInt32
No
The FeeSettings
object ID is the hash of the FeeSettings
space key (0x0065
) only. This means that the ID of the FeeSettings
object in a ledger is always:
(Added by the [Hooks amendment][].)
A HookDefinition
object describes a hook, which is a piece of code that is executed in response to certain transactions. The hook can modify the transaction, emit new transactions, or perform other actions.
A HookDefinition
object has the following fields:
HookHash
String
Hash256
Yes
The unique identifier of the hook.
HookOn
String
Hash256
Yes
The account that the hook is attached to.
HookNamespace
String
Hash256
Yes
The namespace of the hook.
HookParameters
String
Vector
Yes
The parameters that the hook accepts.
HookApiVersion
Number
UInt16
Yes
The version of the hook API that the hook uses.
CreateCode
String
VL
Yes
The code that is executed when the hook is created.
HookSetTxnID
String
Hash256
Yes
The ID of the transaction that set the hook.
ReferenceCount
String
UInt64
Yes
The number of references to the hook.
Fee
String
Amount
Yes
The fee for executing the hook.
HookCallbackFee
String
Amount
No
The fee for executing the hook's callback function.
LedgerEntryType
String
UInt16
Yes
The value 0x0043
, mapped to the string HookDefinition
, indicates that this object is a HookDefinition object.
The ID of a HookDefinition
object is the [SHA-512Half][] of the following values, concatenated in order:
The HookDefinition space key (0x0044
)
The HookHash
of the hook
(Added by the [Hooks amendment][].)
A HookState
object describes the state of a hook, which is a piece of code running on Xahau that can interact with transactions. The HookState
object stores the state of the hook, which can be modified by the hook's code.
A HookState
object has the following fields:
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner's directory links to this object, in case the directory consists of multiple pages.
HookStateKey
String
Hash256
Yes
The key that uniquely identifies this hook state.
HookStateData
String
VL
Yes
The data stored by the hook. This can be any data that the hook's code decides to store.
LedgerEntryType
String
UInt16
Yes
The value 0x0043
, mapped to the string HookState
, indicates that this object is a HookState object.
The ID of a HookState
object is the [SHA-512Half][] of the following values, concatenated in order:
The HookState space key (0x0076
)
The AccountID of the account that owns the hook
The HookStateKey
of the HookState
object
The HookNamespace
of the hook.
(Added by the [Import amendment][].)
The ImportVLSequence
helps track and validate the order of operations during the import process. It is used to ensure that the correct sequence of events occurs and to handle any discrepancies or updates to the dUNL on the "burning" ledger.
A ImportVLSequence
object has the following fields:
LedgerEntryType
String
UInt16
Yes
The value 0x0049
, mapped to the string ImportVLSequence
, indicates that this object is a ImportVLSequence object.
Flags
Number
UInt32
Yes
A bit-map of boolean flags. No flags are defined for the ImportVLSequence
object type, so this value is always 0
.
ImportSequence
Number
UInt32
Yes
The current sequence number of the dUNL list on the "burning" ledger.
PublicKey
String
Blob
Yes
The PublicKey
of the dUNL list from the "burning" ledger.
The ID of a ImportVLSequence
object is the [SHA-512Half][] of the following values, concatenated in order:
The Import VL Sequence space key (0x0049
)
The Public Key of the Import Validator List
(Added by the [Escrow amendment][].)
The Escrow
object type represents a held payment of XAH or IOU waiting to be executed or canceled. An [EscrowCreate transaction][] creates an Escrow
object in the ledger. A successful [EscrowFinish][] or [EscrowCancel][] transaction deletes the object.
If the Escrow
object has a crypto-condition, the payment can only succeed if an EscrowFinish transaction provides the corresponding fulfillment that satisfies the condition. (The only supported crypto-condition type is PREIMAGE-SHA-256.) If the Escrow
object has a FinishAfter
time, the held payment can only execute after that time.
An Escrow
object is associated with two addresses:
The owner, who provides the XAH or IOU when creating the Escrow
object. If the held payment is canceled, the XAH or IOU returns to the owner.
The destination, where the XAH or IOU is paid when the held payment succeeds. The destination can be the same as the owner.
An Escrow
object has the following fields:
Account
String
AccountID
Yes
The address of the owner (sender) of this held payment. This is the account that provided the amount, and gets it back if the held payment is canceled.
Amount
String or Object
Amount
Yes
The amount to be delivered by the held payment.
CancelAfter
Number
UInt32
No
The held payment can be canceled if and only if this field is present and the time it specifies has passed. Specifically, this is specified as [seconds since the Ripple Epoch][] and it "has passed" if it's earlier than the close time of the previous validated ledger.
Condition
String
Blob
No
Destination
String
AccountID
Yes
The destination address where the amount is paid if the held payment is successful.
DestinationNode
String
UInt64
No
A hint indicating which page of the destination's owner directory links to this object, in case the directory consists of multiple pages. Omitted on escrows created before enabling the [fix1523 amendment][].
DestinationTag
Number
UInt32
No
An arbitrary tag to further specify the destination for this held payment, such as a hosted recipient at the destination address.
FinishAfter
Number
UInt32
No
The time, in [seconds since the Ripple Epoch][], after which this held payment can be finished. Any [EscrowFinish transaction][] before this time fails. (Specifically, this is compared with the close time of the previous validated ledger.)
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for Escrow
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0075
, mapped to the string Escrow
, indicates that this object is an Escrow
object.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner directory links to this object, in case the directory consists of multiple pages. Note: The object does not contain a direct link to the owner directory containing it, since that value can be derived from the Account
.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
SourceTag
Number
UInt32
No
An arbitrary tag to further specify the source for this held payment, such as a hosted recipient at the owner's address.
TransferRate
Number
UInt32
No
The ID of an Escrow
object is the [SHA-512Half][] of the following values, concatenated in order:
The Escrow space key (0x0075
)
The AccountID of the sender of the [EscrowCreate transaction][] that created the Escrow
object
The Sequence number of the [EscrowCreate transaction][] that created the Escrow
object If the EscrowCreate transaction used a Ticket, use the TicketSequence
value instead.
The RippleState
object type connects two accounts in a single currency. Conceptually, a RippleState
object represents two trust lines between the accounts, one from each side. Each account can change the settings for its side of the RippleState
object, but the balance is a single shared value. A trust line that is entirely in its default state is considered the same as a trust line that does not exist, so rippled
deletes RippleState
objects when their properties are entirely default.
There can only be one RippleState
object per currency for any given pair of accounts. Since no account is privileged in Xahau, a RippleState
object sorts account addresses numerically, to ensure a canonical form. Whichever address is numerically lower when decoded is deemed the "low account" and the other is the "high account". The net balance of the trust line is stored from the low account's perspective.
The "issuer" for the balance in a trust line depends on whether the balance is positive or negative. If a RippleState
object shows a positive balance, the high account is the issuer. If the balance is negative, the low account is the issuer. Often, the issuer has its limit set to 0 and the other account has a positive limit, but this is not reliable because limits can change without affecting an existing balance.
A RippleState
object has the following fields:
There are several options which can be either enabled or disabled for a trust line. These options can be changed with a [TrustSet transaction][]. In the ledger, flags are represented as binary values that can be combined with bitwise-or operations. The bit values for the flags in the ledger are different than the values used to enable or disable those flags in a transaction. Ledger flags have names that begin with lsf
.
RippleState objects can have the following flag values:
If an account modifies a trust line to put it in a non-default state, then that trust line counts towards the account's owner reserve. In a RippleState object, the lsfLowReserve
and lsfHighReserve
flags indicate which account(s) are responsible for the owner reserve. The rippled
server automatically sets these flags when it modifies a trust line.
The values that count towards a trust line's non-default state are as follows:
The lsfLowAuth
and lsfHighAuth
flags do not count against the default state, because they cannot be disabled.
The default state of the two No Ripple flags depends on the state of the lsfDefaultRipple
flag in their corresponding AccountRoot objects. If Default Ripple is disabled (the default), then the default state of the lsfNoRipple
flag is enabled for all of an account's trust lines. If an account enables Default Ripple, then the lsfNoRipple
flag is disabled (rippling is enabled) for an account's trust lines by default.
Note: Prior to the introduction of the Default Ripple flag in rippled
version 0.27.3 (March 10, 2015), the default state for all trust lines was with both No Ripple flags disabled (rippling enabled).
Fortunately, rippled
uses lazy evaluation to calculate the owner reserve. This means that even if an account changes the default state of all its trust lines by changing the Default Ripple flag, that account's reserve stays the same initially. If an account modifies a trust line, rippled
re-evaluates whether that individual trust line is in its default state and should contribute to the owner reserve.
The ID of a RippleState object is the [SHA-512Half][] of the following values, concatenated in order:
The RippleState space key (0x0072
)
The AccountID of the low account
The AccountID of the high account
The 160-bit currency code of the trust line(s)
(Added by the [NegativeUNL amendment][].)
The NegativeUNL
object type contains the current status of the Negative UNL, a list of trusted validators currently believed to be offline.
Each ledger version contains at most one NegativeUNL
object. If no validators are currently disabled or scheduled to be disabled, there is no NegativeUNL
object in the ledger.
A NegativeUNL
object has the following fields:
Each DisabledValidator
object represents one disabled validator. In JSON, a DisabledValidator
object has one field, DisabledValidator
, which in turn contains another object with the following fields:
The NegativeUNL
object ID is the hash of the NegativeUNL
space key (0x004E
) only. This means that the ID of the NegativeUNL
object in a ledger is always:
The Offer
ledger entry describes an Offer to exchange currencies in Xahau's decentralized exchange. (In finance, this is more traditionally known as an order.) An [OfferCreate transaction][] only creates an Offer
entry in the ledger when the Offer cannot be fully executed immediately by consuming other Offers already in the ledger.
An Offer can become unfunded through other activities in the network while remaining in the ledger. When processing transactions, the network automatically prunes any unfunded Offers that those transactions come across. (Otherwise, unfunded Offers remain because only transactions can change the ledger state.)
An Offer
object has the following fields:
There are several options that can be either enabled or disabled when an [OfferCreate transaction][] creates an offer object. In the ledger, flags are represented as binary values that can be combined with bitwise-or operations. The bit values for the flags in the ledger are different than the values used to enable or disable those flags in a transaction. Ledger flags have names that begin with lsf
.
Offer
objects can have the following flag values:
The ID of an Offer
object is the [SHA-512Half][] of the following values, concatenated in order:
The Offer space key (0x006F
)
The AccountID of the account placing the Offer
The Sequence number of the [OfferCreate transaction][] that created the Offer.
If the OfferCreate transaction used a Ticket, use the TicketSequence
value instead.
A DepositPreauth
object tracks a preauthorization from one account to another. [DepositPreauth transactions][] create these objects.
This has no effect on the processing of transactions unless the account that provided the preauthorization requires Deposit Authorization. In that case, the account that was preauthorized can send payments and other transactions directly to the account that provided the preauthorization. Preauthorizations are one-directional and have no effect on payments going the opposite direction.
A DepositPreauth
object has the following fields:
The ID of a DepositPreauth
object is the [SHA-512Half][] of the following values, concatenated in order:
The DepositPreauth space key (0x0070
)
The AccountID of the owner of this object (the sender of the [DepositPreauth transaction][] that created this object; in other words, the one that granted the preauthorization)
The AccountID of the preauthorized account (the Authorized
field of the [DepositPreauth transaction][] that created this object; in other words, the one that received the preauthorization)
(Added by the [PayChan amendment][].)
The PayChannel
object type represents a payment channel. Payment channels enable small, rapid off-ledger payments of XAH or IOU that can be later reconciled with the consensus ledger. A payment channel holds a balance of XAH or IOU that can only be paid out to a specific destination address until the channel is closed. Any unspent XAH or IOU is returned to the channel's owner (the source address that created and funded it) when the channel closes.
The [PaymentChannelCreate transaction][] type creates a PayChannel
object. The [PaymentChannelFund][] and [PaymentChannelClaim transaction][] types modify existing PayChannel
objects.
When a payment channel expires, at first it remains on the ledger, because only new transactions can modify ledger contents. Transaction processing automatically closes a payment channel when any transaction accesses it after the expiration. To close an expired channel and return the unspent XAH or IOU to the owner, some addresses must send a new PaymentChannelClaim or PaymentChannelFund transaction accessing the channel.
For an example of using payment channels, see the Payment Channels Tutorial.
A PayChannel
object has the following fields:
The Expiration
field of a payment channel is the mutable expiration time, in contrast to the immutable expiration time represented by the CancelAfter
field. The expiration of a channel is always considered relative to the close_time
field of the previous ledger. The Expiration
field is omitted when a PayChannel
object is created. There are several ways the Expiration
field of a PayChannel
object can be updated, which can be summarized as follows: a channel's source address can set the Expiration
of the channel freely as long as the channel always remains open at least SettleDelay
seconds after the first attempt to close it.
The source address can set the Expiration
directly with the PaymentChannelFund transaction type. The new value must not be earlier than whichever of the following values is earliest:
The current Expiration
value (if one is set)
The previous ledger's close time plus the SettleDelay
of the channel
In other words, the source address can always make the Expiration
later if an expiration is already set. The source can make an Expiration
value earlier or set an Expiration
if one isn't currently set, as long as the new value is at least SettleDelay
seconds in the future. If the source address attempts to set an invalid Expiration
date, the transaction fails with the temBAD_EXPIRATION
error code.
The source address can also set the Expiration
with the tfClose
flag of the PaymentChannelClaim transaction type. If the flag is enabled, the ledger automatically sets the Expiration
to whichever of the following values is earlier:
The current Expiration
value (if one is set)
The previous ledger's close time plus the SettleDelay
of the channel
The source address can remove the Expiration
with the tfRenew
flag of the PaymentChannelClaim transaction type.
The destination address cannot set the Expiration
field. However, the destination address can use the PaymentChannelClaim's tfClose
flag to close a channel immediately.
If any other address attempts to set an Expiration
field, the transaction fails with the tecNO_PERMISSION
error code. However, if the channel is already expired, the transaction causes the channel to close and results in tesSUCCESS
instead.
The ID of a PayChannel
object is the [SHA-512Half][] of the following values, concatenated in order:
The PayChannel space key (0x0078
)
The AccountID of the source account
The AccountID of the destination account
The Sequence number of the [PaymentChannelCreate transaction][] that created the channel If the PaymentChannelCreate transaction used a Ticket, use the TicketSequence
value instead.
An AccountRoot
ledger entry type describes a single account, its settings, and XAH balance.
An AccountRoot
object has the following fields:
There are several options which can be either enabled or disabled for an account. These options can be changed with an [AccountSet transaction][]. In the ledger, flags are represented as binary values that can be combined with bitwise-or operations. The bit values for the flags in the ledger are different than the values used to enable or disable those flags in a transaction. Ledger flags have names that begin with lsf
.
fAccountRoot objects can have the following flag values:
The ID of an AccountRoot object is the [SHA-512Half][] of the following values, concatenated in order:
The Account space key (0x0061
)
The AccountID of the account
(Not to be confused with the ["ledger hash" string data type][Hash], which uniquely identifies a ledger version. This section describes the LedgerHashes
ledger object type.)
The LedgerHashes
object type contains a history of prior ledgers that led up to this ledger version, in the form of their hashes. Objects of this ledger type are modified automatically when closing a ledger. (This is one of the only times a ledger's state data is modified without a transaction or pseudo-transaction.) The LedgerHashes
objects exist to make it possible to look up a previous ledger's hash with only the current ledger version and at most one lookup of a previous ledger version.
There are two kinds of LedgerHashes
object. Both types have the same fields. Each ledger version contains:
Exactly one "recent history" LedgerHashes
object
A number of "previous history" LedgerHashes
objects based on the current ledger index (that is, the length of the ledger history). Specifically, Xahau adds a new "previous history" object every 65536 ledger versions.
Note: As an exception, a new genesis ledger has no LedgerHashes
objects at all, because it has no ledger history.
Example LedgerHashes
object (trimmed for length):
A LedgerHashes
object has the following fields:
There is exactly one LedgerHashes
object of the "recent history" sub-type in every ledger after the genesis ledger. This object contains the identifying hashes of the most recent 256 ledger versions (or fewer, if the ledger history has less than 256 ledgers total) in the Hashes
array. Whenever a new ledger is closed, part of the process of closing it involves updating the "recent history" object with the hash of the previous ledger version this ledger version is derived from (also known as this ledger version's parent ledger). When there are more than 256 hashes, the oldest one is removed.
Using the "recent history" LedgerHashes
object of a given ledger, you can get the hash of any ledger index within the 256 ledger versions before the given ledger version.
The "previous history" LedgerHashes
entries collectively contain the hash of every 256th ledger version (also called "flag ledgers") in the full history of the ledger. When the child of a flag ledger closes, the flag ledger's hash is added to the Hashes
array of the newest "previous history" LedgerHashes
object. Every 65536 ledgers, rippled
creates a new LedgerHashes
object, so that each "previous history" object has the hashes of 256 flag ledgers.
Note: The oldest "previous history" LedgerHashes
object contains only 255 entries because the genesis ledger has a ledger index of 1, not 0.
There are two formats for LedgerHashes
object IDs, depending on whether the object is a "recent history" sub-type or a "previous history" sub-type.
The "recent history" LedgerHashes
object has an ID that is the [SHA-512Half][] of the LedgerHashes
space key (0x0073
). In other words, the "recent history" always has the ID B4979A36CDC7F3D3D5C31A4EAE2AC7D7209DDA877588B9AFC66799692AB0D66B
.
The "previous history" LedgerHashes
objects have an ID that is the [SHA-512Half][] of the following values, concatenated in order:
The LedgerHashes
space key (0x0073
)
The 32-bit [Ledger Index][] of a flag ledger in the object's Hashes
array, divided by 65536.
Tip: Dividing by 65536 keeps the most significant 16 bits, which are the same for all the flag ledgers listed in a "previous history" object, and only those ledgers. You can use this fact to look up the LedgerHashes
object that contains the hash of any flag ledger.
(Added by the [MultiSign amendment][].)
The SignerList
object type represents a list of parties that, as a group, are authorized to sign a transaction in place of an individual account. You can create, replace, or remove a signer list using a [SignerListSet transaction][].
A SignerList
object has the following fields:
The SignerEntries
may be any combination of funded and unfunded addresses that use either secp256k1 or ed25519 keys.
Each member of the SignerEntries
field is an object that describes that signer in the list. A Signer Entry has the following fields:
When processing a multi-signed transaction, the server looks up the Account
values with respect to the ledger at the time of transaction execution. If the address does not correspond to a funded AccountRoot object, then only the master private key associated with that address can be used to produce a valid signature. If the account does exist in the ledger, then it depends on the state of that account. If the account has a Regular Key configured, the Regular Key can be used. The account's master key can only be used if it is not disabled. A multi-signature cannot be used as part of another multi-signature.
(Added by the [MultiSignReserve amendment][].)
SignerList objects can have the following flag value:
A signer list contributes to its owner's reserve requirement.
The [MultiSignReserve amendment][] (enabled 2019-04-17) made it so each signer list counts as one object, regardless of how many members it has. As a result, the owner reserve associated with a new signer list is 2 XAH.
A signer list created before the [MultiSignReserve amendment][] itself counts as two objects, and each member of the list counts as one. As a result, the total owner reserve associated with the signer list is anywhere from 3 times to 10 times the reserve required by a single trust line (RippleState) or Offer object in the ledger. To update a signer list to use the new, reduced reserve, update the signer list by sending a [SignerListSet transaction][].
The ID of a signer list object is the SHA-512Half of the following values, concatenated in order:
The RippleState space key (0x0053
)
The AccountID of the owner of the signer list
The SignerListID
(currently always 0
)
A , as hexadecimal. If present, the [EscrowFinish transaction][] must contain a fulfillment that satisfies this condition.
The "previous history" LedgerHashes
objects act as a so you can get the hash of any historical flag ledger from its index. From there, you can use that flag ledger's "recent history" object to get the hash of any other ledger.
Balance
Object
Amount
Yes
The balance of the trust line, from the perspective of the low account. A negative balance indicates that the high account holds tokens issued by the low account. The issuer in this is always set to the neutral value ACCOUNT_ONE.
Flags
Number
UInt32
Yes
A bit-map of boolean options enabled for this object.
HighLimit
Object
Amount
Yes
The limit that the high account has set on the trust line. The issuer
is the address of the high account that set this limit.
HighNode
String
UInt64
Yes
(Omitted in some historical ledgers) A hint indicating which page of the high account's owner directory links to this object, in case the directory consists of multiple pages.
HighQualityIn
Number
UInt32
No
The inbound quality set by the high account, as an integer in the implied ratio HighQualityIn
:1,000,000,000. As a special case, the value 0 is equivalent to 1 billion, or face value.
HighQualityOut
Number
UInt32
No
The outbound quality set by the high account, as an integer in the implied ratio HighQualityOut
:1,000,000,000. As a special case, the value 0 is equivalent to 1 billion, or face value.
LedgerEntryType
String
UInt16
Yes
The value 0x0072
, mapped to the string RippleState
, indicates that this object is a RippleState object.
LowLimit
Object
Amount
Yes
The limit that the low account has set on the trust line. The issuer
is the address of the low account that set this limit.
LowNode
String
UInt64
Yes
(Omitted in some historical ledgers) A hint indicating which page of the low account's owner directory links to this object, in case the directory consists of multiple pages.
LowQualityIn
Number
UInt32
No
The inbound quality set by the low account, as an integer in the implied ratio LowQualityIn
:1,000,000,000. As a special case, the value 0 is equivalent to 1 billion, or face value.
LowQualityOut
Number
UInt32
No
The outbound quality set by the low account, as an integer in the implied ratio LowQualityOut
:1,000,000,000. As a special case, the value 0 is equivalent to 1 billion, or face value.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
LockCount
Number
UInt32
No
The total number of lock balances on a RippleState ledger object
LockedBalance
Object
Amount
No
The current amount of locked tokens for a specific trustline
Flag Name
Hex Value
Decimal Value
Corresponding TrustSet Flag
Description
lsfLowReserve
0x00010000
65536
(None)
This RippleState object contributes to the low account's owner reserve.
lsfHighReserve
0x00020000
131072
(None)
This RippleState object contributes to the high account's owner reserve.
lsfLowAuth
0x00040000
262144
tfSetAuth
The low account has authorized the high account to hold tokens issued by the low account.
lsfHighAuth
0x00080000
524288
tfSetAuth
The high account has authorized the low account to hold tokens issued by the high account.
lsfLowNoRipple
0x00100000
1048576
tfSetNoRipple
The low account has disabled rippling from this trust line.
lsfHighNoRipple
0x00200000
2097152
tfSetNoRipple
The high account has disabled rippling from this trust line.
lsfLowFreeze
0x00400000
4194304
tfSetFreeze
The low account has frozen the trust line, preventing the high account from transferring the asset.
lsfHighFreeze
0x00800000
8388608
tfSetFreeze
The high account has frozen the trust line, preventing the low account from transferring the asset.
Balance
is negative (the high account holds currency)
Balance
is positive (the low account holds currency)
HighLimit
is not 0
LowLimit
is not 0
LowQualityIn
is not 0
and not 1000000000
HighQualityIn
is not 0
and not 1000000000
LowQualityOut
is not 0
and not 1000000000
HighQualityOut
is not 0
and not 1000000000
lsfHighNoRipple
flag is not in its default state
lsfLowNoRipple
flag is not in its default state
lsfHighFreeze
flag is enabled
lsfLowFreeze
flag is enabled
FirstLedgerSequence
Number
UInt32
The [ledger index][] when the validator was added to the Negative UNL.
PublicKey
String
Blob
The master public key of the validator, in hexadecimal.
Account
String
AccountID
Yes
The address of the account that owns this Offer.
BookDirectory
String
Hash256
Yes
The ID of the Offer Directory that links to this Offer.
BookNode
String
UInt64
Yes
A hint indicating which page of the offer directory links to this object, in case the directory consists of multiple pages.
Expiration
Number
UInt32
No
Indicates the time after which this Offer is considered unfunded. See [Specifying Time][] for details.
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this offer.
LedgerEntryType
String
UInt16
Yes
The value 0x006F
, mapped to the string Offer
, indicates that this object describes an Offer.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner directory links to this object, in case the directory consists of multiple pages. Note: The offer does not contain a direct link to the owner directory containing it, since that value can be derived from the Account
.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
Sequence
Number
UInt32
Yes
The Sequence
value of the [OfferCreate][] transaction that created this Offer
object. Used in combination with the Account
to identify this Offer.
TakerPays
String or Object
Amount
Yes
The remaining amount and type of currency requested by the Offer creator.
TakerGets
String or Object
Amount
Yes
The remaining amount and type of currency being provided by the Offer creator.
Flag Name
Hex Value
Decimal Value
Corresponding OfferCreate Flag
Description
lsfPassive
0x00010000
65536
tfPassive
The object was placed as a passive Offer. This has no effect on the object in the ledger.
lsfSell
0x00020000
131072
tfSell
The object was placed as a sell Offer. This has no effect on the object in the ledger (because tfSell
only matters if you get a better rate than you asked for, which cannot happen after the object enters the ledger).
Account
String
AccountID
Yes
The source address that owns this payment channel. This comes from the sending address of the transaction that created the channel.
Amount
String or Object
Amount
Yes
Total amount, that has been allocated to this channel. This includes amounts that has been paid to the destination address. This is initially set by the transaction that created the channel and can be increased if the source address sends a PaymentChannelFund transaction.
Balance
String or Object
Amount
Yes
Total amount already paid out by the channel. The difference between this value and the Amount
field is how much amount can still be paid to the destination address with PaymentChannelClaim transactions. If the channel closes, the remaining difference is returned to the source address.
CancelAfter
Number
UInt32
No
The immutable expiration time for this payment channel, in [seconds since the Ripple Epoch][]. This channel is expired if this value is present and smaller than the previous ledger's close_time
field. This is optionally set by the transaction that created the channel, and cannot be changed.
Destination
String
AccountID
Yes
The destination address for this payment channel. While the payment channel is open, this address is the only one that can receive the amount from the channel. This comes from the Destination
field of the transaction that created the channel.
DestinationTag
Number
UInt32
No
An arbitrary tag to further specify the destination for this payment channel, such as a hosted recipient at the destination address.
DestinationNode
String
UInt64
No
A hint indicating which page of the destination's owner directory links to this object, in case the directory consists of multiple pages. Omitted on payment channels created before enabling the [fixPayChanRecipientOwnerDir amendment][].
Expiration
Number
UInt32
No
The mutable expiration time for this payment channel, in [seconds since the Ripple Epoch][]. The channel is expired if this value is present and smaller than the previous ledger's close_time
field. See Setting Channel Expiration for more details.
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for PayChannel
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0078
, mapped to the string PayChannel
, indicates that this object is a payment channel object.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the source address's owner directory links to this object, in case the directory consists of multiple pages.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
PublicKey
String
Blob
Yes
Public key, in hexadecimal, of the key pair that can be used to sign claims against this channel. This can be any valid secp256k1 or Ed25519 public key. This is set by the transaction that created the channel and must match the public key used in claims against the channel. The channel source address can also send amounts from this channel to the destination without signed claims.
SettleDelay
Number
UInt32
Yes
Number of seconds the source address must wait to close the channel if it still has any amount in it. Smaller values mean that the destination address has less time to redeem any outstanding claims after the source address requests to close the channel. Can be any value that fits in a 32-bit unsigned integer (0 to 2^32-1). This is set by the transaction that creates the channel.
SourceTag
Number
UInt32
No
An arbitrary tag to further specify the source for this payment channel, such as a hosted recipient at the owner's address.
TransferRate
Number
UInt32
No
Account
String
AccountID
Yes
The identifying (classic) address of this account.
Sequence
Number
UInt32
Yes
The sequence number of the next valid transaction for this account.
Balance
String
Amount
No
The account's current [XAH balance in drops][XAH, in drops], represented as a string.
OwnerCount
Number
UInt32
Yes
The number of objects this account owns in the ledger, which contributes to its owner reserve.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
AccountTxnID
String
Hash256
No
The identifying hash of the transaction most recently sent by this account. This field must be enabled to use the AccountTxnID
transaction field. To enable it, send an AccountSet transaction with the asfAccountTxnID
flag enabled.
RegularKey
String
AccountID
No
The address of a key pair that can be used to sign transactions for this account instead of the master key. Use a [SetRegularKey transaction][] to change this value.
EmailHash
String
Hash128
No
The md5 hash of an email address. Clients can use this to look up an avatar through services such as Gravatar.
WalletLocator
String
Hash256
No
An arbitrary 256-bit value that users can set.
WalletSize
Number
UInt32
No
Unused. (The code supports this field but there is no way to set it.)
MessageKey
String
Blob
No
A public key that may be used to send encrypted messages to this account. In JSON, uses hexadecimal. Must be exactly 33 bytes, with the first byte indicating the key type: 0x02
or 0x03
for secp256k1 keys, 0xED
for Ed25519 keys.
TransferRate
Number
UInt32
No
A transfer fee to charge other users for sending currency issued by this account to each other.
Domain
String
Blob
No
A domain associated with this account. In JSON, this is the hexadecimal for the ASCII representation of the domain. Cannot be more than 256 bytes in length.
TickSize
Number
UInt8
No
How many significant digits to use for exchange rates of Offers involving currencies issued by this address. Valid values are 3
to 15
, inclusive. (Added by the [TickSize amendment][].)
TicketCount
Number
UInt32
No
How many Tickets this account owns in the ledger. This is updated automatically to ensure that the account stays within the hard limit of 250 Tickets at a time. This field is omitted if the account has zero Tickets. (Added by the [TicketBatch amendment][].)
NFTokenMinter
String
AccountID
No
Another account that can mint non-fungible tokens on behalf of this account. (Added by the [NonFungibleTokensV1_1 amendment][])
MintedNFTokens
Number
UInt32
No
How many total non-fungible tokens have been minted by and on behalf of this account. (Added by the [NonFungibleTokensV1_1 amendment][])
BurnedNFTokens
Number
UInt32
No
How many total of this account's issued non-fungible tokens have been burned. This number is always equal or less than MintedNFTokens
.
HookStateCount
Number
UInt32
No
The number of states on the Hook.
HookNamespaces
Array
Vector256
No
A unique value to prevent state conflicts between multiple Hooks installed on the same XAHL account.
RewardLgrFirst
Number
UInt32
No
The ledger number of the last ClaimReward transaction.
RewardLgrLast
Number
UInt32
No
The ledger sequence number of the last transaction in or out of your account.
RewardTime
Number
UInt32
No
The ledger time the last reward was claimed.
RewardAccumulator
String
UInt64
No
The area under of the balance-time graph for your account since last ClaimReward transaction.
FirstNFTokenSequence
Number
UInt32
No
The account's [Sequence Number][] at the time it minted its first non-fungible-token. (Added by the [fixNFTokenRemint amendment][] :not_enabled:)
ImportSequence
Number
UInt32
No
The current sequence number from the importing account on the XAHL Ledger.
GovernanceFlags
String
Hash256
No
GovernanceMarks
String
Hash256
No
AccountIndex
String
UInt64
No
The account's [Index Number][]. (Added by the [xahauGenesis amendment][] :enabled:)
lsfDefaultRipple
0x00800000
8388608
asfDefaultRipple
Enable rippling on this addresses's trust lines by default. Required for issuing addresses; discouraged for others.
lsfDepositAuth
0x01000000
16777216
asfDepositAuth
This account has DepositAuth enabled, meaning it can only receive funds from transactions it sends, and from preauthorized accounts. (Added by the [DepositAuth amendment][])
lsfDisableMaster
0x00100000
1048576
asfDisableMaster
Disallows use of the master key to sign transactions for this account.
lsfDisallowIncomingCheck
0x08000000
134217728
asfDisallowIncomingCheck
This account blocks incoming Checks.
lsfDisallowIncomingNFTokenOffer
0x04000000
67108864
asfDisallowIncomingNFTokenOffer
This account blocks incoming NFTokenOffers.
lsfDisallowIncomingPayChan
0x10000000
268435456
asfDisallowIncomingPayChan
This account blocks incoming Payment Channels.
lsfDisallowIncomingTrustline
0x20000000
536870912
asfDisallowIncomingTrustline
This account blocks incoming trust lines.
lsfDisallowIncomingRemit
0x80000000
2147483648
asfDisallowIncomingRemit
This account blocks incoming remit transactions.
lsfDisallowXRP
0x00080000
524288
asfDisallowXRP
Client applications should not send XAH to this account. (Advisory; not enforced by the protocol.)
lsfGlobalFreeze
0x00400000
4194304
asfGlobalFreeze
All assets issued by this account are frozen.
lsfNoFreeze
0x00200000
2097152
asfNoFreeze
This account cannot freeze trust lines connected to it. Once enabled, cannot be disabled.
lsfPasswordSpent
0x00010000
65536
(None)
This account has used its free SetRegularKey transaction.
lsfRequireAuth
0x00040000
262144
asfRequireAuth
This account must individually approve other users for those users to hold this account's tokens.
lsfRequireDestTag
0x00020000
131072
asfRequireDest
Requires incoming payments to specify a Destination Tag.
lsfTshCollect
0x02000000
33554432
asfTshCollect
The TSH pays for the execution of their own Hook Chain.
lsfURITokenIssuer
0x04000000
67108864
asfURITokenIssuer
This account cannot be deleted after it has issued a URIToken.
FirstLedgerSequence
Number
UInt32
Yes
DEPRECATED Do not use. (The "recent hashes" object of the production Xahau has the value 2
in this field as a result of a previous rippled
software. That value gets carried forward as the "recent hashes" object is updated. New "previous history" objects do not have this field, nor do "recent hashes" objects in parallel networks started with more recent versions of rippled
.)
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for LedgerHashes
objects. The value is always 0
.
Hashes
Array of Strings
Vector256
Yes
An array of up to 256 ledger hashes. The contents depend on which sub-type of LedgerHashes
object this is.
LastLedgerSequence
Number
UInt32
Yes
The [Ledger Index][] of the last entry in this object's Hashes
array.
LedgerEntryType
String
UInt16
Yes
The value 0x0068
, mapped to the string LedgerHashes
, indicates that this object is a list of ledger hashes.
Flags
Number
UInt32
Yes
A bit-map of Boolean flags enabled for this signer list. For more information, see SignerList Flags.
LedgerEntryType
String
UInt16
Yes
The value 0x0053
, mapped to the string SignerList
, indicates that this object is a SignerList object.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner directory links to this object, in case the directory consists of multiple pages.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
SignerEntries
Array
Array
Yes
An array of Signer Entry objects representing the parties who are part of this signer list.
SignerListID
Number
UInt32
Yes
An ID for this signer list. Currently always set to 0
. If a future amendment allows multiple signer lists for an account, this may change.
SignerQuorum
Number
UInt32
Yes
A target number for signer weights. To produce a valid signature for the owner of this SignerList, the signers must provide valid signatures whose weights sum to this value or more.
Account
String
AccountID
A Xahau address whose signature contributes to the multi-signature. It does not need to be a funded address in the ledger.
SignerWeight
Number
UInt16
The weight of a signature from this signer. A multi-signature is only valid if the sum weight of the signatures provided meets or exceeds the signer list's SignerQuorum
value.
WalletLocator
String
Hash256
(Optional) Arbitrary hexadecimal data. This can be used to identify the signer or for other, related purposes. (Added by the [ExpandedSignerList amendment][].)
lsfOneOwnerCount
0x00010000
65536
If this flag is enabled, this SignerList counts as one item for purposes of the owner reserve. Otherwise, this list counts as N+2 items, where N is the number of signers it contains. This flag is automatically enabled if you add or update a signer list after the [MultiSignReserve amendment][] is enabled.
DisabledValidators
Array
Array
No
A list of DisabledValidator
objects (see below), each representing a trusted validator that is currently disabled.
Flags
Number
UInt32
Yes
A bit-map of boolean flags. No flags are defined for the NegativeUNL object type, so this value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x004E
, mapped to the string NegativeUNL
, indicates that this object is the Negative UNL.
ValidatorToDisable
String
Blob
No
The public key of a trusted validator that is scheduled to be disabled in the next flag ledger.
ValidatorToReEnable
String
Blob
No
The public key of a trusted validator in the Negative UNL that is scheduled to be re-enabled in the next flag ledger.
Account
String
Account
Yes
The account that granted the preauthorization. (The destination of the preauthorized payments.)
Authorize
String
Account
Yes
The account that received the preauthorization. (The sender of the preauthorized payments.)
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for DepositPreauth
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0070
, mapped to the string DepositPreauth
, indicates that this is a DepositPreauth object.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the sender's owner directory links to this object, in case the directory consists of multiple pages. Note: The object does not contain a direct link to the owner directory containing it, since that value can be derived from the Account
.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
Every ledger version has a unique header that describes the contents. You can look up a ledger's header information with the [ledger method][]. The contents of the ledger header are as follows:
ledger_index
String
UInt32
The [ledger index][Ledger Index] of the ledger. Some API methods display this as a quoted integer; some display it as a native JSON number.
ledger_hash
String
Hash256
The [SHA-512Half][] of this ledger version. This serves as a unique identifier for this ledger and all its contents.
account_hash
String
Hash256
The [SHA-512Half][] of this ledger's state tree information.
close_time
Number
UInt32
The approximate time this ledger version closed, as the number of seconds since the Ripple Epoch of 2000-01-01 00:00:00. This value is rounded based on the close_time_resolution
.
closed
Boolean
Boolean
If true
, this ledger version is no longer accepting new transactions. (However, unless this ledger version is validated, it might be replaced by a different ledger version with a different set of transactions.)
parent_hash
String
Hash256
The ledger_hash
value of the previous ledger version that is the direct predecessor of this one. If there are different versions of the previous ledger index, this indicates from which one the ledger was derived.
total_coins
String
UInt64
The total number of [drops of XAH][] owned by accounts in the ledger. This omits XAH that has been destroyed by transaction fees. The actual amount of XAH in circulation is lower because some accounts are "black holes" whose keys are not known by anyone.
transaction_hash
String
Hash256
The [SHA-512Half][] of the transactions included in this ledger.
close_time_resolution
Number
Uint8
An integer in the range [2,120] indicating the maximum number of seconds by which the close_time
could be rounded.
closeFlags
(Omitted)
UInt8
A bit-map of flags relating to the closing of this ledger.
The ledger has only one flag defined for closeFlags
: sLCF_NoConsensusTime
(value 1
). If this flag is enabled, it means that validators had different close times for the ledger, but built otherwise the same ledger, so they declared consensus while "agreeing to disagree" on the close time. In this case, official close_time
value of the ledger is 1 second after that of the parent ledger.
The closeFlags
field is not included in any JSON representations of a ledger, but is included in the binary representation of a ledger, and is one of the fields that determine the ledger's hash.
For ledger basics, see Ledgers.
(Added by the [URI Token amendment][].)
A URIToken
object describes a URI token, which can be used to represent a unique resource identifier in the ledger.
A URIToken
object has the following fields:
Owner
String
Account
Yes
The owner of the URI Token.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner's directory links to this object, in case the directory consists of multiple pages.
Issuer
String
Account
Yes
The issuer of the URI Token.
URI
String
VL
Yes
The URI represented by this token.
Digest
String
Hash256
No
Arbitrary 256-bit hash provided by the owner as a specific identifier for this URI Token.
Amount
String or Object
Amount
No
The amount of the URI Token.
Destination
String
Account
No
The intended recipient of the URI Token.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The index of the ledger that contains the transaction that most recently modified this object.
LedgerEntryType
String
UInt16
Yes
The value 0x0073
, mapped to the string URIToken
, indicates that this object is a URI Token object.
URIToken
objects can have the following flag values:
Flag Name
Hex Value
Decimal Value
Corresponding URITokenMint Flag
Description
lsfBurnable
0x00000001
1
tfBurnable
The issuer (or an entity authorized by the issuer) to destroy the minted URIToken
. (The URIToken
's owner can always do so.)
The ID of a URIToken
object is the [SHA-512Half][] of the following values, concatenated in order:
The URI Token space key (0x0055
)
The AccountID of the issuer of the URI Token
The URI represented by the URI Token
(Added by the [Hooks amendment][].)
A UNLReport
object describes a report of the Unique Node List (UNL) which is a list of validator nodes that are trusted by the network to validate transactions.
A UNLReport
object has the following fields:
LedgerEntryType
String
UInt16
Yes
The value 0x0073
, mapped to the string UNLReport
, indicates that this object is a UNLReport object.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The index of the ledger that contains the transaction that most recently modified this object.
ImportVLKeys
Array
Array
No
An array of objects, each representing a validator key that has been imported. Each object has a PublicKey
field and an optional Account
field.
ActiveValidators
Array
Array
No
An array of objects, each representing an active validator. Each object has a PublicKey
field and an optional Account
field.
PublicKey
String
VL
Yes
The public key of the imported validator.
Account
String
Account
No
The account associated with the imported validator key. This field is optional.
PublicKey
String
VL
Yes
The public key of the active validator.
Account
String
Account
No
The account associated with the active validator. This field is optional.
The UNLReport
object ID is the hash of the UNLReport
space key (0x0052
) only. This means that the ID of the UNLReport
object in a ledger is always:
Each object in a ledger's state data has a unique ID. The ID is derived by hashing important contents of the object, along with a namespace identifier. The ledger object type determines which namespace identifier to use and which contents to include in the hash. This ensures every ID is unique. To calculate the hash, xahaud
uses SHA-512 and then truncates the result to the first 256 bits. This algorithm, informally called SHA-512Half, provides an output that has comparable security to SHA-256, but runs faster on 64-bit processors.
Generally, a ledger object's ID is returned as the index
field in JSON, at the same level as the object's contents. In transaction metadata, the ledger object's ID in JSON is LedgerIndex
.
Tip: The index
or LedgerIndex
field of an object in the ledger is the ledger object ID. This is not the same as a [ledger index][].
{{ include_svg("img/ledger-object-ids.svg", "Diagram: xahaud uses SHA-512Half to generate IDs for ledger objects. The space key prevents IDs for different object types from colliding.") }}
For more information how Xahau creates and uses hashes, see Hashes.
For ledger basics, see Ledgers.
(Added by the [TicketBatch amendment][].)
The Ticket
object type represents a Ticket, which tracks an account [sequence number][Sequence Number] that has been set aside for future use. You can create new tickets with a [TicketCreate transaction][]. [New in: rippled 1.7.0][]
A Ticket
object has the following fields:
Account
String
AccountID
Yes
The account that owns this Ticket.
Flags
Number
UInt32
Yes
A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for Ticket
objects. The value is always 0
.
LedgerEntryType
String
UInt16
Yes
The value 0x0054
, mapped to the string Ticket
, indicates that this object is a {{currentpage.name}} object.
OwnerNode
String
UInt64
Yes
A hint indicating which page of the owner directory links to this object, in case the directory consists of multiple pages. Note: The object does not contain a direct link to the owner directory containing it, since that value can be derived from the Account
.
PreviousTxnID
String
Hash256
Yes
The identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeq
Number
UInt32
Yes
The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
TicketSequence
Number
UInt32
Yes
The [Sequence Number][] this Ticket sets aside.
The ID of a Ticket object is the SHA-512Half of the following values, concatenated in order:
The Ticket space key (0x0054
)
The AccountID of the owner of the Ticket
The TicketSequence
number of the Ticket