From d58d49a75437f810245376f9e7d1de5ec84433aa Mon Sep 17 00:00:00 2001 From: Valentin Balaschenko <13349202+vlntb@users.noreply.github.com> Date: Wed, 24 Dec 2025 13:00:32 +0000 Subject: [PATCH] added amemndment gating --- src/libxrpl/ledger/View.cpp | 3 ++- src/test/app/Freeze_test.cpp | 41 +++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/libxrpl/ledger/View.cpp b/src/libxrpl/ledger/View.cpp index 5480ecbf85..1a6062d5d3 100644 --- a/src/libxrpl/ledger/View.cpp +++ b/src/libxrpl/ledger/View.cpp @@ -257,7 +257,8 @@ isFrozen( MPTIssue const& mptIssue, int depth) { - if (account == mptIssue.getIssuer()) + if (view.rules().enabled(featureLendingProtocol) && + account == mptIssue.getIssuer()) return false; return isGlobalFrozen(view, mptIssue) || diff --git a/src/test/app/Freeze_test.cpp b/src/test/app/Freeze_test.cpp index e50a97a6dc..881345a874 100644 --- a/src/test/app/Freeze_test.cpp +++ b/src/test/app/Freeze_test.cpp @@ -2034,22 +2034,39 @@ class Freeze_test : public beast::unit_test::suite env(fset(issuer, asfGlobalFreeze)); env.close(); - // After global freeze, issuer is NOT frozen for their own currency - BEAST_EXPECT( - !isFrozen(*env.current(), issuer.id(), USD.currency, issuer.id())); + // After global freeze, check issuer freeze state based on amendment + if (features[featureLendingProtocol]) + { + // With amendment: issuer is NOT frozen for their own currency + BEAST_EXPECT(!isFrozen( + *env.current(), issuer.id(), USD.currency, issuer.id())); - // After global freeze, holder IS frozen + // Verify issuer can still receive payments + env(pay(holder, issuer, USD(10))); + env.close(); + + // Verify issuer can still send payments + env(pay(issuer, holder, USD(10))); + env.close(); + } + else + { + // Without amendment: issuer IS frozen for their own currency + BEAST_EXPECT(isFrozen( + *env.current(), issuer.id(), USD.currency, issuer.id())); + + // Issuer can still receive payments (always worked) + env(pay(holder, issuer, USD(10))); + env.close(); + + // But issuer cannot send payments (frozen) + env(pay(issuer, holder, USD(10)), ter(tecPATH_DRY)); + } + + // After global freeze, holder IS frozen (both scenarios) BEAST_EXPECT( isFrozen(*env.current(), holder.id(), USD.currency, issuer.id())); - // Verify issuer can still receive payments (uses isFrozen internally) - env(pay(holder, issuer, USD(10))); - env.close(); - - // Verify issuer can still send payments (uses isFrozen internally) - env(pay(issuer, holder, USD(10))); - env.close(); - // Verify holder cannot send to other accounts Account other{"other"}; env.fund(XRP(10000), other);