20 #include <ripple/app/misc/LoadFeeTrack.h>
21 #include <ripple/basics/FeeUnits.h>
22 #include <ripple/basics/Log.h>
23 #include <ripple/basics/contract.h>
24 #include <ripple/basics/safe_cast.h>
25 #include <ripple/core/Config.h>
26 #include <ripple/ledger/ReadView.h>
27 #include <ripple/protocol/STAmount.h>
28 #include <ripple/protocol/jss.h>
59 JLOG(
j_.
debug()) <<
"Local load fee raised from " << origFee <<
" to "
80 JLOG(
j_.
debug()) <<
"Local load fee lowered from " << origFee <<
" to "
100 auto lowestTerms = [](
auto& a,
auto& b) {
101 auto value = [](
auto val) {
108 if (
auto const g =
std::gcd(value(a), value(b)))
120 if (bUnlimited && (feeFactor > uRemFee) && (feeFactor < (4 * uRemFee)))
135 lowestTerms(fee, den);
136 lowestTerms(baseFee, den);
137 lowestTerms(feeFactor, den);
143 if (fee.
value() < baseFee.value())
145 auto tmp = fee.
value();
146 fee = baseFee.
value();
150 assert(fee.
value() >= baseFee.value());
155 if (baseFee > baseFeeOverflow)
157 Throw<std::overflow_error>(
"scaleFeeLoad");
159 baseFee *= feeFactor;
161 auto const result =
mulDiv(fee, baseFee, den);
163 Throw<std::overflow_error>(
"scaleFeeLoad");
164 return result.second;
static constexpr std::uint32_t lftFeeMax
constexpr value_type value() const
Returns the underlying value.
static constexpr std::uint32_t lftFeeDecFraction
XRPAmount scaleFeeLoad(FeeUnit64 fee, LoadFeeTrack const &feeTrack, Fees const &fees, bool bUnlimited)
std::uint32_t getLoadBase() const
Reflects the fee settings for a particular ledger.
std::pair< std::uint32_t, std::uint32_t > getScalingFactors() const
static constexpr std::uint32_t lftFeeIncFraction
Manages the current fee schedule.
std::uint32_t remoteTxnLoadFee_
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr value_type value() const
Returns the underlying value.
std::pair< bool, Dest > mulDiv(Source1 value, Dest mul, Source2 div)
std::uint32_t raiseCount_
static constexpr std::uint32_t lftNormalFee
std::uint32_t localTxnLoadFee_