From 76acc2c92b08186fe571dc812b6c014b8ae25618 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Wed, 1 Jul 2026 18:03:07 -0400 Subject: [PATCH] refactor: Move `baseAccountReserve` back to `Fees.h` (#7688) --- .../xrpl/ledger/helpers/AccountRootHelpers.h | 13 ---------- include/xrpl/protocol/Fees.h | 11 +++++++++ .../ledger/helpers/AccountRootHelpers.cpp | 11 ++------- src/test/app/AMMExtendedMPT_test.cpp | 3 +-- src/test/app/AMMExtended_test.cpp | 3 +-- src/test/app/CheckMPT_test.cpp | 3 +-- src/test/app/Check_test.cpp | 3 +-- src/test/app/Credentials_test.cpp | 5 ++-- src/test/app/Delegate_test.cpp | 17 +++++++------ src/test/app/DepositAuth_test.cpp | 5 ++-- src/test/app/FlowMPT_test.cpp | 3 +-- src/test/app/Flow_test.cpp | 3 +-- src/test/app/Loan_test.cpp | 24 +++++++++++++------ src/test/app/OfferMPT_test.cpp | 20 +++++++++------- src/test/app/Offer_test.cpp | 19 +++++++-------- src/test/app/Oracle_test.cpp | 9 +++---- src/test/app/Sponsor_test.cpp | 5 ++-- src/test/app/Ticket_test.cpp | 11 +++++---- src/test/app/TrustSet_test.cpp | 3 +-- src/test/app/Vault_test.cpp | 4 ++-- src/test/app/XChain_test.cpp | 5 ++-- src/test/jtx/impl/AMMTest.cpp | 3 +-- src/test/ledger/PaymentSandbox_test.cpp | 3 +-- src/test/rpc/AccountTx_test.cpp | 3 +-- 24 files changed, 89 insertions(+), 100 deletions(-) diff --git a/include/xrpl/ledger/helpers/AccountRootHelpers.h b/include/xrpl/ledger/helpers/AccountRootHelpers.h index 1b87710f62..ca86293b34 100644 --- a/include/xrpl/ledger/helpers/AccountRootHelpers.h +++ b/include/xrpl/ledger/helpers/AccountRootHelpers.h @@ -82,19 +82,6 @@ accountReserve( return accountReserve(view, view.read(keylet::account(id)), j, ownerCountAdj, accountCountAdj); } -/** @brief Return the hypothetical reserve required by an account with the provided counters. - * - * @param view The ledger view to read from - * @param ownerCount Number of objects for which the account will be responsible. - * @param accountCount Number of accounts for which the account will be responsible. - * Defaults to 1, as normally every account is responsible for its own reserve. - * Can be 0 if the account is sponsored. - * Can be greater than 1 if the account is sponsoring other accounts. - * @return The hypothetical reserve amount - */ -XRPAmount -baseAccountReserve(ReadView const& view, std::int32_t ownerCount, std::int32_t accountCount = 1); - /** Check if an account has insufficient reserve. * * @param view The ledger view to read from diff --git a/include/xrpl/protocol/Fees.h b/include/xrpl/protocol/Fees.h index c79a7060f9..1da0fec6a8 100644 --- a/include/xrpl/protocol/Fees.h +++ b/include/xrpl/protocol/Fees.h @@ -33,6 +33,17 @@ struct Fees : base(base), reserve(reserve), increment(increment) { } + + /** Returns the account reserve given the owner count, in drops. + + The reserve is calculated as the reserve base times the number of accounts plus the reserve + increment times the number of increments. + */ + [[nodiscard]] XRPAmount + accountReserve(std::uint32_t ownerCount, std::uint32_t accountCount) const + { + return (reserve * accountCount) + (increment * ownerCount); + } }; } // namespace xrpl diff --git a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp index ead48488a7..3d02c36abc 100644 --- a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp +++ b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp @@ -165,7 +165,7 @@ xrpLiquid(ReadView const& view, AccountID const& id, std::int32_t ownerCountAdj, // Pseudo-accounts have no reserve requirement auto const reserve = isPseudoAccount(sle) ? XRPAmount{0} - : baseAccountReserve(view, currentOwnerCount, currentAccountCount); + : view.fees().accountReserve(currentOwnerCount, currentAccountCount); auto const fullBalance = sle->getFieldAmount(sfBalance); @@ -330,14 +330,7 @@ accountReserve( std::uint32_t const currentOwnerCount = ownerCount(sle, j, ownerCountAdj); std::uint32_t const currentAccountCount = accountCountImpl(sle, accountCountAdj, j); - return baseAccountReserve(view, currentOwnerCount, currentAccountCount); -} - -XRPAmount -baseAccountReserve(ReadView const& view, std::int32_t ownerCount, std::int32_t accountCount) -{ - auto const& fees = view.fees(); - return (fees.reserve * accountCount) + (fees.increment * ownerCount); + return view.fees().accountReserve(currentOwnerCount, currentAccountCount); } TER diff --git a/src/test/app/AMMExtendedMPT_test.cpp b/src/test/app/AMMExtendedMPT_test.cpp index a409cbee88..63b7841fba 100644 --- a/src/test/app/AMMExtendedMPT_test.cpp +++ b/src/test/app/AMMExtendedMPT_test.cpp @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -464,7 +463,7 @@ private: // Provide micro amounts to compensate for fees to make results round // nice. auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 2) + env.current()->fees().base * 3; + XRP(100) + env.current()->fees().accountReserve(2, 1) + env.current()->fees().base * 3; env.fund(startingXrp, gw_, alice_); env.fund(XRP(2'000), bob_); diff --git a/src/test/app/AMMExtended_test.cpp b/src/test/app/AMMExtended_test.cpp index c7fe147511..563bb3ca33 100644 --- a/src/test/app/AMMExtended_test.cpp +++ b/src/test/app/AMMExtended_test.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -547,7 +546,7 @@ private: // 1 for each trust limit == 3 (alice_ < mtgox/amazon/bitstamp) + // 1 for payment == 4 auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 3) + env.current()->fees().base * 4; + XRP(100) + env.current()->fees().accountReserve(3, 1) + env.current()->fees().base * 4; env.fund(startingXrp, gw1, gw2, gw3, localAlice); env.fund(XRP(2'000), localBob); diff --git a/src/test/app/CheckMPT_test.cpp b/src/test/app/CheckMPT_test.cpp index b7cded444e..93e752154c 100644 --- a/src/test/app/CheckMPT_test.cpp +++ b/src/test/app/CheckMPT_test.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -410,7 +409,7 @@ class CheckMPT_test : public beast::unit_test::Suite // Insufficient reserve. Account const cheri{"cheri"}; - env.fund(baseAccountReserve(*env.current(), 1) - drops(1), cheri); + env.fund(env.current()->fees().accountReserve(1, 1) - drops(1), cheri); env(check::create(cheri, bob, usd(50)), Fee(drops(env.current()->fees().base)), diff --git a/src/test/app/Check_test.cpp b/src/test/app/Check_test.cpp index 362adbf03c..b19a9f6894 100644 --- a/src/test/app/Check_test.cpp +++ b/src/test/app/Check_test.cpp @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -471,7 +470,7 @@ class Check_test : public beast::unit_test::Suite // Insufficient reserve. Account const cheri{"cheri"}; - env.fund(baseAccountReserve(*env.current(), 1) - drops(1), cheri); + env.fund(env.current()->fees().accountReserve(1, 1) - drops(1), cheri); env.close(); env(check::create(cheri, bob, usd(50)), diff --git a/src/test/app/Credentials_test.cpp b/src/test/app/Credentials_test.cpp index 9e7575cd50..1f6ec012c8 100644 --- a/src/test/app/Credentials_test.cpp +++ b/src/test/app/Credentials_test.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -639,8 +638,8 @@ struct Credentials_test : public beast::unit_test::Suite { Env env{*this, features}; - env.fund(drops(baseAccountReserve(*env.current(), 1)), issuer); - env.fund(drops(baseAccountReserve(*env.current(), 0)), subject); + env.fund(drops(env.current()->fees().accountReserve(1, 1)), issuer); + env.fund(drops(env.current()->fees().accountReserve(0, 1)), subject); env.close(); { diff --git a/src/test/app/Delegate_test.cpp b/src/test/app/Delegate_test.cpp index d98ea3df3f..67f23ce0c4 100644 --- a/src/test/app/Delegate_test.cpp +++ b/src/test/app/Delegate_test.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -276,7 +275,7 @@ class Delegate_test : public beast::unit_test::Suite Account const bob{"bob"}; auto const txFee = env.current()->fees().base; - env.fund(baseAccountReserve(*env.current(), 0) + txFee, alice); + env.fund(env.current()->fees().accountReserve(0, 1) + txFee, alice); env.fund(XRP(100000), bob); env.close(); @@ -293,7 +292,7 @@ class Delegate_test : public beast::unit_test::Suite auto const txFee = env.current()->fees().base; - env.fund(baseAccountReserve(*env.current(), 1) + (txFee * 4), alice); + env.fund(env.current()->fees().accountReserve(1, 1) + (txFee * 4), alice); env.fund(XRP(100000), bob, carol); env.close(); @@ -319,8 +318,8 @@ class Delegate_test : public beast::unit_test::Suite Account const alice{"alice"}; Account const bob{"bob"}; - env.fund(drops(baseAccountReserve(*env.current(), 1)), alice); - env.fund(drops(baseAccountReserve(*env.current(), 2)), bob); + env.fund(drops(env.current()->fees().accountReserve(1, 1)), alice); + env.fund(drops(env.current()->fees().accountReserve(2, 1)), bob); env.close(); // alice gives bob permission @@ -423,7 +422,7 @@ class Delegate_test : public beast::unit_test::Suite Account const carol{"carol"}; auto const baseFee = env.current()->fees().base; - auto const reserve = baseAccountReserve(*env.current(), 1); + auto const reserve = env.current()->fees().accountReserve(1, 1); auto const paymentAmount = XRP(1); auto const highFee = reserve + baseFee; BEAST_EXPECT(highFee > reserve); @@ -489,9 +488,9 @@ class Delegate_test : public beast::unit_test::Suite Account const carol{"carol"}; auto const baseFee = env.current()->fees().base; - auto const baseReserve = baseAccountReserve(*env.current(), 0); + auto const baseReserve = env.current()->fees().accountReserve(0, 1); - env.fund(baseAccountReserve(*env.current(), 1) + baseFee + XRP(1), alice); + env.fund(env.current()->fees().accountReserve(1, 1) + baseFee + XRP(1), alice); env.fund(baseReserve, bob); env.fund(XRP(1000), carol); env.close(); @@ -524,7 +523,7 @@ class Delegate_test : public beast::unit_test::Suite Account const carol{"carol"}; auto const baseFee = env.current()->fees().base; - auto const reserve = baseAccountReserve(*env.current(), 1); + auto const reserve = env.current()->fees().accountReserve(1, 1); // Alice is funded with (reserve + baseFee): after DelegateSet she has // exactly 'reserve', which is insufficient to send XRP(10) while keeping diff --git a/src/test/app/DepositAuth_test.cpp b/src/test/app/DepositAuth_test.cpp index c615bded16..c75bdeaf3a 100644 --- a/src/test/app/DepositAuth_test.cpp +++ b/src/test/app/DepositAuth_test.cpp @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -52,7 +51,7 @@ namespace xrpl::test { static XRPAmount reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } // Helper function that returns true if acct has the lsfDepositAuth flag set. @@ -1026,7 +1025,7 @@ struct DepositPreauth_test : public beast::unit_test::Suite { // not enough reserve Account const john{"john"}; - env.fund(baseAccountReserve(*env.current(), 0), john); + env.fund(env.current()->fees().accountReserve(0, 1), john); env.close(); auto jv = deposit::authCredentials(john, {{.issuer = issuer, .credType = credType}}); diff --git a/src/test/app/FlowMPT_test.cpp b/src/test/app/FlowMPT_test.cpp index 01dea70939..0be74b657c 100644 --- a/src/test/app/FlowMPT_test.cpp +++ b/src/test/app/FlowMPT_test.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -726,7 +725,7 @@ struct FlowMPT_test : public beast::unit_test::Suite static XRPAmount reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } // Helper function that returns the Offers on an account. diff --git a/src/test/app/Flow_test.cpp b/src/test/app/Flow_test.cpp index cbba56c157..8d5162394e 100644 --- a/src/test/app/Flow_test.cpp +++ b/src/test/app/Flow_test.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -707,7 +706,7 @@ struct Flow_test : public beast::unit_test::Suite static XRPAmount reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } // Helper function that returns the Offers on an account. diff --git a/src/test/app/Loan_test.cpp b/src/test/app/Loan_test.cpp index 183174638e..ee9691c5d2 100644 --- a/src/test/app/Loan_test.cpp +++ b/src/test/app/Loan_test.cpp @@ -673,11 +673,17 @@ protected: case AssetType::MPT: { // Enough to cover initial fees if (!env.le(keylet::account(issuer))) - env.fund(baseAccountReserve(*env.current(), 10) * 10, issuer); + { + env.fund(env.current()->fees().accountReserve(10, 1) * 10, issuer); + } if (!env.le(keylet::account(lender))) - env.fund(baseAccountReserve(*env.current(), 10) * 10, noripple(lender)); + { + env.fund(env.current()->fees().accountReserve(10, 1) * 10, noripple(lender)); + } if (!env.le(keylet::account(borrower))) - env.fund(baseAccountReserve(*env.current(), 10) * 10, noripple(borrower)); + { + env.fund(env.current()->fees().accountReserve(10, 1) * 10, noripple(borrower)); + } MPTTester mptt{env, issuer, kMptInitNoFund}; mptt.create({.flags = tfMPTCanClawback | tfMPTCanTransfer | tfMPTCanLock}); @@ -762,11 +768,15 @@ protected: using namespace jtx; // Enough to cover initial fees - env.fund(baseAccountReserve(*env.current(), 10) * 10, issuer); + env.fund(env.current()->fees().accountReserve(10, 1) * 10, issuer); if (lender != issuer) - env.fund(baseAccountReserve(*env.current(), 10) * 10, noripple(lender)); + { + env.fund(env.current()->fees().accountReserve(10, 1) * 10, noripple(lender)); + } if (borrower != issuer && borrower != lender) - env.fund(baseAccountReserve(*env.current(), 10) * 10, noripple(borrower)); + { + env.fund(env.current()->fees().accountReserve(10, 1) * 10, noripple(borrower)); + } describeLoan(env, brokerParams, loanParams, assetType, issuer, lender, borrower); @@ -3072,7 +3082,7 @@ protected: auto const [acctReserve, incReserve] = [this]() -> std::pair { Env const env{*this, testableAmendments()}; return { - baseAccountReserve(*env.current(), 0).drops() / kDropsPerXrp.drops(), + env.current()->fees().accountReserve(0, 1).drops() / kDropsPerXrp.drops(), env.current()->fees().increment.drops() / kDropsPerXrp.drops()}; }(); diff --git a/src/test/app/OfferMPT_test.cpp b/src/test/app/OfferMPT_test.cpp index 47af4b75dd..da2c2c61ae 100644 --- a/src/test/app/OfferMPT_test.cpp +++ b/src/test/app/OfferMPT_test.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -58,7 +57,7 @@ class OfferMPT_test : public beast::unit_test::Suite static XRPAmount reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } static std::uint32_t @@ -1793,7 +1792,8 @@ public: // 1 for each trust limit == 3 (alice < mtgox/amazon/bitstamp) + // 1 for payment == 4 auto const base = env.current()->fees().base; - auto const startingXrp = XRP(100) + baseAccountReserve(*env.current(), 3) + base * 4; + auto const startingXrp = + XRP(100) + env.current()->fees().accountReserve(3, 1) + base * 4; env.fund(startingXrp, gw1, gw2, gw3, alice, bob); env.close(); @@ -1813,7 +1813,8 @@ public: env(offer(alice, usD1(200), XRP(200))); BEAST_EXPECT(env.balance(alice, usD1) == usD1(100)); - BEAST_EXPECT(env.balance(alice) == STAmount(baseAccountReserve(*env.current(), 3))); + BEAST_EXPECT( + env.balance(alice) == STAmount(env.current()->fees().accountReserve(3, 1))); BEAST_EXPECT(env.balance(bob, usD1) == usD1(400)); }; @@ -1864,7 +1865,7 @@ public: auto const bob = Account{"bob"}; auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2; + XRP(100) + env.current()->fees().accountReserve(1, 1) + env.current()->fees().base * 2; env.fund(startingXrp, gw, alice, bob); @@ -1883,7 +1884,7 @@ public: jrr = ledgerEntryRoot(env, alice); BEAST_EXPECT( jrr[jss::node][sfBalance.fieldName] == - STAmount(baseAccountReserve(*env.current(), 1)).getText()); + STAmount(env.current()->fees().accountReserve(1, 1)).getText()); jrr = ledgerEntryMPT(env, bob, usd); BEAST_EXPECT(jrr[jss::node][sfMPTAmount.fieldName] == "400"); @@ -1903,7 +1904,7 @@ public: auto const bob = Account{"bob"}; auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2; + XRP(100) + env.current()->fees().accountReserve(1, 1) + env.current()->fees().base * 2; env.fund(startingXrp, gw, alice, bob); @@ -1924,7 +1925,7 @@ public: jrr = ledgerEntryRoot(env, alice); BEAST_EXPECT( jrr[jss::node][sfBalance.fieldName] == - STAmount(baseAccountReserve(*env.current(), 1)).getText()); + STAmount(env.current()->fees().accountReserve(1, 1)).getText()); jrr = ledgerEntryMPT(env, bob, usd); BEAST_EXPECT(jrr[jss::node][sfMPTAmount.fieldName] == "300"); @@ -1944,7 +1945,8 @@ public: Env env{*this, features}; auto const base = env.current()->fees().base; - auto const startingXrp = XRP(100.1) + baseAccountReserve(*env.current(), 1) + base * 2; + auto const startingXrp = + XRP(100.1) + env.current()->fees().accountReserve(1, 1) + base * 2; env.fund(startingXrp, gw, alice, bob); env.close(); diff --git a/src/test/app/Offer_test.cpp b/src/test/app/Offer_test.cpp index 540fcc22ff..2ffdb95780 100644 --- a/src/test/app/Offer_test.cpp +++ b/src/test/app/Offer_test.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -61,7 +60,7 @@ class OfferBaseUtil_test : public beast::unit_test::Suite static XRPAmount reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } static std::uint32_t @@ -1963,7 +1962,7 @@ public: // 1 for each trust limit == 3 (alice < mtgox/amazon/bitstamp) + // 1 for payment == 4 auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 3) + env.current()->fees().base * 4; + XRP(100) + env.current()->fees().accountReserve(3, 1) + env.current()->fees().base * 4; env.fund(startingXrp, gw1, gw2, gw3, alice, bob); env.close(); @@ -1986,7 +1985,7 @@ public: jrr = ledgerEntryRoot(env, alice); BEAST_EXPECT( jrr[jss::node][sfBalance.fieldName] == - STAmount(baseAccountReserve(*env.current(), 3)).getText()); + STAmount(env.current()->fees().accountReserve(3, 1)).getText()); jrr = ledgerEntryState(env, bob, gw1, "USD"); BEAST_EXPECT(jrr[jss::node][sfBalance.fieldName][jss::value] == "-400"); @@ -2046,7 +2045,7 @@ public: auto const usd = gw["USD"]; auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2; + XRP(100) + env.current()->fees().accountReserve(1, 1) + env.current()->fees().base * 2; env.fund(startingXrp, gw, alice, bob); env.close(); @@ -2067,7 +2066,7 @@ public: jrr = ledgerEntryRoot(env, alice); BEAST_EXPECT( jrr[jss::node][sfBalance.fieldName] == - STAmount(baseAccountReserve(*env.current(), 1)).getText()); + STAmount(env.current()->fees().accountReserve(1, 1)).getText()); jrr = ledgerEntryState(env, bob, gw, "USD"); BEAST_EXPECT(jrr[jss::node][sfBalance.fieldName][jss::value] == "-400"); @@ -2088,7 +2087,7 @@ public: auto const usd = gw["USD"]; auto const startingXrp = - XRP(100) + baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2; + XRP(100) + env.current()->fees().accountReserve(1, 1) + env.current()->fees().base * 2; env.fund(startingXrp, gw, alice, bob); env.close(); @@ -2111,7 +2110,7 @@ public: jrr = ledgerEntryRoot(env, alice); BEAST_EXPECT( jrr[jss::node][sfBalance.fieldName] == - STAmount(baseAccountReserve(*env.current(), 1)).getText()); + STAmount(env.current()->fees().accountReserve(1, 1)).getText()); jrr = ledgerEntryState(env, bob, gw, "USD"); BEAST_EXPECT(jrr[jss::node][sfBalance.fieldName][jss::value] == "-300"); @@ -2132,8 +2131,8 @@ public: auto const xts = gw["XTS"]; auto const xxx = gw["XXX"]; - auto const startingXrp = - XRP(100.1) + baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2; + auto const startingXrp = XRP(100.1) + env.current()->fees().accountReserve(1, 1) + + env.current()->fees().base * 2; env.fund(startingXrp, gw, alice, bob); env.close(); diff --git a/src/test/app/Oracle_test.cpp b/src/test/app/Oracle_test.cpp index 97c3d29ac6..b8d9fb32d1 100644 --- a/src/test/app/Oracle_test.cpp +++ b/src/test/app/Oracle_test.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -61,7 +60,7 @@ private: // Insufficient reserve { Env env(*this); - env.fund(baseAccountReserve(*env.current(), 0), owner); + env.fund(env.current()->fees().accountReserve(0, 1), owner); Oracle const oracle( env, {.owner = owner, @@ -71,7 +70,8 @@ private: // Insufficient reserve if the data series extends to greater than 5 { Env env(*this); - env.fund(baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2, owner); + env.fund( + env.current()->fees().accountReserve(1, 1) + env.current()->fees().base * 2, owner); Oracle oracle( env, {.owner = owner, .fee = static_cast(env.current()->fees().base.drops())}); BEAST_EXPECT(oracle.exists()); @@ -639,7 +639,8 @@ private: { Env env(*this); auto const baseFee = static_cast(env.current()->fees().base.drops()); - env.fund(baseAccountReserve(*env.current(), 1) + env.current()->fees().base * 2, owner); + env.fund( + env.current()->fees().accountReserve(1, 1) + env.current()->fees().base * 2, owner); Oracle oracle(env, {.owner = owner, .fee = baseFee}); oracle.set(UpdateArg{.series = {{"XRP", "USD", 742, 2}}, .fee = baseFee}); } diff --git a/src/test/app/Sponsor_test.cpp b/src/test/app/Sponsor_test.cpp index 36c89e892f..0234c9cba6 100644 --- a/src/test/app/Sponsor_test.cpp +++ b/src/test/app/Sponsor_test.cpp @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -76,7 +75,7 @@ accountReserve(jtx::Env& env, std::uint32_t count = 1) static STAmount reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } static void @@ -2031,7 +2030,7 @@ public: // Account is not sponsored by normal Sponsor specification { - env(pay(alice, bob, drops(baseAccountReserve(*env.current(), 0))), + env(pay(alice, bob, drops(env.current()->fees().accountReserve(0, 1))), sponsor::As(sponsor, spfSponsorReserve), Sig(sfSponsorSignature, sponsor)); env.close(); diff --git a/src/test/app/Ticket_test.cpp b/src/test/app/Ticket_test.cpp index c236971a9a..5700503830 100644 --- a/src/test/app/Ticket_test.cpp +++ b/src/test/app/Ticket_test.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -504,7 +503,7 @@ class Ticket_test : public beast::unit_test::Suite Account const alice{"alice"}; // Fund alice not quite enough to make the reserve for a Ticket. - env.fund(baseAccountReserve(*env.current(), 1) - drops(1), alice); + env.fund(env.current()->fees().accountReserve(1, 1) - drops(1), alice); env.close(); env(ticket::create(alice, 1), Ter(tecINSUFFICIENT_RESERVE)); @@ -512,7 +511,8 @@ class Ticket_test : public beast::unit_test::Suite env.require(Owners(alice, 0), tickets(alice, 0)); // Give alice enough to exactly meet the reserve for one Ticket. - env(pay(env.master, alice, baseAccountReserve(*env.current(), 1) - env.balance(alice))); + env(pay( + env.master, alice, env.current()->fees().accountReserve(1, 1) - env.balance(alice))); env.close(); env(ticket::create(alice, 1)); @@ -525,7 +525,7 @@ class Ticket_test : public beast::unit_test::Suite env( pay(env.master, alice, - baseAccountReserve(*env.current(), 250) - drops(1) - env.balance(alice))); + env.current()->fees().accountReserve(250, 1) - drops(1) - env.balance(alice))); env.close(); // alice doesn't quite have the reserve for a total of 250 @@ -536,7 +536,8 @@ class Ticket_test : public beast::unit_test::Suite // Give alice enough so she can make the reserve for all 250 // Tickets. - env(pay(env.master, alice, baseAccountReserve(*env.current(), 250) - env.balance(alice))); + env(pay( + env.master, alice, env.current()->fees().accountReserve(250, 1) - env.balance(alice))); env.close(); std::uint32_t const ticketSeq{env.seq(alice) + 1}; diff --git a/src/test/app/TrustSet_test.cpp b/src/test/app/TrustSet_test.cpp index e4bf6cb078..51cc4c2433 100644 --- a/src/test/app/TrustSet_test.cpp +++ b/src/test/app/TrustSet_test.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -192,7 +191,7 @@ public: auto const txFee = env.current()->fees().base; auto const baseReserve = env.current()->fees().reserve; - auto const threelineReserve = baseAccountReserve(*env.current(), 3); + auto const threelineReserve = env.current()->fees().accountReserve(3, 1); env.fund(XRP(10000), gwA, gwB, assistor); diff --git a/src/test/app/Vault_test.cpp b/src/test/app/Vault_test.cpp index f1d891d4b7..10cf11512f 100644 --- a/src/test/app/Vault_test.cpp +++ b/src/test/app/Vault_test.cpp @@ -1805,7 +1805,7 @@ class Vault_test : public beast::unit_test::Suite auto const [acctReserve, incReserve] = [this]() -> std::pair { Env const env{*this, testableAmendments()}; return { - baseAccountReserve(*env.current(), 0).drops() / kDropsPerXrp.drops(), + env.current()->fees().accountReserve(0, 1).drops() / kDropsPerXrp.drops(), env.current()->fees().increment.drops() / kDropsPerXrp.drops()}; }(); @@ -2687,7 +2687,7 @@ class Vault_test : public beast::unit_test::Suite auto const [acctReserve, incReserve] = [this]() -> std::pair { Env const env{*this, testableAmendments()}; return { - baseAccountReserve(*env.current(), 0).drops() / kDropsPerXrp.drops(), + env.current()->fees().accountReserve(0, 1).drops() / kDropsPerXrp.drops(), env.current()->fees().increment.drops() / kDropsPerXrp.drops()}; }(); diff --git a/src/test/app/XChain_test.cpp b/src/test/app/XChain_test.cpp index f5384da285..f57ad325fb 100644 --- a/src/test/app/XChain_test.cpp +++ b/src/test/app/XChain_test.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -142,7 +141,7 @@ struct SEnv XRPAmount reserve(std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } XRPAmount @@ -371,7 +370,7 @@ struct XChain_test : public beast::unit_test::Suite, public jtx::XChainBridgeObj XRPAmount reserve(std::uint32_t count) { - return baseAccountReserve(*XEnv(*this).env.current(), count); + return XEnv(*this).env.current()->fees().accountReserve(count, 1); } XRPAmount diff --git a/src/test/jtx/impl/AMMTest.cpp b/src/test/jtx/impl/AMMTest.cpp index 6b9a075735..3b4aae20e2 100644 --- a/src/test/jtx/impl/AMMTest.cpp +++ b/src/test/jtx/impl/AMMTest.cpp @@ -14,7 +14,6 @@ #include #include -#include #include #include #include @@ -198,7 +197,7 @@ AMMTestBase::testAMM(std::function const& cb, TestAM XRPAmount AMMTest::reserve(jtx::Env& env, std::uint32_t count) { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); } XRPAmount diff --git a/src/test/ledger/PaymentSandbox_test.cpp b/src/test/ledger/PaymentSandbox_test.cpp index a89d07849b..eec30fe668 100644 --- a/src/test/ledger/PaymentSandbox_test.cpp +++ b/src/test/ledger/PaymentSandbox_test.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -331,7 +330,7 @@ class PaymentSandbox_test : public beast::unit_test::Suite }; auto reserve = [](jtx::Env& env, std::uint32_t count) -> XRPAmount { - return baseAccountReserve(*env.current(), count); + return env.current()->fees().accountReserve(count, 1); }; Env env(*this, features); diff --git a/src/test/rpc/AccountTx_test.cpp b/src/test/rpc/AccountTx_test.cpp index 85093619c4..6495e5dc93 100644 --- a/src/test/rpc/AccountTx_test.cpp +++ b/src/test/rpc/AccountTx_test.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -776,7 +775,7 @@ class AccountTx_test : public beast::unit_test::Suite // All it takes is a large enough XRP payment to resurrect // becky's account. Try too small a payment. - env(pay(alice, becky, drops(baseAccountReserve(*env.current(), 0)) - drops(1)), + env(pay(alice, becky, drops(env.current()->fees().accountReserve(0, 1)) - drops(1)), Ter(tecNO_DST_INSUF_XRP)); env.close();