Add units to all fee calculations:

* Uses existing XRPAmount with units for drops, and a new TaggedFee for
  fee units (LoadFeeTrack), and fee levels (TxQ).
* Resolves #2451
This commit is contained in:
Edward Hennis
2019-02-14 18:59:07 -05:00
parent 1901b981f3
commit e3b5b808c5
87 changed files with 2195 additions and 681 deletions

View File

@@ -31,18 +31,58 @@ public:
{
Config d; // get a default configuration object
LoadFeeTrack l;
Fees const fees = [&]()
{
Fees f;
f.base = d.FEE_DEFAULT;
f.units = d.TRANSACTION_FEE_BASE;
f.reserve = 200 * SYSTEM_CURRENCY_PARTS;
f.increment = 50 * SYSTEM_CURRENCY_PARTS;
return f;
}();
Fees const fees = [&]() {
Fees f;
f.base = d.FEE_DEFAULT;
f.units = d.TRANSACTION_FEE_BASE;
f.reserve = 200 * DROPS_PER_XRP;
f.increment = 50 * DROPS_PER_XRP;
return f;
}();
BEAST_EXPECT (scaleFeeLoad (10000, l, fees, false) == 10000);
BEAST_EXPECT (scaleFeeLoad (1, l, fees, false) == 1);
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 0 }, l, fees, false) ==
XRPAmount{ 0 });
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 10000 }, l, fees, false) ==
XRPAmount{ 10000 });
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 1 }, l, fees, false) ==
XRPAmount{ 1 });
}
{
Fees const fees = [&]() {
Fees f;
f.base = d.FEE_DEFAULT * 10;
f.units = d.TRANSACTION_FEE_BASE;
f.reserve = 200 * DROPS_PER_XRP;
f.increment = 50 * DROPS_PER_XRP;
return f;
}();
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 0 }, l, fees, false) ==
XRPAmount{ 0 });
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 10000 }, l, fees, false) ==
XRPAmount{ 100000 });
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 1 }, l, fees, false) ==
XRPAmount{ 10 });
}
{
Fees const fees = [&]()
{
Fees f;
f.base = d.FEE_DEFAULT;
f.units = d.TRANSACTION_FEE_BASE * 10;
f.reserve = 200 * DROPS_PER_XRP;
f.increment = 50 * DROPS_PER_XRP;
return f;
}();
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 0 }, l, fees, false) ==
XRPAmount{ 0 });
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 10000 }, l, fees, false) ==
XRPAmount{ 1000 });
BEAST_EXPECT(scaleFeeLoad(FeeUnit64{ 1 }, l, fees, false) ==
XRPAmount{ 0 });
}
}
};