From 6a6b97b529bfe7c8aef029ffc9c640791ec1f9d9 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Thu, 9 Jul 2026 15:36:14 -0400 Subject: [PATCH] more fixes from review (part 4) (#7775) --- include/xrpl/ledger/ApplyView.h | 1 + include/xrpl/ledger/OwnerCounts.h | 79 +++++++++++++++++++ include/xrpl/ledger/PaymentSandbox.h | 1 + include/xrpl/ledger/ReadView.h | 68 +--------------- .../xrpl/tx/invariants/SponsorshipInvariant.h | 3 + .../tx/transactors/sponsor/SponsorshipSet.h | 3 + src/libxrpl/ledger/PaymentSandbox.cpp | 2 +- .../ledger/helpers/AccountRootHelpers.cpp | 1 + .../ledger/helpers/RippleStateHelpers.cpp | 2 +- src/libxrpl/protocol/STObject.cpp | 4 +- .../credentials/CredentialAccept.cpp | 1 - .../credentials/CredentialCreate.cpp | 1 - .../tx/transactors/delegate/DelegateSet.cpp | 1 - .../tx/transactors/escrow/EscrowFinish.cpp | 5 -- .../tx/transactors/payment/DepositPreauth.cpp | 1 - .../tx/transactors/payment/Payment.cpp | 2 +- .../tx/transactors/sponsor/SponsorshipSet.cpp | 7 ++ src/libxrpl/tx/transactors/token/TrustSet.cpp | 17 ++-- src/test/app/Invariants_test.cpp | 3 +- src/test/app/Sponsor_test.cpp | 22 +++--- src/test/jtx/impl/sponsor.cpp | 2 +- src/test/jtx/sponsor.h | 3 +- src/test/ledger/PaymentSandbox_test.cpp | 1 + src/test/rpc/AccountObjects_test.cpp | 17 +--- 24 files changed, 127 insertions(+), 120 deletions(-) create mode 100644 include/xrpl/ledger/OwnerCounts.h diff --git a/include/xrpl/ledger/ApplyView.h b/include/xrpl/ledger/ApplyView.h index 2aba93d504..b7abd149bd 100644 --- a/include/xrpl/ledger/ApplyView.h +++ b/include/xrpl/ledger/ApplyView.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include // IWYU pragma: keep diff --git a/include/xrpl/ledger/OwnerCounts.h b/include/xrpl/ledger/OwnerCounts.h new file mode 100644 index 0000000000..ea0f4008cc --- /dev/null +++ b/include/xrpl/ledger/OwnerCounts.h @@ -0,0 +1,79 @@ +#pragma once + +#include +#include +#include +#include // IWYU pragma: keep +#include + +#include +#include + +namespace xrpl { + +struct OwnerCounts +{ + std::uint32_t owner = 0; + std::uint32_t sponsored = 0; + std::uint32_t sponsoring = 0; + + OwnerCounts() = default; + OwnerCounts(SLE::const_ref sle) + : owner(sle->getFieldU32(sfOwnerCount)) + , sponsored(sle->at(~sfSponsoredOwnerCount).value_or(0)) + , sponsoring(sle->at(~sfSponsoringOwnerCount).value_or(0)) + { + XRPL_ASSERT( + owner >= sponsored, + "xrpl::OwnerCounts : OwnerCount must be greater than or equal to " + "SponsoredOwnerCount"); + XRPL_ASSERT(sle->getType() == ltACCOUNT_ROOT, "xrpl::OwnerCounts : sle is AccountRoot"); + } + + [[nodiscard]] std::uint32_t + count() const + { + std::int64_t const x = static_cast(owner) - sponsored + sponsoring; + if (x < 0) + { + // LCOV_EXCL_START + UNREACHABLE("xrpl::OwnerCounts::count : count less than zero"); + return 0; + // LCOV_EXCL_STOP + } + + if (x > std::numeric_limits::max()) + return std::numeric_limits::max(); + return static_cast(x); + } + + auto + operator<=>(OwnerCounts const& o) const + { + if (auto cmp = count() <=> o.count(); cmp != 0) + return cmp; + if (auto cmp = owner <=> o.owner; cmp != 0) + return cmp; + if (auto cmp = sponsored <=> o.sponsored; cmp != 0) + return cmp; + return sponsoring <=> o.sponsoring; + } + + bool + operator==(OwnerCounts const& o) const + { + return this == &o || + (owner == o.owner && sponsored == o.sponsored && sponsoring == o.sponsoring); + } + + [[nodiscard]] bool + valid() const + { + int64_t const x = static_cast(owner) - sponsored + sponsoring; + if (x < 0 || x > std::numeric_limits::max()) + return false; + return owner >= sponsored; + } +}; + +} // namespace xrpl diff --git a/include/xrpl/ledger/PaymentSandbox.h b/include/xrpl/ledger/PaymentSandbox.h index 88b38c452e..8afe21b397 100644 --- a/include/xrpl/ledger/PaymentSandbox.h +++ b/include/xrpl/ledger/PaymentSandbox.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include diff --git a/include/xrpl/ledger/ReadView.h b/include/xrpl/ledger/ReadView.h index 24ece61756..da92e0b510 100644 --- a/include/xrpl/ledger/ReadView.h +++ b/include/xrpl/ledger/ReadView.h @@ -4,12 +4,12 @@ #include #include #include +#include #include #include #include #include // IWYU pragma: keep #include -#include #include #include #include @@ -21,7 +21,6 @@ #include #include -#include #include #include #include @@ -29,71 +28,6 @@ namespace xrpl { -struct OwnerCounts -{ - std::uint32_t owner = 0; - std::uint32_t sponsored = 0; - std::uint32_t sponsoring = 0; - - OwnerCounts() = default; - OwnerCounts(SLE::const_ref sle) - : owner(sle->at(sfOwnerCount)) - , sponsored(sle->at(~sfSponsoredOwnerCount).value_or(0)) - , sponsoring(sle->at(~sfSponsoringOwnerCount).value_or(0)) - { - XRPL_ASSERT( - owner >= sponsored, - "xrpl::OwnerCounts : OwnerCount must be greater than or equal to " - "SponsoredOwnerCount"); - XRPL_ASSERT(sle->getType() == ltACCOUNT_ROOT, "xrpl::OwnerCounts : sle is AccountRoot"); - } - - [[nodiscard]] std::uint32_t - count() const - { - std::int64_t const x = static_cast(owner) - sponsored + sponsoring; - if (x < 0) - { - // LCOV_EXCL_START - UNREACHABLE("xrpl::OwnerCounts::count : count less than zero"); - return 0; - // LCOV_EXCL_STOP - } - - if (x > std::numeric_limits::max()) - return std::numeric_limits::max(); - return static_cast(x); - } - - auto - operator<=>(OwnerCounts const& o) const - { - if (auto cmp = count() <=> o.count(); cmp != 0) - return cmp; - if (auto cmp = owner <=> o.owner; cmp != 0) - return cmp; - if (auto cmp = sponsored <=> o.sponsored; cmp != 0) - return cmp; - return sponsoring <=> o.sponsoring; - } - - bool - operator==(OwnerCounts const& o) const - { - return this == &o || - (owner == o.owner && sponsored == o.sponsored && sponsoring == o.sponsoring); - } - - [[nodiscard]] bool - valid() const - { - int64_t const x = static_cast(owner) - sponsored + sponsoring; - if (x < 0 || x > std::numeric_limits::max()) - return false; - return owner >= sponsored; - } -}; - //------------------------------------------------------------------------------ /** A view into a ledger. diff --git a/include/xrpl/tx/invariants/SponsorshipInvariant.h b/include/xrpl/tx/invariants/SponsorshipInvariant.h index c67111459f..e69fb085f7 100644 --- a/include/xrpl/tx/invariants/SponsorshipInvariant.h +++ b/include/xrpl/tx/invariants/SponsorshipInvariant.h @@ -18,6 +18,9 @@ namespace xrpl { * - The sum of all per-account deltas of `sfSponsoredOwnerCount` equals * the sum of all per-account deltas of `sfSponsoringOwnerCount`. * - Account OwnerCount must be greater than or equal to SponsoredOwnerCount. + * - The net delta of sponsored object owner counts (the owner-count + * magnitude of sponsored ledger entries) equals the net delta of + * `sfSponsoredOwnerCount`. */ class SponsorshipOwnerCountsMatch { diff --git a/include/xrpl/tx/transactors/sponsor/SponsorshipSet.h b/include/xrpl/tx/transactors/sponsor/SponsorshipSet.h index 3bc029d34f..3310c995ae 100644 --- a/include/xrpl/tx/transactors/sponsor/SponsorshipSet.h +++ b/include/xrpl/tx/transactors/sponsor/SponsorshipSet.h @@ -22,6 +22,9 @@ public: { } + static TxConsequences + makeTxConsequences(PreflightContext const& ctx); + static std::uint32_t getFlagsMask(PreflightContext const& ctx); diff --git a/src/libxrpl/ledger/PaymentSandbox.cpp b/src/libxrpl/ledger/PaymentSandbox.cpp index 092d0ff111..a7a8962095 100644 --- a/src/libxrpl/ledger/PaymentSandbox.cpp +++ b/src/libxrpl/ledger/PaymentSandbox.cpp @@ -3,8 +3,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp index ac4eb1a62e..2d0e1238c3 100644 --- a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp +++ b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include diff --git a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp index 1099a94fec..6a215c5111 100644 --- a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp +++ b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp @@ -485,7 +485,7 @@ issueIOU( limit, 0, 0, - {}, + sponsorSle, j); } diff --git a/src/libxrpl/protocol/STObject.cpp b/src/libxrpl/protocol/STObject.cpp index b67b472f3a..e86b3fb6e6 100644 --- a/src/libxrpl/protocol/STObject.cpp +++ b/src/libxrpl/protocol/STObject.cpp @@ -636,14 +636,14 @@ STObject::getAccountID(SField const& field) const AccountID STObject::getInitiator() const { - // If sfDelegate is present, the delegate account is the payer + // If sfDelegate is present, the delegate account is the initiator // note: if a delegate is specified, its authorization to act on behalf of the account is // enforced in `Transactor::invokeCheckPermission` // cryptographic signature validity is checked separately (e.g., in `Transactor::checkSign`) if (isFieldPresent(sfDelegate)) return getAccountID(sfDelegate); - // Default payer + // Default initiator return getAccountID(sfAccount); } diff --git a/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp b/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp index 3982151745..c0ef7ea9e8 100644 --- a/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp +++ b/src/libxrpl/tx/transactors/credentials/CredentialAccept.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/src/libxrpl/tx/transactors/credentials/CredentialCreate.cpp b/src/libxrpl/tx/transactors/credentials/CredentialCreate.cpp index e1a85a21f1..e902ee73a6 100644 --- a/src/libxrpl/tx/transactors/credentials/CredentialCreate.cpp +++ b/src/libxrpl/tx/transactors/credentials/CredentialCreate.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp b/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp index dc6cc4d040..96e6c9e443 100644 --- a/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp +++ b/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include diff --git a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp index 598b6a1e0b..538b74515f 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -224,10 +223,6 @@ EscrowFinish::preclaim(PreclaimContext const& ctx) } } - auto const sponsorSle = getTxReserveSponsor(ctx.view, ctx.tx); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE - return tesSUCCESS; } diff --git a/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp b/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp index 263d9d3a61..d3e2af86ef 100644 --- a/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp +++ b/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/src/libxrpl/tx/transactors/payment/Payment.cpp b/src/libxrpl/tx/transactors/payment/Payment.cpp index 93a6db3f63..17c96a1919 100644 --- a/src/libxrpl/tx/transactors/payment/Payment.cpp +++ b/src/libxrpl/tx/transactors/payment/Payment.cpp @@ -406,7 +406,7 @@ Payment::preclaim(PreclaimContext const& ctx) // Since the reserve is covered by the sponsor, you don't need to hold the // 1-increment reserve yourself. JLOG(ctx.j.trace()) << "Delay transaction: Destination account does not exist. " - << "Insufficent payment to create account."; + << "Insufficient payment to create account."; // TODO: de-dupe // Another transaction could create the account and then this diff --git a/src/libxrpl/tx/transactors/sponsor/SponsorshipSet.cpp b/src/libxrpl/tx/transactors/sponsor/SponsorshipSet.cpp index 547107ebd3..7f11e18264 100644 --- a/src/libxrpl/tx/transactors/sponsor/SponsorshipSet.cpp +++ b/src/libxrpl/tx/transactors/sponsor/SponsorshipSet.cpp @@ -22,6 +22,13 @@ namespace xrpl { +TxConsequences +SponsorshipSet::makeTxConsequences(PreflightContext const& ctx) +{ + auto const feeAmount = ctx.tx[~sfFeeAmount]; + return TxConsequences{ctx.tx, feeAmount.has_value() ? feeAmount->xrp() : beast::kZero}; +} + std::uint32_t SponsorshipSet::getFlagsMask(PreflightContext const& ctx) { diff --git a/src/libxrpl/tx/transactors/token/TrustSet.cpp b/src/libxrpl/tx/transactors/token/TrustSet.cpp index b399b5a950..78c871d2cb 100644 --- a/src/libxrpl/tx/transactors/token/TrustSet.cpp +++ b/src/libxrpl/tx/transactors/token/TrustSet.cpp @@ -316,18 +316,19 @@ TrustSet::doApply() // well. A person with no intention of using the gateway // could use the extra XRP for their own purposes. - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const sponsorExp = getTxReserveSponsor(ctx_.getApplyViewContext()); + if (!sponsorExp) + return sponsorExp.error(); // LCOV_EXCL_LINE + auto const sponsorSle = *sponsorExp; - auto getSponsor = [&sponsorSle = *sponsorSle, this](AccountID const& account) { + auto getSponsor = [&sponsorSle, this](AccountID const& account) { return (sponsorSle && account == accountID_) ? sponsorSle : SLE::pointer(); }; // The "free-tier" shortcut (ownerCount < 2) only applies when there is no sponsor. // With any sponsor on the tx, the sponsor must cover the reserve (via balance or // prefunded budget), so the reserve check always runs. - bool const freeTrustLine = !*sponsorSle && (ownerCount(sle, j_) < 2); + bool const freeTrustLine = !sponsorSle && (ownerCount(sle, j_) < 2); std::uint32_t const uQualityIn(bQualityIn ? ctx_.tx.getFieldU32(sfQualityIn) : 0); std::uint32_t uQualityOut(bQualityOut ? ctx_.tx.getFieldU32(sfQualityOut) : 0); @@ -610,7 +611,7 @@ TrustSet::doApply() // Reserve is not scaled by load. else if ( auto const ret = - checkReserve(ctx_.getApplyViewContext(), sle, preFeeBalance_, *sponsorSle, {}, j_); + checkReserve(ctx_.getApplyViewContext(), sle, preFeeBalance_, sponsorSle, {}, j_); !freeTrustLine && bReserveIncrease && !isTesSuccess(ret)) { JLOG(j_.trace()) << "Delay transaction: Insufficent reserve to " @@ -646,7 +647,7 @@ TrustSet::doApply() ctx_.getApplyViewContext(), sle, preFeeBalance_, - *sponsorSle, + sponsorSle, {.ownerCountDelta = 1}, j_); !freeTrustLine && !isTesSuccess(ret)) // Reserve is not scaled by load. @@ -685,7 +686,7 @@ TrustSet::doApply() saLimitAllow, // Limit for who is being charged. uQualityIn, uQualityOut, - *sponsorSle, + sponsorSle, viewJ); } diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index 533722e30e..b70d099ba4 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -5155,8 +5155,7 @@ class Invariants_test : public beast::unit_test::Suite testcase("Sponsorship"); { auto const expectMessage = - "SponsoredOwnerCount does not equal " - "SponsoringOwnerCount delta."; + "SponsoredOwnerCount does not equal SponsoringOwnerCount delta."; doInvariantCheck( {{expectMessage}}, [&](Account const& a1, Account const& a2, ApplyContext& ac) { diff --git a/src/test/app/Sponsor_test.cpp b/src/test/app/Sponsor_test.cpp index f447b9aaee..bfe1d690e3 100644 --- a/src/test/app/Sponsor_test.cpp +++ b/src/test/app/Sponsor_test.cpp @@ -1781,7 +1781,7 @@ public: auto aliceBalance = env.balance(alice); auto bobBalance = env.balance(bob); auto sponsorBalance = env.balance(sponsor); - auto sponsorFee = sponsor::sponsorFeeBalance(env, sponsor, alice); + auto sponsorFee = sponsor::sponsorshipFeeBalance(env, sponsor, alice); auto const sendAmt = XRP(100); auto const feeAmt = XRP(10); @@ -1792,7 +1792,7 @@ public: BEAST_EXPECT(env.balance(bob) == bobBalance + sendAmt); BEAST_EXPECT(env.balance(sponsor) == sponsorBalance); BEAST_EXPECT( - sponsor::sponsorFeeBalance(env, sponsor, alice) == sponsorFee - feeAmt); + sponsor::sponsorshipFeeBalance(env, sponsor, alice) == sponsorFee - feeAmt); } { @@ -1802,7 +1802,7 @@ public: auto aliceBalance = env.balance(alice); auto bobBalance = env.balance(bob); auto sponsorBalance = env.balance(sponsor); - auto sponsorFee = sponsor::sponsorFeeBalance(env, sponsor, alice); + auto sponsorFee = sponsor::sponsorshipFeeBalance(env, sponsor, alice); env(pay(alice, bob, XRP(100)), Fee(XRP(90) + drops(1)), @@ -1813,7 +1813,7 @@ public: BEAST_EXPECT(env.balance(alice) == aliceBalance); BEAST_EXPECT(env.balance(bob) == bobBalance); BEAST_EXPECT(env.balance(sponsor) == sponsorBalance); - BEAST_EXPECT(sponsor::sponsorFeeBalance(env, sponsor, alice) == sponsorFee); + BEAST_EXPECT(sponsor::sponsorshipFeeBalance(env, sponsor, alice) == sponsorFee); } // use all FeeAmount { @@ -1846,7 +1846,7 @@ public: auto aliceBalance = env.balance(alice); auto bobBalance = env.balance(bob); auto sponsorBalance = env.balance(sponsor); - auto sponsorFee = sponsor::sponsorFeeBalance(env, sponsor, alice); + auto sponsorFee = sponsor::sponsorshipFeeBalance(env, sponsor, alice); env(pay(alice, bob, XRP(100)), Fee(XRP(1) + drops(1)), @@ -1857,7 +1857,7 @@ public: BEAST_EXPECT(env.balance(alice) == aliceBalance); BEAST_EXPECT(env.balance(bob) == bobBalance); BEAST_EXPECT(env.balance(sponsor) == sponsorBalance); - BEAST_EXPECT(sponsor::sponsorFeeBalance(env, sponsor, alice) == sponsorFee); + BEAST_EXPECT(sponsor::sponsorshipFeeBalance(env, sponsor, alice) == sponsorFee); } } @@ -1867,7 +1867,7 @@ public: auto aliceBalance = env.balance(alice); auto bobBalance = env.balance(bob); auto sponsorBalance = env.balance(sponsor); - auto sponsorFee = sponsor::sponsorFeeBalance(env, sponsor, alice); + auto sponsorFee = sponsor::sponsorshipFeeBalance(env, sponsor, alice); auto const feeAmt = XRP(1); env(pay(alice, bob, XRP(20000)), @@ -1880,7 +1880,7 @@ public: BEAST_EXPECT(env.balance(bob) == bobBalance); BEAST_EXPECT(env.balance(sponsor) == sponsorBalance); BEAST_EXPECT( - sponsor::sponsorFeeBalance(env, sponsor, alice) == sponsorFee - feeAmt); + sponsor::sponsorshipFeeBalance(env, sponsor, alice) == sponsorFee - feeAmt); } // make sfFeeAmount absent if tec error and all Fee is paid @@ -1892,7 +1892,7 @@ public: BEAST_EXPECT( env.le(keylet::sponsorship(sponsor, alice))->isFieldPresent(sfFeeAmount)); - auto sponsorAvailableFee = sponsor::sponsorFeeBalance(env, sponsor, alice); + auto sponsorAvailableFee = sponsor::sponsorshipFeeBalance(env, sponsor, alice); env(check::cancel(alice, uint256(1)), Fee(sponsorAvailableFee), sponsor::As(sponsor, spfSponsorFee), @@ -4614,7 +4614,7 @@ public: auto const bobBalance = env.balance(bob); auto const carolBalance = env.balance(carol); auto const sponsorBalance = env.balance(sponsor); - auto const sponsorFee = sponsor::sponsorFeeBalance(env, sponsor, bob); + auto const sponsorFee = sponsor::sponsorshipFeeBalance(env, sponsor, bob); auto const sendAmt = XRP(100); auto const feeAmt = XRP(10); @@ -4633,7 +4633,7 @@ public: BEAST_EXPECT(env.balance(carol) == carolBalance + sendAmt); BEAST_EXPECT(env.balance(sponsor) == sponsorBalance); // sponsorship(sponsor, bob) pays the fee, bob is sfDelegate - BEAST_EXPECT(sponsor::sponsorFeeBalance(env, sponsor, bob) == sponsorFee - feeAmt); + BEAST_EXPECT(sponsor::sponsorshipFeeBalance(env, sponsor, bob) == sponsorFee - feeAmt); } } diff --git a/src/test/jtx/impl/sponsor.cpp b/src/test/jtx/impl/sponsor.cpp index 73593cdce7..cdf68800f5 100644 --- a/src/test/jtx/impl/sponsor.cpp +++ b/src/test/jtx/impl/sponsor.cpp @@ -90,7 +90,7 @@ ledgerEntry(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& spon } STAmount -sponsorFeeBalance(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& sponsee) +sponsorshipFeeBalance(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& sponsee) { return env.le(keylet::sponsorship(sponsor, sponsee))->getFieldAmount(sfFeeAmount).xrp(); } diff --git a/src/test/jtx/sponsor.h b/src/test/jtx/sponsor.h index 18e35ea2d8..43d55d7246 100644 --- a/src/test/jtx/sponsor.h +++ b/src/test/jtx/sponsor.h @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -99,6 +100,6 @@ json::Value ledgerEntry(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& sponsee); STAmount -sponsorFeeBalance(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& sponsee); +sponsorshipFeeBalance(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& sponsee); } // namespace xrpl::test::jtx::sponsor diff --git a/src/test/ledger/PaymentSandbox_test.cpp b/src/test/ledger/PaymentSandbox_test.cpp index bf2866e520..75f7410f94 100644 --- a/src/test/ledger/PaymentSandbox_test.cpp +++ b/src/test/ledger/PaymentSandbox_test.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/src/test/rpc/AccountObjects_test.cpp b/src/test/rpc/AccountObjects_test.cpp index 23a0536374..9d55b04ee8 100644 --- a/src/test/rpc/AccountObjects_test.cpp +++ b/src/test/rpc/AccountObjects_test.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include // IWYU pragma: keep @@ -1420,10 +1419,6 @@ public: return testEnv.rpc("json", "account_objects", to_string(params)); }; - // Create a sponsorship (alice sponsors bob) - env(sponsor::set(alice, 0, 100, XRP(100)), sponsor::SponseeAcc(bob), Fee(XRP(1))); - env.close(); - // Create a trust line for bob (not sponsored) env(trust(bob, usd(1000))); env.close(); @@ -1469,17 +1464,7 @@ public: // sponsored=false on bob should NOT include the sponsored trust line { auto const resp = acctObjsSponsored(env, bob.id(), false); - auto const& objs = resp[jss::result][jss::account_objects]; - bool foundSponsoredTrustLine = false; - for (auto const& obj : objs) - { - if (obj[sfLedgerEntryType.jsonName] == jss::RippleState) - { - if (obj.isMember(sfHighSponsor.jsonName) || obj.isMember(sfLowSponsor.jsonName)) - foundSponsoredTrustLine = true; - } - } - BEAST_EXPECT(!foundSponsoredTrustLine); + BEAST_EXPECT(resp[jss::result][jss::account_objects].size() == 0); } // Only the queried side of a shared trust line should determine