mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-02 16:26:48 +00:00
improve logic
This commit is contained in:
@@ -1073,6 +1073,21 @@ class FeeVote_test : public beast::unit_test::Suite
|
||||
|
||||
checkFeeTx(setup, feeTx, ledger);
|
||||
}
|
||||
|
||||
{
|
||||
FeeSetup setup;
|
||||
setup.reference_fee = 42;
|
||||
setup.account_reserve = 1234567;
|
||||
setup.owner_reserve = 7654321;
|
||||
setup.extension_compute_limit = kMaxExtensionComputeLimit + 1;
|
||||
setup.extension_size_limit = kMaxExtensionSizeLimit + 1;
|
||||
setup.gas_price = 300;
|
||||
auto const [feeTx, ledger] = createFeeTxFromVoting(setup);
|
||||
|
||||
setup.extension_compute_limit = ledger->fees().extensionComputeLimit;
|
||||
setup.extension_size_limit = ledger->fees().extensionSizeLimit;
|
||||
checkFeeTx(setup, feeTx, ledger);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -117,12 +117,6 @@ public:
|
||||
FeeVoteImpl::FeeVoteImpl(FeeSetup const& setup, beast::Journal journal)
|
||||
: target_(setup), journal_(journal)
|
||||
{
|
||||
XRPL_ASSERT(
|
||||
target_.extension_compute_limit <= kMaxExtensionComputeLimit,
|
||||
"xrpl::FeeVoteImpl::FeeVoteImpl : extension compute limit in range");
|
||||
XRPL_ASSERT(
|
||||
target_.extension_size_limit <= kMaxExtensionSizeLimit,
|
||||
"xrpl::FeeVoteImpl::FeeVoteImpl : extension size limit in range");
|
||||
}
|
||||
|
||||
void
|
||||
@@ -180,16 +174,22 @@ FeeVoteImpl::doValidation(Fees const& lastFees, Rules const& rules, STValidation
|
||||
}
|
||||
if (rules.enabled(featureSmartEscrow))
|
||||
{
|
||||
vote(
|
||||
lastFees.extensionComputeLimit,
|
||||
target_.extension_compute_limit,
|
||||
"extension compute limit",
|
||||
sfExtensionComputeLimit);
|
||||
vote(
|
||||
lastFees.extensionSizeLimit,
|
||||
target_.extension_size_limit,
|
||||
"extension size limit",
|
||||
sfExtensionSizeLimit);
|
||||
if (target_.extension_compute_limit <= kMaxExtensionComputeLimit)
|
||||
{
|
||||
vote(
|
||||
lastFees.extensionComputeLimit,
|
||||
target_.extension_compute_limit,
|
||||
"extension compute limit",
|
||||
sfExtensionComputeLimit);
|
||||
}
|
||||
if (target_.extension_size_limit <= kMaxExtensionSizeLimit)
|
||||
{
|
||||
vote(
|
||||
lastFees.extensionSizeLimit,
|
||||
target_.extension_size_limit,
|
||||
"extension size limit",
|
||||
sfExtensionSizeLimit);
|
||||
}
|
||||
vote(lastFees.gasPrice, target_.gas_price, "gas price", sfGasPrice);
|
||||
}
|
||||
}
|
||||
@@ -211,11 +211,23 @@ FeeVoteImpl::doVoting(
|
||||
|
||||
detail::VotableValue incReserveVote(lastClosedLedger->fees().increment, target_.owner_reserve);
|
||||
|
||||
auto validOrCurrent = [](std::uint32_t target, std::uint32_t max, std::uint32_t current) {
|
||||
return target <= max ? target : current;
|
||||
};
|
||||
|
||||
detail::VotableValue extensionComputeVote(
|
||||
lastClosedLedger->fees().extensionComputeLimit, target_.extension_compute_limit);
|
||||
lastClosedLedger->fees().extensionComputeLimit,
|
||||
validOrCurrent(
|
||||
target_.extension_compute_limit,
|
||||
kMaxExtensionComputeLimit,
|
||||
lastClosedLedger->fees().extensionComputeLimit));
|
||||
|
||||
detail::VotableValue extensionSizeVote(
|
||||
lastClosedLedger->fees().extensionSizeLimit, target_.extension_size_limit);
|
||||
lastClosedLedger->fees().extensionSizeLimit,
|
||||
validOrCurrent(
|
||||
target_.extension_size_limit,
|
||||
kMaxExtensionSizeLimit,
|
||||
lastClosedLedger->fees().extensionSizeLimit));
|
||||
|
||||
detail::VotableValue gasPriceVote(lastClosedLedger->fees().gasPrice, target_.gas_price);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user