Merge remote-tracking branch 'tequ/sponsor' into spns5

This commit is contained in:
Oleksandr
2026-05-20 20:52:04 -04:00
2 changed files with 9 additions and 28 deletions

View File

@@ -363,7 +363,7 @@ SponsorshipTransfer::preclaim(PreclaimContext const& ctx)
}
TER
adjustReserveCount(
reduceReserveCount(
ApplyView& view,
AccountID const& account,
AccountID const& sponsor,
@@ -371,6 +371,9 @@ adjustReserveCount(
{
if (delta == 0)
return tesSUCCESS;
if (delta > 0)
return tefINTERNAL; // LCOV_EXCL_LINE
auto const sponsorKeylet = keylet::sponsor(sponsor, account);
auto const sponsorSle = view.peek(sponsorKeylet);
if (!sponsorSle)
@@ -459,7 +462,7 @@ SponsorshipTransfer::doApply()
if (!hasSignature)
{
// use ReserveCount for pre-funded sponsoring
if (auto const ter = adjustReserveCount(
if (auto const ter = reduceReserveCount(
view(), sponseeAccountID, newSponsorAccountID, -ownerCountDelta);
!isTesSuccess(ter))
return ter;
@@ -496,22 +499,11 @@ SponsorshipTransfer::doApply()
if (!hasSignature)
{
// use ReserveCount for pre-funded sponsoring
if (auto const ter = adjustReserveCount(
if (auto const ter = reduceReserveCount(
view(), sponseeAccountID, newSponsorAccountID, -ownerCountDelta);
!isTesSuccess(ter))
return ter;
}
// payback the reserve count if ltSponsorship exists
if (auto const sponsorSle =
view().exists(keylet::sponsor(oldSponsorAccountID, sponseeAccountID));
sponsorSle)
{
if (auto const ter = adjustReserveCount(
view(), sponseeAccountID, oldSponsorAccountID, ownerCountDelta);
!isTesSuccess(ter))
return ter;
}
}
else if (ctx_.tx.isFlag(tfSponsorshipEnd))
{
@@ -530,17 +522,6 @@ SponsorshipTransfer::doApply()
setSponsorFieldU32(oldSponsorSle, sfSponsoringOwnerCount, -ownerCountDelta);
view().update(oldSponsorSle);
// payback the reserve count if ltSponsorship exists
if (auto const sponsorSle =
view().exists(keylet::sponsor(oldSponsorAccountID, sponseeAccountID));
sponsorSle)
{
if (auto const ter = adjustReserveCount(
view(), sponseeAccountID, oldSponsorAccountID, ownerCountDelta);
!isTesSuccess(ter))
return ter;
}
// remove sponsor from object
objSle->makeFieldAbsent(sponsorField);
view().update(objSle);

View File

@@ -1223,7 +1223,7 @@ public:
BEAST_EXPECT(checkSle->isFieldPresent(sfSponsor));
BEAST_EXPECT(checkSle->getAccountID(sfSponsor) == sponsor2.id());
sponsor1Sle = env.le(keylet::sponsor(sponsor1, alice));
BEAST_EXPECT(sponsor1Sle->getFieldU32(sfReserveCount) == 100); // paybacked
BEAST_EXPECT(sponsor1Sle->getFieldU32(sfReserveCount) == 99);
auto sponsor2Sle = env.le(keylet::sponsor(sponsor2, alice));
BEAST_EXPECT(sponsor2Sle->getFieldU32(sfReserveCount) == 99);
@@ -1246,7 +1246,7 @@ public:
checkSle = env.le(keylet::unchecked(checkId));
BEAST_EXPECT(!checkSle->isFieldPresent(sfSponsor));
sponsor2Sle = env.le(keylet::sponsor(sponsor2, alice));
BEAST_EXPECT(sponsor2Sle->getFieldU32(sfReserveCount) == 100); // paybacked
BEAST_EXPECT(sponsor2Sle->getFieldU32(sfReserveCount) == 99);
}
{
@@ -1333,7 +1333,7 @@ public:
BEAST_EXPECT(sponsoredOwnerCount(env, alice) == 0);
BEAST_EXPECT(sponsoringOwnerCount(env, sponsor) == 0);
BEAST_EXPECT(
env.le(keylet::sponsor(sponsor, alice))->getFieldU32(sfReserveCount) == 101);
env.le(keylet::sponsor(sponsor, alice))->getFieldU32(sfReserveCount) == 100);
}
{