From c72b8daf72d2177bee7e877afe783c402ecbec26 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Mon, 3 Mar 2025 14:03:38 -0800 Subject: [PATCH] add validator list threshold --- .../configure-validator-list-threshold.md | 40 +++++++++++++++++++ .../validators.md | 12 ++++-- sidebars.yaml | 1 + 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 docs/infrastructure/configuration/configure-validator-list-threshold.md diff --git a/docs/infrastructure/configuration/configure-validator-list-threshold.md b/docs/infrastructure/configuration/configure-validator-list-threshold.md new file mode 100644 index 0000000000..4d80b3b531 --- /dev/null +++ b/docs/infrastructure/configuration/configure-validator-list-threshold.md @@ -0,0 +1,40 @@ +--- +seo: + description: Set the minimum number of UNL publisher lists a validator must be on for your server to use it. +labels: + - Core Server + - Blockchain +--- +# Configure Validator List Threshold + +A `rippled` server uses validators that meet a minimum intersection threshold between UNL publishers. This means a server only uses validators that exist on a number of validator lists, as defined by the server owner. {% badge href="https://github.com/XRPLF/rippled/releases/tag/2.4.0" %}New in: rippled 2.4.0{% /badge %} + +By default, the minimum threshold is calculated as follows: + +- floor(`validator_list_keys` / 2) + 1 +- If there are only 1 or 2 `validator_list_keys`, the threshold is `1`. + + +## Modify the Validators File + +1. Edit the `validators.txt` file. The recommended installation places this file at: + ``` + /etc/opt/ripple/validators.txt + ``` + +2. Add the following stanza and a valid threshold number. + + ``` + [validator_list_threshold] + 0 + ``` + +Be sure to save the changes and restart your server. + +{% admonition type="info" name="Note" %}If this value is `0` or isn't set, the threshold will be calculated using the default method. The value also can't be larger than the number of `validator_list_keys`.{% /admonition %} + +## See Also + +- [validators method][] + +{% raw-partial file="/docs/_snippets/common-links.md" /%} diff --git a/docs/references/http-websocket-apis/admin-api-methods/status-and-debugging-methods/validators.md b/docs/references/http-websocket-apis/admin-api-methods/status-and-debugging-methods/validators.md index 77e5ae0fec..703920f2e3 100644 --- a/docs/references/http-websocket-apis/admin-api-methods/status-and-debugging-methods/validators.md +++ b/docs/references/http-websocket-apis/admin-api-methods/status-and-debugging-methods/validators.md @@ -186,7 +186,8 @@ An example of a successful response: "validator_list": { "count": 1, "expiration": "2022-Jun-01 00:00:00.000000000 UTC", - "status": "active" + "status": "active", + "validator_list_threshold": 1 } }, "status": "success", @@ -327,7 +328,8 @@ An example of a successful response: "validator_list": { "count": 1, "expiration": "2022-Jun-01 00:00:00.000000000 UTC", - "status": "active" + "status": "active", + "validator_list_threshold": 1 } } } @@ -467,7 +469,8 @@ Connecting to 127.0.0.1:5005 "validator_list": { "count": 1, "expiration": "2022-Jun-01 00:00:00.000000000 UTC", - "status": "active" + "status": "active", + "validator_list_threshold": 1 } } } @@ -485,7 +488,8 @@ The response follows the [standard format][], with a successful result containin | `signing_keys` | Object | Mapping from master public key to current ephemeral public key for all currently-trusted validators. Excludes validators that don't use an ephemeral signing key. | | `trusted_validator_keys` | Array | Array of master public keys of all currently trusted validators. | | `validation_quorum` | Number | Minimum number of trusted validations required to validate a ledger version. Some circumstances may cause the server to require more validations. | -| `validator_list_expires` | String | The human readable time when the current validator list expires. There are two special cases: the string `unknown` if the server has not yet loaded a published validator list, or the string `never` if the server uses a static validator list. | +| `validator_list.expiration` | String | The human readable time when the current validator list expires. There are two special cases: the string `unknown` if the server has not yet loaded a published validator list, or the string `never` if the server uses a static validator list. | +| `validator_list.validator_list_threshold` | Number | The threshold number of UNL publisher lists a validator must be one for the server to use it. {% badge href="https://github.com/XRPLF/rippled/releases/tag/2.4.0" %}New in: rippled 2.4.0{% /badge %} | Each member of the `publisher_lists` array is a **Publisher List** object with the following fields: diff --git a/sidebars.yaml b/sidebars.yaml index 4c6084c22c..d27b6e51dd 100644 --- a/sidebars.yaml +++ b/sidebars.yaml @@ -640,6 +640,7 @@ - page: docs/infrastructure/configuration/peering/use-a-peer-reservation.md - page: docs/infrastructure/configuration/configure-amendment-voting.md - page: docs/infrastructure/configuration/configure-statsd.md + - page: docs/infrastructure/configuration/configure-validator-list-threshold.md - page: docs/infrastructure/configuration/connect-your-rippled-to-the-xrp-test-net.md - page: docs/infrastructure/configuration/configure-grpc.md - page: docs/infrastructure/configuration/enable-public-signing.md