1#include <xrpld/app/misc/LoadFeeTrack.h>
3#include <xrpl/basics/Log.h>
4#include <xrpl/basics/contract.h>
5#include <xrpl/basics/safe_cast.h>
6#include <xrpl/protocol/Units.h>
35 JLOG(
j_.
debug()) <<
"Local load fee raised from " << origFee <<
" to "
56 JLOG(
j_.
debug()) <<
"Local load fee lowered from " << origFee <<
" to "
79 if (bUnlimited && (feeFactor > uRemFee) && (feeFactor < (4 * uRemFee)))
86 auto const result =
mulDiv(
87 fee, feeFactor, safe_cast<std::uint64_t>(feeTrack.
getLoadBase()));
89 Throw<std::overflow_error>(
"scaleFeeLoad");
Manages the current fee schedule.
static std::uint32_t constexpr lftFeeIncFraction
static std::uint32_t constexpr lftNormalFee
std::uint32_t raiseCount_
std::uint32_t localTxnLoadFee_
std::uint32_t remoteTxnLoadFee_
std::uint32_t getLoadBase() const
std::pair< std::uint32_t, std::uint32_t > getScalingFactors() const
static std::uint32_t constexpr lftFeeDecFraction
static std::uint32_t constexpr lftFeeMax
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
XRPAmount scaleFeeLoad(XRPAmount fee, LoadFeeTrack const &feeTrack, Fees const &fees, bool bUnlimited)
std::optional< std::uint64_t > mulDiv(std::uint64_t value, std::uint64_t mul, std::uint64_t div)
Return value*mul/div accurately.
Reflects the fee settings for a particular ledger.