added amemndment gating

This commit is contained in:
Valentin Balaschenko
2025-12-24 13:00:32 +00:00
parent 57607cc3b7
commit d58d49a754
2 changed files with 31 additions and 13 deletions

View File

@@ -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) ||

View File

@@ -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);