address comments

This commit is contained in:
yinyiqian1
2026-07-16 16:34:51 -04:00
committed by Mayukha Vadari
parent 376f074b0c
commit 82e945a9f4
3 changed files with 8 additions and 11 deletions

View File

@@ -379,7 +379,7 @@ inline constexpr FlagValue tifMPTokenIssuanceCreateImmutableMask =
tifMPTCanClawback | tifMPTMetadata | tifMPTTransferFee | tifMPTCanHoldConfidentialBalance);
// MPTokenIssuanceSet set of flags that is used to enable capabilities on an MPTokenIssuance.
inline constexpr FlagValue tfMPTokenIssuanceSetMutateFlagMask = tfMPTSetCanLock |
inline constexpr FlagValue tfMPTokenIssuanceSetEnableFlagMask = tfMPTSetCanLock |
tfMPTSetRequireAuth | tfMPTSetCanEscrow | tfMPTSetCanTrade | tfMPTSetCanTransfer |
tfMPTSetCanClawback | tfMPTSetCanHoldConfidentialBalance;

View File

@@ -64,7 +64,7 @@ MPTokenIssuanceCreate::preflight(PreflightContext const& ctx)
return temMALFORMED;
// If the immutable flags field is included, at least one flag must be
// specified.
// specified, and undefined flags must not be specified.
if (auto const immutableFlags = ctx.tx[~sfImmutableFlags]; immutableFlags &&
((*immutableFlags == 0u) ||
((*immutableFlags & tifMPTokenIssuanceCreateImmutableMask) != 0u)))

View File

@@ -71,7 +71,7 @@ NotTEC
MPTokenIssuanceSet::preflight(PreflightContext const& ctx)
{
auto const txFlags = ctx.tx.getFlags();
auto const enableFlags = txFlags & tfMPTokenIssuanceSetMutateFlagMask;
auto const enableFlags = txFlags & tfMPTokenIssuanceSetEnableFlagMask;
auto const metadata = ctx.tx[~sfMPTokenMetadata];
auto const transferFee = ctx.tx[~sfTransferFee];
auto const immutableFlags = ctx.tx[~sfImmutableFlags];
@@ -216,13 +216,13 @@ MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx)
auto isImmutable = [&](std::uint32_t flag) -> bool { return currentImmutableFlags & flag; };
auto const enableFlags = ctx.tx.getFlags() & tfMPTokenIssuanceSetMutateFlagMask;
auto const enableFlags = ctx.tx.getFlags() & tfMPTokenIssuanceSetEnableFlagMask;
// Whether the transaction is enabling confidential amounts.
if (enableFlags)
{
// If any of the flags to be set is immutable at issuance, return tecNO_PERMISSION.
if (std::ranges::any_of(flagMapping, [&](auto const& f) {
return isImmutable(f.immutableFlag) && ((enableFlags & f.setFlag) != 0u);
return isImmutable(f.immutableFlag) && ctx.tx.isFlag(f.setFlag);
}))
return tecNO_PERMISSION;
}
@@ -325,11 +325,11 @@ MPTokenIssuanceSet::doApply()
flagsOut &= ~lsfMPTLocked;
}
if (auto const enableFlags = ctx_.tx.getFlags() & tfMPTokenIssuanceSetMutateFlagMask)
if (auto const enableFlags = (ctx_.tx.getFlags() & tfMPTokenIssuanceSetEnableFlagMask))
{
for (auto const& f : flagMapping)
{
if ((enableFlags & f.setFlag) != 0u)
if (ctx_.tx.isFlag(f.setFlag))
{
flagsOut |= f.ledgerFlag;
}
@@ -358,10 +358,7 @@ MPTokenIssuanceSet::doApply()
if (sle->getType() != ltMPTOKEN_ISSUANCE)
return tecINTERNAL; // LCOV_EXCL_LINE
std::uint32_t const currentImmutableFlags = sle->getFieldU32(sfImmutableFlags);
std::uint32_t const newImmutableFlags = currentImmutableFlags | *immutableFlags;
if (newImmutableFlags != currentImmutableFlags)
sle->setFieldU32(sfImmutableFlags, newImmutableFlags);
(*sle)[sfImmutableFlags] = (*sle)[sfImmutableFlags] | *immutableFlags;
}
if (auto const transferFee = ctx_.tx[~sfTransferFee])