rippled doc updates (DEV-141, DEV-142, DEV-172, DEV-175, DEV-177, DEV-178)

This commit is contained in:
mDuo13
2016-02-01 18:47:03 -08:00
parent 8355c4a970
commit ae7de9ab7a
4 changed files with 763 additions and 320 deletions

View File

@@ -5161,7 +5161,7 @@ The request includes the following parameters:
| destination\_account | String | Unique address of the account to find a path to. (In other words, the account that would receive a payment.) |
| destination\_amount | String or Object | [Currency amount](#specifying-currency-amounts) that the destination account would receive in a transaction. **Special case:** _(New in [rippled 0.30.0](https://github.com/ripple/rippled/releases/tag/0.30.0))_ You can specify `"-1"` (for XRP) or provide -1 as the contents of the `value` field (for non-XRP currencies). This requests a path to deliver as much as possible, while spending no more than the amount specified in `send_max` (if provided). |
| send\_max | String or Object | (Optional) [Currency amount](#specifying-currency-amounts) that would be spent in the transaction. Not compatible with `source_currencies`. _(New in [rippled 0.30.0](https://github.com/ripple/rippled/releases/tag/0.30.0))_ |
| paths | Array | (Optional) Array of arrays of objects, representing paths to confirm. You can use this to keep updated on changes to particular paths you already know about, or to check the overall cost to make a payment along a certain path. |
| paths | Array | (Optional) Array of arrays of objects, representing [payment paths](paths.html) to check. You can use this to keep updated on changes to particular paths you already know about, or to check the overall cost to make a payment along a certain path. |
The server also recognizes the following fields, but the results of using them are not guaranteed: `source_currencies`, `bridges`. These fields should be considered reserved for future use.
@@ -5544,7 +5544,7 @@ The initial response follows the [standard format](#response-formatting), with a
| Field | Type | Description |
|-------|------|-------------|
| alternatives | Array | Array of objects with suggested paths to take, as described below. If empty, then no paths were found connecting the source and destination accounts. |
| alternatives | Array | Array of objects with suggested [paths](paths.html) to take, as described below. If empty, then no paths were found connecting the source and destination accounts. |
| destination\_account | String | Unique address of the account that would receive a transaction |
| destination\_amount | String or Object | [Currency amount](#specifying-currency-amounts) that the destination would receive in a transaction |
| id | (Various) | (WebSocket only) The ID provided in the WebSocket request is included again at this level. |
@@ -5566,7 +5566,7 @@ Each element in the `alternatives` array is an object that represents a path fro
#### Asynchronous Follow-ups ####
In addition to the initial response, the server sends more messages in a similar format to update on the status of the paths over time. These messages include the `id` of the original WebSocket request so you can tell which request prompted them, and the field `"type": "path_find"` at the top level to indicate that they are additional responses. The other fields are defined in the same way as the initial response.
In addition to the initial response, the server sends more messages in a similar format to update on the status of [payment paths](paths.html) over time. These messages include the `id` of the original WebSocket request so you can tell which request prompted them, and the field `"type": "path_find"` at the top level to indicate that they are additional responses. The other fields are defined in the same way as the initial response.
If the follow-up includes `"full_reply": true`, then this is the best path that rippled can find as of the current ledger.
@@ -6674,6 +6674,7 @@ The `streams` parameter provides access to the following default streams of info
* `ledger` - Sends a message whenever the consensus process declares a new validated ledger
* `transactions` - Sends a message whenever a transaction is included in a closed ledger
* `transactions_proposed` - Sends a message whenever a transaction is included in a closed ledger, as well as some transactions that have not yet been included in a validated ledger and may never be. Not all proposed transactions appear before validation, however. (__*Note:*__ [Even some transactions that don't succeed are included](transactions.html#result-categories) in validated ledgers, because they take the anti-spam transaction fee.)
* `validations` - Sends a message whenever the server receives a validation message from a server it trusts. (An individual `rippled` declares a ledger validated when the server receives validation messages from at least a quorum of trusted validators.)
Each member of the `books` array, if provided, is an object with the following fields:
@@ -6685,8 +6686,6 @@ Each member of the `books` array, if provided, is an object with the following f
| snapshot | Boolean | (Optional, defaults to false) If true, return the current state of the order book once when you subscribe before sending updates |
| both | Boolean | (Optional, defaults to false) If true, return both sides of the order book. |
The field `proof` is reserved for future use.
#### Response Format ####
An example of a successful response:
@@ -6709,7 +6708,7 @@ The response follows the [standard format](#response-formatting). The fields con
* `accounts` and `accounts_proposed` - No fields returned
* *Stream: server* - Information about the server status, such as `load_base` (the current load level of the server), `random` (a randomly-generated value), and others, subject to change.
* *Stream: transactions* and *Stream: transactions_proposed* - No fields returned
* *Stream: transactions*, *Stream: transactions_proposed*, and *Stream: validations* - No fields returned
* *Stream: ledger* - Information about the ledgers on hand and current fee schedule, such as `fee_base` (current base fee for transactions in XRP), `fee_ref` (current base fee for transactions in fee units), `ledger_hash` (hash of the latest validated ledger), `reserve_base` (minimum reserve for accounts), and more.
* `books` - No fields returned by default. If `"snapshot": true` is set in the request, returns `offers` (an array of offer definition objects defining the order book)
@@ -6764,7 +6763,32 @@ The fields from a ledger stream message are as follows:
| reserve\_base | Unsigned Integer | The minimum reserve, in drops of XRP, that is required for an account. If the ledger includes a [SetFee pseudo-transaction](transactions.html#setfee) the new base reserve applies after this ledger. |
| reserve\_inc | Unsigned Integer | The increase in account reserve that is added for each item the account owns, such as offers or trust lines. If the ledger includes a [SetFee pseudo-transaction](transactions.html#setfee) the new owner reserve applies after this ledger. |
| txn\_count | Unsigned Integer | Number of new transactions included in this ledger |
| validated\_ledgers | String | Range of ledgers that the server has available. This may be discontiguous. |
| validated\_ledgers | String | (May be omitted) Range of ledgers that the server has available. This may be discontiguous. This field is not returned if the server is not connected to the network, or if it is connected but has not yet obtained a ledger from the network. |
#### Stream: validations Message ####
The validations stream sends messages whenever it receives validation messages, also called validation votes, from validators it trusts. The message looks like the following:
```
{
"type": "validationReceived",
"ledger_hash": "7B0B865DC3B648E35B1EB21FAD9501A765E6523B382CB182AC63DBE7D3DA5CC2",
"signature": "3045022100FA33615FCE1DDF56D0EEE0B750414D9C41FBE31B59A17B6A139F65A500ACA11702205B1129FFE78E2A4BC6BE98213C8172E2416780AB6F757D9067A2DBE224865495",
"validation_public_key": "n9MD5h24qrQqiyBC8aeqqCWvpiBiYQ3jxSr91uiDvmrkyHRdYLUj"
}
```
The fields from a validations stream message are as follows:
| Field | Type | Description |
|-------|------|-------------|
| type | String | `validationReceived` indicates this is from the validations stream |
| ledger\_hash | String | The identifying hash of the proposed ledger that this server declares validated by consensus. |
| signature | String | The signature that the validator used to sign its vote for this ledger. |
| validation\_public\_key | String | The base-58 encoded public key from the key-pair that the validator used to sign the message. This identifies the validator sending the message and can also be used to verify the `signature`. |
#### Transaction Messages ####
@@ -7002,14 +7026,16 @@ An example of the request format:
<!-- <div class='multicode'> -->
*WebSocket*
```
{
"id": 11,
"id": 1,
"command": "server_info"
}
```
*JSON-RPC*
```
{
"method": "server_info",
@@ -7019,6 +7045,13 @@ An example of the request format:
}
```
*Commandline*
```
#Syntax: server_info
rippled server_info
```
<!-- </div> -->
[Try it! >](ripple-api-tool.html#server_info)
@@ -7034,32 +7067,102 @@ An example of a successful response:
*WebSocket*
```
{
"id": 11,
"id": 1,
"status": "success",
"type": "response",
"result": {
"info": {
"build_version": "0.25.2",
"complete_ledgers": "32570-7695432",
"hostid": "AIR",
"build_version": "0.30.1-rc3",
"complete_ledgers": "18611104-18614732",
"hostid": "trace",
"io_latency_ms": 1,
"last_close": {
"converge_time_s": 2.037,
"converge_time_s": 4.003,
"proposers": 5
},
"load_factor": 1,
"peers": 56,
"pubkey_node": "n9LVtEwRBRfLhrs5cZcKYiYMw6wT9MgmAZEMQEXmX4Bwkq4D6hc1",
"server_state": "full",
"load": {
"job_types": [
{
"job_type": "untrustedProposal",
"per_second": 2
},
{
"in_progress": 1,
"job_type": "clientCommand"
},
{
"job_type": "transaction",
"per_second": 4
},
{
"job_type": "batch",
"per_second": 3
},
{
"job_type": "writeObjects",
"per_second": 2
},
{
"job_type": "trustedProposal",
"per_second": 1
},
{
"job_type": "peerCommand",
"per_second": 108
},
{
"job_type": "diskAccess",
"per_second": 1
},
{
"job_type": "processTransaction",
"per_second": 4
},
{
"job_type": "WriteNode",
"per_second": 63
}
],
"threads": 6
},
"load_factor": 1000,
"load_factor_net": 1000,
"peers": 10,
"pubkey_node": "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator": "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state": "proposing",
"state_accounting": {
"connected": {
"duration_us": "150510079",
"transitions": 1
},
"disconnected": {
"duration_us": "1827731",
"transitions": 1
},
"full": {
"duration_us": "166972201508",
"transitions": 1853
},
"syncing": {
"duration_us": "6249156726",
"transitions": 1854
},
"tracking": {
"duration_us": "13035222",
"transitions": 1854
}
},
"uptime": 173379,
"validated_ledger": {
"age": 3,
"base_fee_xrp": 0.00001,
"hash": "274C27799A91DF08603AF9B5CB03372ECF844B6D643CAF69F25205C9509E212F",
"hash": "04F7CF4EACC57140C8088F6BFDC8A824BB3ED5717C3DAA6642101F9FB446226C",
"reserve_base_xrp": 20,
"reserve_inc_xrp": 5,
"seq": 7695432
"seq": 18614732
},
"validation_quorum": 3
"validation_quorum": 4
}
}
}
@@ -7071,124 +7174,81 @@ An example of a successful response:
{
"result" : {
"info" : {
"build_version" : "0.30.1-b15",
"complete_ledgers" : "32570-18217433",
"hostid" : "sjc13",
"build_version" : "0.30.1-rc3",
"complete_ledgers" : "18611104-18614536",
"hostid" : "trace",
"io_latency_ms" : 1,
"last_close" : {
"converge_time_s" : 2.001,
"proposers" : 4
"converge_time_s" : 3.002,
"proposers" : 5
},
"load" : {
"job_types" : [
{
"job_type" : "untrustedValidation",
"peak_time" : 2,
"per_second" : 2
},
{
"avg_time" : 1,
"job_type" : "ledgerRequest",
"peak_time" : 82,
"per_second" : 6
},
{
"job_type" : "untrustedProposal",
"per_second" : 3
},
{
"avg_time" : 1,
"in_progress" : 2,
"job_type" : "clientCommand",
"peak_time" : 39,
"in_progress" : 1,
"job_type" : "clientCommand"
},
{
"job_type" : "writeObjects",
"per_second" : 1
},
{
"in_progress" : 1,
"job_type" : "updatePaths"
},
{
"job_type" : "transaction",
"peak_time" : 1
},
{
"avg_time" : 29,
"job_type" : "writeObjects",
"peak_time" : 209
},
{
"avg_time" : 28,
"job_type" : "acceptLedger",
"peak_time" : 88
},
{
"job_type" : "trustedProposal",
"peak_time" : 2,
"per_second" : 2
"per_second" : 1
},
{
"job_type" : "peerCommand",
"per_second" : 529
},
{
"avg_time" : 29,
"job_type" : "diskAccess",
"peak_time" : 209
},
{
"avg_time" : 316,
"job_type" : "pathFind",
"peak_time" : 2663
},
{
"job_type" : "SyncReadNode",
"per_second" : 135
"per_second" : 61
},
{
"job_type" : "WriteNode",
"peak_time" : 2,
"per_second" : 77
"per_second" : 41
}
],
"threads" : 6
},
"load_factor" : 1000,
"load_factor_net" : 1000,
"peers" : 66,
"pubkey_node" : "n9JveA1hHDGjZECaYC7KM4JP8NXXzNXAxixbzcLTGnrsFZsA9AD1",
"pubkey_validator" : "none",
"server_state" : "full",
"peers" : 10,
"pubkey_node" : "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator" : "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state" : "proposing",
"state_accounting" : {
"connected" : {
"duration_us" : "102137155",
"duration_us" : "150510079",
"transitions" : 1
},
"disconnected" : {
"duration_us" : "1126989",
"duration_us" : "1827731",
"transitions" : 1
},
"full" : {
"duration_us" : "233465512872",
"transitions" : 514
"duration_us" : "166170134942",
"transitions" : 1838
},
"syncing" : {
"duration_us" : "1480415394",
"transitions" : 514
"duration_us" : "6196072160",
"transitions" : 1839
},
"tracking" : {
"duration_us" : "25881256",
"transitions" : 514
"duration_us" : "9023236",
"transitions" : 1839
}
},
"uptime" : 235075,
"uptime" : 172520,
"validated_ledger" : {
"age" : 4,
"base_fee_xrp" : 1e-05,
"hash" : "EB4EB596D85381AAE54196648FC3FAD28A49091CF03ACF7812EF1D311252656C",
"hash" : "B69EDD86AB57C6F80F5AA6D4246AC2C9EC0BE0E49649FBC46EEE12DE56500DCA",
"reserve_base_xrp" : 20,
"reserve_inc_xrp" : 5,
"seq" : 18217433
"seq" : 18614536
},
"validation_quorum" : 3
"validation_quorum" : 4
},
"status" : "success"
}
@@ -7214,16 +7274,20 @@ The `info` object may have some arrangement of the following fields:
| load\_factor | Number | The load factor the server is currently enforcing, as a multiplier on the base transaction cost. The load factor is determined by the highest of the individual server's load factor, cluster's load factor, and the overall network's load factor. **Note:** This `load_factor` is calculated as the ratio of the `load_factor` and the `load_base` that are reported by the [`server_state` command](#server-state) |
| peers | Number | How many other `rippled` servers the node is currently connected to. |
| pubkey_node | String | Public key used to verify this node for internal communications; this key is automatically generated by the server the first time it starts up. (If deleted, the node can just create a new pair of keys.) |
| pubkey_validator | String | *Admin only* Public key used by this node to sign ledger validations; . |
| server_state | String | A string indicating to what extent the server is participating in the network. See [Possible Server States](#possible-server-states) for more details. |
| validated_ledger | Object | Information about the fully-validated ledger with the highest sequence number (the most recent) |
| validated_ledger.age | Unsigned Integer | The time since the ledger was closed, in seconds |
| validated_ledger.base_fee_xrp | Number | Base fee, in XRP. This may be represented in scientific notation such as 1e-05 for 0.00005 |
| validated_ledger.hash | String | Unique hash for the ledger, as hex |
| validated_ledger.reserve_base_xrp | Unsigned Integer | Minimum amount of XRP (not drops) necessary for every account to keep in reserve |
| validated_ledger.reserve_inc_xrp | Unsigned Integer | Amount of XRP (not drops) added to the account reserve for each object an account is responsible for in the ledger |
| validated_ledger.seq | Unsigned Integer | Identifying sequence number of this ledger version |
| validation_quorum | Number | Minimum number of trusted validations required in order to validate a ledger version. Some circumstances may cause the server to require more validations. |
| pubkey\_validator | String | *Admin only* Public key used by this node to sign ledger validations. |
| server\_state | String | A string indicating to what extent the server is participating in the network. See [Possible Server States](#possible-server-states) for more details. |
| state\_accounting | Object | A map of various [server states](#possible-server-states) with information about the time the server spends in each. This can be useful for tracking the long-term health of your server's connectivity to the network. (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| state\_accounting.*.duration\_us | String | The number of microseconds the server has spent in this state. (This is updated whenever the server transitions into another state.) (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| state\_accounting.*.transitions | Number | The number of times the server has transitioned into this state. (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| uptime | Number | Number of consecutive seconds that the server has been operational. (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| validated\_ledger | Object | Information about the fully-validated ledger with the highest [Ledger Index][] (the most recent) |
| validated\_ledger.age | Number | The time since the ledger was closed, in seconds |
| validated\_ledger.base\_fee\_xrp | Number | Base fee, in XRP. This may be represented in scientific notation such as 1e-05 for 0.00005 |
| validated\_ledger.hash | String | Unique hash for the ledger, as hex |
| validated\_ledger.reserve\_base\_xrp | Unsigned Integer | Minimum amount of XRP (not drops) necessary for every account to keep in reserve |
| validated\_ledger.reserve\_inc\_xrp | Unsigned Integer | Amount of XRP (not drops) added to the account reserve for each object an account is responsible for in the ledger |
| validated\_ledger.seq | Number - [Ledger Index][] | The ledger index of the latest validate ledger |
| validation\_quorum | Number | Minimum number of trusted validations required in order to validate a ledger version. Some circumstances may cause the server to require more validations. |
#### Possible Errors ####
@@ -7242,14 +7306,16 @@ An example of the request format:
<!-- <div class='multicode'> -->
*WebSocket*
```
{
"id": 12,
"id": 2,
"command": "server_state"
}
```
*JSON-RPC*
```
{
"method": "server_state",
@@ -7259,6 +7325,13 @@ An example of the request format:
}
```
*Commandline*
```
#Syntax: server_state
rippled server_state
```
<!-- </div> -->
[Try it! >](ripple-api-tool.html#server_state)
@@ -7280,63 +7353,188 @@ An example of a successful response:
"type": "response",
"result": {
"state": {
"build_version": "0.25.2",
"complete_ledgers": "32570-7696746",
"build_version": "0.30.1-rc3",
"complete_ledgers": "18611104-18615049",
"io_latency_ms": 1,
"last_close": {
"converge_time": 2097,
"proposers": 4
"converge_time": 3003,
"proposers": 5
},
"load": {
"job_types": [
{
"job_type": "untrustedProposal",
"peak_time": 1,
"per_second": 3
},
{
"in_progress": 1,
"job_type": "clientCommand"
},
{
"avg_time": 12,
"job_type": "writeObjects",
"peak_time": 345,
"per_second": 2
},
{
"job_type": "trustedProposal",
"per_second": 1
},
{
"job_type": "peerCommand",
"per_second": 64
},
{
"avg_time": 33,
"job_type": "diskAccess",
"peak_time": 526
},
{
"job_type": "WriteNode",
"per_second": 55
}
],
"threads": 6
},
"load_base": 256,
"load_factor": 256,
"peers": 61,
"pubkey_node": "n9L4DuE6NsZiVWyYdHcYbKoELTXr4fs32VY8bdic5c4uVrfrADmX",
"server_state": "full",
"load_factor": 256000,
"peers": 10,
"pubkey_node": "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator": "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state": "proposing",
"state_accounting": {
"connected": {
"duration_us": "150510079",
"transitions": 1
},
"disconnected": {
"duration_us": "1827731",
"transitions": 1
},
"full": {
"duration_us": "168295542987",
"transitions": 1865
},
"syncing": {
"duration_us": "6294237352",
"transitions": 1866
},
"tracking": {
"duration_us": "13035524",
"transitions": 1866
}
},
"uptime": 174748,
"validated_ledger": {
"base_fee": 10,
"close_time": 458432860,
"hash": "95A05F232C8C4B4DC313CB91A4C823A221120DD8692395150A3012876C8CD772",
"close_time": 507693650,
"hash": "FEB17B15FB64E3AF8D371E6AAFCFD8B92775BB80AB953803BD73EA8EC75ECA34",
"reserve_base": 20000000,
"reserve_inc": 5000000,
"seq": 7696746
"seq": 18615049
},
"validation_quorum": 3
"validation_quorum": 4
}
}
}
```
*JSON-RPC*
```
200 OK
{
"result" : {
"state" : {
"build_version": "0.26.3",
"complete_ledgers": "32570-8696244",
"build_version" : "0.30.1-rc3",
"complete_ledgers" : "18611104-18615037",
"io_latency_ms" : 1,
"last_close" : {
"converge_time": 2120,
"converge_time" : 2001,
"proposers" : 5
},
"load" : {
"job_types" : [
{
"job_type" : "untrustedProposal",
"per_second" : 2
},
{
"in_progress" : 1,
"job_type" : "clientCommand"
},
{
"job_type" : "writeObjects",
"per_second" : 2
},
{
"avg_time" : 2,
"job_type" : "acceptLedger",
"peak_time" : 6
},
{
"job_type" : "trustedProposal",
"per_second" : 1
},
{
"job_type" : "peerCommand",
"per_second" : 80
},
{
"job_type" : "diskAccess",
"per_second" : 1
},
{
"job_type" : "WriteNode",
"per_second" : 91
}
],
"threads" : 6
},
"load_base" : 256,
"load_factor": 256,
"peers": 58,
"pubkey_node": "n9LJ5eCNjeUXQpNXHCcLv9PQ8LMFYy4W8R1BdVNcpjc1oDwe6XZF",
"server_state": "full",
"load_factor" : 256000,
"peers" : 10,
"pubkey_node" : "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator" : "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state" : "proposing",
"state_accounting" : {
"connected" : {
"duration_us" : "150510079",
"transitions" : 1
},
"disconnected" : {
"duration_us" : "1827731",
"transitions" : 1
},
"full" : {
"duration_us" : "168241260112",
"transitions" : 1865
},
"syncing" : {
"duration_us" : "6294237352",
"transitions" : 1866
},
"tracking" : {
"duration_us" : "13035524",
"transitions" : 1866
}
},
"uptime" : 174693,
"validated_ledger" : {
"base_fee" : 10,
"close_time": 463192610,
"hash": "43660857C8FD74D8D5B9D6D9E3D4BE11FAD92985F6B8C9A406DC1F87FF6CB77F",
"close_time" : 507693592,
"hash" : "1C26209AE593C7EB5123363B3152D86514845FBD42CC6B05111D57F62D02B113",
"reserve_base" : 20000000,
"reserve_inc" : 5000000,
"seq": 8696244
"seq" : 18615037
},
"validation_quorum": 3
"validation_quorum" : 4
},
"status" : "success"
}
}
```
<!-- </div> -->
@@ -7348,36 +7546,41 @@ The `state` object may have some arrangement of the following fields:
| Field | Type | Description |
|-------|------|-------------|
| build_version | String | The version number of the running `rippled` version. |
| complete_ledgers | String | Range expression indicating the sequence numbers of the ledger versions the local rippled has in its database. It is possible to be a disjoint sequence, e.g. "2500-5000,32570-7695432". |
| io_latency_ms | Number | Amount of time spent waiting for I/O operations to be performed, in milliseconds. If this number is not very, very low, then the `rippled` server is probably having serious load issues. |
| complete\_ledgers | String | Range expression indicating the sequence numbers of the ledger versions the local rippled has in its database. It is possible to be a disjoint sequence, e.g. "2500-5000,32570-7695432". |
| io\_latency\_ms | Number | Amount of time spent waiting for I/O operations to be performed, in milliseconds. If this number is not very, very low, then the `rippled` server is probably having serious load issues. |
| load | Object | *Admin only* Detailed information about the current load state of the server |
| load.job_types | Array | *Admin only* Information about the rate of different types of jobs being performed by the server and how much time it spends on each. |
| load.job\_types | Array | *Admin only* Information about the rate of different types of jobs being performed by the server and how much time it spends on each. |
| load.threads | Number | *Admin only* The number of threads in the server's main job pool, performing various Ripple Network operations. |
| load\_base | Number | This amount of server load is the baseline that is used to decide how much to charge in transaction fees; if the `load_factor` is equal to the `load_base` then only the base fee is enforced; if the `load_factor` is double the `load_base` then transaction fees are doubled. |
| load\_factor | Number | The load factor the server is currently enforcing. The ratio between this value and the load\_base determines the multiplier for transaction fees. The load factor is determined by the highest of the individual server's load factor, cluster's load factor, and the overall network's load factor. |
| peers | Number | How many other `rippled` servers the node is currently connected to. |
| pubkey_node | String | Public key used by this server (along with the corresponding private key) for secure communications between nodes. This key pair is automatically created and stored in rippled's local database the first time it starts up; if lost or deleted, a new key pair can be generated with no ill effects. |
| pubkey_validator | String | *Admin only* Public key used by this server (along with the corresponding private key) to sign proposed ledgers for validation. |
| server_state | String | A string indicating to what extent the server is participating in the network. See [Possible Server States](#possible-server-states) for more details. |
| validated_ledger | Object | Information about the fully-validated ledger with the highest sequence number (the most recent) |
| validated_ledger.base_fee | Unsigned Integer | Base fee, in drops of XRP, for propagating a transaction to the network.
| validated_ledger.close_time | Number | Time this ledger was closed, in seconds since the [Ripple Epoch](#specifying-time) |
| validated_ledger.hash | String | Unique hash of this ledger version, as hex |
| validated_ledger.reserve_base | Unsigned Integer | Minimum amount, in drops of XRP, necessary for every account to keep in reserve |
| validated_ledger.reserve_inc | Unsigned Integer | Amount, in drops of XRP, that is added to the account reserve for each item the account owns in the ledger. |
| validated_ledger.seq | Unsigned Integer | Unique sequence number of this ledger
| validation_quorum | Number | Minimum number of trusted validations required in order to validate a ledger version. Some circumstances may cause the server to require more validations. |
| pubkey\_node | String | Public key used by this server (along with the corresponding private key) for secure communications between nodes. This key pair is automatically created and stored in `rippled`'s local database the first time it starts up; if lost or deleted, a new key pair can be generated with no ill effects. |
| pubkey\_validator | String | *Admin only* Public key of the keypair used by this server to sign proposed ledgers for validation. |
| server\_state | String | A string indicating to what extent the server is participating in the network. See [Possible Server States](#possible-server-states) for more details. |
| state\_accounting | Object | A map of various [server states](#possible-server-states) with information about the time the server spends in each. This can be useful for tracking the long-term health of your server's connectivity to the network. (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| state\_accounting.*.duration\_us | String | The number of microseconds the server has spent in this state. (This is updated whenever the server transitions into another state.) (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| state\_accounting.*.transitions | Number | The number of times the server has transitioned into this state. (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| uptime | Number | Number of consecutive seconds that the server has been operational. (New in [version 0.30.1](https://wiki.ripple.com/Rippled-0.30.1)) |
| validated\_ledger | Object | Information about the fully-validated ledger with the highest sequence number (the most recent) |
| validated\_ledger.base\_fee | Unsigned Integer | Base fee, in drops of XRP, for propagating a transaction to the network.
| validated\_ledger.close_time | Number | Time this ledger was closed, in seconds since the [Ripple Epoch](#specifying-time) |
| validated\_ledger.hash | String | Unique hash of this ledger version, as hex |
| validated\_ledger.reserve\_base | Unsigned Integer | Minimum amount, in drops of XRP, necessary for every account to keep in reserve |
| validated\_ledger.reserve\_inc | Unsigned Integer | Amount, in drops of XRP, that is added to the account reserve for each item the account owns in the ledger. |
| validated\_ledger.seq | Unsigned Integer | Unique sequence number of this ledger
| validation\_quorum | Number | Minimum number of trusted validations required in order to validate a ledger version. Some circumstances may cause the server to require more validations. |
#### Possible Errors ####
* Any of the [universal error types](#universal-errors).
## can_delete ##
[[Source]<br>](https://github.com/ripple/rippled/blob/develop/src/ripple/rpc/handlers/CanDelete.cpp "Source")
With `online_delete` and `advisory_delete` configuration options enabled, the `can_delete` method informs the rippled server of the latest ledger which may be deleted.
_The `can_delete` method is an admin command that cannot be run by unpriviledged users._
_The `can_delete` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
@@ -7418,7 +7621,7 @@ The request includes the following optional parameter:
| Field | Type | Description |
|-------|------|-------------|
| can_delete | String or Integer | The maximum ledger to allow to be deleted. For `ledger_index` or `ledger_hash`, see [Specifying a Ledger](#specifying-ledgers). `never` sets the value to 0, and effectively disables online deletion until another `can_delete` is appropriately called. `always` sets the value to the maximum possible ledger (4294967295), and online deletion will occur as of each configured `online_delete` interval. `now` triggers online deletion at the next validated ledger that meets or exceeds the configured `online_delete` interval, but no further. |
| can\_delete | String or Integer | The maximum ledger to allow to be deleted. For `ledger_index` or `ledger_hash`, see [Specifying a Ledger](#specifying-ledgers). `never` sets the value to 0, and effectively disables online deletion until another `can_delete` is appropriately called. `always` sets the value to the maximum possible ledger (4294967295), and online deletion will occur as of each configured `online_delete` interval. `now` triggers online deletion at the next validated ledger that meets or exceeds the configured `online_delete` interval, but no further. |
If no parameter is specified, no change is made.
@@ -7427,7 +7630,7 @@ a successful result containing the following fields:
| Field | Type | Description |
|-------|------|-------------|
| can_delete | Integer | The maximum ledger index that may be removed by the online deletion routine. |
| can\_delete | Integer | The maximum ledger index that may be removed by the online deletion routine. |
Use this command with no parameter to query the existing `can_delete` setting.
@@ -7445,7 +7648,7 @@ Use this command with no parameter to query the existing `can_delete` setting.
The `consensus_info` command provides information about the consensus process for debugging purposes.
_The `consensus_info` method is an admin command that cannot be run by unpriviledged users._
_The `consensus_info` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:
@@ -7676,7 +7879,7 @@ The results of the `consensus_info` command can vary dramatically if you run it
The `fetch_info` command returns information about objects that this server is currently fetching from the network, and how many peers have that information. It can also be used to reset current fetches.
_The `fetch_info` method is an admin command that cannot be run by unpriviledged users._
_The `fetch_info` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:
@@ -7835,7 +8038,7 @@ The fields describing a fetch in progress are subject to change without notice.
The `get_counts` command provides various stats about the health of the server, mostly the number of objects of different types that it currently holds in memory.
_The `get_counts` method is an admin command that cannot be run by unpriviledged users._
_The `get_counts` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:
@@ -7986,7 +8189,7 @@ For most other entries, the value indicates the number of objects of that type c
The `ledger_cleaner` command controls the [Ledger Cleaner](https://github.com/ripple/rippled/blob/f313caaa73b0ac89e793195dcc2a5001786f916f/src/ripple/app/ledger/README.md#the-ledger-cleaner), an asynchronous maintenance process that can find and repair corruption in rippled's database of ledgers.
_The `ledger_cleaner` method is an admin command that cannot be run by unpriviledged users._
_The `ledger_cleaner` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:
@@ -8056,7 +8259,7 @@ The response follows the [standard format](#response-formatting), with a success
The `log_level` command changes the `rippled` server's logging verbosity, or returns the current logging level for each category (called a _partition_) of log messages.
_The `log_level` method is an admin command that cannot be run by unpriviledged users._
_The `log_level` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:
@@ -8193,7 +8396,7 @@ Otherwise, the request contains the following field:
The `logrotate` command closes and reopens the log file. This is intended to facilitate log rotation on Linux file systems.
_The `logrotate` method is an admin command that cannot be run by unpriviledged users._
_The `logrotate` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:
@@ -8270,7 +8473,7 @@ The response follows the [standard format](#response-formatting), with a success
Use the `validation_create` command to generate the keys for a rippled [validating node](rippled-setup.html#validator-setup). Similar to the [wallet_propose](#wallet-propose) command, this command makes no real changes, but only generates a set of keys in the proper format.
_The `validation_create` method is an admin command that cannot be run by unpriviledged users._
_The `validation_create` method is an [admin command](#connecting-to-rippled) that cannot be run by unpriviledged users._
#### Request Format ####
An example of the request format:

View File

@@ -467,8 +467,8 @@ The available AccountSet flags are:
| asfDisallowXRP | 3 | XRP should not be sent to this account. (Enforced by client applications, not by `rippled`) | lsfDisallowXRP |
| asfDisableMaster | 4 | Disallow use of the master key. Can only be enabled if the account has a [RegularKey](#setregularkey) configured. | lsfDisableMaster |
| asfAccountTxnID | 5 | Track the ID of this account's most recent transaction. Required for [AccountTxnID](#accounttxnid) | (None) |
| asfNoFreeze | 6 | Permanently give up the ability to freeze individual trust lines. This flag can never be disabled after being enabled. | lsfNoFreeze |
| asfGlobalFreeze | 7 | Freeze all assets issued by this account. | lsfGlobalFreeze |
| asfNoFreeze | 6 | Permanently give up the ability to [freeze individual trust lines or disable Global Freeze](freeze.html). This flag can never be disabled after being enabled. | lsfNoFreeze |
| asfGlobalFreeze | 7 | [Freeze](freeze.html) all assets issued by this account. | lsfGlobalFreeze |
| asfDefaultRipple | 8 | Enable [rippling](https://ripple.com/knowledge_center/understanding-the-noripple-flag/) on this account's trust lines by default. _(New in [rippled 0.27.3](https://github.com/ripple/rippled/releases/tag/0.27.3))_ | lsfDefaultRipple |
_New in [rippled 0.28.0][]:_ You cannot send a transaction that enables `asfDisableMaster` or `asfNoFreeze` using a [regular key](#setregularkey). You must use the master key to sign the transaction.
@@ -572,7 +572,7 @@ It is possible for an offer to become temporarily or permanently *unfunded*:
* If the creator no longer has any of the `TakerGets` currency.
* The offer becomes funded again when the creator obtains more of that currency.
* If the currency required to fund the offer is held in a [frozen trust line](https://wiki.ripple.com/Freeze).
* If the currency required to fund the offer is held in a [frozen trust line](freeze.html).
* The offer becomes funded again when the trust line is no longer frozen.
* If the creator does not have enough XRP for the reserve amount of a new trust line required by the offer. (See [Offers and Trust](#offers-and-trust).)
* The offer becomes funded again when the creator obtains more XRP, or the reserve requirements decrease.
@@ -726,8 +726,8 @@ Transactions of the TrustSet type support additional values in the [`Flags` fiel
| tfSetfAuth | 0x00010000 | 65536 | Authorize the other party to hold issuances from this account. (No effect unless using the [*asfRequireAuth* AccountSet flag](#accountset-flags).) Cannot be unset. |
| tfSetNoRipple | 0x00020000 | 131072 | Blocks rippling between two trustlines of the same currency, if this flag is set on both. (See [No Ripple](https://ripple.com/knowledge_center/understanding-the-noripple-flag/) for details.) |
| tfClearNoRipple | 0x00040000 | 262144 | Clears the No-Rippling flag. (See [No Ripple](https://ripple.com/knowledge_center/understanding-the-noripple-flag/) for details.) |
| tfSetFreeze | 0x00100000 | 1048576 | [Freeze](https://wiki.ripple.com/Freeze) the trustline.
| tfClearFreeze | 0x00200000 | 2097152 | Unfreeze the trustline. |
| tfSetFreeze | 0x00100000 | 1048576 | [Freeze](freeze.html) the trustline.
| tfClearFreeze | 0x00200000 | 2097152 | [Unfreeze](freeze.html) the trustline. |
# Pseudo-Transactions #
@@ -1016,7 +1016,7 @@ These codes indicate that the transaction failed, but it was applied to a ledger
| tecNO\_AUTH | 134 | The transaction failed because it needs to add a balance on a trust line to an account with the `lsfRequireAuth` flag enabled, and that trust line has not been authorized. If the trust line does not exist at all, tecNO\_LINE occurs instead. |
| tecNO\_LINE | 135 | The `TakerPays` field of the [OfferCreate transaction](#offercreate) specifies an asset whose issuer has `lsfRequireAuth` enabled, and the account making the offer does not have a trust line for that asset. (Normally, making an offer implicitly creates a trust line if necessary, but in this case it does not bother because you cannot hold the asset without authorization.) If the trust line exists, but is not authorized, tecNO\_AUTH occurs instead. |
| tecINSUFF\_FEE | 136 | The account sending the transaction does not possess enough XRP to pay the specified `Fee`. This error only occurs if the transaction has already been propagated through the network to achieve consensus, |
| tecFROZEN | 137 | The [OfferCreate transaction](#offercreate) failed because one or both of the assets involved are subject to a [global freeze](https://ripple.com/files/GB-2014-02.pdf). |
| tecFROZEN | 137 | The [OfferCreate transaction](#offercreate) failed because one or both of the assets involved are subject to a [global freeze](freeze.html). |
| tecNO\_TARGET | 138 | **FORTHCOMING** Part of multi-signature transactions. |
| tecNO\_PERMISSION | 139 | **FORTHCOMING** Part of multi-signature transactions. |
| tecNO\_ENTRY | 140 | **FORTHCOMING** Part of multi-signature transactions. |

View File

@@ -6033,7 +6033,7 @@ rippled tx_history 0
<tr>
<td>paths</td>
<td>Array</td>
<td>(Optional) Array of arrays of objects, representing paths to confirm. You can use this to keep updated on changes to particular paths you already know about, or to check the overall cost to make a payment along a certain path.</td>
<td>(Optional) Array of arrays of objects, representing <a href="paths.html">payment paths</a> to check. You can use this to keep updated on changes to particular paths you already know about, or to check the overall cost to make a payment along a certain path.</td>
</tr>
</tbody>
</table>
@@ -6420,7 +6420,7 @@ rippled tx_history 0
<tr>
<td>alternatives</td>
<td>Array</td>
<td>Array of objects with suggested paths to take, as described below. If empty, then no paths were found connecting the source and destination accounts.</td>
<td>Array of objects with suggested <a href="paths.html">paths</a> to take, as described below. If empty, then no paths were found connecting the source and destination accounts.</td>
</tr>
<tr>
<td>destination_account</td>
@@ -6478,7 +6478,7 @@ rippled tx_history 0
<li><code>noEvents</code> - You are using a protocol that does not support asynchronous callbacks, for example JSON-RPC. (See <a href="#ripple-path-find">ripple_path_find</a> for a pathfinding method that <em>is</em> compatible with JSON-RPC.)</li>
</ul>
<h4 id="asynchronous-follow-ups">Asynchronous Follow-ups</h4>
<p>In addition to the initial response, the server sends more messages in a similar format to update on the status of the paths over time. These messages include the <code>id</code> of the original WebSocket request so you can tell which request prompted them, and the field <code>"type": "path_find"</code> at the top level to indicate that they are additional responses. The other fields are defined in the same way as the initial response.</p>
<p>In addition to the initial response, the server sends more messages in a similar format to update on the status of <a href="paths.html">payment paths</a> over time. These messages include the <code>id</code> of the original WebSocket request so you can tell which request prompted them, and the field <code>"type": "path_find"</code> at the top level to indicate that they are additional responses. The other fields are defined in the same way as the initial response.</p>
<p>If the follow-up includes <code>"full_reply": true</code>, then this is the best path that rippled can find as of the current ledger.</p>
<p>Here is an example of an asychronous follow-up from a path_find create request:</p>
<div class="multicode">
@@ -7767,6 +7767,7 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<li><code>ledger</code> - Sends a message whenever the consensus process declares a new validated ledger</li>
<li><code>transactions</code> - Sends a message whenever a transaction is included in a closed ledger</li>
<li><code>transactions_proposed</code> - Sends a message whenever a transaction is included in a closed ledger, as well as some transactions that have not yet been included in a validated ledger and may never be. Not all proposed transactions appear before validation, however. (<strong><em>Note:</em></strong> <a href="transactions.html#result-categories">Even some transactions that don't succeed are included</a> in validated ledgers, because they take the anti-spam transaction fee.)</li>
<li><code>validations</code> - Sends a message whenever the server receives a validation message from a server it trusts. (An individual <code>rippled</code> declares a ledger validated when the server receives validation messages from at least a quorum of trusted validators.)</li>
</ul>
<p>Each member of the <code>books</code> array, if provided, is an object with the following fields:</p>
<table>
@@ -7805,7 +7806,6 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
</tr>
</tbody>
</table>
<p>The field <code>proof</code> is reserved for future use.</p>
<h4 id="response-format-26">Response Format</h4>
<p>An example of a successful response:</p>
<div class="multicode">
@@ -7822,7 +7822,7 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<ul>
<li><code>accounts</code> and <code>accounts_proposed</code> - No fields returned</li>
<li><em>Stream: server</em> - Information about the server status, such as <code>load_base</code> (the current load level of the server), <code>random</code> (a randomly-generated value), and others, subject to change. </li>
<li><em>Stream: transactions</em> and <em>Stream: transactions_proposed</em> - No fields returned</li>
<li><em>Stream: transactions</em>, <em>Stream: transactions_proposed</em>, and <em>Stream: validations</em> - No fields returned</li>
<li><em>Stream: ledger</em> - Information about the ledgers on hand and current fee schedule, such as <code>fee_base</code> (current base fee for transactions in XRP), <code>fee_ref</code> (current base fee for transactions in fee units), <code>ledger_hash</code> (hash of the latest validated ledger), <code>reserve_base</code> (minimum reserve for accounts), and more.</li>
<li><code>books</code> - No fields returned by default. If <code>"snapshot": true</code> is set in the request, returns <code>offers</code> (an array of offer definition objects defining the order book)</li>
</ul>
@@ -7915,7 +7915,48 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<tr>
<td>validated_ledgers</td>
<td>String</td>
<td>Range of ledgers that the server has available. This may be discontiguous.</td>
<td>(May be omitted) Range of ledgers that the server has available. This may be discontiguous. This field is not returned if the server is not connected to the network, or if it is connected but has not yet obtained a ledger from the network.</td>
</tr>
</tbody>
</table>
<h4 id="stream-validations-message">Stream: validations Message</h4>
<p>The validations stream sends messages whenever it receives validation messages, also called validation votes, from validators it trusts. The message looks like the following:</p>
<pre><code>{
"type": "validationReceived",
"ledger_hash": "7B0B865DC3B648E35B1EB21FAD9501A765E6523B382CB182AC63DBE7D3DA5CC2",
"signature": "3045022100FA33615FCE1DDF56D0EEE0B750414D9C41FBE31B59A17B6A139F65A500ACA11702205B1129FFE78E2A4BC6BE98213C8172E2416780AB6F757D9067A2DBE224865495",
"validation_public_key": "n9MD5h24qrQqiyBC8aeqqCWvpiBiYQ3jxSr91uiDvmrkyHRdYLUj"
}
</code></pre>
<p>The fields from a validations stream message are as follows:</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>String</td>
<td><code>validationReceived</code> indicates this is from the validations stream</td>
</tr>
<tr>
<td>ledger_hash</td>
<td>String</td>
<td>The identifying hash of the proposed ledger that this server declares validated by consensus.</td>
</tr>
<tr>
<td>signature</td>
<td>String</td>
<td>The signature that the validator used to sign its vote for this ledger.</td>
</tr>
<tr>
<td>validation_public_key</td>
<td>String</td>
<td>The base-58 encoded public key from the key-pair that the validator used to sign the message. This identifies the validator sending the message and can also be used to verify the <code>signature</code>.</td>
</tr>
</tbody>
</table>
@@ -8213,7 +8254,7 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<div class="multicode">
<p><em>WebSocket</em></p>
<pre><code>{
"id": 11,
"id": 1,
"command": "server_info"
}
</code></pre>
@@ -8225,6 +8266,10 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
]
}
</code></pre>
<p><em>Commandline</em></p>
<pre><code>#Syntax: server_info
rippled server_info
</code></pre>
</div>
<p><a class="button" href="ripple-api-tool.html#server_info">Try it! &gt;</a></p>
<p>The request does not takes any parameters.</p>
@@ -8233,32 +8278,102 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<div class="multicode">
<p><em>WebSocket</em></p>
<pre><code>{
"id": 11,
"id": 1,
"status": "success",
"type": "response",
"result": {
"info": {
"build_version": "0.25.2",
"complete_ledgers": "32570-7695432",
"hostid": "AIR",
"build_version": "0.30.1-rc3",
"complete_ledgers": "18611104-18614732",
"hostid": "trace",
"io_latency_ms": 1,
"last_close": {
"converge_time_s": 2.037,
"converge_time_s": 4.003,
"proposers": 5
},
"load_factor": 1,
"peers": 56,
"pubkey_node": "n9LVtEwRBRfLhrs5cZcKYiYMw6wT9MgmAZEMQEXmX4Bwkq4D6hc1",
"server_state": "full",
"load": {
"job_types": [
{
"job_type": "untrustedProposal",
"per_second": 2
},
{
"in_progress": 1,
"job_type": "clientCommand"
},
{
"job_type": "transaction",
"per_second": 4
},
{
"job_type": "batch",
"per_second": 3
},
{
"job_type": "writeObjects",
"per_second": 2
},
{
"job_type": "trustedProposal",
"per_second": 1
},
{
"job_type": "peerCommand",
"per_second": 108
},
{
"job_type": "diskAccess",
"per_second": 1
},
{
"job_type": "processTransaction",
"per_second": 4
},
{
"job_type": "WriteNode",
"per_second": 63
}
],
"threads": 6
},
"load_factor": 1000,
"load_factor_net": 1000,
"peers": 10,
"pubkey_node": "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator": "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state": "proposing",
"state_accounting": {
"connected": {
"duration_us": "150510079",
"transitions": 1
},
"disconnected": {
"duration_us": "1827731",
"transitions": 1
},
"full": {
"duration_us": "166972201508",
"transitions": 1853
},
"syncing": {
"duration_us": "6249156726",
"transitions": 1854
},
"tracking": {
"duration_us": "13035222",
"transitions": 1854
}
},
"uptime": 173379,
"validated_ledger": {
"age": 3,
"base_fee_xrp": 0.00001,
"hash": "274C27799A91DF08603AF9B5CB03372ECF844B6D643CAF69F25205C9509E212F",
"hash": "04F7CF4EACC57140C8088F6BFDC8A824BB3ED5717C3DAA6642101F9FB446226C",
"reserve_base_xrp": 20,
"reserve_inc_xrp": 5,
"seq": 7695432
"seq": 18614732
},
"validation_quorum": 3
"validation_quorum": 4
}
}
}
@@ -8268,124 +8383,81 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
{
"result" : {
"info" : {
"build_version" : "0.30.1-b15",
"complete_ledgers" : "32570-18217433",
"hostid" : "sjc13",
"build_version" : "0.30.1-rc3",
"complete_ledgers" : "18611104-18614536",
"hostid" : "trace",
"io_latency_ms" : 1,
"last_close" : {
"converge_time_s" : 2.001,
"proposers" : 4
"converge_time_s" : 3.002,
"proposers" : 5
},
"load" : {
"job_types" : [
{
"job_type" : "untrustedValidation",
"peak_time" : 2,
"per_second" : 2
},
{
"avg_time" : 1,
"job_type" : "ledgerRequest",
"peak_time" : 82,
"per_second" : 6
},
{
"job_type" : "untrustedProposal",
"per_second" : 3
},
{
"avg_time" : 1,
"in_progress" : 2,
"job_type" : "clientCommand",
"peak_time" : 39,
"in_progress" : 1,
"job_type" : "clientCommand"
},
{
"job_type" : "writeObjects",
"per_second" : 1
},
{
"in_progress" : 1,
"job_type" : "updatePaths"
},
{
"job_type" : "transaction",
"peak_time" : 1
},
{
"avg_time" : 29,
"job_type" : "writeObjects",
"peak_time" : 209
},
{
"avg_time" : 28,
"job_type" : "acceptLedger",
"peak_time" : 88
},
{
"job_type" : "trustedProposal",
"peak_time" : 2,
"per_second" : 2
"per_second" : 1
},
{
"job_type" : "peerCommand",
"per_second" : 529
},
{
"avg_time" : 29,
"job_type" : "diskAccess",
"peak_time" : 209
},
{
"avg_time" : 316,
"job_type" : "pathFind",
"peak_time" : 2663
},
{
"job_type" : "SyncReadNode",
"per_second" : 135
"per_second" : 61
},
{
"job_type" : "WriteNode",
"peak_time" : 2,
"per_second" : 77
"per_second" : 41
}
],
"threads" : 6
},
"load_factor" : 1000,
"load_factor_net" : 1000,
"peers" : 66,
"pubkey_node" : "n9JveA1hHDGjZECaYC7KM4JP8NXXzNXAxixbzcLTGnrsFZsA9AD1",
"pubkey_validator" : "none",
"server_state" : "full",
"peers" : 10,
"pubkey_node" : "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator" : "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state" : "proposing",
"state_accounting" : {
"connected" : {
"duration_us" : "102137155",
"duration_us" : "150510079",
"transitions" : 1
},
"disconnected" : {
"duration_us" : "1126989",
"duration_us" : "1827731",
"transitions" : 1
},
"full" : {
"duration_us" : "233465512872",
"transitions" : 514
"duration_us" : "166170134942",
"transitions" : 1838
},
"syncing" : {
"duration_us" : "1480415394",
"transitions" : 514
"duration_us" : "6196072160",
"transitions" : 1839
},
"tracking" : {
"duration_us" : "25881256",
"transitions" : 514
"duration_us" : "9023236",
"transitions" : 1839
}
},
"uptime" : 235075,
"uptime" : 172520,
"validated_ledger" : {
"age" : 4,
"base_fee_xrp" : 1e-05,
"hash" : "EB4EB596D85381AAE54196648FC3FAD28A49091CF03ACF7812EF1D311252656C",
"hash" : "B69EDD86AB57C6F80F5AA6D4246AC2C9EC0BE0E49649FBC46EEE12DE56500DCA",
"reserve_base_xrp" : 20,
"reserve_inc_xrp" : 5,
"seq" : 18217433
"seq" : 18614536
},
"validation_quorum" : 3
"validation_quorum" : 4
},
"status" : "success"
}
@@ -8461,7 +8533,7 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<tr>
<td>pubkey_validator</td>
<td>String</td>
<td><em>Admin only</em> Public key used by this node to sign ledger validations; .</td>
<td><em>Admin only</em> Public key used by this node to sign ledger validations.</td>
</tr>
<tr>
<td>server_state</td>
@@ -8469,13 +8541,33 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<td>A string indicating to what extent the server is participating in the network. See <a href="#possible-server-states">Possible Server States</a> for more details.</td>
</tr>
<tr>
<td>state_accounting</td>
<td>Object</td>
<td>A map of various <a href="#possible-server-states">server states</a> with information about the time the server spends in each. This can be useful for tracking the long-term health of your server's connectivity to the network. (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>state_accounting.*.duration_us</td>
<td>String</td>
<td>The number of microseconds the server has spent in this state. (This is updated whenever the server transitions into another state.) (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>state_accounting.*.transitions</td>
<td>Number</td>
<td>The number of times the server has transitioned into this state. (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>uptime</td>
<td>Number</td>
<td>Number of consecutive seconds that the server has been operational. (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>validated_ledger</td>
<td>Object</td>
<td>Information about the fully-validated ledger with the highest sequence number (the most recent)</td>
<td>Information about the fully-validated ledger with the highest <a href="#ledger-index">Ledger Index</a> (the most recent)</td>
</tr>
<tr>
<td>validated_ledger.age</td>
<td>Unsigned Integer</td>
<td>Number</td>
<td>The time since the ledger was closed, in seconds</td>
</tr>
<tr>
@@ -8500,8 +8592,8 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
</tr>
<tr>
<td>validated_ledger.seq</td>
<td>Unsigned Integer</td>
<td>Identifying sequence number of this ledger version</td>
<td>Number - <a href="#ledger-index">Ledger Index</a></td>
<td>The ledger index of the latest validate ledger</td>
</tr>
<tr>
<td>validation_quorum</td>
@@ -8522,7 +8614,7 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<div class="multicode">
<p><em>WebSocket</em></p>
<pre><code>{
"id": 12,
"id": 2,
"command": "server_state"
}
</code></pre>
@@ -8534,6 +8626,10 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
]
}
</code></pre>
<p><em>Commandline</em></p>
<pre><code>#Syntax: server_state
rippled server_state
</code></pre>
</div>
<p><a class="button" href="ripple-api-tool.html#server_state">Try it! &gt;</a></p>
<p>The request does not takes any parameters.</p>
@@ -8547,27 +8643,88 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
"type": "response",
"result": {
"state": {
"build_version": "0.25.2",
"complete_ledgers": "32570-7696746",
"build_version": "0.30.1-rc3",
"complete_ledgers": "18611104-18615049",
"io_latency_ms": 1,
"last_close": {
"converge_time": 2097,
"proposers": 4
"converge_time": 3003,
"proposers": 5
},
"load": {
"job_types": [
{
"job_type": "untrustedProposal",
"peak_time": 1,
"per_second": 3
},
{
"in_progress": 1,
"job_type": "clientCommand"
},
{
"avg_time": 12,
"job_type": "writeObjects",
"peak_time": 345,
"per_second": 2
},
{
"job_type": "trustedProposal",
"per_second": 1
},
{
"job_type": "peerCommand",
"per_second": 64
},
{
"avg_time": 33,
"job_type": "diskAccess",
"peak_time": 526
},
{
"job_type": "WriteNode",
"per_second": 55
}
],
"threads": 6
},
"load_base": 256,
"load_factor": 256,
"peers": 61,
"pubkey_node": "n9L4DuE6NsZiVWyYdHcYbKoELTXr4fs32VY8bdic5c4uVrfrADmX",
"server_state": "full",
"load_factor": 256000,
"peers": 10,
"pubkey_node": "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator": "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state": "proposing",
"state_accounting": {
"connected": {
"duration_us": "150510079",
"transitions": 1
},
"disconnected": {
"duration_us": "1827731",
"transitions": 1
},
"full": {
"duration_us": "168295542987",
"transitions": 1865
},
"syncing": {
"duration_us": "6294237352",
"transitions": 1866
},
"tracking": {
"duration_us": "13035524",
"transitions": 1866
}
},
"uptime": 174748,
"validated_ledger": {
"base_fee": 10,
"close_time": 458432860,
"hash": "95A05F232C8C4B4DC313CB91A4C823A221120DD8692395150A3012876C8CD772",
"close_time": 507693650,
"hash": "FEB17B15FB64E3AF8D371E6AAFCFD8B92775BB80AB953803BD73EA8EC75ECA34",
"reserve_base": 20000000,
"reserve_inc": 5000000,
"seq": 7696746
"seq": 18615049
},
"validation_quorum": 3
"validation_quorum": 4
}
}
}
@@ -8577,31 +8734,94 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
{
"result" : {
"state" : {
"build_version": "0.26.3",
"complete_ledgers": "32570-8696244",
"build_version" : "0.30.1-rc3",
"complete_ledgers" : "18611104-18615037",
"io_latency_ms" : 1,
"last_close" : {
"converge_time": 2120,
"converge_time" : 2001,
"proposers" : 5
},
"load" : {
"job_types" : [
{
"job_type" : "untrustedProposal",
"per_second" : 2
},
{
"in_progress" : 1,
"job_type" : "clientCommand"
},
{
"job_type" : "writeObjects",
"per_second" : 2
},
{
"avg_time" : 2,
"job_type" : "acceptLedger",
"peak_time" : 6
},
{
"job_type" : "trustedProposal",
"per_second" : 1
},
{
"job_type" : "peerCommand",
"per_second" : 80
},
{
"job_type" : "diskAccess",
"per_second" : 1
},
{
"job_type" : "WriteNode",
"per_second" : 91
}
],
"threads" : 6
},
"load_base" : 256,
"load_factor": 256,
"peers": 58,
"pubkey_node": "n9LJ5eCNjeUXQpNXHCcLv9PQ8LMFYy4W8R1BdVNcpjc1oDwe6XZF",
"server_state": "full",
"load_factor" : 256000,
"peers" : 10,
"pubkey_node" : "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa",
"pubkey_validator" : "n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
"server_state" : "proposing",
"state_accounting" : {
"connected" : {
"duration_us" : "150510079",
"transitions" : 1
},
"disconnected" : {
"duration_us" : "1827731",
"transitions" : 1
},
"full" : {
"duration_us" : "168241260112",
"transitions" : 1865
},
"syncing" : {
"duration_us" : "6294237352",
"transitions" : 1866
},
"tracking" : {
"duration_us" : "13035524",
"transitions" : 1866
}
},
"uptime" : 174693,
"validated_ledger" : {
"base_fee" : 10,
"close_time": 463192610,
"hash": "43660857C8FD74D8D5B9D6D9E3D4BE11FAD92985F6B8C9A406DC1F87FF6CB77F",
"close_time" : 507693592,
"hash" : "1C26209AE593C7EB5123363B3152D86514845FBD42CC6B05111D57F62D02B113",
"reserve_base" : 20000000,
"reserve_inc" : 5000000,
"seq": 8696244
"seq" : 18615037
},
"validation_quorum": 3
"validation_quorum" : 4
},
"status" : "success"
}
}
</code></pre>
</div>
<p>The response follows the <a href="#response-formatting">standard format</a>, with a successful result containing a <code>state</code> object as its only field.</p>
@@ -8663,12 +8883,12 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<tr>
<td>pubkey_node</td>
<td>String</td>
<td>Public key used by this server (along with the corresponding private key) for secure communications between nodes. This key pair is automatically created and stored in rippled's local database the first time it starts up; if lost or deleted, a new key pair can be generated with no ill effects.</td>
<td>Public key used by this server (along with the corresponding private key) for secure communications between nodes. This key pair is automatically created and stored in <code>rippled</code>'s local database the first time it starts up; if lost or deleted, a new key pair can be generated with no ill effects.</td>
</tr>
<tr>
<td>pubkey_validator</td>
<td>String</td>
<td><em>Admin only</em> Public key used by this server (along with the corresponding private key) to sign proposed ledgers for validation.</td>
<td><em>Admin only</em> Public key of the keypair used by this server to sign proposed ledgers for validation.</td>
</tr>
<tr>
<td>server_state</td>
@@ -8676,6 +8896,26 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<td>A string indicating to what extent the server is participating in the network. See <a href="#possible-server-states">Possible Server States</a> for more details.</td>
</tr>
<tr>
<td>state_accounting</td>
<td>Object</td>
<td>A map of various <a href="#possible-server-states">server states</a> with information about the time the server spends in each. This can be useful for tracking the long-term health of your server's connectivity to the network. (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>state_accounting.*.duration_us</td>
<td>String</td>
<td>The number of microseconds the server has spent in this state. (This is updated whenever the server transitions into another state.) (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>state_accounting.*.transitions</td>
<td>Number</td>
<td>The number of times the server has transitioned into this state. (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>uptime</td>
<td>Number</td>
<td>Number of consecutive seconds that the server has been operational. (New in <a href="https://wiki.ripple.com/Rippled-0.30.1">version 0.30.1</a>)</td>
</tr>
<tr>
<td>validated_ledger</td>
<td>Object</td>
<td>Information about the fully-validated ledger with the highest sequence number (the most recent)</td>
@@ -8724,7 +8964,7 @@ rippled book_offers 'USD/rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'EUR/rvYAfWj5gh67oV6
<h2 id="can-delete">can_delete</h2>
<p><a href="https://github.com/ripple/rippled/blob/develop/src/ripple/rpc/handlers/CanDelete.cpp" title="Source">[Source]<br/></a></p>
<p>With <code>online_delete</code> and <code>advisory_delete</code> configuration options enabled, the <code>can_delete</code> method informs the rippled server of the latest ledger which may be deleted. </p>
<p><em>The <code>can_delete</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>can_delete</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-31">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -8798,7 +9038,7 @@ a successful result containing the following fields:</p>
<h2 id="consensus-info">consensus_info</h2>
<p><a href="https://github.com/ripple/rippled/blob/a61ffab3f9010d8accfaa98aa3cacc7d38e74121/src/ripple/rpc/handlers/ConsensusInfo.cpp" title="Source">[Source]<br/></a></p>
<p>The <code>consensus_info</code> command provides information about the consensus process for debugging purposes.</p>
<p><em>The <code>consensus_info</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>consensus_info</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-32">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -9041,7 +9281,7 @@ Connecting to 127.0.0.1:5005
<h2 id="fetch-info">fetch_info</h2>
<p><a href="https://github.com/ripple/rippled/blob/315a8b6b602798a4cff4d8e1911936011e12abdb/src/ripple/rpc/handlers/FetchInfo.cpp" title="Source">[Source]<br/></a></p>
<p>The <code>fetch_info</code> command returns information about objects that this server is currently fetching from the network, and how many peers have that information. It can also be used to reset current fetches. </p>
<p><em>The <code>fetch_info</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>fetch_info</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-33">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -9227,7 +9467,7 @@ Connecting to 127.0.0.1:5005
<h2 id="get-counts">get_counts</h2>
<p><a href="https://github.com/ripple/rippled/blob/c7118a183a660648aa88a3546a6b2c5bce858440/src/ripple/rpc/handlers/GetCounts.cpp" title="Source">[Source]<br/></a></p>
<p>The <code>get_counts</code> command provides various stats about the health of the server, mostly the number of objects of different types that it currently holds in memory. </p>
<p><em>The <code>get_counts</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>get_counts</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-34">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -9381,7 +9621,7 @@ Connecting to 127.0.0.1:5005
<h2 id="ledger-cleaner">ledger_cleaner</h2>
<p><a href="https://github.com/ripple/rippled/blob/df54b47cd0957a31837493cd69e4d9aade0b5055/src/ripple/rpc/handlers/LedgerCleaner.cpp" title="Source">[Source]<br/></a></p>
<p>The <code>ledger_cleaner</code> command controls the <a href="https://github.com/ripple/rippled/blob/f313caaa73b0ac89e793195dcc2a5001786f916f/src/ripple/app/ledger/README.md#the-ledger-cleaner">Ledger Cleaner</a>, an asynchronous maintenance process that can find and repair corruption in rippled's database of ledgers. </p>
<p><em>The <code>ledger_cleaner</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>ledger_cleaner</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-35">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -9480,7 +9720,7 @@ Connecting to 127.0.0.1:5005
<h2 id="log-level">log_level</h2>
<p><a href="https://github.com/ripple/rippled/blob/155fcdbcd0b4927152892c8c8be01d9cf62bed68/src/ripple/rpc/handlers/LogLevel.cpp" title="Source">[Source]<br/></a></p>
<p>The <code>log_level</code> command changes the <code>rippled</code> server's logging verbosity, or returns the current logging level for each category (called a <em>partition</em>) of log messages.</p>
<p><em>The <code>log_level</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>log_level</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-36">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -9619,7 +9859,7 @@ Connecting to 127.0.0.1:5005
<h2 id="logrotate">logrotate</h2>
<p><a href="https://github.com/ripple/rippled/blob/743bd6c9175c472814448ea889413be79dfd1c07/src/ripple/rpc/handlers/LogRotate.cpp" title="Source">[Source]<br/></a></p>
<p>The <code>logrotate</code> command closes and reopens the log file. This is intended to facilitate log rotation on Linux file systems.</p>
<p><em>The <code>logrotate</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>logrotate</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-37">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">
@@ -9683,7 +9923,7 @@ Connecting to 127.0.0.1:5005
<h2 id="validation-create">validation_create</h2>
<p><a href="https://github.com/ripple/rippled/blob/315a8b6b602798a4cff4d8e1911936011e12abdb/src/ripple/rpc/handlers/ValidationCreate.cpp" title="Source">[Source]<br/></a></p>
<p>Use the <code>validation_create</code> command to generate the keys for a rippled <a href="rippled-setup.html#validator-setup">validating node</a>. Similar to the <a href="#wallet-propose">wallet_propose</a> command, this command makes no real changes, but only generates a set of keys in the proper format.</p>
<p><em>The <code>validation_create</code> method is an admin command that cannot be run by unpriviledged users.</em></p>
<p><em>The <code>validation_create</code> method is an <a href="#connecting-to-rippled">admin command</a> that cannot be run by unpriviledged users.</em></p>
<h4 id="request-format-38">Request Format</h4>
<p>An example of the request format:</p>
<div class="multicode">

View File

@@ -746,13 +746,13 @@
<tr>
<td>asfNoFreeze</td>
<td>6</td>
<td>Permanently give up the ability to freeze individual trust lines. This flag can never be disabled after being enabled.</td>
<td>Permanently give up the ability to <a href="freeze.html">freeze individual trust lines or disable Global Freeze</a>. This flag can never be disabled after being enabled.</td>
<td>lsfNoFreeze</td>
</tr>
<tr>
<td>asfGlobalFreeze</td>
<td>7</td>
<td>Freeze all assets issued by this account.</td>
<td><a href="freeze.html">Freeze</a> all assets issued by this account.</td>
<td>lsfGlobalFreeze</td>
</tr>
<tr>
@@ -914,7 +914,7 @@
<ul>
<li>If the creator no longer has any of the <code>TakerGets</code> currency.</li>
<li>The offer becomes funded again when the creator obtains more of that currency.</li>
<li>If the currency required to fund the offer is held in a <a href="https://wiki.ripple.com/Freeze">frozen trust line</a>.</li>
<li>If the currency required to fund the offer is held in a <a href="freeze.html">frozen trust line</a>.</li>
<li>The offer becomes funded again when the trust line is no longer frozen.</li>
<li>If the creator does not have enough XRP for the reserve amount of a new trust line required by the offer. (See <a href="#offers-and-trust">Offers and Trust</a>.)</li>
<li>The offer becomes funded again when the creator obtains more XRP, or the reserve requirements decrease.</li>
@@ -1129,13 +1129,13 @@
<td>tfSetFreeze</td>
<td>0x00100000</td>
<td>1048576</td>
<td><a href="https://wiki.ripple.com/Freeze">Freeze</a> the trustline.</td>
<td><a href="freeze.html">Freeze</a> the trustline.</td>
</tr>
<tr>
<td>tfClearFreeze</td>
<td>0x00200000</td>
<td>2097152</td>
<td>Unfreeze the trustline.</td>
<td><a href="freeze.html">Unfreeze</a> the trustline.</td>
</tr>
</tbody>
</table>
@@ -1849,7 +1849,7 @@
<tr>
<td>tecFROZEN</td>
<td>137</td>
<td>The <a href="#offercreate">OfferCreate transaction</a> failed because one or both of the assets involved are subject to a <a href="https://ripple.com/files/GB-2014-02.pdf">global freeze</a>.</td>
<td>The <a href="#offercreate">OfferCreate transaction</a> failed because one or both of the assets involved are subject to a <a href="freeze.html">global freeze</a>.</td>
</tr>
<tr>
<td>tecNO_TARGET</td>