Refactor fee initialization and configuration: (#4319)

* Create the FeeSettings object in genesis ledger.
* Initialize with default values from the config. Removes the need to
  pass a Config down into the Ledger initialization functions, including
  setup().
* Drop the undocumented fee config settings in favor of the [voting]
  section.
  * Fix #3734.
  * If you previously used fee_account_reserve and/or fee_owner_reserve,
    you should change to using the [voting] section instead. Example:

```
[voting]
account_reserve=10000000
owner_reserve=2000000
```

* Because old Mainnet ledgers (prior to 562177 - yes, I looked it up)
  don't have FeeSettings, some of the other ctors will default them to
  the config values before setup() tries to load the object.
* Update default Config fee values to match Mainnet.
* Fix unit tests:
  * Updated fees: Some tests are converted to use computed values of fee
    object, but the default Env config was also updated to fix the rest.
  * Unit tests that check the structure of the ledger have updated
    hashes and counts.
This commit is contained in:
Ed Hennis
2023-03-28 09:03:25 -07:00
committed by GitHub
parent 7aad6e5127
commit 66627b26cf
34 changed files with 289 additions and 199 deletions

View File

@@ -17,9 +17,11 @@
*/
//==============================================================================
#include <test/jtx/envconfig.h>
#include <ripple/core/ConfigSections.h>
#include <test/jtx/Env.h>
#include <test/jtx/envconfig.h>
#include <test/jtx/amount.h>
namespace ripple {
namespace test {
@@ -40,6 +42,13 @@ setupConfigForUnitTests(Config& cfg)
std::string port_rpc = std::to_string(port_base + 1);
std::string port_ws = std::to_string(port_base + 2);
using namespace jtx;
// Default fees to old values, so tests don't have to worry about changes in
// Config.h
cfg.FEES.reference_fee = 10;
cfg.FEES.account_reserve = XRP(200).value().xrp().drops();
cfg.FEES.owner_reserve = XRP(50).value().xrp().drops();
cfg.overwrite(ConfigSection::nodeDatabase(), "type", "memory");
cfg.overwrite(ConfigSection::nodeDatabase(), "path", "main");
cfg.deprecatedClearSection(ConfigSection::importNodeDatabase());