From b42a9be3701e2ec8d96c04fca3057a023078ea20 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Thu, 2 Jul 2026 16:06:49 -0400 Subject: [PATCH] migrate createMPToken, reduce diff --- .../xrpl/ledger/helpers/AccountRootHelpers.h | 22 ++++++++++--------- include/xrpl/ledger/helpers/EscrowHelpers.h | 13 +++++------ include/xrpl/ledger/helpers/MPTokenHelpers.h | 3 +-- .../ledger/helpers/AccountRootHelpers.cpp | 2 +- src/libxrpl/ledger/helpers/MPTokenHelpers.cpp | 10 ++++----- src/libxrpl/ledger/helpers/NFTokenHelpers.cpp | 16 +++++++------- .../ledger/helpers/RippleStateHelpers.cpp | 14 ++++++------ src/libxrpl/ledger/helpers/TokenHelpers.cpp | 4 ++-- .../tx/transactors/Sponsor/SponsorshipSet.cpp | 1 + .../tx/transactors/bridge/XChainBridge.cpp | 4 ++-- .../tx/transactors/check/CheckCash.cpp | 6 +---- .../credentials/CredentialAccept.cpp | 2 +- src/libxrpl/tx/transactors/dex/AMMCreate.cpp | 4 +++- src/libxrpl/tx/transactors/did/DIDDelete.cpp | 2 +- .../tx/transactors/escrow/EscrowCreate.cpp | 3 +-- .../transactors/lending/LoanBrokerDelete.cpp | 2 +- .../tx/transactors/lending/LoanDelete.cpp | 4 ++-- .../tx/transactors/oracle/OracleDelete.cpp | 4 ++-- .../tx/transactors/oracle/OracleSet.cpp | 19 +++++++++++----- .../PermissionedDomainDelete.cpp | 4 ++-- src/libxrpl/tx/transactors/token/TrustSet.cpp | 11 +++++----- .../tx/transactors/vault/VaultDelete.cpp | 5 ++--- 22 files changed, 78 insertions(+), 77 deletions(-) diff --git a/include/xrpl/ledger/helpers/AccountRootHelpers.h b/include/xrpl/ledger/helpers/AccountRootHelpers.h index 2058123277..3385a9cb05 100644 --- a/include/xrpl/ledger/helpers/AccountRootHelpers.h +++ b/include/xrpl/ledger/helpers/AccountRootHelpers.h @@ -125,8 +125,7 @@ ownerCount(SLE::const_ref sle, beast::Journal j, std::int32_t ownerCountAdj = 0) * and the sponsor's sponsoring count. * * @param view The apply view for making changes - * @param accountSle The account's ledger entry - * @param sponsorSle The sponsor's ledger entry (if applicable) + * @param reserveCtx The account and sponsor information * @param count Amount to add to the owner count * @param j Journal for logging */ @@ -145,8 +144,7 @@ increaseOwnerCount( * sfSponsor field. * * @param view The apply view for making changes - * @param accountSle The account's ledger entry - * @param sponsorSle The sponsor's ledger entry (if applicable) + * @param reserveCtx The account and sponsor information * @param count Amount to remove from the owner count * @param j Journal for logging */ @@ -157,19 +155,23 @@ decreaseOwnerCount( std::uint32_t count, beast::Journal j); -/** Decrease the owner counters of the account. If the object has a sponsor, - * adjust its counters too. Used primarily just before deleting the object. +/** Decrease owner-count fields for an existing ledger object. + * + * This helper derives the reserve sponsor from objectSle's sfSponsor field, + * then updates the same owner-count fields as decreaseOwnerCount. Use this + * when removing an existing object whose reserve sponsor is stored on that + * object. * * @param view The apply view for making changes - * @param ownerSle The account's ledger entry + * @param accountSle The account's ledger entry * @param objectSle The object's ledger entry - * @param count Positive amount to remove from the owner count - * @param j Journal for logging (default: null sink) + * @param count Amount to remove from the owner count + * @param j Journal for logging */ void decreaseOwnerCountForObject( ApplyView& view, - SLE::pointer ownerSle, + SLE::ref accountSle, SLE::ref objectSle, std::uint32_t count, beast::Journal j); diff --git a/include/xrpl/ledger/helpers/EscrowHelpers.h b/include/xrpl/ledger/helpers/EscrowHelpers.h index 29ba7d5f9b..b82dca3fe3 100644 --- a/include/xrpl/ledger/helpers/EscrowHelpers.h +++ b/include/xrpl/ledger/helpers/EscrowHelpers.h @@ -196,24 +196,21 @@ escrowUnlockApplyHelper( auto const mptKeylet = keylet::mptoken(issuanceKey.key, receiver); if (!ctx.view.exists(mptKeylet) && createAsset && !receiverIssuer) { - auto const sponsorSle = ctx.txReserveContext.sponsorSle; - if (auto const ret = checkInsufficientReserve(ctx, sleDest, xrpBalance, {.ownerCountDelta = 1}, journal); !isTesSuccess(ret)) return ret; - if (auto const ter = createMPToken(ctx.view, mptID, receiver, sponsorSle, 0); - !isTesSuccess(ter)) + auto const reserveCtx = + ReserveContext::makeFromAccount(ctx.view, sleDest, ctx.txReserveContext.sponsorSle); + + if (auto const ter = createMPToken(ctx.view, mptID, reserveCtx, 0); !isTesSuccess(ter)) { return ter; // LCOV_EXCL_LINE } // update owner count. - increaseOwnerCount( - ctx.view, ReserveContext::makeFromAccount(ctx.view, sleDest, sponsorSle), 1, journal); - auto mptSle = ctx.view.peek(mptKeylet); - addSponsorToLedgerEntry(mptSle, sponsorSle); + increaseOwnerCount(ctx.view, reserveCtx, 1, journal); } if (!ctx.view.exists(mptKeylet) && !receiverIssuer) diff --git a/include/xrpl/ledger/helpers/MPTokenHelpers.h b/include/xrpl/ledger/helpers/MPTokenHelpers.h index 261b2ae086..db6bb88300 100644 --- a/include/xrpl/ledger/helpers/MPTokenHelpers.h +++ b/include/xrpl/ledger/helpers/MPTokenHelpers.h @@ -242,8 +242,7 @@ TER createMPToken( ApplyView& view, MPTID const& mptIssuanceID, - AccountID const& account, - SLE::ref sponsorSle, + ReserveContext const& reserveCtx, std::uint32_t const flags); TER diff --git a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp index f9be28cf40..d5c456f422 100644 --- a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp +++ b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp @@ -296,7 +296,7 @@ decreaseOwnerCount( void decreaseOwnerCountForObject( ApplyView& view, - SLE::pointer ownerSle, + SLE::ref ownerSle, SLE::ref objectSle, std::uint32_t count, beast::Journal j) diff --git a/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp b/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp index a668ee4461..e00c3f82f2 100644 --- a/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp @@ -925,10 +925,10 @@ TER createMPToken( ApplyView& view, MPTID const& mptIssuanceID, - AccountID const& account, - SLE::ref sponsorSle, + ReserveContext const& reserveCtx, std::uint32_t const flags) { + auto const account = reserveCtx.accountID(); auto const mptokenKey = keylet::mptoken(mptIssuanceID, account); auto const ownerNode = @@ -943,8 +943,7 @@ createMPToken( (*mptoken)[sfFlags] = flags; (*mptoken)[sfOwnerNode] = *ownerNode; - if (sponsorSle) - addSponsorToLedgerEntry(mptoken, sponsorSle); + addSponsorToLedgerEntry(mptoken, reserveCtx.sponsorSle); view.insert(mptoken); @@ -969,8 +968,7 @@ checkCreateMPT( auto const mptokenID = keylet::mptoken(mptIssuanceID.key, holder); if (!view.exists(mptokenID)) { - if (auto const err = - createMPToken(view, mptIssue.getMptID(), holder, reserveCtx.sponsorSle, 0); + if (auto const err = createMPToken(view, mptIssue.getMptID(), reserveCtx, 0); !isTesSuccess(err)) { return err; diff --git a/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp b/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp index 03278ac484..ea19110afb 100644 --- a/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp @@ -424,10 +424,10 @@ removeToken(ApplyView& view, AccountID const& owner, uint256 const& nftokenID, S if (cnt != 0) { - increaseOwnerCount( + decreaseOwnerCount( view, ReserveContext::makeFromAccount(view, view.peek(keylet::account(owner)), nullptr), - -1 * static_cast(cnt), + cnt, beast::Journal{beast::Journal::getNullSink()}); } @@ -463,10 +463,10 @@ removeToken(ApplyView& view, AccountID const& owner, uint256 const& nftokenID, S curr->makeFieldAbsent(sfPreviousPageMin); } - increaseOwnerCount( + decreaseOwnerCount( view, ReserveContext::makeFromAccount(view, view.peek(keylet::account(owner)), nullptr), - -1, + 1, beast::Journal{beast::Journal::getNullSink()}); view.update(curr); @@ -522,10 +522,10 @@ removeToken(ApplyView& view, AccountID const& owner, uint256 const& nftokenID, S view.peek(Keylet(ltNFTOKEN_PAGE, next->key())))) cnt++; - increaseOwnerCount( + decreaseOwnerCount( view, ReserveContext::makeFromAccount(view, view.peek(keylet::account(owner)), nullptr), - -1 * static_cast(cnt), + cnt, beast::Journal{beast::Journal::getNullSink()}); return tesSUCCESS; @@ -642,10 +642,10 @@ deleteTokenOffer(ApplyView& view, SLE::ref offer) false)) return false; - increaseOwnerCount( + decreaseOwnerCount( view, ReserveContext::makeFromAccount(view, view.peek(keylet::account(owner)), nullptr), - -1, + 1, beast::Journal{beast::Journal::getNullSink()}); view.erase(offer); diff --git a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp index 35e583d125..91ee8dbea6 100644 --- a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp +++ b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp @@ -378,7 +378,7 @@ updateTrustLine( // Clear the reserve of the sender, possibly delete the line! auto const currentSponsor = getLedgerEntryReserveSponsor(view, state, !bSenderHigh ? sfLowSponsor : sfHighSponsor); - increaseOwnerCount(view, ReserveContext::makeFromAccount(view, sle, currentSponsor), -1, j); + decreaseOwnerCount(view, ReserveContext::makeFromAccount(view, sle, currentSponsor), 1, j); // Clear reserve flag. state->clearFlag(senderReserveFlag); @@ -725,10 +725,10 @@ removeEmptyHolding( auto const currentLowSponsor = getLedgerEntryReserveSponsor(ctx.view, line, sfLowSponsor); - increaseOwnerCount( + decreaseOwnerCount( ctx.view, ReserveContext::makeFromAccount(ctx.view, sleLowAccount, currentLowSponsor), - -1, + 1, journal); // It's not really necessary to clear the reserve flag, since the line // is about to be deleted, but this will make the metadata reflect an @@ -746,10 +746,10 @@ removeEmptyHolding( auto const currentHighSponsor = getLedgerEntryReserveSponsor(ctx.view, line, sfHighSponsor); - increaseOwnerCount( + decreaseOwnerCount( ctx.view, ReserveContext::makeFromAccount(ctx.view, sleHighAccount, currentHighSponsor), - -1, + 1, journal); // It's not really necessary to clear the reserve flag, since the line // is about to be deleted, but this will make the metadata reflect an @@ -812,8 +812,8 @@ deleteAMMTrustLine( if (!sleState->isFlag(uFlags)) return tecINTERNAL; // LCOV_EXCL_LINE - increaseOwnerCount( - view, ReserveContext::makeFromAccount(view, !ammLow ? sleLow : sleHigh, sponsorSle), -1, j); + decreaseOwnerCount( + view, ReserveContext::makeFromAccount(view, !ammLow ? sleLow : sleHigh, sponsorSle), 1, j); return tesSUCCESS; } diff --git a/src/libxrpl/ledger/helpers/TokenHelpers.cpp b/src/libxrpl/ledger/helpers/TokenHelpers.cpp index 7ac11c7512..af9f3a00f2 100644 --- a/src/libxrpl/ledger/helpers/TokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/TokenHelpers.cpp @@ -725,8 +725,8 @@ directSendNoFeeIOU( auto const senderSle = view.peek(keylet::account(uSenderID)); if (!senderSle) return tecINTERNAL; // LCOV_EXCL_LINE - increaseOwnerCount( - view, ReserveContext::makeFromAccount(view, senderSle, currentSponsor), -1, j); + decreaseOwnerCount( + view, ReserveContext::makeFromAccount(view, senderSle, currentSponsor), 1, j); removeSponsorFromLedgerEntry( sleRippleState, !bSenderHigh ? sfLowSponsor : sfHighSponsor); diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp index 1ad9259a12..677c87f856 100644 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp +++ b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp @@ -204,6 +204,7 @@ SponsorshipSet::doApply() auto const feeAmount = ctx_.tx[~sfFeeAmount]; auto const maxFee = ctx_.tx[~sfMaxFee]; auto const remainingOwnerCount = ctx_.tx[~sfRemainingOwnerCount]; + bool const hasPositiveFeeAmount = feeAmount.has_value() && *feeAmount > beast::kZero; auto const applyViewContext = ctx_.getApplyViewContext(); diff --git a/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp b/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp index 375c3c9ece..b5dca08557 100644 --- a/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp +++ b/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp @@ -727,8 +727,8 @@ finalizeClaimHelper( // Remove the claim id from the ledger outerSb.erase(sleClaimID); - increaseOwnerCount( - outerSb, ReserveContext::makeFromAccount(outerSb, sleOwner, nullptr), -1, j); + decreaseOwnerCount( + outerSb, ReserveContext::makeFromAccount(outerSb, sleOwner, nullptr), 1, j); } } diff --git a/src/libxrpl/tx/transactors/check/CheckCash.cpp b/src/libxrpl/tx/transactors/check/CheckCash.cpp index b4f6732a46..ba183e5d42 100644 --- a/src/libxrpl/tx/transactors/check/CheckCash.cpp +++ b/src/libxrpl/tx/transactors/check/CheckCash.cpp @@ -591,11 +591,7 @@ CheckCash::doApply() } // If we succeeded, update the check owner's reserve. - increaseOwnerCount( - psb, - ReserveContext::makeFromAccount(psb, psb.peek(keylet::account(srcId)), sponsorCheckSle), - -1, - viewJ); + decreaseOwnerCountForObject(psb, psb.peek(keylet::account(srcId)), sleCheck, 1, viewJ); // Remove check from ledger. psb.erase(sleCheck); diff --git a/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp b/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp index dde138c101..150710b4e0 100644 --- a/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp +++ b/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp @@ -116,7 +116,7 @@ CredentialAccept::doApply() sleCred->setFieldU32(sfFlags, lsfAccepted); view().update(sleCred); - increaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), sleIssuer, nullptr), -1, j_); + decreaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), sleIssuer, nullptr), 1, j_); increaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), sleSubject, nullptr), 1, j_); return tesSUCCESS; diff --git a/src/libxrpl/tx/transactors/dex/AMMCreate.cpp b/src/libxrpl/tx/transactors/dex/AMMCreate.cpp index 7c7d35497a..c54ca15fbb 100644 --- a/src/libxrpl/tx/transactors/dex/AMMCreate.cpp +++ b/src/libxrpl/tx/transactors/dex/AMMCreate.cpp @@ -332,7 +332,9 @@ applyCreate(ApplyContext& ctx, Sandbox& sb, AccountID const& account, beast::Jou return err; } - if (auto const err = createMPToken(sb, mptID, accountId, {}, flags); + // AMM is a pseudo-account, so it is never reserve-sponsored. + if (auto const err = createMPToken( + sb, mptID, ReserveContext::makeFromAccount(sb, acc, nullptr), flags); !isTesSuccess(err)) return err; // Don't adjust AMM owner count. diff --git a/src/libxrpl/tx/transactors/did/DIDDelete.cpp b/src/libxrpl/tx/transactors/did/DIDDelete.cpp index 98d34a3b8b..85866a25ad 100644 --- a/src/libxrpl/tx/transactors/did/DIDDelete.cpp +++ b/src/libxrpl/tx/transactors/did/DIDDelete.cpp @@ -50,7 +50,7 @@ DIDDelete::deleteSLE(ApplyView& view, SLE::pointer sle, AccountID const owner, b if (!sleOwner) return tecINTERNAL; // LCOV_EXCL_LINE - increaseOwnerCount(view, ReserveContext::makeFromAccount(view, sleOwner, nullptr), -1, j); + decreaseOwnerCount(view, ReserveContext::makeFromAccount(view, sleOwner, nullptr), 1, j); view.update(sleOwner); // Remove object from ledger diff --git a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp index b3b437097d..a3fc2848d6 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp @@ -460,12 +460,11 @@ EscrowCreate::doApply() // - sponsored: adj=0 — sponsor covers the new owner increment, // so the source only owes its base reserve. // - unsponsored: adj=1 — source owes base + the new increment. - std::int32_t const ownerCountAdj = sponsorSle ? 0 : 1; if (auto const ret = checkInsufficientReserve( ctx_.getApplyViewContext(), sle, balance - STAmount(amount).xrp(), - {.ownerCountDelta = ownerCountAdj}, + {.ownerCountDelta = sponsorSle ? 0 : 1}, j_); !isTesSuccess(ret)) return tecUNFUNDED; diff --git a/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp b/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp index 96462a3b76..40a0792eaf 100644 --- a/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp @@ -197,7 +197,7 @@ LoanBrokerDelete::doApply() // Decreases the owner count by two: one for the LoanBroker object, and // one for the pseudo-account. // LoanBroker object can be sponsored - increaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), owner, nullptr), -2, j_); + decreaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), owner, nullptr), 2, j_); } associateAsset(*broker, vaultAsset); diff --git a/src/libxrpl/tx/transactors/lending/LoanDelete.cpp b/src/libxrpl/tx/transactors/lending/LoanDelete.cpp index 7b5ef77faf..699bb1c43f 100644 --- a/src/libxrpl/tx/transactors/lending/LoanDelete.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanDelete.cpp @@ -110,7 +110,7 @@ LoanDelete::doApply() // Decrement the LoanBroker's owner count. // The broker's owner count is solely for the number of outstanding loans, // and is distinct from the broker's pseudo-account's owner count - increaseOwnerCount(view, ReserveContext::makeFromAccount(view, brokerSle, nullptr), -1, j_); + decreaseOwnerCount(view, ReserveContext::makeFromAccount(view, brokerSle, nullptr), 1, j_); // If there are no loans left, then any remaining debt must be forgiven, // because there is no other way to pay it back. @@ -131,7 +131,7 @@ LoanDelete::doApply() } } // Decrement the borrower's owner count - increaseOwnerCount(view, ReserveContext::makeFromAccount(view, borrowerSle, nullptr), -1, j_); + decreaseOwnerCount(view, ReserveContext::makeFromAccount(view, borrowerSle, nullptr), 1, j_); // These associations shouldn't do anything, but do them just to be safe associateAsset(*loanSle, vaultAsset); diff --git a/src/libxrpl/tx/transactors/oracle/OracleDelete.cpp b/src/libxrpl/tx/transactors/oracle/OracleDelete.cpp index a5dcceae06..aae86d795a 100644 --- a/src/libxrpl/tx/transactors/oracle/OracleDelete.cpp +++ b/src/libxrpl/tx/transactors/oracle/OracleDelete.cpp @@ -70,8 +70,8 @@ OracleDelete::deleteOracle( if (!sleOwner) return tecINTERNAL; // LCOV_EXCL_LINE - auto const count = sle->getFieldArray(sfPriceDataSeries).size() > 5 ? -2 : -1; - increaseOwnerCount(view, ReserveContext::makeFromAccount(view, sleOwner, nullptr), count, j); + std::uint32_t const count = sle->getFieldArray(sfPriceDataSeries).size() > 5 ? 2 : 1; + decreaseOwnerCount(view, ReserveContext::makeFromAccount(view, sleOwner, nullptr), count, j); view.erase(sle); return tesSUCCESS; diff --git a/src/libxrpl/tx/transactors/oracle/OracleSet.cpp b/src/libxrpl/tx/transactors/oracle/OracleSet.cpp index e5bed1cf10..629a13f480 100644 --- a/src/libxrpl/tx/transactors/oracle/OracleSet.cpp +++ b/src/libxrpl/tx/transactors/oracle/OracleSet.cpp @@ -186,11 +186,20 @@ adjustOracleOwnerCount(ApplyContext& ctx, int count) { if (auto const sleAccount = ctx.view().peek(keylet::account(ctx.tx[sfAccount]))) { - increaseOwnerCount( - ctx.view(), - ReserveContext::makeFromAccount(ctx.view(), sleAccount, nullptr), - count, - ctx.journal); + auto reserveCtx = ctx.getApplyViewContext().txReserveContext; + XRPL_ASSERT( + !reserveCtx.isSponsored(), + "OracleSet::adjustOracleOwnerCount : OracleSet is not reserve-sponsored"); + if (count > 0) + { + increaseOwnerCount( + ctx.view(), reserveCtx, static_cast(count), ctx.journal); + } + else if (count < 0) + { + decreaseOwnerCount( + ctx.view(), reserveCtx, static_cast(-count), ctx.journal); + } return true; } diff --git a/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainDelete.cpp b/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainDelete.cpp index 26fe4a82ef..fa7d9752cb 100644 --- a/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainDelete.cpp +++ b/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainDelete.cpp @@ -66,8 +66,8 @@ PermissionedDomainDelete::doApply() XRPL_ASSERT( ownerSle && ownerSle->getFieldU32(sfOwnerCount) > 0, "xrpl::PermissionedDomainDelete::doApply : nonzero owner count"); - increaseOwnerCount( - view(), ReserveContext::makeFromAccount(view(), ownerSle, nullptr), -1, ctx_.journal); + decreaseOwnerCount( + view(), ReserveContext::makeFromAccount(view(), ownerSle, nullptr), 1, ctx_.journal); view().erase(slePd); return tesSUCCESS; diff --git a/src/libxrpl/tx/transactors/token/TrustSet.cpp b/src/libxrpl/tx/transactors/token/TrustSet.cpp index 5f9907dd4a..a9f0655de3 100644 --- a/src/libxrpl/tx/transactors/token/TrustSet.cpp +++ b/src/libxrpl/tx/transactors/token/TrustSet.cpp @@ -562,10 +562,10 @@ TrustSet::doApply() if (bLowReserveClear && bLowReserved) { // Clear reserve for low account. - increaseOwnerCount( + decreaseOwnerCount( view(), ReserveContext::makeFromAccount(view(), sleLowAccount, currentLowSponsor), - -1, + 1, viewJ); uFlagsOut &= ~lsfLowReserve; @@ -603,10 +603,10 @@ TrustSet::doApply() if (bHighReserveClear && bHighReserved) { // Clear reserve for high account. - increaseOwnerCount( + decreaseOwnerCount( view(), ReserveContext::makeFromAccount(view(), sleHighAccount, currentHighSponsor), - -1, + 1, viewJ); uFlagsOut &= ~lsfHighReserve; @@ -679,8 +679,7 @@ TrustSet::doApply() JLOG(j_.trace()) << "doTrustSet: Creating ripple line: " << to_string(k.key); - // Create a new ripple line. The ApplyViewContext overload derives the - // sponsor (XLS-68: only when the reserved account is the tx.Account). + // Create a new ripple line. terResult = trustCreate( applyViewContext, bHigh, diff --git a/src/libxrpl/tx/transactors/vault/VaultDelete.cpp b/src/libxrpl/tx/transactors/vault/VaultDelete.cpp index 9ed602b142..3365c429b5 100644 --- a/src/libxrpl/tx/transactors/vault/VaultDelete.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultDelete.cpp @@ -155,8 +155,7 @@ VaultDelete::doApply() return tefBAD_LEDGER; // LCOV_EXCL_STOP } - increaseOwnerCount( - view(), ReserveContext::makeFromAccount(view(), pseudoAcct, nullptr), -1, j_); + decreaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), pseudoAcct, nullptr), 1, j_); view().erase(mpt); @@ -215,7 +214,7 @@ VaultDelete::doApply() } // We are destroying Vault and PseudoAccount, hence decrease by 2 - increaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), owner, nullptr), -2, j_); + decreaseOwnerCount(view(), ReserveContext::makeFromAccount(view(), owner, nullptr), 2, j_); // Destroy the vault. view().erase(vault);