Data Types
Different types of objects are uniquely identified in different ways:
Accounts are identified by their Address, for example "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59"
. Addresses always start with "r". Many rippled
methods also accept a hexadecimal representation.
Transactions are identified by a Hash of the transaction's binary format. You can also identify a transaction by its sending account and Sequence Number.
Each closed Ledger has a Ledger Index and a Hash value. When [Specifying Ledgers][] you can use either one.
Addresses
Hashes
Hash Prefixes
In many cases, Xahau prefixes an object's binary data with a 4-byte code before calculating its hash, so that objects of different types have different hashes even if their binary formats are the same. The existing 4-byte codes are structured as three alphabetic characters, encoded as ASCII, followed by a zero byte.
Some types of hash appear in API requests and responses. Others are only calculated as the first step of signing a certain type of data, or calculating a higher-level hash. The following table shows all 4-byte hash prefixes Xahau uses:
Consensus proposal
N/A
0x50525000
PRP\0
Ledger Version
ledger_hash
0x4C575200
LWR\0
Ledger state data
account_state
in ledger header
0x4D4C4E00
MLN\0
Ledger data inner node
N/A
0x4D494E00
MIN\0
Ledger data inner node (SHAMapv2)
N/A
0x494E5200
INR\0
Payment Channel Claim
N/A
0x434C4D00
CLM\0
Signed Transaction
hash
of transactions
0x54584E00
TXN\0
Transaction with metadata
N/A
0x534E4400
SND\0
Unsigned Transaction (Single-signing)
N/A
0x53545800
STX\0
Unsigned Transaction (Multi-signing)
N/A
0x534D5400
SMT\0
Validation vote
N/A
0x56414C00
VAL\0
Validator manifest
N/A
0x4D414E00
MAN\0
Ledger objects IDs are calculated in a similar way, but they use a 2-byte prefix called a "space key" instead of a prefix in the form described here.
Account Sequence
Ledger Index
Specifying Ledgers
Many API methods require you to specify an instance of the ledger, with the data retrieved being considered up-to-date as of that particular version of the shared ledger. The commands that accept a ledger version all work the same way. There are three ways you can specify which ledger you want to use:
Specify a ledger by its Ledger Index in the
ledger_index
parameter. Each closed ledger has a ledger index that is 1 higher than the previous ledger. (The very first ledger had ledger index 1.)Specify a ledger by its Hash value in the
ledger_hash
parameter.Specify a ledger by one of the following shortcuts, in the
ledger_index
parameter:validated
for the most recent ledger that has been validated by consensusclosed
for the most recent ledger that has been closed for modifications and proposed for validationcurrent
for the server's current working version of the ledger.
There is also a deprecated ledger
parameter which accepts any of the above three formats. Do not use this parameter; it may be removed without further notice.
If you do not specify a ledger, the server decides which ledger to use to serve the request. By default, the server chooses the current
(in-progress) ledger. In Reporting Mode, the server uses the most recent validated ledger instead. Do not provide more than one field specifying ledgers.
Note: Do not rely on the default behavior for specifying a ledger; it is subject to change. Always specify a ledger version in the request if you can.
Reporting Mode does not record ledger data until it has been validated. If you make a request to a Reporting Mode server for the current
or closed
ledger, the server forwards the request to a P2P Mode server. If you request a ledger index or hash that is not validated, a Reporting Mode server responds with a lgrNotFound
error.
Specifying Currency Amounts
There are two kinds of currencies in Xahau: XAH and tokens. These two types of currencies are specified in different formats, with different precision and rounding behavior.
Some fields, such as the destination Amount
of a [Payment transaction][], can be either type. Some fields only accept XAH specifically, such as the Fee
field (transaction cost).
XAH is specified as a string containing an integer number of "drops" of XAH, where 1 million drops equals 1 XAH. Tokens are instead specified as an object with fields for the decimal amount, currency code, and issuer. For example:
XAH - To specify an
Amount
field with a value of 13.1 XAH:Token - To specify an
Amount
field with a value of 13.1 FOO issued by or torf1B...
:
For more information, see Currency Formats.
Specifying Time
The xahaud
server and its APIs represent time as an unsigned integer. This number measures the number of seconds since the "Ripple Epoch" of January 1, 2000 (00:00 UTC). This is like the way the Unix epoch works, except the Ripple Epoch is 946684800 seconds after the Unix Epoch.
Don't convert Ripple Epoch times to UNIX Epoch times in 32-bit variables: this could lead to integer overflows.
Last updated