fix: add allowTrustLineLocking flag for account_info (#5525)

* Update the `account_info` API so that the `allowTrustLineLocking` flag is included in the response.
* The proposed `TokenEscrow` amendment added an `allowTrustLineLocking` flag in the `AccountRoot` object.
* In the API response, under `account_flags`, there is now an `allowTrustLineLocking` field with a boolean (`true` or `false`) value.
* For reference, the XLS-85 Token-Enabled Escrows implementation can be found in https://github.com/XRPLF/rippled/pull/5185
This commit is contained in:
Denis Angell
2025-07-10 18:29:51 +02:00
committed by GitHub
parent b113190563
commit 8e94ea3154
2 changed files with 35 additions and 0 deletions

View File

@@ -675,6 +675,30 @@ public:
BEAST_EXPECT(
!getAccountFlag(allowTrustLineClawbackFlag.first, bob));
}
static constexpr std::pair<std::string_view, std::uint32_t>
allowTrustLineLockingFlag{
"allowTrustLineLocking", asfAllowTrustLineLocking};
if (features[featureTokenEscrow])
{
auto const f1 =
getAccountFlag(allowTrustLineLockingFlag.first, bob);
BEAST_EXPECT(f1.has_value());
BEAST_EXPECT(!f1.value());
// Set allowTrustLineLocking
env(fset(bob, allowTrustLineLockingFlag.second));
env.close();
auto const f2 =
getAccountFlag(allowTrustLineLockingFlag.first, bob);
BEAST_EXPECT(f2.has_value());
BEAST_EXPECT(f2.value());
}
else
{
BEAST_EXPECT(!getAccountFlag(allowTrustLineLockingFlag.first, bob));
}
}
void
@@ -691,6 +715,9 @@ public:
testAccountFlags(allFeatures - featureDisallowIncoming);
testAccountFlags(
allFeatures - featureDisallowIncoming - featureClawback);
testAccountFlags(
allFeatures - featureDisallowIncoming - featureClawback -
featureTokenEscrow);
}
};

View File

@@ -108,6 +108,10 @@ doAccountInfo(RPC::JsonContext& context)
allowTrustLineClawbackFlag{
"allowTrustLineClawback", lsfAllowTrustLineClawback};
static constexpr std::pair<std::string_view, LedgerSpecificFlags>
allowTrustLineLockingFlag{
"allowTrustLineLocking", lsfAllowTrustLineLocking};
auto const sleAccepted = ledger->read(keylet::account(accountID));
if (sleAccepted)
{
@@ -140,6 +144,10 @@ doAccountInfo(RPC::JsonContext& context)
acctFlags[allowTrustLineClawbackFlag.first.data()] =
sleAccepted->isFlag(allowTrustLineClawbackFlag.second);
if (ledger->rules().enabled(featureTokenEscrow))
acctFlags[allowTrustLineLockingFlag.first.data()] =
sleAccepted->isFlag(allowTrustLineLockingFlag.second);
result[jss::account_flags] = std::move(acctFlags);
// The document[https://xrpl.org/account_info.html#account_info] states