From 7e62ecb63b7609b19b2fcbaa4f953d00652da323 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Sat, 21 Mar 2026 22:43:00 -0700 Subject: [PATCH] more usage of IOUToken --- include/xrpl/ledger/helpers/TokenHelpers.h | 2 +- include/xrpl/ledger/helpers/VaultHelpers.h | 2 +- .../xrpl/tx/transactors/vault/VaultClawback.h | 2 +- src/libxrpl/ledger/AcceptedLedgerTx.cpp | 2 +- src/libxrpl/ledger/entries/MPTokenHelpers.cpp | 8 ++--- .../ledger/entries/RippleStateHelpers.cpp | 6 ++-- src/libxrpl/tx/invariants/InvariantCheck.cpp | 2 +- src/libxrpl/tx/paths/OfferStream.cpp | 2 +- .../tx/transactors/check/CheckCash.cpp | 6 ++-- .../tx/transactors/check/CheckCreate.cpp | 31 ++++++------------- .../tx/transactors/dex/OfferCreate.cpp | 9 +++--- .../tx/transactors/lending/LoanBrokerSet.cpp | 2 +- .../tx/transactors/nft/NFTokenUtils.cpp | 6 ++-- .../token/MPTokenIssuanceDestroy.cpp | 2 +- .../transactors/token/MPTokenIssuanceSet.cpp | 2 +- .../tx/transactors/vault/VaultCreate.cpp | 4 +-- src/libxrpl/tx/transactors/vault/VaultSet.cpp | 2 +- src/test/ledger/View_test.cpp | 2 +- src/xrpld/app/ledger/detail/LedgerToJson.cpp | 2 +- src/xrpld/app/misc/NetworkOPs.cpp | 2 +- 20 files changed, 43 insertions(+), 53 deletions(-) diff --git a/include/xrpl/ledger/helpers/TokenHelpers.h b/include/xrpl/ledger/helpers/TokenHelpers.h index 388bb8e96a..06adf999b9 100644 --- a/include/xrpl/ledger/helpers/TokenHelpers.h +++ b/include/xrpl/ledger/helpers/TokenHelpers.h @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/xrpl/ledger/helpers/VaultHelpers.h b/include/xrpl/ledger/helpers/VaultHelpers.h index 9751daa1bc..4998f0c28d 100644 --- a/include/xrpl/ledger/helpers/VaultHelpers.h +++ b/include/xrpl/ledger/helpers/VaultHelpers.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include diff --git a/include/xrpl/tx/transactors/vault/VaultClawback.h b/include/xrpl/tx/transactors/vault/VaultClawback.h index 270b3102ee..bede05f216 100644 --- a/include/xrpl/tx/transactors/vault/VaultClawback.h +++ b/include/xrpl/tx/transactors/vault/VaultClawback.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include namespace xrpl { diff --git a/src/libxrpl/ledger/AcceptedLedgerTx.cpp b/src/libxrpl/ledger/AcceptedLedgerTx.cpp index 1ac2ce291f..f061eb3ef5 100644 --- a/src/libxrpl/ledger/AcceptedLedgerTx.cpp +++ b/src/libxrpl/ledger/AcceptedLedgerTx.cpp @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/libxrpl/ledger/entries/MPTokenHelpers.cpp b/src/libxrpl/ledger/entries/MPTokenHelpers.cpp index e847110195..b8aea3154e 100644 --- a/src/libxrpl/ledger/entries/MPTokenHelpers.cpp +++ b/src/libxrpl/ledger/entries/MPTokenHelpers.cpp @@ -1,9 +1,9 @@ -#include +#include // #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/src/libxrpl/ledger/entries/RippleStateHelpers.cpp b/src/libxrpl/ledger/entries/RippleStateHelpers.cpp index e2cacd3ab2..705f41680a 100644 --- a/src/libxrpl/ledger/entries/RippleStateHelpers.cpp +++ b/src/libxrpl/ledger/entries/RippleStateHelpers.cpp @@ -1,11 +1,11 @@ -#include +#include // #include #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/src/libxrpl/tx/invariants/InvariantCheck.cpp b/src/libxrpl/tx/invariants/InvariantCheck.cpp index a7fb62edf7..19cddecaac 100644 --- a/src/libxrpl/tx/invariants/InvariantCheck.cpp +++ b/src/libxrpl/tx/invariants/InvariantCheck.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/libxrpl/tx/paths/OfferStream.cpp b/src/libxrpl/tx/paths/OfferStream.cpp index 2d0bf4bfbe..cb6cf1565f 100644 --- a/src/libxrpl/tx/paths/OfferStream.cpp +++ b/src/libxrpl/tx/paths/OfferStream.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include diff --git a/src/libxrpl/tx/transactors/check/CheckCash.cpp b/src/libxrpl/tx/transactors/check/CheckCash.cpp index 55590fc922..db63e1a5e8 100644 --- a/src/libxrpl/tx/transactors/check/CheckCash.cpp +++ b/src/libxrpl/tx/transactors/check/CheckCash.cpp @@ -154,15 +154,15 @@ CheckCash::preclaim(PreclaimContext const& ctx) // An issuer can always accept their own currency. if (!value.native() && (value.getIssuer() != dstId)) { - AccountRoot const acctIssuer(issuerId, ctx.view); - if (!acctIssuer) + IOUToken const iouToken(ctx.view, issuerId, currency); + if (!iouToken) { JLOG(ctx.j.warn()) << "Can't receive IOUs from non-existent issuer: " << to_string(issuerId); return tecNO_ISSUER; } - if (acctIssuer->at(sfFlags) & lsfRequireAuth) + if (iouToken.requiresAuth()) { auto const sleTrustLine = ctx.view.read(keylet::line(dstId, issuerId, currency)); diff --git a/src/libxrpl/tx/transactors/check/CheckCreate.cpp b/src/libxrpl/tx/transactors/check/CheckCreate.cpp index 2cf07ce6ed..ab00b1f411 100644 --- a/src/libxrpl/tx/transactors/check/CheckCreate.cpp +++ b/src/libxrpl/tx/transactors/check/CheckCreate.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -83,10 +84,10 @@ CheckCreate::preclaim(PreclaimContext const& ctx) STAmount const sendMax{ctx.tx[sfSendMax]}; if (!sendMax.native()) { + IOUToken const iouToken(ctx.view, sendMax.issue()); + // The currency may not be globally frozen - AccountID const issuerId{sendMax.getIssuer()}; - AccountRoot wrappedIssuer(issuerId, ctx.view); - if (wrappedIssuer.isGlobalFrozen()) + if (iouToken.isGlobalFrozen()) { JLOG(ctx.j.warn()) << "Creating a check for frozen asset"; return tecFROZEN; @@ -97,27 +98,15 @@ CheckCreate::preclaim(PreclaimContext const& ctx) // Note that we DO allow create check for a currency that the // account does not yet have a trustline to. AccountID const srcId{ctx.tx.getAccountID(sfAccount)}; - if (issuerId != srcId) + if (iouToken.isFrozen(srcId)) { - // Check if the issuer froze the line - auto const sleTrust = - ctx.view.read(keylet::line(srcId, issuerId, sendMax.getCurrency())); - if (sleTrust && sleTrust->isFlag((issuerId > srcId) ? lsfHighFreeze : lsfLowFreeze)) - { - JLOG(ctx.j.warn()) << "Creating a check for frozen trustline."; - return tecFROZEN; - } + JLOG(ctx.j.warn()) << "Creating a check for frozen trustline."; + return tecFROZEN; } - if (issuerId != dstId) + if (iouToken.isFrozen(dstId)) { - // Check if dst froze the line. - auto const sleTrust = - ctx.view.read(keylet::line(issuerId, dstId, sendMax.getCurrency())); - if (sleTrust && sleTrust->isFlag((dstId > issuerId) ? lsfHighFreeze : lsfLowFreeze)) - { - JLOG(ctx.j.warn()) << "Creating a check for destination frozen trustline."; - return tecFROZEN; - } + JLOG(ctx.j.warn()) << "Creating a check for destination frozen trustline."; + return tecFROZEN; } } } diff --git a/src/libxrpl/tx/transactors/dex/OfferCreate.cpp b/src/libxrpl/tx/transactors/dex/OfferCreate.cpp index 8b7f74ca95..4b85fc52eb 100644 --- a/src/libxrpl/tx/transactors/dex/OfferCreate.cpp +++ b/src/libxrpl/tx/transactors/dex/OfferCreate.cpp @@ -2,7 +2,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -214,9 +215,9 @@ OfferCreate::checkAcceptAsset( // Only valid for custom currencies XRPL_ASSERT(!isXRP(issue.currency), "xrpl::OfferCreate::checkAcceptAsset : input is not XRP"); - AccountRoot const issuerAcct(issue.account, view); + IOUToken const iouToken(view, issue); - if (!issuerAcct) + if (!iouToken) { JLOG(j.debug()) << "delay: can't receive IOUs from non-existent issuer: " << to_string(issue.account); @@ -230,7 +231,7 @@ OfferCreate::checkAcceptAsset( if (issue.account == id) return tesSUCCESS; - if (issuerAcct->getFlags() & lsfRequireAuth) + if (iouToken.requiresAuth()) { auto const trustLine = view.read(keylet::line(id, issue.account, issue.currency)); diff --git a/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp b/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp index 3afc464a75..bb000e0c1f 100644 --- a/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp @@ -1,6 +1,6 @@ #include // -#include +#include #include #include diff --git a/src/libxrpl/tx/transactors/nft/NFTokenUtils.cpp b/src/libxrpl/tx/transactors/nft/NFTokenUtils.cpp index 64db8062ad..3007c76e5d 100644 --- a/src/libxrpl/tx/transactors/nft/NFTokenUtils.cpp +++ b/src/libxrpl/tx/transactors/nft/NFTokenUtils.cpp @@ -1009,8 +1009,8 @@ checkTrustlineAuthorized( if (view.rules().enabled(fixEnforceNFTokenTrustlineV2)) { - AccountRoot const acctIssuer(issue.account, view); - if (!acctIssuer) + IOUToken const iouToken(view, issue); + if (!iouToken) { JLOG(j.debug()) << "xrpl::nft::checkTrustlineAuthorized: can't " "receive IOUs from non-existent issuer: " @@ -1027,7 +1027,7 @@ checkTrustlineAuthorized( return tesSUCCESS; } - if (acctIssuer->isFlag(lsfRequireAuth)) + if (iouToken.requiresAuth()) { auto const trustLine = view.read(keylet::line(id, issue.account, issue.currency)); diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceDestroy.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceDestroy.cpp index 2cd43a6ebc..c682474813 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceDestroy.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceDestroy.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp index 4a0167cee1..3ff3081bc4 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include diff --git a/src/libxrpl/tx/transactors/vault/VaultCreate.cpp b/src/libxrpl/tx/transactors/vault/VaultCreate.cpp index 87e08e6647..059997d422 100644 --- a/src/libxrpl/tx/transactors/vault/VaultCreate.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultCreate.cpp @@ -1,6 +1,6 @@ #include -#include -#include +#include +#include #include #include #include diff --git a/src/libxrpl/tx/transactors/vault/VaultSet.cpp b/src/libxrpl/tx/transactors/vault/VaultSet.cpp index 8153ef49b1..1bbfa88e9b 100644 --- a/src/libxrpl/tx/transactors/vault/VaultSet.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultSet.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include diff --git a/src/test/ledger/View_test.cpp b/src/test/ledger/View_test.cpp index 89f03b8391..3d296b1b4f 100644 --- a/src/test/ledger/View_test.cpp +++ b/src/test/ledger/View_test.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/xrpld/app/ledger/detail/LedgerToJson.cpp b/src/xrpld/app/ledger/detail/LedgerToJson.cpp index 7050fd70d1..08d76fadce 100644 --- a/src/xrpld/app/ledger/detail/LedgerToJson.cpp +++ b/src/xrpld/app/ledger/detail/LedgerToJson.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include diff --git a/src/xrpld/app/misc/NetworkOPs.cpp b/src/xrpld/app/misc/NetworkOPs.cpp index 2e604ca7ea..d5a041c39d 100644 --- a/src/xrpld/app/misc/NetworkOPs.cpp +++ b/src/xrpld/app/misc/NetworkOPs.cpp @@ -43,7 +43,7 @@ #include #include #include -#include +#include #include #include #include