mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-03 16:56:48 +00:00
fix Sponsor able to provide sponsorship with just base reserve
This commit is contained in:
@@ -479,7 +479,15 @@ Transactor::checkFee(PreclaimContext const& ctx, XRPAmount baseFee)
|
||||
if (payerSle->getType() != ltACCOUNT_ROOT)
|
||||
return tefINTERNAL; // LCOV_EXCL_LINE
|
||||
|
||||
maxSpendable = payerSle->getFieldAmount(payer.balanceField).xrp();
|
||||
if (payer.type == FeePayerType::SponsorCoSigned)
|
||||
{
|
||||
STAmount const sponsorReserve = calculateReserve(payerSle, ctx.view.fees());
|
||||
maxSpendable = payerSle->getFieldAmount(sfBalance).xrp() - sponsorReserve.xrp();
|
||||
}
|
||||
else
|
||||
{
|
||||
maxSpendable = payerSle->getFieldAmount(payer.balanceField).xrp();
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: Because preclaim evaluates against a static readview, it
|
||||
|
||||
@@ -1444,6 +1444,27 @@ public:
|
||||
BEAST_EXPECT(env.balance(bob) == bobBalance);
|
||||
BEAST_EXPECT(env.balance(sponsor) == sponsorBalance - feeAmt);
|
||||
}
|
||||
|
||||
{
|
||||
// below reserve
|
||||
adjustAccountXRPBalance(env, sponsor, env.current()->fees().reserve);
|
||||
env.close();
|
||||
auto const feeAmt = XRP(4);
|
||||
|
||||
env(noop(alice),
|
||||
fee(env.current()->fees().base),
|
||||
sponsor::as(sponsor, spfSponsorFee),
|
||||
sig(sfSponsorSignature, sponsor),
|
||||
ter(terINSUF_FEE_B));
|
||||
env.close();
|
||||
|
||||
env(noop(alice),
|
||||
fee(XRP(10)),
|
||||
sponsor::as(sponsor, spfSponsorFee),
|
||||
sig(sfSponsorSignature, sponsor),
|
||||
ter(terINSUF_FEE_B));
|
||||
env.close();
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
@@ -1595,7 +1616,6 @@ public:
|
||||
|
||||
BEAST_EXPECT(env.le(keylet::sponsor(sponsor, alice))->isFieldPresent(sfFeeAmount));
|
||||
auto sponsorAvailableFee = sponsorFeeBalance(sponsor, alice);
|
||||
printf("sponsorAvailableFee: %s\n", to_string(sponsorAvailableFee).c_str());
|
||||
env(check::cancel(alice, uint256(1)),
|
||||
fee(sponsorAvailableFee),
|
||||
sponsor::as(sponsor, spfSponsorFee),
|
||||
|
||||
Reference in New Issue
Block a user