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:
Object Type | API Fields | Hash Prefix (Hex) | Hash Prefix (Text) |
---|---|---|---|
Consensus proposal | N/A |
|
|
Ledger Version |
|
|
|
Ledger state data |
|
|
|
Ledger data inner node | N/A |
|
|
Ledger data inner node (SHAMapv2) | N/A |
|
|
Payment Channel Claim | N/A |
|
|
Signed Transaction |
|
|
|
Transaction with metadata | N/A |
|
|
Unsigned Transaction (Single-signing) | N/A |
|
|
Unsigned Transaction (Multi-signing) | N/A |
|
|
Validation vote | N/A |
|
|
Validator manifest | N/A |
|
|
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