improve logic

This commit is contained in:
Mayukha Vadari
2026-05-29 17:23:00 -04:00
parent 20558938e2
commit abeebb18e9
2 changed files with 45 additions and 18 deletions

View File

@@ -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

View File

@@ -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);