From 2af2209a363d4b38ad22545f627318b41058014f Mon Sep 17 00:00:00 2001 From: mDuo13 Date: Mon, 2 Nov 2015 18:01:58 -0800 Subject: [PATCH] put fee voting in its own article, linked from tx cost and reserves articles --- charts-api-tool.html | 2 + charts_api.html | 2 + content/fee-voting.md | 27 +++++ content/reserves.md | 6 +- content/tx-cost.md | 28 +----- data-api-v2-tool.html | 2 + data_api_v2.html | 2 + fee-voting.html | 199 +++++++++++++++++++++++++++++++++++++ fees.html | 2 + gateway_guide.html | 2 + historical_data.html | 2 + historicaldb-api-tool.html | 2 + index.html | 2 + paths.html | 2 + reliable_tx.html | 2 + reserves.html | 2 + rest-api-tool.html | 2 + ripple-api-tool.html | 2 + ripple-ledger.html | 2 + ripple-rest.html | 2 + rippled-apis.html | 2 + rippled-setup.html | 2 + tool/pages.json | 9 ++ transactions.html | 2 + transfer_fees.html | 2 + tx-cost.html | 2 + 26 files changed, 284 insertions(+), 27 deletions(-) create mode 100644 content/fee-voting.md create mode 100644 fee-voting.html diff --git a/charts-api-tool.html b/charts-api-tool.html index 9e5fbf4a89..233758f4f5 100644 --- a/charts-api-tool.html +++ b/charts-api-tool.html @@ -58,6 +58,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -161,6 +162,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/charts_api.html b/charts_api.html index 945a93a9c3..b8ce7e5cdf 100644 --- a/charts_api.html +++ b/charts_api.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/content/fee-voting.md b/content/fee-voting.md new file mode 100644 index 0000000000..fb30b4fd26 --- /dev/null +++ b/content/fee-voting.md @@ -0,0 +1,27 @@ +# Fee Voting # + +In the long term, it may be necessary to change the basic schedule of XRP requirements to reflect long-term changes in the value of XRP. In this case, validators can vote for changes to basic [transaction cost](tx-cost.html) as well as [reserve requirements](reserves.html). If the preferences in a validator's configuration are different than the network's current settings, the validator expresses its preferences to the network periodically. If a quorum of validators agrees on a change, they can apply a change that takes effect thereafter. + +Operators of [`rippled` validators](rippled-setup.html#running-a-validating-node) can set their preferences for the transaction cost and reserve requirements in the `[voting]` stanza of the `rippled.cfg` file. Changes here should not be made lightly: insufficient requirements could expose the Ripple peer-to-peer network to denial-of-service attacks. The parameters you can set are as follows: + +| Parameter | Description | Recommended Value | +|-----------|-------------|-------------------| +| reference\_fee | Amount of XRP, in _drops_, that must be destroyed to send the reference transaction, the cheapest possible transaction. (1 XRP = 1 million drops.) The actual transaction cost is a multiple of this value, scaled dynamically based on the load of individual servers. | `10` (0.00001 XRP) | +| account\_reserve | Minimum amount of XRP, in drops, that an account must have on reserve. This is the smallest amount that can be sent to fund a new account in the ledger. | `20000000` (20 XRP) | +| owner\_reserve | Additional amount of XRP, in drops, that an account must have on reserve for _each_ object it owns in the ledger. | `5000000` (5 XRP) | + +### Voting Process ### + +Every 256th ledger is called a "flag" ledger. In the ledger immediately before the flag ledger, each validator whose account reserve and transaction cost preferences are different than the current network setting distributes a "vote" message alongside its ledger validation, indicating the values that validator prefers. + +In the flag ledger itself, nothing happens, but validators receive and take note of the votes from other validators they trust. + +After seeing the votes of other validators, each validator that wants to change the transaction cost and reserve settings tries to find a compromise on settings that is closest to its own preferences but also approved by a majority of other validators it trusts. (For example, if one validator wants to raise the minimum transaction cost from 10 to 100, but most validators only want to raise it from 10 to 20, the one validator settles on the change to raise the cost to 20.) If this seems possible, the validator inserts a [SetFee pseudo-transaction](transactions.html#setfee) into its proposal for the ledger following the flag ledger, with the expectation that other validators who also want the same change will insert an identical SetFee pseudo-transaction into their proposals for the same ledger. If a SetFee psuedotransaction survives the consensus process to be included in a validated ledger, then the new transaction cost and reserve settings denoted by the SetFee pseudotransaction takes effect starting with the following ledger. + +In short: + +* **Flag ledger -1**: Validators submit votes. +* **Flag ledger**: Validators tally votes and decide what SetFee to include, if any. +* **Flag ledger +1**: Validators insert SetFee pseudo-transaction into their proposed ledgers. +* **Flag ledger +2**: New settings take effect, if a SetFee psuedotransaction achieved consensus. + diff --git a/content/reserves.md b/content/reserves.md index 8ff7bc82ec..95fa57b718 100644 --- a/content/reserves.md +++ b/content/reserves.md @@ -1,6 +1,6 @@ # Reserves # -The Ripple Consensus Ledger applies _reserve requirements_, in XRP, to protect the shared global ledger from growing too large to handle efficiently as the result of spam or malicious usage. The goal is to constrain the growth of the ledger to match [Moore's Law](https://en.wikipedia.org/wiki/Moore's_law) so that a current commodity-level machinec an always fit the current ledger in RAM and the full ledger history on disk. +The Ripple Consensus Ledger applies _reserve requirements_, in XRP, to protect the shared global ledger from growing excessively large as the result of spam or malicious usage. The goal is to constrain the growth of the ledger to match [Moore's Law](https://en.wikipedia.org/wiki/Moore's_law) so that a current commodity-level machine an always fit the current ledger in RAM and the full ledger history on disk. Each account in the shared global ledger must hold a minimum of XRP in order to submit transactions, and it cannot send this XRP to other accounts. You cannot create a new account unless you send enough XRP to meet the minimum reserve requirement. @@ -33,3 +33,7 @@ During transaction processing, a transaction can only be successful if the sendi When an account has less XRP than its current reserve requirement, it continues to exist in the ledger, but it cannot send new transactions. Unless the reserve requirements decrease, the only way for the account to become able to send transactions again is for it to receive enough XRP that it meets the reserve requirement. + +## Changing the Reserve Requirements ## + +The Ripple Consensus Ledger has a mechanism for changing the reserve requirements in order to account for long-term changes in the value of XRP. Any changes have to be approved by the consensus process. See [Fee Voting](fee-voting.html) for more information. diff --git a/content/tx-cost.md b/content/tx-cost.md index 01946f47aa..015974cd1e 100644 --- a/content/tx-cost.md +++ b/content/tx-cost.md @@ -65,30 +65,6 @@ When a rippled server initially evaluates a transaction, it rejects the transact However, account's XRP balance could change between when the transaction gets distributed to the network and when it becomes included in a validated ledger. (For example, a previous transaction sending XRP to the account in question might have applied provisionally, but the two transactions might execute in the opposite order when the network forms the consensus ledger.) In this case, an account may have insufficient XRP to pay the transaction cost even though the transaction got distributed to the network. When this happens, the account pays as much XRP as possible, resulting in a balance of 0 XRP. +## Changing the Transaction Cost ## -## Fee Voting ## - -In the long term, it may be necessary to change the basic schedule of XRP requirements to reflect long-term changes in the value of XRP. In this case, validators can vote for changes to basic transaction cost as well as [reserve requirements](https://ripple.com/wiki/Reserves). If the preferences in a validator's configuration are different than the network's current settings, the validator expresses its preferences to the network periodically. If a quorum of validators agrees on a change, they can apply a change that takes effect thereafter. - -You can set your preferences for the transaction cost and reserve requirements in the `[voting]` stanza of the `rippled.cfg` file. Changes here should not be made lightly: insufficient requirements could expose the Ripple peer-to-peer network to denial-of-service attacks. The parameters you can set are as follows: - -| Parameter | Description | Recommended Value | -|-----------|-------------|-------------------| -| reference\_fee | Amount of XRP, in _drops_, that must be destroyed to send the reference transaction, the cheapest possible transaction. (1 XRP = 1 million drops.) The actual transaction cost is a multiple of this value, scaled dynamically based on the load of individual servers. | `10` (0.00001 XRP) | -| account\_reserve | Minimum amount of XRP, in drops, that an account must have on reserve. This is the smallest amount that can be sent to fund a new account in the ledger. | `20000000` (20 XRP) | -| owner\_reserve | Additional amount of XRP, in drops, that an account must have on reserve for _each_ object it owns in the ledger. | `5000000` (5 XRP) | - -### Voting Process ### - -Every 256th ledger is called a "flag" ledger. In the ledger immediately before the flag ledger, each validator whose account reserve and transaction cost preferences are different than the current network setting distributes a "vote" message alongside its ledger validation, indicating the values that validator prefers. - -In the flag ledger itself, nothing happens, but validators receive and take note of the votes from other validators they trust. - -After seeing the votes of other validators, each validator that wants to change the transaction cost and reserve settings tries to find a compromise on settings that is closest to its own preferences but also approved by a majority of other validators it trusts. (For example, if one validator wants to raise the minimum transaction cost from 10 to 100, but most validators only want to raise it from 10 to 20, the one validator settles on the change to raise the cost to 20.) If this seems possible, the validator inserts a [SetFee pseudo-transaction](transactions.html#setfee) into its proposal for the ledger following the flag ledger, with the expectation that other validators who also want the same change will insert an identical SetFee pseudo-transaction into their proposals for the same ledger. If a SetFee psuedotransaction survives the consensus process to be included in a validated ledger, then the new transaction cost and reserve settings denoted by the SetFee pseudotransaction takes effect starting with the following ledger. - -In short: - -* **Flag ledger -1**: Validators submit votes. -* **Flag ledger**: Validators tally votes and decide what SetFee to include, if any. -* **Flag ledger +1**: Validators insert SetFee pseudo-transaction into their proposed ledgers. -* **Flag ledger +2**: New settings take effect, if a SetFee psuedotransaction achieved consensus. +In addition to short-term scaling to account for load, the Ripple Consensus Ledger has a mechanism for changing the minimum transaction cost in order to account for long-term changes in the value of XRP. Any changes have to be approved by the consensus process. See [Fee Voting](fee-voting.html) for more information. diff --git a/data-api-v2-tool.html b/data-api-v2-tool.html index 1863f70b81..ae760526f3 100644 --- a/data-api-v2-tool.html +++ b/data-api-v2-tool.html @@ -58,6 +58,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -161,6 +162,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/data_api_v2.html b/data_api_v2.html index 7ad41d86d6..37088cc273 100644 --- a/data_api_v2.html +++ b/data_api_v2.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/fee-voting.html b/fee-voting.html new file mode 100644 index 0000000000..ea099abafe --- /dev/null +++ b/fee-voting.html @@ -0,0 +1,199 @@ + + + + + + + + Fee Voting - Ripple Developer Portal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    + + + diff --git a/fees.html b/fees.html index 024bc1f05a..6a51e41be9 100644 --- a/fees.html +++ b/fees.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/gateway_guide.html b/gateway_guide.html index a1ebef96bb..590f4ff319 100644 --- a/gateway_guide.html +++ b/gateway_guide.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/historical_data.html b/historical_data.html index 626dbe097d..f23a816596 100644 --- a/historical_data.html +++ b/historical_data.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/historicaldb-api-tool.html b/historicaldb-api-tool.html index fa7efa5726..47b2c6c7c2 100644 --- a/historicaldb-api-tool.html +++ b/historicaldb-api-tool.html @@ -58,6 +58,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -161,6 +162,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/index.html b/index.html index 80f4714886..330ab05c9d 100644 --- a/index.html +++ b/index.html @@ -71,6 +71,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -240,6 +241,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/paths.html b/paths.html index fabd879b7c..e6b07508af 100644 --- a/paths.html +++ b/paths.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/reliable_tx.html b/reliable_tx.html index ae0adb12a2..ca6cac42a4 100644 --- a/reliable_tx.html +++ b/reliable_tx.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/reserves.html b/reserves.html index a72accb18f..a69a8351bd 100644 --- a/reserves.html +++ b/reserves.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/rest-api-tool.html b/rest-api-tool.html index e4c3b7daa5..a4d196e167 100644 --- a/rest-api-tool.html +++ b/rest-api-tool.html @@ -58,6 +58,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -161,6 +162,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/ripple-api-tool.html b/ripple-api-tool.html index b47339c916..5b7c2a6642 100644 --- a/ripple-api-tool.html +++ b/ripple-api-tool.html @@ -58,6 +58,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -194,6 +195,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/ripple-ledger.html b/ripple-ledger.html index 3ba5c0e185..141dd8cc55 100644 --- a/ripple-ledger.html +++ b/ripple-ledger.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/ripple-rest.html b/ripple-rest.html index 6d195d925e..188051e599 100644 --- a/ripple-rest.html +++ b/ripple-rest.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/rippled-apis.html b/rippled-apis.html index c81d8e3303..946aad3fc7 100644 --- a/rippled-apis.html +++ b/rippled-apis.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/rippled-setup.html b/rippled-setup.html index 84501d665e..a003843e8d 100644 --- a/rippled-setup.html +++ b/rippled-setup.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/tool/pages.json b/tool/pages.json index 4121cc9a5f..647d9d2f3d 100644 --- a/tool/pages.json +++ b/tool/pages.json @@ -106,12 +106,21 @@ "name": "Transaction Cost", "md": "tx-cost.md", "html": "tx-cost.html", + "ripple.com": "https://wiki.ripple.com/Transaction_Fee", + "category": "References" + }, + { + "name": "Fee Voting", + "md": "fee-voting.md", + "html": "fee-voting.html", + "ripple.com": "https://wiki.ripple.com/Understanding:_Transaction_and_Reserve_fee_setting", "category": "References" }, { "name": "Reserves", "md": "reserves.md", "html": "reserves.html", + "ripple.com": "https://wiki.ripple.com/Reserves", "category": "References" }, { diff --git a/transactions.html b/transactions.html index 3de9abcde3..76a90a17a0 100644 --- a/transactions.html +++ b/transactions.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/transfer_fees.html b/transfer_fees.html index f54ccf415d..cad7b637b7 100644 --- a/transfer_fees.html +++ b/transfer_fees.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • diff --git a/tx-cost.html b/tx-cost.html index 4be4423104..266eea7083 100644 --- a/tx-cost.html +++ b/tx-cost.html @@ -85,6 +85,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves
  • @@ -156,6 +157,7 @@
  • Fees (Disambiguation)
  • Transfer Fees
  • Transaction Cost
  • +
  • Fee Voting
  • Reserves