mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-26 21:45:50 +00:00
Minor refactor of LoadFeeTrack (RIPD-956):
* Load scaling functions are free, and take `Fees`. * Move LoadFeeTrack to app/misc. * Update naming convention.
This commit is contained in:
@@ -937,6 +937,10 @@
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\impl\LoadFeeTrack.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\impl\Transaction.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
@@ -949,6 +953,8 @@
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\src\ripple\app\misc\LoadFeeTrack.h">
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\NetworkOPs.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
@@ -1149,6 +1155,10 @@
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\tests\LoadFeeTrack.test.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\tests\MultiSign.test.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
@@ -1982,12 +1992,6 @@
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\impl\LoadFeeTrack.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\impl\LoadMonitor.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
@@ -2052,8 +2056,6 @@
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ripple\core\LoadEvent.h">
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ripple\core\LoadFeeTrack.h">
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ripple\core\LoadMonitor.h">
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ripple\core\SociDB.h">
|
||||
@@ -2072,12 +2074,6 @@
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\tests\LoadFeeTrack.test.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\tests\SociDB.test.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||
|
||||
@@ -1419,6 +1419,9 @@
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\impl\AmendmentTable.cpp">
|
||||
<Filter>ripple\app\misc\impl</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\impl\LoadFeeTrack.cpp">
|
||||
<Filter>ripple\app\misc\impl</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\impl\Transaction.cpp">
|
||||
<Filter>ripple\app\misc\impl</Filter>
|
||||
</ClCompile>
|
||||
@@ -1428,6 +1431,9 @@
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\impl\ValidatorList.cpp">
|
||||
<Filter>ripple\app\misc\impl</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\src\ripple\app\misc\LoadFeeTrack.h">
|
||||
<Filter>ripple\app\misc</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ripple\app\misc\NetworkOPs.cpp">
|
||||
<Filter>ripple\app\misc</Filter>
|
||||
</ClCompile>
|
||||
@@ -1623,6 +1629,9 @@
|
||||
<ClCompile Include="..\..\src\ripple\app\tests\HashRouter_test.cpp">
|
||||
<Filter>ripple\app\tests</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\tests\LoadFeeTrack.test.cpp">
|
||||
<Filter>ripple\app\tests</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\app\tests\MultiSign.test.cpp">
|
||||
<Filter>ripple\app\tests</Filter>
|
||||
</ClCompile>
|
||||
@@ -2532,9 +2541,6 @@
|
||||
<ClCompile Include="..\..\src\ripple\core\impl\LoadEvent.cpp">
|
||||
<Filter>ripple\core\impl</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\impl\LoadFeeTrack.cpp">
|
||||
<Filter>ripple\core\impl</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\impl\LoadMonitor.cpp">
|
||||
<Filter>ripple\core\impl</Filter>
|
||||
</ClCompile>
|
||||
@@ -2589,9 +2595,6 @@
|
||||
<ClInclude Include="..\..\src\ripple\core\LoadEvent.h">
|
||||
<Filter>ripple\core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ripple\core\LoadFeeTrack.h">
|
||||
<Filter>ripple\core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ripple\core\LoadMonitor.h">
|
||||
<Filter>ripple\core</Filter>
|
||||
</ClInclude>
|
||||
@@ -2607,9 +2610,6 @@
|
||||
<ClCompile Include="..\..\src\ripple\core\tests\Coroutine.test.cpp">
|
||||
<Filter>ripple\core\tests</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\tests\LoadFeeTrack.test.cpp">
|
||||
<Filter>ripple\core\tests</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\ripple\core\tests\SociDB.test.cpp">
|
||||
<Filter>ripple\core\tests</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@@ -29,14 +29,13 @@
|
||||
#include <ripple/app/ledger/TransactionMaster.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/HashRouter.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/basics/contract.h>
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/basics/StringUtilities.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/DatabaseCon.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/JobQueue.h>
|
||||
#include <ripple/core/SociDB.h>
|
||||
#include <ripple/json/to_string.h>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#include <ripple/app/ledger/LedgerCleaner.h>
|
||||
#include <ripple/app/ledger/InboundLedgers.h>
|
||||
#include <ripple/app/ledger/LedgerMaster.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/core/ThreadEntry.h>
|
||||
#include <ripple/protocol/JsonFields.h>
|
||||
#include <ripple/beast/core/Thread.h>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <ripple/app/misc/AmendmentTable.h>
|
||||
#include <ripple/app/misc/CanonicalTXSet.h>
|
||||
#include <ripple/app/misc/HashRouter.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
#include <ripple/app/misc/Validations.h>
|
||||
@@ -40,7 +41,6 @@
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/JobQueue.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/TimeKeeper.h>
|
||||
#include <ripple/json/to_string.h>
|
||||
#include <ripple/overlay/Overlay.h>
|
||||
@@ -1765,11 +1765,12 @@ void LedgerConsensusImp::startRound (
|
||||
|
||||
void LedgerConsensusImp::addLoad(STValidation::ref val)
|
||||
{
|
||||
auto const& feeTrack = app_.getFeeTrack();
|
||||
std::uint32_t fee = std::max(
|
||||
app_.getFeeTrack().getLocalFee(),
|
||||
app_.getFeeTrack().getClusterFee());
|
||||
feeTrack.getLocalFee(),
|
||||
feeTrack.getClusterFee());
|
||||
|
||||
if (fee > app_.getFeeTrack().getLoadBase())
|
||||
if (fee > feeTrack.getLoadBase())
|
||||
val->setFieldU32(sfLoadFee, fee);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/AmendmentTable.h>
|
||||
#include <ripple/app/misc/HashRouter.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/app/misc/SHAMapStore.h>
|
||||
#include <ripple/app/misc/Transaction.h>
|
||||
@@ -37,7 +38,6 @@
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/basics/TaggedCache.h>
|
||||
#include <ripple/basics/UptimeTimer.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/TimeKeeper.h>
|
||||
#include <ripple/overlay/Overlay.h>
|
||||
#include <ripple/overlay/Peer.h>
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <ripple/app/main/NodeStoreScheduler.h>
|
||||
#include <ripple/app/misc/AmendmentTable.h>
|
||||
#include <ripple/app/misc/HashRouter.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/app/misc/SHAMapStore.h>
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
@@ -55,7 +56,6 @@
|
||||
#include <ripple/json/to_string.h>
|
||||
#include <ripple/core/ConfigSections.h>
|
||||
#include <ripple/core/DeadlineTimer.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/TimeKeeper.h>
|
||||
#include <ripple/ledger/CachedSLEs.h>
|
||||
#include <ripple/nodestore/Database.h>
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/main/LoadManager.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/basics/UptimeTimer.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/ThreadEntry.h>
|
||||
#include <ripple/json/to_string.h>
|
||||
#include <ripple/beast/core/Thread.h>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
|
||||
namespace ripple {
|
||||
|
||||
struct Fees;
|
||||
|
||||
/** Manages the current fee schedule.
|
||||
|
||||
The "base" fee is the cost to send a reference transaction under no load,
|
||||
@@ -37,51 +39,42 @@ namespace ripple {
|
||||
reference transaction. This fee fluctuates based on the load of the
|
||||
server.
|
||||
*/
|
||||
// VFALCO TODO Rename "load" to "current".
|
||||
class LoadFeeTrack
|
||||
class LoadFeeTrack final
|
||||
{
|
||||
public:
|
||||
explicit LoadFeeTrack (beast::Journal journal = beast::Journal())
|
||||
: m_journal (journal)
|
||||
, mLocalTxnLoadFee (lftNormalFee)
|
||||
, mRemoteTxnLoadFee (lftNormalFee)
|
||||
, mClusterTxnLoadFee (lftNormalFee)
|
||||
, raiseCount (0)
|
||||
: j_ (journal)
|
||||
, localTxnLoadFee_ (lftNormalFee)
|
||||
, remoteTxnLoadFee_ (lftNormalFee)
|
||||
, clusterTxnLoadFee_ (lftNormalFee)
|
||||
, raiseCount_ (0)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~LoadFeeTrack () { }
|
||||
|
||||
// Scale from fee units to millionths of a ripple
|
||||
std::uint64_t scaleFeeBase (std::uint64_t fee, std::uint64_t baseFee,
|
||||
std::uint32_t referenceFeeUnits) const;
|
||||
|
||||
// Scale using load as well as base rate
|
||||
std::uint64_t scaleFeeLoad (std::uint64_t fee, std::uint64_t baseFee,
|
||||
std::uint32_t referenceFeeUnits, bool bUnlimited) const;
|
||||
~LoadFeeTrack() = default;
|
||||
|
||||
void setRemoteFee (std::uint32_t f)
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
mRemoteTxnLoadFee = f;
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
remoteTxnLoadFee_ = f;
|
||||
}
|
||||
|
||||
std::uint32_t getRemoteFee () const
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
return mRemoteTxnLoadFee;
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
return remoteTxnLoadFee_;
|
||||
}
|
||||
|
||||
std::uint32_t getLocalFee () const
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
return mLocalTxnLoadFee;
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
return localTxnLoadFee_;
|
||||
}
|
||||
|
||||
std::uint32_t getClusterFee () const
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
return mClusterTxnLoadFee;
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
return clusterTxnLoadFee_;
|
||||
}
|
||||
|
||||
std::uint32_t getLoadBase () const
|
||||
@@ -91,15 +84,25 @@ public:
|
||||
|
||||
std::uint32_t getLoadFactor () const
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
return std::max({ mClusterTxnLoadFee, mLocalTxnLoadFee, mRemoteTxnLoadFee });
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
return std::max({ clusterTxnLoadFee_, localTxnLoadFee_, remoteTxnLoadFee_ });
|
||||
}
|
||||
|
||||
std::pair<std::uint32_t, std::uint32_t>
|
||||
getScalingFactors() const
|
||||
{
|
||||
std::lock_guard<std::mutex> sl(lock_);
|
||||
|
||||
return std::make_pair(
|
||||
std::max(localTxnLoadFee_, remoteTxnLoadFee_),
|
||||
std::max(remoteTxnLoadFee_, clusterTxnLoadFee_));
|
||||
}
|
||||
|
||||
|
||||
void setClusterFee (std::uint32_t fee)
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
mClusterTxnLoadFee = fee;
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
clusterTxnLoadFee_ = fee;
|
||||
}
|
||||
|
||||
bool raiseLocalFee ();
|
||||
@@ -107,33 +110,41 @@ public:
|
||||
|
||||
bool isLoadedLocal () const
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
return (raiseCount != 0) || (mLocalTxnLoadFee != lftNormalFee);
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
return (raiseCount_ != 0) || (localTxnLoadFee_ != lftNormalFee);
|
||||
}
|
||||
|
||||
bool isLoadedCluster () const
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
return (raiseCount != 0) || (mLocalTxnLoadFee != lftNormalFee) || (mClusterTxnLoadFee != lftNormalFee);
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
return (raiseCount_ != 0) || (localTxnLoadFee_ != lftNormalFee) ||
|
||||
(clusterTxnLoadFee_ != lftNormalFee);
|
||||
}
|
||||
|
||||
private:
|
||||
static const int lftNormalFee = 256; // 256 is the minimum/normal load factor
|
||||
static const int lftFeeIncFraction = 4; // increase fee by 1/4
|
||||
static const int lftFeeDecFraction = 4; // decrease fee by 1/4
|
||||
static const int lftFeeMax = lftNormalFee * 1000000;
|
||||
static std::uint32_t constexpr lftNormalFee = 256; // 256 is the minimum/normal load factor
|
||||
static std::uint32_t constexpr lftFeeIncFraction = 4; // increase fee by 1/4
|
||||
static std::uint32_t constexpr lftFeeDecFraction = 4; // decrease fee by 1/4
|
||||
static std::uint32_t constexpr lftFeeMax = lftNormalFee * 1000000;
|
||||
|
||||
beast::Journal m_journal;
|
||||
using LockType = std::mutex;
|
||||
using ScopedLockType = std::lock_guard <LockType>;
|
||||
LockType mutable mLock;
|
||||
beast::Journal j_;
|
||||
std::mutex mutable lock_;
|
||||
|
||||
std::uint32_t mLocalTxnLoadFee; // Scale factor, lftNormalFee = normal fee
|
||||
std::uint32_t mRemoteTxnLoadFee; // Scale factor, lftNormalFee = normal fee
|
||||
std::uint32_t mClusterTxnLoadFee; // Scale factor, lftNormalFee = normal fee
|
||||
int raiseCount;
|
||||
std::uint32_t localTxnLoadFee_; // Scale factor, lftNormalFee = normal fee
|
||||
std::uint32_t remoteTxnLoadFee_; // Scale factor, lftNormalFee = normal fee
|
||||
std::uint32_t clusterTxnLoadFee_; // Scale factor, lftNormalFee = normal fee
|
||||
std::uint32_t raiseCount_;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Scale from fee units to millionths of a ripple
|
||||
std::uint64_t scaleFeeBase(std::uint64_t fee, Fees const& fees);
|
||||
|
||||
// Scale using load as well as base rate
|
||||
std::uint64_t scaleFeeLoad(std::uint64_t fee, LoadFeeTrack const& feeTrack,
|
||||
Fees const& fees, bool bUnlimited);
|
||||
|
||||
} // ripple
|
||||
|
||||
#endif
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <ripple/app/ledger/TransactionMaster.h>
|
||||
#include <ripple/app/main/LoadManager.h>
|
||||
#include <ripple/app/misc/HashRouter.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/Transaction.h>
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
#include <ripple/app/misc/Validations.h>
|
||||
@@ -53,7 +54,6 @@
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/ConfigSections.h>
|
||||
#include <ripple/core/DeadlineTimer.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/TimeKeeper.h>
|
||||
#include <ripple/crypto/csprng.h>
|
||||
#include <ripple/crypto/RFC1751.h>
|
||||
@@ -1581,13 +1581,14 @@ void NetworkOPsImp::pubServer ()
|
||||
if (!mSubServer.empty ())
|
||||
{
|
||||
Json::Value jvObj (Json::objectValue);
|
||||
auto const& feeTrack = app_.getFeeTrack();
|
||||
|
||||
jvObj [jss::type] = "serverStatus";
|
||||
jvObj [jss::server_status] = strOperatingMode ();
|
||||
jvObj [jss::load_base] =
|
||||
(mLastLoadBase = app_.getFeeTrack ().getLoadBase ());
|
||||
(mLastLoadBase = feeTrack.getLoadBase ());
|
||||
jvObj [jss::load_factor] =
|
||||
(mLastLoadFactor = app_.getFeeTrack ().getLoadFactor ());
|
||||
(mLastLoadFactor = feeTrack.getLoadFactor ());
|
||||
|
||||
for (auto i = mSubServer.begin (); i != mSubServer.end (); )
|
||||
{
|
||||
@@ -2358,8 +2359,9 @@ void NetworkOPsImp::pubLedger (
|
||||
|
||||
void NetworkOPsImp::reportFeeChange ()
|
||||
{
|
||||
if ((app_.getFeeTrack ().getLoadBase () == mLastLoadBase) &&
|
||||
(app_.getFeeTrack ().getLoadFactor () == mLastLoadFactor))
|
||||
auto const& feeTrack = app_.getFeeTrack();
|
||||
if ((feeTrack.getLoadBase () == mLastLoadBase) &&
|
||||
(feeTrack.getLoadFactor () == mLastLoadFactor))
|
||||
return;
|
||||
|
||||
m_job_queue.addJob (
|
||||
@@ -2724,10 +2726,11 @@ bool NetworkOPsImp::subServer (InfoSub::ref isrListener, Json::Value& jvResult,
|
||||
uRandom.size(),
|
||||
crypto_prng());
|
||||
|
||||
auto const& feeTrack = app_.getFeeTrack();
|
||||
jvResult[jss::random] = to_string (uRandom);
|
||||
jvResult[jss::server_status] = strOperatingMode ();
|
||||
jvResult[jss::load_base] = app_.getFeeTrack ().getLoadBase ();
|
||||
jvResult[jss::load_factor] = app_.getFeeTrack ().getLoadFactor ();
|
||||
jvResult[jss::load_base] = feeTrack.getLoadBase ();
|
||||
jvResult[jss::load_factor] = feeTrack.getLoadFactor ();
|
||||
jvResult [jss::hostid] = getHostId (admin);
|
||||
jvResult[jss::pubkey_node] = toBase58 (
|
||||
TokenType::TOKEN_NODE_PUBLIC,
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <ripple/ledger/OpenView.h>
|
||||
#include <ripple/ledger/ApplyView.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/protocol/TER.h>
|
||||
#include <ripple/protocol/STTx.h>
|
||||
#include <boost/intrusive/set.hpp>
|
||||
|
||||
@@ -18,28 +18,79 @@
|
||||
//==============================================================================
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/basics/contract.h>
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/basics/mulDiv.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/ledger/ReadView.h>
|
||||
#include <ripple/protocol/STAmount.h>
|
||||
#include <ripple/protocol/JsonFields.h>
|
||||
|
||||
namespace ripple {
|
||||
|
||||
bool
|
||||
LoadFeeTrack::raiseLocalFee ()
|
||||
{
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
|
||||
if (++raiseCount_ < 2)
|
||||
return false;
|
||||
|
||||
std::uint32_t origFee = localTxnLoadFee_;
|
||||
|
||||
// make sure this fee takes effect
|
||||
if (localTxnLoadFee_ < remoteTxnLoadFee_)
|
||||
localTxnLoadFee_ = remoteTxnLoadFee_;
|
||||
|
||||
// Increase slowly
|
||||
localTxnLoadFee_ += (localTxnLoadFee_ / lftFeeIncFraction);
|
||||
|
||||
if (localTxnLoadFee_ > lftFeeMax)
|
||||
localTxnLoadFee_ = lftFeeMax;
|
||||
|
||||
if (origFee == localTxnLoadFee_)
|
||||
return false;
|
||||
|
||||
JLOG(j_.debug()) << "Local load fee raised from " <<
|
||||
origFee << " to " << localTxnLoadFee_;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
LoadFeeTrack::lowerLocalFee ()
|
||||
{
|
||||
std::lock_guard <std::mutex> sl (lock_);
|
||||
std::uint32_t origFee = localTxnLoadFee_;
|
||||
raiseCount_ = 0;
|
||||
|
||||
// Reduce slowly
|
||||
localTxnLoadFee_ -= (localTxnLoadFee_ / lftFeeDecFraction );
|
||||
|
||||
if (localTxnLoadFee_ < lftNormalFee)
|
||||
localTxnLoadFee_ = lftNormalFee;
|
||||
|
||||
if (origFee == localTxnLoadFee_)
|
||||
return false;
|
||||
|
||||
JLOG(j_.debug()) << "Local load fee lowered from " <<
|
||||
origFee << " to " << localTxnLoadFee_;
|
||||
return true;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Scale from fee units to millionths of a ripple
|
||||
std::uint64_t
|
||||
LoadFeeTrack::scaleFeeBase (std::uint64_t fee, std::uint64_t baseFee,
|
||||
std::uint32_t referenceFeeUnits) const
|
||||
scaleFeeBase(std::uint64_t fee, Fees const& fees)
|
||||
{
|
||||
return mulDivThrow (fee, baseFee, referenceFeeUnits);
|
||||
return mulDivThrow (fee, fees.base, fees.units);
|
||||
}
|
||||
|
||||
// Scale using load as well as base rate
|
||||
std::uint64_t
|
||||
LoadFeeTrack::scaleFeeLoad (std::uint64_t fee, std::uint64_t baseFee,
|
||||
std::uint32_t referenceFeeUnits, bool bUnlimited) const
|
||||
scaleFeeLoad(std::uint64_t fee, LoadFeeTrack const& feeTrack,
|
||||
Fees const& fees, bool bUnlimited)
|
||||
{
|
||||
if (fee == 0)
|
||||
return fee;
|
||||
@@ -47,25 +98,24 @@ LoadFeeTrack::scaleFeeLoad (std::uint64_t fee, std::uint64_t baseFee,
|
||||
std::uint32_t uRemFee;
|
||||
{
|
||||
// Collect the fee rates
|
||||
std::lock_guard<std::mutex> sl(mLock);
|
||||
feeFactor = std::max(mLocalTxnLoadFee, mRemoteTxnLoadFee);
|
||||
uRemFee = std::max(mRemoteTxnLoadFee, mClusterTxnLoadFee);
|
||||
std::tie(feeFactor, uRemFee) = feeTrack.getScalingFactors();
|
||||
}
|
||||
// Let privileged users pay the normal fee until
|
||||
// the local load exceeds four times the remote.
|
||||
if (bUnlimited && (feeFactor > uRemFee) && (feeFactor < (4 * uRemFee)))
|
||||
feeFactor = uRemFee;
|
||||
|
||||
auto baseFee = fees.base;
|
||||
// Compute:
|
||||
// fee = fee * baseFee * feeFactor / (referenceFeeUnits * lftNormalFee);
|
||||
// fee = fee * baseFee * feeFactor / (fees.units * lftNormalFee);
|
||||
// without overflow, and as accurately as possible
|
||||
|
||||
// The denominator of the fraction we're trying to compute.
|
||||
// referenceFeeUnits and lftNormalFee are both 32 bit,
|
||||
// fees.units and lftNormalFee are both 32 bit,
|
||||
// so the multiplication can't overflow.
|
||||
auto den = static_cast<std::uint64_t>(referenceFeeUnits)
|
||||
* static_cast<std::uint64_t>(lftNormalFee);
|
||||
// Reduce fee * baseFee * feeFactor / (referenceFeeUnits * lftNormalFee)
|
||||
auto den = static_cast<std::uint64_t>(fees.units)
|
||||
* static_cast<std::uint64_t>(feeTrack.getLoadBase());
|
||||
// Reduce fee * baseFee * feeFactor / (fees.units * lftNormalFee)
|
||||
// to lowest terms.
|
||||
lowestTerms(fee, den);
|
||||
lowestTerms(baseFee, den);
|
||||
@@ -102,53 +152,4 @@ LoadFeeTrack::scaleFeeLoad (std::uint64_t fee, std::uint64_t baseFee,
|
||||
return fee;
|
||||
}
|
||||
|
||||
bool
|
||||
LoadFeeTrack::raiseLocalFee ()
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
|
||||
if (++raiseCount < 2)
|
||||
return false;
|
||||
|
||||
std::uint32_t origFee = mLocalTxnLoadFee;
|
||||
|
||||
// make sure this fee takes effect
|
||||
if (mLocalTxnLoadFee < mRemoteTxnLoadFee)
|
||||
mLocalTxnLoadFee = mRemoteTxnLoadFee;
|
||||
|
||||
// Increase slowly
|
||||
mLocalTxnLoadFee += (mLocalTxnLoadFee / lftFeeIncFraction);
|
||||
|
||||
if (mLocalTxnLoadFee > lftFeeMax)
|
||||
mLocalTxnLoadFee = lftFeeMax;
|
||||
|
||||
if (origFee == mLocalTxnLoadFee)
|
||||
return false;
|
||||
|
||||
JLOG(m_journal.debug()) << "Local load fee raised from " <<
|
||||
origFee << " to " << mLocalTxnLoadFee;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
LoadFeeTrack::lowerLocalFee ()
|
||||
{
|
||||
ScopedLockType sl (mLock);
|
||||
std::uint32_t origFee = mLocalTxnLoadFee;
|
||||
raiseCount = 0;
|
||||
|
||||
// Reduce slowly
|
||||
mLocalTxnLoadFee -= (mLocalTxnLoadFee / lftFeeDecFraction );
|
||||
|
||||
if (mLocalTxnLoadFee < lftNormalFee)
|
||||
mLocalTxnLoadFee = lftNormalFee;
|
||||
|
||||
if (origFee == mLocalTxnLoadFee)
|
||||
return false;
|
||||
|
||||
JLOG(m_journal.debug()) << "Local load fee lowered from " <<
|
||||
origFee << " to " << mLocalTxnLoadFee;
|
||||
return true;
|
||||
}
|
||||
|
||||
} // ripple
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
#include <ripple/app/ledger/OpenLedger.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/tx/apply.h>
|
||||
#include <ripple/protocol/st.h>
|
||||
#include <ripple/protocol/Feature.h>
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
#include <ripple/app/paths/PathRequest.h>
|
||||
#include <ripple/app/paths/PathRequests.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/net/RPCErr.h>
|
||||
#include <ripple/protocol/ErrorCodes.h>
|
||||
#include <ripple/protocol/UintTypes.h>
|
||||
|
||||
@@ -18,9 +18,10 @@
|
||||
//==============================================================================
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/beast/unit_test.h>
|
||||
#include <ripple/ledger/ReadView.h>
|
||||
|
||||
namespace ripple {
|
||||
|
||||
@@ -31,17 +32,26 @@ 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;
|
||||
}();
|
||||
|
||||
BEAST_EXPECT(l.scaleFeeBase (10000, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE) == 10000);
|
||||
BEAST_EXPECT(l.scaleFeeLoad (10000, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE, false) == 10000);
|
||||
BEAST_EXPECT(l.scaleFeeBase (1, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE) == 1);
|
||||
BEAST_EXPECT(l.scaleFeeLoad (1, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE, false) == 1);
|
||||
BEAST_EXPECT (scaleFeeBase (10000, fees) == 10000);
|
||||
BEAST_EXPECT (scaleFeeLoad (10000, l, fees, false) == 10000);
|
||||
BEAST_EXPECT (scaleFeeBase (1, fees) == 1);
|
||||
BEAST_EXPECT (scaleFeeLoad (1, l, fees, false) == 1);
|
||||
|
||||
// Check new default fee values give same fees as old defaults
|
||||
BEAST_EXPECT(l.scaleFeeBase (d.FEE_DEFAULT, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE) == 10);
|
||||
BEAST_EXPECT(l.scaleFeeBase (d.FEE_ACCOUNT_RESERVE, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE) == 200 * SYSTEM_CURRENCY_PARTS);
|
||||
BEAST_EXPECT(l.scaleFeeBase (d.FEE_OWNER_RESERVE, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE) == 50 * SYSTEM_CURRENCY_PARTS);
|
||||
BEAST_EXPECT(l.scaleFeeBase (d.FEE_OFFER, d.FEE_DEFAULT, d.TRANSACTION_FEE_BASE) == 10);
|
||||
BEAST_EXPECT (scaleFeeBase (d.FEE_DEFAULT, fees) == 10);
|
||||
BEAST_EXPECT (scaleFeeBase (d.FEE_ACCOUNT_RESERVE, fees) == 200 * SYSTEM_CURRENCY_PARTS);
|
||||
BEAST_EXPECT (scaleFeeBase (d.FEE_OWNER_RESERVE, fees) == 50 * SYSTEM_CURRENCY_PARTS);
|
||||
BEAST_EXPECT (scaleFeeBase (d.FEE_OFFER, fees) == 10);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
//==============================================================================
|
||||
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
#include <ripple/app/ledger/LedgerConsensus.h>
|
||||
#include <ripple/app/tx/apply.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/basics/mulDiv.h>
|
||||
#include <ripple/basics/TestSuite.h>
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/tx/apply.h>
|
||||
#include <ripple/app/tx/impl/Transactor.h>
|
||||
#include <ripple/app/tx/impl/SignerEntries.h>
|
||||
#include <ripple/basics/contract.h>
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/json/to_string.h>
|
||||
#include <ripple/ledger/View.h>
|
||||
#include <ripple/protocol/Feature.h>
|
||||
@@ -107,8 +107,8 @@ XRPAmount
|
||||
calculateFee(Application& app, std::uint64_t const baseFee,
|
||||
Fees const& fees, ApplyFlags flags)
|
||||
{
|
||||
return app.getFeeTrack().scaleFeeLoad(
|
||||
baseFee, fees.base, fees.units, flags & tapUNLIMITED);
|
||||
return scaleFeeLoad(baseFee, app.getFeeTrack(),
|
||||
fees, flags & tapUNLIMITED);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/basics/contract.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/ConfigSections.h>
|
||||
#include <ripple/basics/TestSuite.h>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <ripple/app/ledger/LedgerTiming.h>
|
||||
#include <ripple/app/ledger/InboundTransactions.h>
|
||||
#include <ripple/app/misc/HashRouter.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/app/misc/Transaction.h>
|
||||
#include <ripple/app/misc/Validations.h>
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include <ripple/resource/Fees.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/Job.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/core/LoadEvent.h>
|
||||
#include <ripple/protocol/Protocol.h>
|
||||
#include <ripple/protocol/STTx.h>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#include <ripple/rpc/handlers/LedgerHandler.h>
|
||||
#include <ripple/app/ledger/LedgerToJson.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/json/Object.h>
|
||||
#include <ripple/protocol/ErrorCodes.h>
|
||||
#include <ripple/protocol/JsonFields.h>
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <ripple/app/ledger/LedgerToJson.h>
|
||||
#include <ripple/app/ledger/LedgerMaster.h>
|
||||
#include <ripple/ledger/ReadView.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/json/Object.h>
|
||||
#include <ripple/protocol/JsonFields.h>
|
||||
#include <ripple/rpc/Context.h>
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/paths/RippleState.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/ledger/ReadView.h>
|
||||
#include <ripple/net/RPCErr.h>
|
||||
#include <ripple/protocol/ErrorCodes.h>
|
||||
@@ -44,8 +44,8 @@ static void fillTransaction (
|
||||
auto& fees = ledger.fees();
|
||||
// Convert the reference transaction cost in fee units to drops
|
||||
// scaled to represent the current fee load.
|
||||
txArray["Fee"] = Json::UInt (context.app.getFeeTrack().scaleFeeLoad(
|
||||
fees.units, fees.base, fees.units, false));
|
||||
txArray["Fee"] = Json::UInt (scaleFeeLoad(fees.units,
|
||||
context.app.getFeeTrack(), fees, false));
|
||||
}
|
||||
|
||||
// {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/core/TimeKeeper.h>
|
||||
#include <ripple/overlay/Cluster.h>
|
||||
#include <ripple/overlay/Overlay.h>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <ripple/rpc/RipplePathFind.h>
|
||||
#include <ripple/app/ledger/LedgerMaster.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/app/paths/AccountCurrencies.h>
|
||||
#include <ripple/app/paths/PathRequest.h>
|
||||
@@ -28,7 +29,6 @@
|
||||
#include <ripple/app/paths/RippleCalc.h>
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/core/Config.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/json/json_reader.h>
|
||||
#include <ripple/json/json_writer.h>
|
||||
#include <ripple/ledger/PaymentSandbox.h>
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/core/Job.h>
|
||||
#include <ripple/core/JobQueue.h>
|
||||
#include <ripple/rpc/impl/LegacyPathFind.h>
|
||||
#include <ripple/rpc/impl/Tuning.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
|
||||
namespace ripple {
|
||||
namespace RPC {
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
#include <ripple/app/ledger/LedgerMaster.h>
|
||||
#include <ripple/app/ledger/OpenLedger.h>
|
||||
#include <ripple/app/main/Application.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/Transaction.h>
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
#include <ripple/app/paths/Pathfinder.h>
|
||||
#include <ripple/app/tx/apply.h> // Validity::Valid
|
||||
#include <ripple/basics/Log.h>
|
||||
#include <ripple/basics/mulDiv.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/json/json_writer.h>
|
||||
#include <ripple/net/RPCErr.h>
|
||||
#include <ripple/protocol/Sign.h>
|
||||
@@ -690,8 +690,8 @@ Json::Value checkFee (
|
||||
|
||||
// Administrative and identified endpoints are exempt from local fees.
|
||||
std::uint64_t const loadFee =
|
||||
feeTrack.scaleFeeLoad (feeDefault,
|
||||
ledger->fees().base, ledger->fees().units, isUnlimited (role));
|
||||
scaleFeeLoad (feeDefault, feeTrack,
|
||||
ledger->fees(), isUnlimited (role));
|
||||
std::uint64_t fee = loadFee;
|
||||
{
|
||||
auto const assumeTx = request.isMember("x_assume_tx") &&
|
||||
@@ -711,9 +711,8 @@ Json::Value checkFee (
|
||||
}
|
||||
}
|
||||
|
||||
auto const limit = mulDivThrow(feeTrack.scaleFeeBase (
|
||||
feeDefault, ledger->fees().base, ledger->fees().units),
|
||||
mult, div);
|
||||
auto const limit = mulDivThrow(scaleFeeBase (
|
||||
feeDefault, ledger->fees()), mult, div);
|
||||
|
||||
if (fee > limit && fee != loadFee &&
|
||||
request.isMember("x_queue_okay") &&
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
//==============================================================================
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/TxQ.h>
|
||||
#include <ripple/basics/contract.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/json/json_reader.h>
|
||||
#include <ripple/protocol/ErrorCodes.h>
|
||||
#include <ripple/protocol/Feature.h>
|
||||
@@ -1843,7 +1843,7 @@ public:
|
||||
{
|
||||
test::jtx::Env env(*this);
|
||||
auto ledger = env.current();
|
||||
LoadFeeTrack const& feeTrack = env.app().getFeeTrack();
|
||||
auto const& feeTrack = env.app().getFeeTrack();
|
||||
|
||||
{
|
||||
Json::Value req;
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
//==============================================================================
|
||||
|
||||
#include <BeastConfig.h>
|
||||
#include <ripple/app/misc/LoadFeeTrack.h>
|
||||
#include <ripple/app/misc/NetworkOPs.h>
|
||||
#include <ripple/core/LoadFeeTrack.h>
|
||||
#include <ripple/protocol/JsonFields.h>
|
||||
#include <ripple/test/WSClient.h>
|
||||
#include <ripple/test/jtx.h>
|
||||
@@ -47,8 +47,9 @@ public:
|
||||
|
||||
{
|
||||
// Raise fee to cause an update
|
||||
auto& feeTrack = env.app().getFeeTrack();
|
||||
for(int i = 0; i < 5; ++i)
|
||||
env.app().getFeeTrack().raiseLocalFee();
|
||||
feeTrack.raiseLocalFee();
|
||||
env.app().getOPs().reportFeeChange();
|
||||
|
||||
// Check stream update
|
||||
@@ -67,8 +68,9 @@ public:
|
||||
|
||||
{
|
||||
// Raise fee to cause an update
|
||||
auto& feeTrack = env.app().getFeeTrack();
|
||||
for (int i = 0; i < 5; ++i)
|
||||
env.app().getFeeTrack().raiseLocalFee();
|
||||
feeTrack.raiseLocalFee();
|
||||
env.app().getOPs().reportFeeChange();
|
||||
|
||||
// Check stream update
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <ripple/app/misc/impl/AccountTxPaging.cpp>
|
||||
#include <ripple/app/misc/impl/AmendmentTable.cpp>
|
||||
#include <ripple/app/misc/impl/LoadFeeTrack.cpp>
|
||||
#include <ripple/app/misc/impl/Transaction.cpp>
|
||||
#include <ripple/app/misc/impl/TxQ.cpp>
|
||||
#include <ripple/app/misc/impl/ValidatorList.cpp>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <ripple/app/tests/DeliverMin.test.cpp>
|
||||
#include <ripple/app/tests/Flow_test.cpp>
|
||||
#include <ripple/app/tests/HashRouter_test.cpp>
|
||||
#include <ripple/app/tests/LoadFeeTrack.test.cpp>
|
||||
#include <ripple/app/tests/MultiSign.test.cpp>
|
||||
#include <ripple/app/tests/OfferStream.test.cpp>
|
||||
#include <ripple/app/tests/Offer.test.cpp>
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include <ripple/core/impl/Config.cpp>
|
||||
#include <ripple/core/impl/DatabaseCon.cpp>
|
||||
#include <ripple/core/impl/DeadlineTimer.cpp>
|
||||
#include <ripple/core/impl/LoadFeeTrack.cpp>
|
||||
#include <ripple/core/impl/LoadEvent.cpp>
|
||||
#include <ripple/core/impl/LoadMonitor.cpp>
|
||||
#include <ripple/core/impl/Job.cpp>
|
||||
@@ -35,6 +34,5 @@
|
||||
|
||||
#include <ripple/core/tests/Config.test.cpp>
|
||||
#include <ripple/core/tests/Coroutine.test.cpp>
|
||||
#include <ripple/core/tests/LoadFeeTrack.test.cpp>
|
||||
#include <ripple/core/tests/Stoppable.test.cpp>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user