mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 19:55:54 +00:00
Peer Crawler: v1.2.1 example, copy edits
This commit is contained in:
@@ -2,151 +2,148 @@
|
||||
"overlay": {
|
||||
"active": [
|
||||
{
|
||||
"complete_ledgers": "45393520-45403520",
|
||||
"ip": "162.243.114.118",
|
||||
"complete_ledgers": "45498918-45500918",
|
||||
"ip": "88.99.137.170",
|
||||
"port": "51235",
|
||||
"public_key": "AufDkW4E1DOxjzRPj46Eu+AyJdsakUeJTz3xklv1kCfp",
|
||||
"public_key": "AkU+AY9FWh8AXMc43fAUM69SzfAMGat0d/N+qx3kD6Dg",
|
||||
"type": "out",
|
||||
"uptime": 132,
|
||||
"uptime": 208,
|
||||
"version": "rippled-1.2.1"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45500790-45500918",
|
||||
"ip": "198.13.58.221",
|
||||
"port": "51235",
|
||||
"public_key": "AlQvJAlNDYtoBSaZCXM0pT5RWvdOW9QhMW5++mHswkej",
|
||||
"type": "out",
|
||||
"uptime": 208,
|
||||
"version": "rippled-1.2.0"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45403264-45403520",
|
||||
"complete_ledgers": "45500662-45500918",
|
||||
"ip": "52.90.101.104",
|
||||
"port": "51235",
|
||||
"public_key": "AkA04ujnwMn8mRyfJg4K7vzcQSOG7FHq4wUg60OQWnCY",
|
||||
"type": "out",
|
||||
"uptime": 182,
|
||||
"version": "rippled-1.1.2"
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.2.1"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "32570-45403520",
|
||||
"ip": "169.55.164.30",
|
||||
"port": "51235",
|
||||
"public_key": "Aw7J0CVhFKt0h6PDEpqu6t4LbPY0PsX8jCFbvSQFDOkW",
|
||||
"type": "out",
|
||||
"uptime": 182,
|
||||
"version": "rippled-1.1.2"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45403264-45403520",
|
||||
"complete_ledgers": "45500662-45500918",
|
||||
"ip": "54.202.12.93",
|
||||
"port": "51235",
|
||||
"public_key": "AxoekFvFYzELGty9cqiXZB+NsOWTZ0Qs9mFIw69CGb3d",
|
||||
"type": "out",
|
||||
"uptime": 260,
|
||||
"version": "rippled-1.2.0-rc2"
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.2.1"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45401520-45403520",
|
||||
"complete_ledgers": "45498918-45500918",
|
||||
"ip": "173.255.240.113",
|
||||
"port": "51235",
|
||||
"public_key": "A4lWBMIDEQrO8Eerp9Hj3rFacbV0FiID3wTIx8Aoplq2",
|
||||
"type": "out",
|
||||
"uptime": 260,
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.1.0"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45403264-45403520",
|
||||
"ip": "54.202.39.36",
|
||||
"port": "51235",
|
||||
"public_key": "A40zB/XEikqN8/VrPcwb/apuwkLu1fPUpx09iQGvHnI9",
|
||||
"type": "out",
|
||||
"uptime": 260,
|
||||
"version": "rippled-1.1.2"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45402496-45403520",
|
||||
"complete_ledgers": "45499894-45500918",
|
||||
"ip": "54.186.73.52",
|
||||
"port": "51235",
|
||||
"public_key": "AjikFnq0P2XybCyREr2KPiqXqJteqwPwVRVbVK+93+3o",
|
||||
"type": "out",
|
||||
"uptime": 260,
|
||||
"version": "rippled-1.1.2"
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.2.1"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45401520-45403520",
|
||||
"ip": "89.160.135.13",
|
||||
"complete_ledgers": "45499894-45500918",
|
||||
"ip": "54.186.248.91",
|
||||
"port": "51235",
|
||||
"public_key": "AxFDR/J21+GB2I4Ra9tm6KPTaPMzlgHgYSvPbA5/EFek",
|
||||
"public_key": "A4A4TPA17KlUjstp7fcL0qaWd4X+fvZ5MTxG5P5AggHW",
|
||||
"type": "out",
|
||||
"uptime": 181,
|
||||
"version": "rippled-1.2.0"
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.2.1"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45402496-45403520",
|
||||
"ip": "54.84.21.230",
|
||||
"complete_ledgers": "45490918-45500918",
|
||||
"ip": "162.243.114.118",
|
||||
"port": "51235",
|
||||
"public_key": "AmQgZGrN0mII1lnAFCfFHUe/A9gn7ApTNEgEt406omfu",
|
||||
"public_key": "AufDkW4E1DOxjzRPj46Eu+AyJdsakUeJTz3xklv1kCfp",
|
||||
"type": "out",
|
||||
"uptime": 260,
|
||||
"version": "rippled-1.1.2"
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.2.1"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "45009444-44925014",
|
||||
"ip": "115.68.139.93",
|
||||
"complete_ledgers": "45498918-45500918",
|
||||
"ip": "::ffff:45.56.78.201",
|
||||
"port": "51235",
|
||||
"public_key": "A9tBWk3VwZpvRUHGa+bGgH6OCN+zCtHP5Y9fe9NKMXrB",
|
||||
"public_key": "AmsXz4UUqjlz6iy8HHhZdHmBHteEBwYZLOHCHA4puCwj",
|
||||
"type": "out",
|
||||
"uptime": 260,
|
||||
"version": "rippled-1.1.2"
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.1.0"
|
||||
},
|
||||
{
|
||||
"complete_ledgers": "32570-45500918",
|
||||
"ip": "169.55.164.30",
|
||||
"port": "51235",
|
||||
"public_key": "Aw7J0CVhFKt0h6PDEpqu6t4LbPY0PsX8jCFbvSQFDOkW",
|
||||
"type": "out",
|
||||
"uptime": 209,
|
||||
"version": "rippled-1.2.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"server": {
|
||||
"build_version": "1.2.0-rc1",
|
||||
"closed_ledger": {
|
||||
"base_fee": 10,
|
||||
"close_time": 604454312,
|
||||
"hash": "2C5EC713C6584C47675AA10C8F3AC589FD3BE3F044958B2C4A28193F84069AAD",
|
||||
"reserve_base": 200000000,
|
||||
"reserve_inc": 50000000,
|
||||
"seq": 47
|
||||
},
|
||||
"complete_ledgers": "empty",
|
||||
"fetch_pack": 16812,
|
||||
"build_version": "1.2.1",
|
||||
"complete_ledgers": "45500881-45500888",
|
||||
"io_latency_ms": 1,
|
||||
"jq_trans_overflow": "0",
|
||||
"last_close": {
|
||||
"converge_time": 3993,
|
||||
"proposers": 26
|
||||
"converge_time": 3002,
|
||||
"proposers": 25
|
||||
},
|
||||
"load_base": 256,
|
||||
"load_factor": 256,
|
||||
"load_factor_fee_reference": 256,
|
||||
"load_factor_server": 256,
|
||||
"peer_disconnects": "1",
|
||||
"peer_disconnects": "0",
|
||||
"peer_disconnects_resources": "0",
|
||||
"peers": 10,
|
||||
"pubkey_node": "n9MJZBu5HyxyEq8xPGBxXFTfT3uzdnNsvR6R1NyXxbEzt79SrZJE",
|
||||
"published_ledger": "none",
|
||||
"server_state": "connected",
|
||||
"server_state_duration_us": "261636890",
|
||||
"published_ledger": 45500888,
|
||||
"server_state": "full",
|
||||
"server_state_duration_us": "40756665",
|
||||
"state_accounting": {
|
||||
"connected": {
|
||||
"duration_us": "261636890",
|
||||
"duration_us": "163459544",
|
||||
"transitions": 1
|
||||
},
|
||||
"disconnected": {
|
||||
"duration_us": "1648820",
|
||||
"duration_us": "2539592",
|
||||
"transitions": 1
|
||||
},
|
||||
"full": {
|
||||
"duration_us": "0",
|
||||
"transitions": 0
|
||||
"duration_us": "40756665",
|
||||
"transitions": 1
|
||||
},
|
||||
"syncing": {
|
||||
"duration_us": "0",
|
||||
"transitions": 0
|
||||
"duration_us": "5071794",
|
||||
"transitions": 1
|
||||
},
|
||||
"tracking": {
|
||||
"duration_us": "0",
|
||||
"transitions": 0
|
||||
"duration_us": "1",
|
||||
"transitions": 1
|
||||
}
|
||||
},
|
||||
"time": "2019-Feb-25 23:58:38.280392",
|
||||
"uptime": 265,
|
||||
"validation_quorum": 22
|
||||
"time": "2019-Mar-02 01:48:50.912360",
|
||||
"uptime": 213,
|
||||
"validated_ledger": {
|
||||
"close_time": 604806530,
|
||||
"hash": "00415B0ECF1D31E8DC9A7DCB04CAF1FD47E61D4D9D047743C1508CDBD36576CE",
|
||||
"reserve_base": 20000000,
|
||||
"reserve_inc": 5000000,
|
||||
"seq": 45500918
|
||||
}
|
||||
},
|
||||
"unl": {
|
||||
"local_static_keys": [],
|
||||
@@ -160,36 +157,6 @@
|
||||
"version": 1
|
||||
}
|
||||
],
|
||||
"trusted_validator_keys": [
|
||||
"nHUXeusfwk61c4xJPneb9Lgy7Ga6DVaVLEyB29ftUdt9k2KxD6Hw",
|
||||
"nHULqGBkJtWeNFjhTzYeAsHA3qKKS7HoBh8CV3BAGTGMZuepEhWC",
|
||||
"nHB5kpvUaEpvCtwu31fMf6dTuuCNnWRctWrV3UEZ9rbtPdpvbUvJ",
|
||||
"nHUKp8XUkaFN6GzQ3o4qTE1w9aAD5uFjZ8vDt6pwjBsTFRq5FWEb",
|
||||
"nHUFzgC9fDw2MEDaiv9JMdBFhtJ6DMKoUCpS8gPGi6tkfbqmTyis",
|
||||
"nHUUrjuEMtvzzTsiW2xKinUt7Jd83QFqYgfy3Feb7Hq1EJyoxoSz",
|
||||
"nHUVPzAmAmQ2QSc4oE1iLfsGi17qN2ado8PhxvgEkou76FLxAz7C",
|
||||
"nHUd8g4DWm6HgjGTjKKSfYiRyf8qCvEN1PXR7YDJ5QTFyAnZHkbW",
|
||||
"nHUStq4qu3NXaL6T42wbtpR8mare8gWMVYrUzek227c6QeUn6QGN",
|
||||
"nHU95JxeaHJoSdpE7R49Mxp4611Yk5yL9SGEc12UDJLr4oEUN4NT",
|
||||
"nHUfPizyJyhAJZzeq3duRVrZmsTZfcLn7yLF5s2adzHdcHMb9HmQ",
|
||||
"nHBtDzdRDykxiuv7uSMPTcGexNm879RUUz5GW4h1qgjbtyvWZ1LE",
|
||||
"nHUcNC5ni7XjVYfCMe38Rm3KQaq27jw7wJpcUYdo4miWwpNePRTw",
|
||||
"n9KM73uq5BM3Fc6cxG3k5TruvbLc8Ffq17JZBmWC4uP4csL4rFST",
|
||||
"nHUCCckfXVBdoounaU7JVnfdPdMXEeetwH8VdCBXD996BaVZ8WdJ",
|
||||
"nHUFE9prPXPrHcG3SkwP1UzAQbSphqyQkQK9ATXLZsfkezhhda3p",
|
||||
"nHUon2tpyJEHHYGmxqeGu37cvPYHzrMtUNQFVdCgGNvEkjmCpTqK",
|
||||
"nHDwHQGjKTz6R6pFigSSrNBrhNYyUGFPHA75HiTccTCQzuu9d7Za",
|
||||
"nHUzum747yqip3HWSgzSNHNMjmLUqhroNVWidSRTREswEVhKNQEM",
|
||||
"nHU2Y1mLGDvTbc2dpvpkQ16qdeTKv2aJwGJHFySSB9U3jkTmj4CA",
|
||||
"nHDDasc9BHNB99PW8KUduS8Phqg8NPUmjufzMU6HGGDMUH2xNpPh",
|
||||
"nHBidG3pZK11zQD6kpNDoAhDxH6WLGui6ZxSbUx7LSqLHsgzMPec",
|
||||
"nHBgiH2aih5JoaL3wbiiqSQfhrC21vJjxXoCoD2fuqcNbriXsfLm",
|
||||
"nHB8QMKGt9VB4Vg71VszjBVQnDW3v3QudM4DwFaJfy96bj4Pv9fA",
|
||||
"nHUpJSKQTZdB1TDkbCREMuf8vEqFkk84BcvZDhsQsDufFDQVajam",
|
||||
"nHUkp7WhouVMobBUKGrV5FNqjsdD9zKP5jpGnnLLnYxUQSGAwrZ6",
|
||||
"nHBSUZJnqK5BRu3bWAmebfkETNeEFmU7sm3DXzCuEYzRkAEdxuTy"
|
||||
],
|
||||
"validation_quorum": 22,
|
||||
"validator_list": {
|
||||
"count": 1,
|
||||
"expiration": "2019-Mar-06 00:00:00.000000000",
|
||||
@@ -198,12 +165,12 @@
|
||||
"validator_sites": [
|
||||
{
|
||||
"last_refresh_status": "accepted",
|
||||
"last_refresh_time": "2019-Feb-25 23:54:15.906638391",
|
||||
"next_refresh_time": "2019-Feb-25 23:59:15.541191909",
|
||||
"last_refresh_time": "2019-Mar-02 01:45:19.940242379",
|
||||
"next_refresh_time": "2019-Mar-02 01:50:19.568004480",
|
||||
"refresh_interval_min": 5,
|
||||
"uri": "https://vl.ripple.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"version": 1
|
||||
"version": 2
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# Peer Protocol
|
||||
|
||||
Servers in the XRP Ledger communicate to each other using the XRP Ledger peer protocol, also known as RTXP. Peer servers connect via HTTPS and then do an [HTTP upgrade](https://tools.ietf.org/html/rfc7230#section-6.7) to switch to RTXP. (For more information, see the [Overlay Network](https://github.com/ripple/rippled/blob/906ef761bab95f80b0a7e0cab3b4c594b226cf57/src/ripple/overlay/README.md#handshake) article in the [`rippled` repository](https://github.com/ripple/rippled).)
|
||||
|
||||
## Peer Protocol Communications
|
||||
Servers in the XRP Ledger communicate to each other using the XRP Ledger peer protocol, also known as RTXP.
|
||||
|
||||
The peer protocol is the main mode of communication between servers in the XRP Ledger. All information about the behavior, progress, and connectivity of the XRP Ledger passes through the peer protocol. Examples of peer-to-peer communications include all of the following:
|
||||
|
||||
@@ -11,6 +9,8 @@ The peer protocol is the main mode of communication between servers in the XRP L
|
||||
- Requesting ledger data from historical ledgers, or providing that data.
|
||||
- Proposing a set of transactions for consensus, or sharing the calculated outcome of applying a consensus transaction set.
|
||||
|
||||
To establish a peer-to-peer connection, one server connects to another via HTTPS and requests an [HTTP upgrade](https://tools.ietf.org/html/rfc7230#section-6.7) to switch to RTXP. (For more information, see the [Overlay Network](https://github.com/ripple/rippled/blob/906ef761bab95f80b0a7e0cab3b4c594b226cf57/src/ripple/overlay/README.md#handshake) article in the [`rippled` repository](https://github.com/ripple/rippled).)
|
||||
|
||||
## Peer Protocol Port
|
||||
|
||||
To participate in the XRP Ledger, `rippled` servers connects to arbitrary peers using the peer protocol. (All peers are treated as untrusted, unless they are [clustered](clustering.html) with the current server.)
|
||||
@@ -34,7 +34,7 @@ When a server first starts up, it generates a _node key pair_ to use to identify
|
||||
|
||||
The node key pair is saved in the database and reused when the server restarts. If you delete the server's databases, it creates a new node key pair, effectively coming online with a different identity. To reuse the same key pair even if the databases are deleted, you can configure the server with a `[node_seed]` stanza. To generate a value suitable for use in the `[node_seed]` stanza, use the [validation_create method][].
|
||||
|
||||
The node key pair also identifies other servers [clustered](clustering.html) with this one. If you have a cluster of servers, you should give each server in the cluster a unique and reusable `[node_seed]` setting. For more information on setting up a cluster, see [Cluster `rippled` Servers](cluster-rippled-servers.html).
|
||||
The node key pair also identifies other servers [clustered](clustering.html) with this one. If you have a cluster of servers, you should configure each server in the cluster with a unique `[node_seed]` setting. For more information on setting up a cluster, see [Cluster `rippled` Servers](cluster-rippled-servers.html).
|
||||
|
||||
## Private Peers
|
||||
|
||||
@@ -45,12 +45,15 @@ Configuring a server as a private server has several effects:
|
||||
- The server does not make outgoing connections to other servers in the peer-to-peer network unless it has been explicitly configured to connect to those servers.
|
||||
- The server does not accept incoming connections from other servers unless it has been explicitly configured to accept connections from those servers.
|
||||
- The server asks its direct peers not to reveal its IP address in untrusted communications, including the [peer crawler API response](peer-crawler.html). This does not affect trusted communications such as the [peers admin method][peers method].
|
||||
**Note:** It is possible to modify a server's source code so that it ignores this request. You should configure your private server to connect only to servers that you know are not modified in this way.
|
||||
|
||||
Servers configured as validators do this even if they aren't configured as private peers. This helps protect validators from being overloaded by denial of service attacks. [New in: rippled 1.2.1][]
|
||||
|
||||
**Caution:** It is possible to modify a server's source code so that it ignores this request and shares its immediate peers' IP addresses anyway. You should configure your private server to connect only to servers that you know are not modified in this way.
|
||||
|
||||
|
||||
### Configuring a Private Server
|
||||
|
||||
Use the `[peer_private]` stanza of the `rippled` config file to request that peer servers do not report your IP address in the Peer Crawler response. Use the `[ips_fixed]` to list servers you want your server to connect to. As an additional precaution, use a firewall to block incoming connections from other servers.
|
||||
Use the `[peer_private]` stanza of the `rippled` config file to make your server act as a private peer. Use the `[ips_fixed]` to list servers you want your server to connect to. (If you enable `[peer_private]` without any addresses in `[ips_fixed]`, your server does not connect to the network.) As an additional precaution, use a firewall to block incoming connections from other servers.
|
||||
|
||||
Example configuration:
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# peers
|
||||
[[Source]<br>](https://github.com/ripple/rippled/blob/52f298f150fc1530d201d3140c80d3eaf781cb5f/src/ripple/rpc/handlers/Peers.cpp "Source")
|
||||
|
||||
The `peers` command returns a list of all other `rippled` servers currently connected to this one, including information on their connection and sync status.
|
||||
The `peers` command returns a list of all other `rippled` servers currently connected to this one over the [Peer Protocol](peer-protocol.html), including information on their connection and sync status.
|
||||
|
||||
*The `peers` request is an [admin method](admin-rippled-methods.html) that cannot be run by unprivileged users!*
|
||||
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
|
||||
The Peer Crawler is a special API endpoint for reporting on the health and topology of the peer-to-peer network. This API method is available by default on a non-privileged basis through the [Peer Protocol](peer-protocol.html) port, which is also used for `rippled` servers' peer-to-peer communications about consensus, ledger history, and other necessary information.
|
||||
|
||||
The information reported by the peer crawler is effectively public, and can be used to collect information about the overall XRP Ledger network, its health, and topology.
|
||||
|
||||
The [`peers` command](peers.html) in the [WebSocket and JSON-RPC APIs](get-started-with-the-rippled-api.html) returns a similar, more comprehensive set of information, but requires [administrative access](admin-rippled-methods.html) to the server.
|
||||
The information reported by the peer crawler is effectively public, and can be used to report on the overall XRP Ledger network, its health, and topology.
|
||||
|
||||
## Request Format
|
||||
|
||||
@@ -27,10 +25,10 @@ The JSON object has the following fields:
|
||||
|
||||
| `Field` | Value | Description |
|
||||
|:-----------------|:-------|:-------------------------------------------------|
|
||||
| `counts` | Object | _(May be omitted)_ Stats about this server's health, similar to the output of the [get_counts][] method. The default configuration does not report this field. Information reported includes: how large the ledger and transaction databases are, the cache hit rate for the in-application caches, and how many objects of various types are cached in memory. Types of objects that may be stored in memory include ledgers (`Ledger`), transactions (`STTx`), validation messages (`STValidation`), and more. |
|
||||
| `overlay` | Object | Information about the peer servers currently connected to this one. Contains one field, `active`, which is an array of objects (see below). |
|
||||
| `counts` | Object | _(May be omitted)_ Stats about this server's health, similar to the response from the [get_counts method][]. The default configuration does not report this field. Information reported includes: how large the ledger and transaction databases are, the cache hit rate for the in-application caches, and how many objects of various types are cached in memory. Types of objects that may be stored in memory include ledgers (`Ledger`), transactions (`STTx`), validation messages (`STValidation`), and more. |
|
||||
| `overlay` | Object | Information about the peer servers currently connected to this one, similar to the response from the [peers method][]. Contains one field, `active`, which is an array of objects (see below). |
|
||||
| `server` | Object | _(May be omitted)_ Information about this server. Contains public fields from the [server_state method][], including what `rippled` version you are running (`build_version`), which [ledger versions](ledger-history.html) your server has available (`complete_ledgers`), and the amount of load your server is experiencing. [Updated in: rippled 1.2.1][New in: rippled 1.2.1] |
|
||||
| `unl` | Object | _(May be omitted)_ Information about the validators and validator list sites this server is configured to trust, similar to the output of the [validators method][] and [validator_list_sites method][]. [Updated in: rippled 1.2.1][New in: rippled 1.2.1] |
|
||||
| `unl` | Object | _(May be omitted)_ Information about the validators and validator list sites this server is configured to trust, similar to the response from the [validators method][] and [validator_list_sites method][]. [Updated in: rippled 1.2.1][New in: rippled 1.2.1] |
|
||||
| `version` | Number | Indicates the version of this peer crawler response format. The current peer crawler version number is `2`. [Updated in: rippled 1.2.1][New in: rippled 1.2.1] |
|
||||
|
||||
Each member of the `overlay.active` array is an object with the following fields:
|
||||
|
||||
Reference in New Issue
Block a user