Disallow regular Clawback on Vault accounts

This commit is contained in:
Bronek Kozicki
2025-03-24 11:45:50 +00:00
parent cc4f87729f
commit a173dd20e2
3 changed files with 6 additions and 0 deletions

View File

@@ -347,6 +347,7 @@ enum TECcodes : TERUnderlyingType {
tecWRONG_ASSET = 194,
tecLIMIT_EXCEEDED = 195,
tecINVALID_DOMAIN = 196,
tecVAULT_ACCOUNT = 197,
};
//------------------------------------------------------------------------------

View File

@@ -126,6 +126,7 @@ transResults()
MAKE_ERROR(tecWRONG_ASSET, "Wrong asset given."),
MAKE_ERROR(tecLIMIT_EXCEEDED, "Limit exceeded."),
MAKE_ERROR(tecINVALID_DOMAIN, "Invalid permissioned domain."),
MAKE_ERROR(tecVAULT_ACCOUNT, "This operation is not allowed on a Vault Account."),
MAKE_ERROR(tefALREADY, "The exact transaction was already in this ledger."),
MAKE_ERROR(tefBAD_ADD_AUTH, "Not authorized to add account."),

View File

@@ -210,6 +210,10 @@ Clawback::preclaim(PreclaimContext const& ctx)
if (sleHolder->isFieldPresent(sfAMMID))
return tecAMM_ACCOUNT;
if (ctx.view.rules().enabled(featureSingleAssetVault) &&
sleHolder->isFieldPresent(sfVaultID))
return tecVAULT_ACCOUNT;
return std::visit(
[&]<typename T>(T const&) {
return preclaimHelper<T>(