mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-03 00:36:48 +00:00
refactor: Align identifier naming with develop
Restore NOLINT-protected headers and apply develop's identifier naming conventions to files modified in this branch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -92,7 +92,7 @@ tokenOfferCreatePreflight(
|
||||
std::uint16_t nftFlags,
|
||||
Rules const& rules,
|
||||
std::optional<AccountID> const& owner = std::nullopt,
|
||||
std::uint32_t txFlags = kTF_SELL_NF_TOKEN);
|
||||
std::uint32_t txFlags = tfSellNFToken);
|
||||
|
||||
/** Preclaim checks shared by NFTokenCreateOffer and NFTokenMint */
|
||||
TER
|
||||
@@ -106,7 +106,7 @@ tokenOfferCreatePreclaim(
|
||||
std::uint16_t xferFee,
|
||||
beast::Journal j,
|
||||
std::optional<AccountID> const& owner = std::nullopt,
|
||||
std::uint32_t txFlags = kTF_SELL_NF_TOKEN);
|
||||
std::uint32_t txFlags = tfSellNFToken);
|
||||
|
||||
/** doApply implementation shared by NFTokenCreateOffer and NFTokenMint */
|
||||
TER
|
||||
@@ -120,7 +120,7 @@ tokenOfferCreateApply(
|
||||
uint256 const& nftokenID,
|
||||
XRPAmount const& priorBalance,
|
||||
beast::Journal j,
|
||||
std::uint32_t txFlags = kTF_SELL_NF_TOKEN);
|
||||
std::uint32_t txFlags = tfSellNFToken);
|
||||
|
||||
TER
|
||||
checkTrustlineAuthorized(
|
||||
|
||||
@@ -118,7 +118,7 @@ isDeepFrozen(
|
||||
[[nodiscard]] inline TER
|
||||
checkDeepFrozen(ReadView const& view, AccountID const& account, Issue const& issue)
|
||||
{
|
||||
return isDeepFrozen(view, account, issue) ? (TER)TecFrozen : (TER)TesSuccess;
|
||||
return isDeepFrozen(view, account, issue) ? (TER)tecFROZEN : (TER)tesSUCCESS;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -65,7 +65,7 @@ invalidAMMAssetPair(
|
||||
std::optional<std::uint8_t>
|
||||
ammAuctionTimeSlot(std::uint64_t current, STObject const& auctionSlot);
|
||||
|
||||
/** Return true if required AMM amendment is enabled
|
||||
/** Return true if required AMM amendments are enabled
|
||||
*/
|
||||
bool
|
||||
ammEnabled(Rules const&);
|
||||
|
||||
@@ -179,4 +179,36 @@ to_string(IOUAmount const& amount);
|
||||
IOUAmount
|
||||
mulRatio(IOUAmount const& amt, std::uint32_t num, std::uint32_t den, bool roundUp);
|
||||
|
||||
// Since many uses of the number class do not have access to a ledger,
|
||||
// getSTNumberSwitchover needs to be globally accessible.
|
||||
|
||||
bool
|
||||
getSTNumberSwitchover();
|
||||
|
||||
void
|
||||
setSTNumberSwitchover(bool v);
|
||||
|
||||
/** RAII class to set and restore the Number switchover.
|
||||
*/
|
||||
|
||||
class NumberSO
|
||||
{
|
||||
bool saved_;
|
||||
|
||||
public:
|
||||
~NumberSO()
|
||||
{
|
||||
setSTNumberSwitchover(saved_);
|
||||
}
|
||||
|
||||
NumberSO(NumberSO const&) = delete;
|
||||
NumberSO&
|
||||
operator=(NumberSO const&) = delete;
|
||||
|
||||
explicit NumberSO(bool v) : saved_(getSTNumberSwitchover())
|
||||
{
|
||||
setSTNumberSwitchover(v);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace xrpl
|
||||
|
||||
@@ -55,7 +55,7 @@ enum LedgerEntryType : std::uint16_t {
|
||||
|
||||
\sa keylet::unchecked
|
||||
*/
|
||||
LtAny = 0,
|
||||
ltANY = 0,
|
||||
|
||||
/** A special type, matching any ledger type except directory nodes.
|
||||
|
||||
@@ -67,7 +67,7 @@ enum LedgerEntryType : std::uint16_t {
|
||||
|
||||
\sa keylet::child
|
||||
*/
|
||||
LtChild = 0x1CD2,
|
||||
ltCHILD = 0x1CD2,
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
/** A legacy, deprecated type.
|
||||
@@ -76,7 +76,7 @@ enum LedgerEntryType : std::uint16_t {
|
||||
Support for this type of object was never implemented.
|
||||
No objects of this type were ever created.
|
||||
*/
|
||||
LtNickname [[deprecated("This object type is not supported and should not be used.")]] = 0x006e,
|
||||
ltNICKNAME [[deprecated("This object type is not supported and should not be used.")]] = 0x006e,
|
||||
|
||||
/** A legacy, deprecated type.
|
||||
|
||||
@@ -84,7 +84,7 @@ enum LedgerEntryType : std::uint16_t {
|
||||
Support for this type of object was never implemented.
|
||||
No objects of this type were ever created.
|
||||
*/
|
||||
LtContract [[deprecated("This object type is not supported and should not be used.")]] = 0x0063,
|
||||
ltCONTRACT [[deprecated("This object type is not supported and should not be used.")]] = 0x0063,
|
||||
|
||||
/** A legacy, deprecated type.
|
||||
|
||||
@@ -92,7 +92,7 @@ enum LedgerEntryType : std::uint16_t {
|
||||
Support for this type of object was never implemented.
|
||||
No objects of this type were ever created.
|
||||
*/
|
||||
LtGeneratorMap [[deprecated("This object type is not supported and should not be used.")]] =
|
||||
ltGENERATOR_MAP [[deprecated("This object type is not supported and should not be used.")]] =
|
||||
0x0067,
|
||||
};
|
||||
|
||||
@@ -125,85 +125,85 @@ enum LedgerEntryType : std::uint16_t {
|
||||
|
||||
#define XMACRO(LEDGER_OBJECT, LSF_FLAG, LSF_FLAG2) \
|
||||
LEDGER_OBJECT(AccountRoot, \
|
||||
LSF_FLAG(LsfPasswordSpent, 0x00010000) /* True, if password set fee is spent. */ \
|
||||
LSF_FLAG(LsfRequireDestTag, 0x00020000) /* True, to require a DestinationTag for payments. */ \
|
||||
LSF_FLAG(LsfRequireAuth, 0x00040000) /* True, to require a authorization to hold IOUs. */ \
|
||||
LSF_FLAG(LsfDisallowXrp, 0x00080000) /* True, to disallow sending XRP. */ \
|
||||
LSF_FLAG(LsfDisableMaster, 0x00100000) /* True, force regular key */ \
|
||||
LSF_FLAG(LsfNoFreeze, 0x00200000) /* True, cannot freeze ripple states */ \
|
||||
LSF_FLAG(LsfGlobalFreeze, 0x00400000) /* True, all assets frozen */ \
|
||||
LSF_FLAG(LsfDefaultRipple, 0x00800000) /* True, incoming trust lines allow rippling by default */ \
|
||||
LSF_FLAG(LsfDepositAuth, 0x01000000) /* True, all deposits require authorization */ \
|
||||
LSF_FLAG(LsfDisallowIncomingNfTokenOffer, 0x04000000) /* True, reject new incoming NFT offers */ \
|
||||
LSF_FLAG(LsfDisallowIncomingCheck, 0x08000000) /* True, reject new checks */ \
|
||||
LSF_FLAG(LsfDisallowIncomingPayChan, 0x10000000) /* True, reject new paychans */ \
|
||||
LSF_FLAG(LsfDisallowIncomingTrustline, 0x20000000) /* True, reject new trustlines (only if no issued assets) */ \
|
||||
LSF_FLAG(LsfAllowTrustLineLocking, 0x40000000) /* True, enable trustline locking */ \
|
||||
LSF_FLAG(LsfAllowTrustLineClawback, 0x80000000)) /* True, enable clawback */ \
|
||||
LSF_FLAG(lsfPasswordSpent, 0x00010000) /* True, if password set fee is spent. */ \
|
||||
LSF_FLAG(lsfRequireDestTag, 0x00020000) /* True, to require a DestinationTag for payments. */ \
|
||||
LSF_FLAG(lsfRequireAuth, 0x00040000) /* True, to require a authorization to hold IOUs. */ \
|
||||
LSF_FLAG(lsfDisallowXRP, 0x00080000) /* True, to disallow sending XRP. */ \
|
||||
LSF_FLAG(lsfDisableMaster, 0x00100000) /* True, force regular key */ \
|
||||
LSF_FLAG(lsfNoFreeze, 0x00200000) /* True, cannot freeze ripple states */ \
|
||||
LSF_FLAG(lsfGlobalFreeze, 0x00400000) /* True, all assets frozen */ \
|
||||
LSF_FLAG(lsfDefaultRipple, 0x00800000) /* True, incoming trust lines allow rippling by default */ \
|
||||
LSF_FLAG(lsfDepositAuth, 0x01000000) /* True, all deposits require authorization */ \
|
||||
LSF_FLAG(lsfDisallowIncomingNFTokenOffer, 0x04000000) /* True, reject new incoming NFT offers */ \
|
||||
LSF_FLAG(lsfDisallowIncomingCheck, 0x08000000) /* True, reject new checks */ \
|
||||
LSF_FLAG(lsfDisallowIncomingPayChan, 0x10000000) /* True, reject new paychans */ \
|
||||
LSF_FLAG(lsfDisallowIncomingTrustline, 0x20000000) /* True, reject new trustlines (only if no issued assets) */ \
|
||||
LSF_FLAG(lsfAllowTrustLineLocking, 0x40000000) /* True, enable trustline locking */ \
|
||||
LSF_FLAG(lsfAllowTrustLineClawback, 0x80000000)) /* True, enable clawback */ \
|
||||
\
|
||||
LEDGER_OBJECT(Offer, \
|
||||
LSF_FLAG(LsfPassive, 0x00010000) \
|
||||
LSF_FLAG(LsfSell, 0x00020000) /* True, offer was placed as a sell. */ \
|
||||
LSF_FLAG(LsfHybrid, 0x00040000)) /* True, offer is hybrid. */ \
|
||||
LSF_FLAG(lsfPassive, 0x00010000) \
|
||||
LSF_FLAG(lsfSell, 0x00020000) /* True, offer was placed as a sell. */ \
|
||||
LSF_FLAG(lsfHybrid, 0x00040000)) /* True, offer is hybrid. */ \
|
||||
\
|
||||
LEDGER_OBJECT(RippleState, \
|
||||
LSF_FLAG(LsfLowReserve, 0x00010000) /* True, if entry counts toward reserve. */ \
|
||||
LSF_FLAG(LsfHighReserve, 0x00020000) \
|
||||
LSF_FLAG(LsfLowAuth, 0x00040000) \
|
||||
LSF_FLAG(LsfHighAuth, 0x00080000) \
|
||||
LSF_FLAG(LsfLowNoRipple, 0x00100000) \
|
||||
LSF_FLAG(LsfHighNoRipple, 0x00200000) \
|
||||
LSF_FLAG(LsfLowFreeze, 0x00400000) /* True, low side has set freeze flag */ \
|
||||
LSF_FLAG(LsfHighFreeze, 0x00800000) /* True, high side has set freeze flag */ \
|
||||
LSF_FLAG(LsfAmmNode, 0x01000000) /* True, trust line to AMM. */ \
|
||||
LSF_FLAG(lsfLowReserve, 0x00010000) /* True, if entry counts toward reserve. */ \
|
||||
LSF_FLAG(lsfHighReserve, 0x00020000) \
|
||||
LSF_FLAG(lsfLowAuth, 0x00040000) \
|
||||
LSF_FLAG(lsfHighAuth, 0x00080000) \
|
||||
LSF_FLAG(lsfLowNoRipple, 0x00100000) \
|
||||
LSF_FLAG(lsfHighNoRipple, 0x00200000) \
|
||||
LSF_FLAG(lsfLowFreeze, 0x00400000) /* True, low side has set freeze flag */ \
|
||||
LSF_FLAG(lsfHighFreeze, 0x00800000) /* True, high side has set freeze flag */ \
|
||||
LSF_FLAG(lsfAMMNode, 0x01000000) /* True, trust line to AMM. */ \
|
||||
/* Used by client apps to identify payments via AMM. */ \
|
||||
LSF_FLAG(LsfLowDeepFreeze, 0x02000000) /* True, low side has set deep freeze flag */ \
|
||||
LSF_FLAG(LsfHighDeepFreeze, 0x04000000)) /* True, high side has set deep freeze flag */ \
|
||||
LSF_FLAG(lsfLowDeepFreeze, 0x02000000) /* True, low side has set deep freeze flag */ \
|
||||
LSF_FLAG(lsfHighDeepFreeze, 0x04000000)) /* True, high side has set deep freeze flag */ \
|
||||
\
|
||||
LEDGER_OBJECT(SignerList, \
|
||||
LSF_FLAG(LsfOneOwnerCount, 0x00010000)) /* True, uses only one OwnerCount */ \
|
||||
LSF_FLAG(lsfOneOwnerCount, 0x00010000)) /* True, uses only one OwnerCount */ \
|
||||
\
|
||||
LEDGER_OBJECT(DirNode, \
|
||||
LSF_FLAG(LsfNfTokenBuyOffers, 0x00000001) \
|
||||
LSF_FLAG(LsfNfTokenSellOffers, 0x00000002)) \
|
||||
LSF_FLAG(lsfNFTokenBuyOffers, 0x00000001) \
|
||||
LSF_FLAG(lsfNFTokenSellOffers, 0x00000002)) \
|
||||
\
|
||||
LEDGER_OBJECT(NFTokenOffer, \
|
||||
LSF_FLAG(LsfSellNfToken, 0x00000001)) \
|
||||
LSF_FLAG(lsfSellNFToken, 0x00000001)) \
|
||||
\
|
||||
LEDGER_OBJECT(MPTokenIssuance, \
|
||||
LSF_FLAG(LsfMptLocked, 0x00000001) /* Also used in ltMPTOKEN */ \
|
||||
LSF_FLAG(LsfMptCanLock, 0x00000002) \
|
||||
LSF_FLAG(LsfMptRequireAuth, 0x00000004) \
|
||||
LSF_FLAG(LsfMptCanEscrow, 0x00000008) \
|
||||
LSF_FLAG(LsfMptCanTrade, 0x00000010) \
|
||||
LSF_FLAG(LsfMptCanTransfer, 0x00000020) \
|
||||
LSF_FLAG(LsfMptCanClawback, 0x00000040)) \
|
||||
LSF_FLAG(lsfMPTLocked, 0x00000001) /* Also used in ltMPTOKEN */ \
|
||||
LSF_FLAG(lsfMPTCanLock, 0x00000002) \
|
||||
LSF_FLAG(lsfMPTRequireAuth, 0x00000004) \
|
||||
LSF_FLAG(lsfMPTCanEscrow, 0x00000008) \
|
||||
LSF_FLAG(lsfMPTCanTrade, 0x00000010) \
|
||||
LSF_FLAG(lsfMPTCanTransfer, 0x00000020) \
|
||||
LSF_FLAG(lsfMPTCanClawback, 0x00000040)) \
|
||||
\
|
||||
LEDGER_OBJECT(MPTokenIssuanceMutable, \
|
||||
LSF_FLAG(LsmfMptCanMutateCanLock, 0x00000002) \
|
||||
LSF_FLAG(LsmfMptCanMutateRequireAuth, 0x00000004) \
|
||||
LSF_FLAG(LsmfMptCanMutateCanEscrow, 0x00000008) \
|
||||
LSF_FLAG(LsmfMptCanMutateCanTrade, 0x00000010) \
|
||||
LSF_FLAG(LsmfMptCanMutateCanTransfer, 0x00000020) \
|
||||
LSF_FLAG(LsmfMptCanMutateCanClawback, 0x00000040) \
|
||||
LSF_FLAG(LsmfMptCanMutateMetadata, 0x00010000) \
|
||||
LSF_FLAG(LsmfMptCanMutateTransferFee, 0x00020000)) \
|
||||
LSF_FLAG(lsmfMPTCanMutateCanLock, 0x00000002) \
|
||||
LSF_FLAG(lsmfMPTCanMutateRequireAuth, 0x00000004) \
|
||||
LSF_FLAG(lsmfMPTCanMutateCanEscrow, 0x00000008) \
|
||||
LSF_FLAG(lsmfMPTCanMutateCanTrade, 0x00000010) \
|
||||
LSF_FLAG(lsmfMPTCanMutateCanTransfer, 0x00000020) \
|
||||
LSF_FLAG(lsmfMPTCanMutateCanClawback, 0x00000040) \
|
||||
LSF_FLAG(lsmfMPTCanMutateMetadata, 0x00010000) \
|
||||
LSF_FLAG(lsmfMPTCanMutateTransferFee, 0x00020000)) \
|
||||
\
|
||||
LEDGER_OBJECT(MPToken, \
|
||||
LSF_FLAG2(lsfMPTLocked, 0x00000001) \
|
||||
LSF_FLAG(LsfMptAuthorized, 0x00000002) \
|
||||
LSF_FLAG(LsfMptamm, 0x00000004)) \
|
||||
LSF_FLAG(lsfMPTAuthorized, 0x00000002) \
|
||||
LSF_FLAG(lsfMPTAMM, 0x00000004)) \
|
||||
\
|
||||
LEDGER_OBJECT(Credential, \
|
||||
LSF_FLAG(LsfAccepted, 0x00010000)) \
|
||||
LSF_FLAG(lsfAccepted, 0x00010000)) \
|
||||
\
|
||||
LEDGER_OBJECT(Vault, \
|
||||
LSF_FLAG(LsfVaultPrivate, 0x00010000)) \
|
||||
LSF_FLAG(lsfVaultPrivate, 0x00010000)) \
|
||||
\
|
||||
LEDGER_OBJECT(Loan, \
|
||||
LSF_FLAG(LsfLoanDefault, 0x00010000) \
|
||||
LSF_FLAG(LsfLoanImpaired, 0x00020000) \
|
||||
LSF_FLAG(LsfLoanOverpayment, 0x00040000)) /* True, loan allows overpayments */
|
||||
LSF_FLAG(lsfLoanDefault, 0x00010000) \
|
||||
LSF_FLAG(lsfLoanImpaired, 0x00020000) \
|
||||
LSF_FLAG(lsfLoanOverpayment, 0x00040000)) /* True, loan allows overpayments */
|
||||
|
||||
// clang-format on
|
||||
|
||||
@@ -258,9 +258,9 @@ XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP)
|
||||
inline std::vector<std::pair<std::string, LedgerFlagMap>> const&
|
||||
getAllLedgerFlags()
|
||||
{
|
||||
static std::vector<std::pair<std::string, LedgerFlagMap>> const kFLAGS = {
|
||||
static std::vector<std::pair<std::string, LedgerFlagMap>> const flags = {
|
||||
XMACRO(ALL_LEDGER_FLAGS, NULL_OUTPUT, NULL_OUTPUT)};
|
||||
return kFLAGS;
|
||||
return flags;
|
||||
}
|
||||
|
||||
#undef XMACRO
|
||||
|
||||
@@ -106,28 +106,28 @@ template <>
|
||||
inline SerializedTypeID
|
||||
STUInt128::getSType() const
|
||||
{
|
||||
return StiUinT128;
|
||||
return STI_UINT128;
|
||||
}
|
||||
|
||||
template <>
|
||||
inline SerializedTypeID
|
||||
STUInt160::getSType() const
|
||||
{
|
||||
return StiUinT160;
|
||||
return STI_UINT160;
|
||||
}
|
||||
|
||||
template <>
|
||||
inline SerializedTypeID
|
||||
STUInt192::getSType() const
|
||||
{
|
||||
return StiUinT192;
|
||||
return STI_UINT192;
|
||||
}
|
||||
|
||||
template <>
|
||||
inline SerializedTypeID
|
||||
STUInt256::getSType() const
|
||||
{
|
||||
return StiUinT256;
|
||||
return STI_UINT256;
|
||||
}
|
||||
|
||||
template <int Bits>
|
||||
|
||||
@@ -100,7 +100,7 @@ get(STObject const& st, TypedField<U> const& f)
|
||||
if (!b)
|
||||
return t;
|
||||
auto const id = b->getSType();
|
||||
if (id == StiNotpresent)
|
||||
if (id == STI_NOTPRESENT)
|
||||
return t;
|
||||
auto const u = dynamic_cast<U const*>(b);
|
||||
// This should never happen
|
||||
|
||||
@@ -33,23 +33,23 @@ enum TELcodes : TERUnderlyingType {
|
||||
// limit) Only valid during non-consensus processing. Implications:
|
||||
// - Not forwarded
|
||||
// - No fee check
|
||||
TelLocalError = -399,
|
||||
TelBadDomain,
|
||||
TelBadPathCount,
|
||||
TelBadPublicKey,
|
||||
TelFailedProcessing,
|
||||
TelInsufFeeP,
|
||||
TelNoDstPartial,
|
||||
TelCanNotQueue,
|
||||
TelCanNotQueueBalance,
|
||||
TelCanNotQueueBlocks,
|
||||
TelCanNotQueueBlocked,
|
||||
TelCanNotQueueFee,
|
||||
TelCanNotQueueFull,
|
||||
TelWrongNetwork,
|
||||
TelRequiresNetworkId,
|
||||
TelNetworkIdMakesTxNonCanonical,
|
||||
TelEnvRpcFailed
|
||||
telLOCAL_ERROR = -399,
|
||||
telBAD_DOMAIN,
|
||||
telBAD_PATH_COUNT,
|
||||
telBAD_PUBLIC_KEY,
|
||||
telFAILED_PROCESSING,
|
||||
telINSUF_FEE_P,
|
||||
telNO_DST_PARTIAL,
|
||||
telCAN_NOT_QUEUE,
|
||||
telCAN_NOT_QUEUE_BALANCE,
|
||||
telCAN_NOT_QUEUE_BLOCKS,
|
||||
telCAN_NOT_QUEUE_BLOCKED,
|
||||
telCAN_NOT_QUEUE_FEE,
|
||||
telCAN_NOT_QUEUE_FULL,
|
||||
telWRONG_NETWORK,
|
||||
telREQUIRES_NETWORK_ID,
|
||||
telNETWORK_ID_MAKES_TX_NON_CANONICAL,
|
||||
telENV_RPC_FAILED
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -70,64 +70,64 @@ enum TEMcodes : TERUnderlyingType {
|
||||
// - Not forwarded
|
||||
// - Reject
|
||||
// - Cannot succeed in any imagined ledger.
|
||||
TemMalformed = -299,
|
||||
temMALFORMED = -299,
|
||||
|
||||
TemBadAmount,
|
||||
TemBadCurrency,
|
||||
TemBadExpiration,
|
||||
TemBadFee,
|
||||
TemBadIssuer,
|
||||
TemBadLimit,
|
||||
TemBadOffer,
|
||||
TemBadPath,
|
||||
TemBadPathLoop,
|
||||
TemBadRegkey,
|
||||
TemBadSendXrpLimit,
|
||||
TemBadSendXrpMax,
|
||||
TemBadSendXrpNoDirect,
|
||||
TemBadSendXrpPartial,
|
||||
TemBadSendXrpPaths,
|
||||
TemBadSequence,
|
||||
TemBadSignature,
|
||||
TemBadSrcAccount,
|
||||
TemBadTransferRate,
|
||||
TemDstIsSrc,
|
||||
TemDstNeeded,
|
||||
TemInvalid,
|
||||
TemInvalidFlag,
|
||||
TemRedundant,
|
||||
TemRippleEmpty,
|
||||
TemDisabled,
|
||||
TemBadSigner,
|
||||
TemBadQuorum,
|
||||
TemBadWeight,
|
||||
TemBadTickSize,
|
||||
TemInvalidAccountId,
|
||||
TemCannotPreauthSelf,
|
||||
TemInvalidCount,
|
||||
temBAD_AMOUNT,
|
||||
temBAD_CURRENCY,
|
||||
temBAD_EXPIRATION,
|
||||
temBAD_FEE,
|
||||
temBAD_ISSUER,
|
||||
temBAD_LIMIT,
|
||||
temBAD_OFFER,
|
||||
temBAD_PATH,
|
||||
temBAD_PATH_LOOP,
|
||||
temBAD_REGKEY,
|
||||
temBAD_SEND_XRP_LIMIT,
|
||||
temBAD_SEND_XRP_MAX,
|
||||
temBAD_SEND_XRP_NO_DIRECT,
|
||||
temBAD_SEND_XRP_PARTIAL,
|
||||
temBAD_SEND_XRP_PATHS,
|
||||
temBAD_SEQUENCE,
|
||||
temBAD_SIGNATURE,
|
||||
temBAD_SRC_ACCOUNT,
|
||||
temBAD_TRANSFER_RATE,
|
||||
temDST_IS_SRC,
|
||||
temDST_NEEDED,
|
||||
temINVALID,
|
||||
temINVALID_FLAG,
|
||||
temREDUNDANT,
|
||||
temRIPPLE_EMPTY,
|
||||
temDISABLED,
|
||||
temBAD_SIGNER,
|
||||
temBAD_QUORUM,
|
||||
temBAD_WEIGHT,
|
||||
temBAD_TICK_SIZE,
|
||||
temINVALID_ACCOUNT_ID,
|
||||
temCANNOT_PREAUTH_SELF,
|
||||
temINVALID_COUNT,
|
||||
|
||||
TemUncertain, // An internal intermediate result; should never be returned.
|
||||
TemUnknown, // An internal intermediate result; should never be returned.
|
||||
temUNCERTAIN, // An internal intermediate result; should never be returned.
|
||||
temUNKNOWN, // An internal intermediate result; should never be returned.
|
||||
|
||||
TemSeqAndTicket,
|
||||
TemBadNftokenTransferFee,
|
||||
temSEQ_AND_TICKET,
|
||||
temBAD_NFTOKEN_TRANSFER_FEE,
|
||||
|
||||
TemBadAmmTokens,
|
||||
temBAD_AMM_TOKENS,
|
||||
|
||||
TemXchainEqualDoorAccounts,
|
||||
TemXchainBadProof,
|
||||
TemXchainBridgeBadIssues,
|
||||
TemXchainBridgeNondoorOwner,
|
||||
TemXchainBridgeBadMinAccountCreateAmount,
|
||||
TemXchainBridgeBadRewardAmount,
|
||||
temXCHAIN_EQUAL_DOOR_ACCOUNTS,
|
||||
temXCHAIN_BAD_PROOF,
|
||||
temXCHAIN_BRIDGE_BAD_ISSUES,
|
||||
temXCHAIN_BRIDGE_NONDOOR_OWNER,
|
||||
temXCHAIN_BRIDGE_BAD_MIN_ACCOUNT_CREATE_AMOUNT,
|
||||
temXCHAIN_BRIDGE_BAD_REWARD_AMOUNT,
|
||||
|
||||
TemEmptyDid,
|
||||
temEMPTY_DID,
|
||||
|
||||
TemArrayEmpty,
|
||||
TemArrayTooLarge,
|
||||
TemBadTransferFee,
|
||||
TemInvalidInnerBatch,
|
||||
TemBadMpt,
|
||||
temARRAY_EMPTY,
|
||||
temARRAY_TOO_LARGE,
|
||||
temBAD_TRANSFER_FEE,
|
||||
temINVALID_INNER_BATCH,
|
||||
temBAD_MPT,
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -152,28 +152,28 @@ enum TEFcodes : TERUnderlyingType {
|
||||
// - Not applied
|
||||
// - Not forwarded
|
||||
// - Could succeed in an imagined ledger.
|
||||
TefFailure = -199,
|
||||
TefAlready,
|
||||
TefBadAddAuth,
|
||||
TefBadAuth,
|
||||
TefBadLedger,
|
||||
TefCreated,
|
||||
TefException,
|
||||
TefInternal,
|
||||
TefNoAuthRequired, // Can't set auth if auth is not required.
|
||||
TefPastSeq,
|
||||
TefWrongPrior,
|
||||
TefMasterDisabled,
|
||||
TefMaxLedger,
|
||||
TefBadSignature,
|
||||
TefBadQuorum,
|
||||
TefNotMultiSigning,
|
||||
TefBadAuthMaster,
|
||||
TefInvariantFailed,
|
||||
TefTooBig,
|
||||
TefNoTicket,
|
||||
TefNftokenIsNotTransferable,
|
||||
TefInvalidLedgerFixType,
|
||||
tefFAILURE = -199,
|
||||
tefALREADY,
|
||||
tefBAD_ADD_AUTH,
|
||||
tefBAD_AUTH,
|
||||
tefBAD_LEDGER,
|
||||
tefCREATED,
|
||||
tefEXCEPTION,
|
||||
tefINTERNAL,
|
||||
tefNO_AUTH_REQUIRED, // Can't set auth if auth is not required.
|
||||
tefPAST_SEQ,
|
||||
tefWRONG_PRIOR,
|
||||
tefMASTER_DISABLED,
|
||||
tefMAX_LEDGER,
|
||||
tefBAD_SIGNATURE,
|
||||
tefBAD_QUORUM,
|
||||
tefNOT_MULTI_SIGNING,
|
||||
tefBAD_AUTH_MASTER,
|
||||
tefINVARIANT_FAILED,
|
||||
tefTOO_BIG,
|
||||
tefNO_TICKET,
|
||||
tefNFTOKEN_IS_NOT_TRANSFERABLE,
|
||||
tefINVALID_LEDGER_FIX_TYPE,
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -202,24 +202,24 @@ enum TERcodes : TERUnderlyingType {
|
||||
// - Might succeed later
|
||||
// - Hold
|
||||
// - Makes hole in sequence which jams transactions.
|
||||
TerRetry = -99,
|
||||
TerFundsSpent, // DEPRECATED.
|
||||
TerInsufFeeB, // Can't pay fee, therefore don't burden network.
|
||||
TerNoAccount, // Can't pay fee, therefore don't burden network.
|
||||
TerNoAuth, // Not authorized to hold IOUs.
|
||||
TerNoLine, // Internal flag.
|
||||
TerOwners, // Can't succeed with non-zero owner count.
|
||||
TerPreSeq, // Can't pay fee, no point in forwarding, so don't
|
||||
// burden network.
|
||||
TerLast, // DEPRECATED.
|
||||
TerNoRipple, // Rippling not allowed
|
||||
TerQueued, // Transaction is being held in TxQ until fee drops
|
||||
TerPreTicket, // Ticket is not yet in ledger but might be on its way
|
||||
TerNoAmm, // AMM doesn't exist for the asset pair
|
||||
TerAddressCollision, // Failed to allocate AccountID when trying to
|
||||
// create a pseudo-account
|
||||
TerNoDelegatePermission, // Delegate does not have permission
|
||||
TerLocked, // MPT is locked
|
||||
terRETRY = -99,
|
||||
terFUNDS_SPENT, // DEPRECATED.
|
||||
terINSUF_FEE_B, // Can't pay fee, therefore don't burden network.
|
||||
terNO_ACCOUNT, // Can't pay fee, therefore don't burden network.
|
||||
terNO_AUTH, // Not authorized to hold IOUs.
|
||||
terNO_LINE, // Internal flag.
|
||||
terOWNERS, // Can't succeed with non-zero owner count.
|
||||
terPRE_SEQ, // Can't pay fee, no point in forwarding, so don't
|
||||
// burden network.
|
||||
terLAST, // DEPRECATED.
|
||||
terNO_RIPPLE, // Rippling not allowed
|
||||
terQUEUED, // Transaction is being held in TxQ until fee drops
|
||||
terPRE_TICKET, // Ticket is not yet in ledger but might be on its way
|
||||
terNO_AMM, // AMM doesn't exist for the asset pair
|
||||
terADDRESS_COLLISION, // Failed to allocate AccountID when trying to
|
||||
// create a pseudo-account
|
||||
terNO_DELEGATE_PERMISSION, // Delegate does not have permission
|
||||
terLOCKED, // MPT is locked
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -236,7 +236,7 @@ enum TEScodes : TERUnderlyingType {
|
||||
// Implications:
|
||||
// - Applied
|
||||
// - Forwarded
|
||||
TesSuccess = 0
|
||||
tesSUCCESS = 0
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -275,89 +275,89 @@ enum TECcodes : TERUnderlyingType {
|
||||
// - tecOBJECT_NOT_FOUND : cannot find the additional object(s) needed to
|
||||
// complete the transaction
|
||||
|
||||
TecClaim = 100,
|
||||
TecPathPartial = 101,
|
||||
TecUnfundedAdd = 102, // Unused legacy code
|
||||
TecUnfundedOffer = 103,
|
||||
TecUnfundedPayment = 104,
|
||||
TecFailedProcessing = 105,
|
||||
TecDirFull = 121,
|
||||
TecInsufReserveLine = 122,
|
||||
TecInsufReserveOffer = 123,
|
||||
TecNoDst = 124,
|
||||
TecNoDstInsufXrp = 125,
|
||||
TecNoLineInsufReserve = 126,
|
||||
TecNoLineRedundant = 127,
|
||||
TecPathDry = 128,
|
||||
TecUnfunded = 129,
|
||||
TecNoAlternativeKey = 130,
|
||||
TecNoRegularKey = 131,
|
||||
TecOwners = 132,
|
||||
TecNoIssuer = 133,
|
||||
TecNoAuth = 134,
|
||||
TecNoLine = 135,
|
||||
TecInsuffFee = 136,
|
||||
TecFrozen = 137,
|
||||
TecNoTarget = 138,
|
||||
TecNoPermission = 139,
|
||||
TecNoEntry = 140,
|
||||
TecInsufficientReserve = 141,
|
||||
TecNeedMasterKey = 142,
|
||||
TecDstTagNeeded = 143,
|
||||
TecInternal = 144,
|
||||
TecOversize = 145,
|
||||
TecCryptoconditionError = 146,
|
||||
TecInvariantFailed = 147,
|
||||
TecExpired = 148,
|
||||
TecDuplicate = 149,
|
||||
TecKilled = 150,
|
||||
TecHasObligations = 151,
|
||||
TecTooSoon = 152,
|
||||
TecHookRejected [[maybe_unused]] = 153,
|
||||
TecMaxSequenceReached = 154,
|
||||
TecNoSuitableNftokenPage = 155,
|
||||
TecNftokenBuySellMismatch = 156,
|
||||
TecNftokenOfferTypeMismatch = 157,
|
||||
TecCantAcceptOwnNftokenOffer = 158,
|
||||
TecInsufficientFunds = 159,
|
||||
TecObjectNotFound = 160,
|
||||
TecInsufficientPayment = 161,
|
||||
TecUnfundedAmm = 162,
|
||||
TecAmmBalance = 163,
|
||||
TecAmmFailed = 164,
|
||||
TecAmmInvalidTokens = 165,
|
||||
TecAmmEmpty = 166,
|
||||
TecAmmNotEmpty = 167,
|
||||
TecAmmAccount = 168,
|
||||
TecIncomplete = 169,
|
||||
TecXchainBadTransferIssue = 170,
|
||||
TecXchainNoClaimId = 171,
|
||||
TecXchainBadClaimId = 172,
|
||||
TecXchainClaimNoQuorum = 173,
|
||||
TecXchainProofUnknownKey = 174,
|
||||
TecXchainCreateAccountNonxrpIssue = 175,
|
||||
TecXchainWrongChain = 176,
|
||||
TecXchainRewardMismatch = 177,
|
||||
TecXchainNoSignersList = 178,
|
||||
TecXchainSendingAccountMismatch = 179,
|
||||
TecXchainInsuffCreateAmount = 180,
|
||||
TecXchainAccountCreatePast = 181,
|
||||
TecXchainAccountCreateTooMany = 182,
|
||||
TecXchainPaymentFailed = 183,
|
||||
TecXchainSelfCommit = 184,
|
||||
TecXchainBadPublicKeyAccountPair = 185,
|
||||
TecXchainCreateAccountDisabled = 186,
|
||||
TecEmptyDid = 187,
|
||||
TecInvalidUpdateTime = 188,
|
||||
TecTokenPairNotFound = 189,
|
||||
TecArrayEmpty = 190,
|
||||
TecArrayTooLarge = 191,
|
||||
TecLocked = 192,
|
||||
TecBadCredentials = 193,
|
||||
TecWrongAsset = 194,
|
||||
TecLimitExceeded = 195,
|
||||
TecPseudoAccount = 196,
|
||||
TecPrecisionLoss = 197,
|
||||
tecCLAIM = 100,
|
||||
tecPATH_PARTIAL = 101,
|
||||
tecUNFUNDED_ADD = 102, // Unused legacy code
|
||||
tecUNFUNDED_OFFER = 103,
|
||||
tecUNFUNDED_PAYMENT = 104,
|
||||
tecFAILED_PROCESSING = 105,
|
||||
tecDIR_FULL = 121,
|
||||
tecINSUF_RESERVE_LINE = 122,
|
||||
tecINSUF_RESERVE_OFFER = 123,
|
||||
tecNO_DST = 124,
|
||||
tecNO_DST_INSUF_XRP = 125,
|
||||
tecNO_LINE_INSUF_RESERVE = 126,
|
||||
tecNO_LINE_REDUNDANT = 127,
|
||||
tecPATH_DRY = 128,
|
||||
tecUNFUNDED = 129,
|
||||
tecNO_ALTERNATIVE_KEY = 130,
|
||||
tecNO_REGULAR_KEY = 131,
|
||||
tecOWNERS = 132,
|
||||
tecNO_ISSUER = 133,
|
||||
tecNO_AUTH = 134,
|
||||
tecNO_LINE = 135,
|
||||
tecINSUFF_FEE = 136,
|
||||
tecFROZEN = 137,
|
||||
tecNO_TARGET = 138,
|
||||
tecNO_PERMISSION = 139,
|
||||
tecNO_ENTRY = 140,
|
||||
tecINSUFFICIENT_RESERVE = 141,
|
||||
tecNEED_MASTER_KEY = 142,
|
||||
tecDST_TAG_NEEDED = 143,
|
||||
tecINTERNAL = 144,
|
||||
tecOVERSIZE = 145,
|
||||
tecCRYPTOCONDITION_ERROR = 146,
|
||||
tecINVARIANT_FAILED = 147,
|
||||
tecEXPIRED = 148,
|
||||
tecDUPLICATE = 149,
|
||||
tecKILLED = 150,
|
||||
tecHAS_OBLIGATIONS = 151,
|
||||
tecTOO_SOON = 152,
|
||||
tecHOOK_REJECTED [[maybe_unused]] = 153,
|
||||
tecMAX_SEQUENCE_REACHED = 154,
|
||||
tecNO_SUITABLE_NFTOKEN_PAGE = 155,
|
||||
tecNFTOKEN_BUY_SELL_MISMATCH = 156,
|
||||
tecNFTOKEN_OFFER_TYPE_MISMATCH = 157,
|
||||
tecCANT_ACCEPT_OWN_NFTOKEN_OFFER = 158,
|
||||
tecINSUFFICIENT_FUNDS = 159,
|
||||
tecOBJECT_NOT_FOUND = 160,
|
||||
tecINSUFFICIENT_PAYMENT = 161,
|
||||
tecUNFUNDED_AMM = 162,
|
||||
tecAMM_BALANCE = 163,
|
||||
tecAMM_FAILED = 164,
|
||||
tecAMM_INVALID_TOKENS = 165,
|
||||
tecAMM_EMPTY = 166,
|
||||
tecAMM_NOT_EMPTY = 167,
|
||||
tecAMM_ACCOUNT = 168,
|
||||
tecINCOMPLETE = 169,
|
||||
tecXCHAIN_BAD_TRANSFER_ISSUE = 170,
|
||||
tecXCHAIN_NO_CLAIM_ID = 171,
|
||||
tecXCHAIN_BAD_CLAIM_ID = 172,
|
||||
tecXCHAIN_CLAIM_NO_QUORUM = 173,
|
||||
tecXCHAIN_PROOF_UNKNOWN_KEY = 174,
|
||||
tecXCHAIN_CREATE_ACCOUNT_NONXRP_ISSUE = 175,
|
||||
tecXCHAIN_WRONG_CHAIN = 176,
|
||||
tecXCHAIN_REWARD_MISMATCH = 177,
|
||||
tecXCHAIN_NO_SIGNERS_LIST = 178,
|
||||
tecXCHAIN_SENDING_ACCOUNT_MISMATCH = 179,
|
||||
tecXCHAIN_INSUFF_CREATE_AMOUNT = 180,
|
||||
tecXCHAIN_ACCOUNT_CREATE_PAST = 181,
|
||||
tecXCHAIN_ACCOUNT_CREATE_TOO_MANY = 182,
|
||||
tecXCHAIN_PAYMENT_FAILED = 183,
|
||||
tecXCHAIN_SELF_COMMIT = 184,
|
||||
tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR = 185,
|
||||
tecXCHAIN_CREATE_ACCOUNT_DISABLED = 186,
|
||||
tecEMPTY_DID = 187,
|
||||
tecINVALID_UPDATE_TIME = 188,
|
||||
tecTOKEN_PAIR_NOT_FOUND = 189,
|
||||
tecARRAY_EMPTY = 190,
|
||||
tecARRAY_TOO_LARGE = 191,
|
||||
tecLOCKED = 192,
|
||||
tecBAD_CREDENTIALS = 193,
|
||||
tecWRONG_ASSET = 194,
|
||||
tecLIMIT_EXCEEDED = 195,
|
||||
tecPSEUDO_ACCOUNT = 196,
|
||||
tecPRECISION_LOSS = 197,
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -370,7 +370,7 @@ TERtoInt(TELcodes v)
|
||||
}
|
||||
|
||||
constexpr TERUnderlyingType
|
||||
teRtoInt(TEMcodes v)
|
||||
TERtoInt(TEMcodes v)
|
||||
{
|
||||
return safeCast<TERUnderlyingType>(v);
|
||||
}
|
||||
@@ -409,7 +409,7 @@ class TERSubset
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
constexpr TERSubset() : code_(TesSuccess)
|
||||
constexpr TERSubset() : code_(tesSUCCESS)
|
||||
{
|
||||
}
|
||||
constexpr TERSubset(TERSubset const& rhs) = default;
|
||||
@@ -431,7 +431,7 @@ public:
|
||||
template <
|
||||
typename T,
|
||||
typename = std::enable_if_t<Trait<std::remove_cv_t<std::remove_reference_t<T>>>::value>>
|
||||
constexpr TERSubset(T rhs) : code_(teRtoInt(rhs))
|
||||
constexpr TERSubset(T rhs) : code_(TERtoInt(rhs))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -454,7 +454,7 @@ public:
|
||||
explicit
|
||||
operator bool() const
|
||||
{
|
||||
return code_ != TesSuccess;
|
||||
return code_ != tesSUCCESS;
|
||||
}
|
||||
|
||||
// Conversion to json::Value allows assignment to json::Objects
|
||||
@@ -488,7 +488,7 @@ public:
|
||||
// (unnamed) conversion to int. To avoid silent conversions like these
|
||||
// we provide (only) a named conversion.
|
||||
friend constexpr TERUnderlyingType
|
||||
teRtoInt(TERSubset v)
|
||||
TERtoInt(TERSubset v)
|
||||
{
|
||||
return v.code_;
|
||||
}
|
||||
@@ -499,28 +499,28 @@ public:
|
||||
template <typename L, typename R>
|
||||
constexpr auto
|
||||
operator==(L const& lhs, R const& rhs) -> std::enable_if_t<
|
||||
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
|
||||
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
|
||||
bool>
|
||||
{
|
||||
return teRtoInt(lhs) == TERtoInt(rhs);
|
||||
return TERtoInt(lhs) == TERtoInt(rhs);
|
||||
}
|
||||
|
||||
template <typename L, typename R>
|
||||
constexpr auto
|
||||
operator!=(L const& lhs, R const& rhs) -> std::enable_if_t<
|
||||
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
|
||||
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
|
||||
bool>
|
||||
{
|
||||
return teRtoInt(lhs) != TERtoInt(rhs);
|
||||
return TERtoInt(lhs) != TERtoInt(rhs);
|
||||
}
|
||||
|
||||
template <typename L, typename R>
|
||||
constexpr auto
|
||||
operator<(L const& lhs, R const& rhs) -> std::enable_if_t<
|
||||
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(teRtoInt(rhs)), int>,
|
||||
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
|
||||
bool>
|
||||
{
|
||||
return teRtoInt(lhs) < teRtoInt(rhs);
|
||||
return TERtoInt(lhs) < TERtoInt(rhs);
|
||||
}
|
||||
|
||||
template <typename L, typename R>
|
||||
@@ -544,10 +544,10 @@ operator>(L const& lhs, R const& rhs) -> std::enable_if_t<
|
||||
template <typename L, typename R>
|
||||
constexpr auto
|
||||
operator>=(L const& lhs, R const& rhs) -> std::enable_if_t<
|
||||
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(teRtoInt(rhs)), int>,
|
||||
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
|
||||
bool>
|
||||
{
|
||||
return teRtoInt(lhs) >= teRtoInt(rhs);
|
||||
return TERtoInt(lhs) >= TERtoInt(rhs);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -632,25 +632,25 @@ using TER = TERSubset<CanCvtToTER>;
|
||||
inline bool
|
||||
isTelLocal(TER x) noexcept
|
||||
{
|
||||
return (x >= TelLocalError && x < TemMalformed);
|
||||
return (x >= telLOCAL_ERROR && x < temMALFORMED);
|
||||
}
|
||||
|
||||
inline bool
|
||||
isTemMalformed(TER x) noexcept
|
||||
{
|
||||
return (x >= TemMalformed && x < TefFailure);
|
||||
return (x >= temMALFORMED && x < tefFAILURE);
|
||||
}
|
||||
|
||||
inline bool
|
||||
isTefFailure(TER x) noexcept
|
||||
{
|
||||
return (x >= TefFailure && x < TerRetry);
|
||||
return (x >= tefFAILURE && x < terRETRY);
|
||||
}
|
||||
|
||||
inline bool
|
||||
isTerRetry(TER x) noexcept
|
||||
{
|
||||
return (x >= TerRetry && x < TesSuccess);
|
||||
return (x >= terRETRY && x < tesSUCCESS);
|
||||
}
|
||||
|
||||
inline bool
|
||||
@@ -663,7 +663,7 @@ isTesSuccess(TER x) noexcept
|
||||
inline bool
|
||||
isTecClaim(TER x) noexcept
|
||||
{
|
||||
return ((x) >= TecClaim);
|
||||
return ((x) >= tecCLAIM);
|
||||
}
|
||||
|
||||
std::unordered_map<TERUnderlyingType, std::pair<char const* const, char const* const>> const&
|
||||
|
||||
@@ -39,10 +39,10 @@ namespace xrpl {
|
||||
using FlagValue = std::uint32_t;
|
||||
|
||||
// Universal Transaction flags:
|
||||
inline constexpr FlagValue kTF_FULLY_CANONICAL_SIG = 0x80000000;
|
||||
inline constexpr FlagValue kTF_INNER_BATCH_TXN = 0x40000000;
|
||||
inline constexpr FlagValue tfUniversal = kTF_FULLY_CANONICAL_SIG | kTF_INNER_BATCH_TXN;
|
||||
inline constexpr FlagValue kTF_UNIVERSAL_MASK = ~tfUniversal;
|
||||
inline constexpr FlagValue tfFullyCanonicalSig = 0x80000000;
|
||||
inline constexpr FlagValue tfInnerBatchTxn = 0x40000000;
|
||||
inline constexpr FlagValue tfUniversal = tfFullyCanonicalSig | tfInnerBatchTxn;
|
||||
inline constexpr FlagValue tfUniversalMask = ~tfUniversal;
|
||||
|
||||
#pragma push_macro("XMACRO")
|
||||
#pragma push_macro("TO_VALUE")
|
||||
@@ -83,137 +83,137 @@ inline constexpr FlagValue kTF_UNIVERSAL_MASK = ~tfUniversal;
|
||||
// TODO: Consider rewriting this using reflection in C++26 or later. Alternatively this could be a DSL processed by a script at build time.
|
||||
#define XMACRO(TRANSACTION, TF_FLAG, TF_FLAG2, MASK_ADJ) \
|
||||
TRANSACTION(AccountSet, \
|
||||
TF_FLAG(kTF_REQUIRE_DEST_TAG, 0x00010000) \
|
||||
TF_FLAG(kTF_OPTIONAL_DEST_TAG, 0x00020000) \
|
||||
TF_FLAG(kTF_REQUIRE_AUTH, 0x00040000) \
|
||||
TF_FLAG(kTF_OPTIONAL_AUTH, 0x00080000) \
|
||||
TF_FLAG(kTF_DISALLOW_XRP, 0x00100000) \
|
||||
TF_FLAG(kTF_ALLOW_XRP, 0x00200000), \
|
||||
TF_FLAG(tfRequireDestTag, 0x00010000) \
|
||||
TF_FLAG(tfOptionalDestTag, 0x00020000) \
|
||||
TF_FLAG(tfRequireAuth, 0x00040000) \
|
||||
TF_FLAG(tfOptionalAuth, 0x00080000) \
|
||||
TF_FLAG(tfDisallowXRP, 0x00100000) \
|
||||
TF_FLAG(tfAllowXRP, 0x00200000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(OfferCreate, \
|
||||
TF_FLAG(kTF_PASSIVE, 0x00010000) \
|
||||
TF_FLAG(kTF_IMMEDIATE_OR_CANCEL, 0x00020000) \
|
||||
TF_FLAG(kTF_FILL_OR_KILL, 0x00040000) \
|
||||
TF_FLAG(kTF_SELL, 0x00080000) \
|
||||
TF_FLAG(kTF_HYBRID, 0x00100000), \
|
||||
TF_FLAG(tfPassive, 0x00010000) \
|
||||
TF_FLAG(tfImmediateOrCancel, 0x00020000) \
|
||||
TF_FLAG(tfFillOrKill, 0x00040000) \
|
||||
TF_FLAG(tfSell, 0x00080000) \
|
||||
TF_FLAG(tfHybrid, 0x00100000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(Payment, \
|
||||
TF_FLAG(kTF_NO_RIPPLE_DIRECT, 0x00010000) \
|
||||
TF_FLAG(kTF_PARTIAL_PAYMENT, 0x00020000) \
|
||||
TF_FLAG(kTF_LIMIT_QUALITY, 0x00040000), \
|
||||
TF_FLAG(tfNoRippleDirect, 0x00010000) \
|
||||
TF_FLAG(tfPartialPayment, 0x00020000) \
|
||||
TF_FLAG(tfLimitQuality, 0x00040000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(TrustSet, \
|
||||
TF_FLAG(kTF_SETF_AUTH, 0x00010000) \
|
||||
TF_FLAG(kTF_SET_NO_RIPPLE, 0x00020000) \
|
||||
TF_FLAG(kTF_CLEAR_NO_RIPPLE, 0x00040000) \
|
||||
TF_FLAG(kTF_SET_FREEZE, 0x00100000) \
|
||||
TF_FLAG(kTF_CLEAR_FREEZE, 0x00200000) \
|
||||
TF_FLAG(kTF_SET_DEEP_FREEZE, 0x00400000) \
|
||||
TF_FLAG(kTF_CLEAR_DEEP_FREEZE, 0x00800000), \
|
||||
TF_FLAG(tfSetfAuth, 0x00010000) \
|
||||
TF_FLAG(tfSetNoRipple, 0x00020000) \
|
||||
TF_FLAG(tfClearNoRipple, 0x00040000) \
|
||||
TF_FLAG(tfSetFreeze, 0x00100000) \
|
||||
TF_FLAG(tfClearFreeze, 0x00200000) \
|
||||
TF_FLAG(tfSetDeepFreeze, 0x00400000) \
|
||||
TF_FLAG(tfClearDeepFreeze, 0x00800000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(EnableAmendment, \
|
||||
TF_FLAG(kTF_GOT_MAJORITY, 0x00010000) \
|
||||
TF_FLAG(kTF_LOST_MAJORITY, 0x00020000), \
|
||||
TF_FLAG(tfGotMajority, 0x00010000) \
|
||||
TF_FLAG(tfLostMajority, 0x00020000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(PaymentChannelClaim, \
|
||||
TF_FLAG(kTF_RENEW, 0x00010000) \
|
||||
TF_FLAG(kTF_CLOSE, 0x00020000), \
|
||||
TF_FLAG(tfRenew, 0x00010000) \
|
||||
TF_FLAG(tfClose, 0x00020000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(NFTokenMint, \
|
||||
TF_FLAG(kTF_BURNABLE, 0x00000001) \
|
||||
TF_FLAG(kTF_ONLY_XRP, 0x00000002) \
|
||||
TF_FLAG(tfBurnable, 0x00000001) \
|
||||
TF_FLAG(tfOnlyXRP, 0x00000002) \
|
||||
/* deprecated TF_FLAG(tfTrustLine, 0x00000004) */ \
|
||||
TF_FLAG(kTF_TRANSFERABLE, 0x00000008) \
|
||||
TF_FLAG(kTF_MUTABLE, 0x00000010), \
|
||||
TF_FLAG(tfTransferable, 0x00000008) \
|
||||
TF_FLAG(tfMutable, 0x00000010), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(MPTokenIssuanceCreate, \
|
||||
/* Note: tf/lsfMPTLocked is intentionally omitted since this transaction is not allowed to modify it. */ \
|
||||
TF_FLAG(kTF_MPT_CAN_LOCK, LsfMptCanLock) \
|
||||
TF_FLAG(kTF_MPT_REQUIRE_AUTH, LsfMptRequireAuth) \
|
||||
TF_FLAG(kTF_MPT_CAN_ESCROW, LsfMptCanEscrow) \
|
||||
TF_FLAG(kTF_MPT_CAN_TRADE, LsfMptCanTrade) \
|
||||
TF_FLAG(kTF_MPT_CAN_TRANSFER, LsfMptCanTransfer) \
|
||||
TF_FLAG(kTF_MPT_CAN_CLAWBACK, LsfMptCanClawback), \
|
||||
TF_FLAG(tfMPTCanLock, lsfMPTCanLock) \
|
||||
TF_FLAG(tfMPTRequireAuth, lsfMPTRequireAuth) \
|
||||
TF_FLAG(tfMPTCanEscrow, lsfMPTCanEscrow) \
|
||||
TF_FLAG(tfMPTCanTrade, lsfMPTCanTrade) \
|
||||
TF_FLAG(tfMPTCanTransfer, lsfMPTCanTransfer) \
|
||||
TF_FLAG(tfMPTCanClawback, lsfMPTCanClawback), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(MPTokenAuthorize, \
|
||||
TF_FLAG(kTF_MPT_UNAUTHORIZE, 0x00000001), \
|
||||
TF_FLAG(tfMPTUnauthorize, 0x00000001), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(MPTokenIssuanceSet, \
|
||||
TF_FLAG(kTF_MPT_LOCK, 0x00000001) \
|
||||
TF_FLAG(kTF_MPT_UNLOCK, 0x00000002), \
|
||||
TF_FLAG(tfMPTLock, 0x00000001) \
|
||||
TF_FLAG(tfMPTUnlock, 0x00000002), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(NFTokenCreateOffer, \
|
||||
TF_FLAG(kTF_SELL_NF_TOKEN, 0x00000001), \
|
||||
TF_FLAG(tfSellNFToken, 0x00000001), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(AMMDeposit, \
|
||||
TF_FLAG(kTF_LP_TOKEN, 0x00010000) \
|
||||
TF_FLAG(kTF_SINGLE_ASSET, 0x00080000) \
|
||||
TF_FLAG(kTF_TWO_ASSET, 0x00100000) \
|
||||
TF_FLAG(kTF_ONE_ASSET_LP_TOKEN, 0x00200000) \
|
||||
TF_FLAG(kTF_LIMIT_LP_TOKEN, 0x00400000) \
|
||||
TF_FLAG(kTF_TWO_ASSET_IF_EMPTY, 0x00800000), \
|
||||
TF_FLAG(tfLPToken, 0x00010000) \
|
||||
TF_FLAG(tfSingleAsset, 0x00080000) \
|
||||
TF_FLAG(tfTwoAsset, 0x00100000) \
|
||||
TF_FLAG(tfOneAssetLPToken, 0x00200000) \
|
||||
TF_FLAG(tfLimitLPToken, 0x00400000) \
|
||||
TF_FLAG(tfTwoAssetIfEmpty, 0x00800000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(AMMWithdraw, \
|
||||
TF_FLAG2(kTF_LP_TOKEN, 0x00010000) \
|
||||
TF_FLAG(kTF_WITHDRAW_ALL, 0x00020000) \
|
||||
TF_FLAG(kTF_ONE_ASSET_WITHDRAW_ALL, 0x00040000) \
|
||||
TF_FLAG2(kTF_SINGLE_ASSET, 0x00080000) \
|
||||
TF_FLAG2(kTF_TWO_ASSET, 0x00100000) \
|
||||
TF_FLAG2(kTF_ONE_ASSET_LP_TOKEN, 0x00200000) \
|
||||
TF_FLAG2(kTF_LIMIT_LP_TOKEN, 0x00400000), \
|
||||
TF_FLAG2(tfLPToken, 0x00010000) \
|
||||
TF_FLAG(tfWithdrawAll, 0x00020000) \
|
||||
TF_FLAG(tfOneAssetWithdrawAll, 0x00040000) \
|
||||
TF_FLAG2(tfSingleAsset, 0x00080000) \
|
||||
TF_FLAG2(tfTwoAsset, 0x00100000) \
|
||||
TF_FLAG2(tfOneAssetLPToken, 0x00200000) \
|
||||
TF_FLAG2(tfLimitLPToken, 0x00400000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(AMMClawback, \
|
||||
TF_FLAG(kTF_CLAW_TWO_ASSETS, 0x00000001), \
|
||||
TF_FLAG(tfClawTwoAssets, 0x00000001), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(XChainModifyBridge, \
|
||||
TF_FLAG(kTF_CLEAR_ACCOUNT_CREATE_AMOUNT, 0x00010000), \
|
||||
TF_FLAG(tfClearAccountCreateAmount, 0x00010000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(VaultCreate, \
|
||||
TF_FLAG(kTF_VAULT_PRIVATE, LsfVaultPrivate) \
|
||||
TF_FLAG(kTF_VAULT_SHARE_NON_TRANSFERABLE, 0x00020000), \
|
||||
TF_FLAG(tfVaultPrivate, lsfVaultPrivate) \
|
||||
TF_FLAG(tfVaultShareNonTransferable, 0x00020000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(Batch, \
|
||||
TF_FLAG(kTF_ALL_OR_NOTHING, 0x00010000) \
|
||||
TF_FLAG(kTF_ONLY_ONE, 0x00020000) \
|
||||
TF_FLAG(kTF_UNTIL_FAILURE, 0x00040000) \
|
||||
TF_FLAG(kTF_INDEPENDENT, 0x00080000), \
|
||||
MASK_ADJ(kTF_INNER_BATCH_TXN)) /* Batch must reject tfInnerBatchTxn - only inner transactions should have this flag */ \
|
||||
TF_FLAG(tfAllOrNothing, 0x00010000) \
|
||||
TF_FLAG(tfOnlyOne, 0x00020000) \
|
||||
TF_FLAG(tfUntilFailure, 0x00040000) \
|
||||
TF_FLAG(tfIndependent, 0x00080000), \
|
||||
MASK_ADJ(tfInnerBatchTxn)) /* Batch must reject tfInnerBatchTxn - only inner transactions should have this flag */ \
|
||||
\
|
||||
TRANSACTION(LoanSet, /* True indicates the loan supports overpayments */ \
|
||||
TF_FLAG(kTF_LOAN_OVERPAYMENT, 0x00010000), \
|
||||
TF_FLAG(tfLoanOverpayment, 0x00010000), \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(LoanPay, /* True indicates any excess in this payment can be used as an overpayment. */ \
|
||||
/* False: no overpayments will be taken. */ \
|
||||
TF_FLAG2(kTF_LOAN_OVERPAYMENT, 0x00010000) \
|
||||
TF_FLAG(kTF_LOAN_FULL_PAYMENT, 0x00020000) /* True indicates that the payment is an early full payment. */ \
|
||||
TF_FLAG2(tfLoanOverpayment, 0x00010000) \
|
||||
TF_FLAG(tfLoanFullPayment, 0x00020000) /* True indicates that the payment is an early full payment. */ \
|
||||
/* It must pay the entire loan including close interest and fees, or it will fail. */ \
|
||||
/* False: Not a full payment. */ \
|
||||
TF_FLAG(kTF_LOAN_LATE_PAYMENT, 0x00040000), /* True indicates that the payment is late, and includes late interest and fees. */ \
|
||||
TF_FLAG(tfLoanLatePayment, 0x00040000), /* True indicates that the payment is late, and includes late interest and fees. */ \
|
||||
/* If the loan is not late, it will fail. */ \
|
||||
/* False: not a late payment. If the current payment is overdue, the transaction will fail.*/ \
|
||||
MASK_ADJ(0)) \
|
||||
\
|
||||
TRANSACTION(LoanManage, \
|
||||
TF_FLAG(kTF_LOAN_DEFAULT, 0x00010000) \
|
||||
TF_FLAG(kTF_LOAN_IMPAIR, 0x00020000) \
|
||||
TF_FLAG(kTF_LOAN_UNIMPAIR, 0x00040000), \
|
||||
TF_FLAG(tfLoanDefault, 0x00010000) \
|
||||
TF_FLAG(tfLoanImpair, 0x00020000) \
|
||||
TF_FLAG(tfLoanUnimpair, 0x00040000), \
|
||||
MASK_ADJ(0))
|
||||
|
||||
// clang-format on
|
||||
@@ -246,16 +246,16 @@ XMACRO(TO_MASK, VALUE_TO_MASK, VALUE_TO_MASK, MASK_ADJ_TO_MASK)
|
||||
// The outer Batch transaction must NOT have tfInnerBatchTxn set; only inner transactions should
|
||||
// have it.
|
||||
static_assert(
|
||||
(tfBatchMask & kTF_INNER_BATCH_TXN) == kTF_INNER_BATCH_TXN,
|
||||
(tfBatchMask & tfInnerBatchTxn) == tfInnerBatchTxn,
|
||||
"tfBatchMask must include tfInnerBatchTxn to reject it on outer Batch");
|
||||
|
||||
// Verify that other transaction masks correctly allow tfInnerBatchTxn.
|
||||
// Inner transactions need tfInnerBatchTxn to be valid, so these masks must not reject it.
|
||||
static_assert(
|
||||
(tfPaymentMask & kTF_INNER_BATCH_TXN) == 0,
|
||||
(tfPaymentMask & tfInnerBatchTxn) == 0,
|
||||
"tfPaymentMask must not reject tfInnerBatchTxn");
|
||||
static_assert(
|
||||
(tfAccountSetMask & kTF_INNER_BATCH_TXN) == 0,
|
||||
(tfAccountSetMask & tfInnerBatchTxn) == 0,
|
||||
"tfAccountSetMask must not reject tfInnerBatchTxn");
|
||||
|
||||
// Create getter functions for each set of flags using Meyer's singleton pattern.
|
||||
@@ -284,9 +284,9 @@ XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP, NULL_MASK_ADJ)
|
||||
inline FlagMap const&
|
||||
getUniversalFlags()
|
||||
{
|
||||
static FlagMap const kFLAGS = {
|
||||
{"tfFullyCanonicalSig", kTF_FULLY_CANONICAL_SIG}, {"tfInnerBatchTxn", kTF_INNER_BATCH_TXN}};
|
||||
return kFLAGS;
|
||||
static FlagMap const flags = {
|
||||
{"tfFullyCanonicalSig", tfFullyCanonicalSig}, {"tfInnerBatchTxn", tfInnerBatchTxn}};
|
||||
return flags;
|
||||
}
|
||||
|
||||
// Create a getter function for all transaction flag maps using Meyer's singleton pattern.
|
||||
@@ -304,10 +304,10 @@ using FlagMapPairList = std::vector<std::pair<std::string, FlagMap>>;
|
||||
inline FlagMapPairList const&
|
||||
getAllTxFlags()
|
||||
{
|
||||
static FlagMapPairList const kFLAGS = {
|
||||
static FlagMapPairList const flags = {
|
||||
{"universal", getUniversalFlags()},
|
||||
XMACRO(ALL_TX_FLAGS, NULL_OUTPUT, NULL_OUTPUT, NULL_MASK_ADJ)};
|
||||
return kFLAGS;
|
||||
return flags;
|
||||
}
|
||||
|
||||
#undef XMACRO
|
||||
@@ -335,46 +335,44 @@ getAllTxFlags()
|
||||
#pragma pop_macro("MASK_ADJ_TO_MASK")
|
||||
|
||||
// Additional transaction masks and combos
|
||||
inline constexpr FlagValue kTF_MPT_PAYMENT_MASK = ~(tfUniversal | kTF_PARTIAL_PAYMENT);
|
||||
inline constexpr FlagValue kTF_TRUST_SET_PERMISSION_MASK =
|
||||
~(tfUniversal | kTF_SETF_AUTH | kTF_SET_FREEZE | kTF_CLEAR_FREEZE);
|
||||
inline constexpr FlagValue tfMPTPaymentMask = ~(tfUniversal | tfPartialPayment);
|
||||
inline constexpr FlagValue tfTrustSetPermissionMask =
|
||||
~(tfUniversal | tfSetfAuth | tfSetFreeze | tfClearFreeze);
|
||||
|
||||
// MPTokenIssuanceCreate MutableFlags:
|
||||
// Indicating specific fields or flags may be changed after issuance.
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_LOCK = LsmfMptCanMutateCanLock;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_REQUIRE_AUTH = LsmfMptCanMutateRequireAuth;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_ESCROW = LsmfMptCanMutateCanEscrow;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_TRADE = LsmfMptCanMutateCanTrade;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_TRANSFER = LsmfMptCanMutateCanTransfer;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_CLAWBACK = LsmfMptCanMutateCanClawback;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_METADATA = LsmfMptCanMutateMetadata;
|
||||
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_TRANSFER_FEE = LsmfMptCanMutateTransferFee;
|
||||
inline constexpr FlagValue kTMF_MP_TOKEN_ISSUANCE_CREATE_MUTABLE_MASK =
|
||||
~(kTMF_MPT_CAN_MUTATE_CAN_LOCK | kTMF_MPT_CAN_MUTATE_REQUIRE_AUTH |
|
||||
kTMF_MPT_CAN_MUTATE_CAN_ESCROW | kTMF_MPT_CAN_MUTATE_CAN_TRADE |
|
||||
kTMF_MPT_CAN_MUTATE_CAN_TRANSFER | kTMF_MPT_CAN_MUTATE_CAN_CLAWBACK |
|
||||
kTMF_MPT_CAN_MUTATE_METADATA | kTMF_MPT_CAN_MUTATE_TRANSFER_FEE);
|
||||
inline constexpr FlagValue tmfMPTCanMutateCanLock = lsmfMPTCanMutateCanLock;
|
||||
inline constexpr FlagValue tmfMPTCanMutateRequireAuth = lsmfMPTCanMutateRequireAuth;
|
||||
inline constexpr FlagValue tmfMPTCanMutateCanEscrow = lsmfMPTCanMutateCanEscrow;
|
||||
inline constexpr FlagValue tmfMPTCanMutateCanTrade = lsmfMPTCanMutateCanTrade;
|
||||
inline constexpr FlagValue tmfMPTCanMutateCanTransfer = lsmfMPTCanMutateCanTransfer;
|
||||
inline constexpr FlagValue tmfMPTCanMutateCanClawback = lsmfMPTCanMutateCanClawback;
|
||||
inline constexpr FlagValue tmfMPTCanMutateMetadata = lsmfMPTCanMutateMetadata;
|
||||
inline constexpr FlagValue tmfMPTCanMutateTransferFee = lsmfMPTCanMutateTransferFee;
|
||||
inline constexpr FlagValue tmfMPTokenIssuanceCreateMutableMask =
|
||||
~(tmfMPTCanMutateCanLock | tmfMPTCanMutateRequireAuth | tmfMPTCanMutateCanEscrow |
|
||||
tmfMPTCanMutateCanTrade | tmfMPTCanMutateCanTransfer | tmfMPTCanMutateCanClawback |
|
||||
tmfMPTCanMutateMetadata | tmfMPTCanMutateTransferFee);
|
||||
|
||||
// MPTokenIssuanceSet MutableFlags:
|
||||
// Set or Clear flags.
|
||||
|
||||
inline constexpr FlagValue kTMF_MPT_SET_CAN_LOCK = 0x00000001;
|
||||
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_LOCK = 0x00000002;
|
||||
inline constexpr FlagValue kTMF_MPT_SET_REQUIRE_AUTH = 0x00000004;
|
||||
inline constexpr FlagValue kTMF_MPT_CLEAR_REQUIRE_AUTH = 0x00000008;
|
||||
inline constexpr FlagValue kTMF_MPT_SET_CAN_ESCROW = 0x00000010;
|
||||
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_ESCROW = 0x00000020;
|
||||
inline constexpr FlagValue kTMF_MPT_SET_CAN_TRADE = 0x00000040;
|
||||
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_TRADE = 0x00000080;
|
||||
inline constexpr FlagValue kTMF_MPT_SET_CAN_TRANSFER = 0x00000100;
|
||||
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_TRANSFER = 0x00000200;
|
||||
inline constexpr FlagValue kTMF_MPT_SET_CAN_CLAWBACK = 0x00000400;
|
||||
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_CLAWBACK = 0x00000800;
|
||||
inline constexpr FlagValue kTMF_MP_TOKEN_ISSUANCE_SET_MUTABLE_MASK =
|
||||
~(kTMF_MPT_SET_CAN_LOCK | kTMF_MPT_CLEAR_CAN_LOCK | kTMF_MPT_SET_REQUIRE_AUTH |
|
||||
kTMF_MPT_CLEAR_REQUIRE_AUTH | kTMF_MPT_SET_CAN_ESCROW | kTMF_MPT_CLEAR_CAN_ESCROW |
|
||||
kTMF_MPT_SET_CAN_TRADE | kTMF_MPT_CLEAR_CAN_TRADE | kTMF_MPT_SET_CAN_TRANSFER |
|
||||
kTMF_MPT_CLEAR_CAN_TRANSFER | kTMF_MPT_SET_CAN_CLAWBACK | kTMF_MPT_CLEAR_CAN_CLAWBACK);
|
||||
inline constexpr FlagValue tmfMPTSetCanLock = 0x00000001;
|
||||
inline constexpr FlagValue tmfMPTClearCanLock = 0x00000002;
|
||||
inline constexpr FlagValue tmfMPTSetRequireAuth = 0x00000004;
|
||||
inline constexpr FlagValue tmfMPTClearRequireAuth = 0x00000008;
|
||||
inline constexpr FlagValue tmfMPTSetCanEscrow = 0x00000010;
|
||||
inline constexpr FlagValue tmfMPTClearCanEscrow = 0x00000020;
|
||||
inline constexpr FlagValue tmfMPTSetCanTrade = 0x00000040;
|
||||
inline constexpr FlagValue tmfMPTClearCanTrade = 0x00000080;
|
||||
inline constexpr FlagValue tmfMPTSetCanTransfer = 0x00000100;
|
||||
inline constexpr FlagValue tmfMPTClearCanTransfer = 0x00000200;
|
||||
inline constexpr FlagValue tmfMPTSetCanClawback = 0x00000400;
|
||||
inline constexpr FlagValue tmfMPTClearCanClawback = 0x00000800;
|
||||
inline constexpr FlagValue tmfMPTokenIssuanceSetMutableMask = ~(
|
||||
tmfMPTSetCanLock | tmfMPTClearCanLock | tmfMPTSetRequireAuth | tmfMPTClearRequireAuth |
|
||||
tmfMPTSetCanEscrow | tmfMPTClearCanEscrow | tmfMPTSetCanTrade | tmfMPTClearCanTrade |
|
||||
tmfMPTSetCanTransfer | tmfMPTClearCanTransfer | tmfMPTSetCanClawback | tmfMPTClearCanClawback);
|
||||
|
||||
// Prior to fixRemoveNFTokenAutoTrustLine, transfer of an NFToken between accounts allowed a
|
||||
// TrustLine to be added to the issuer of that token without explicit permission from that issuer.
|
||||
@@ -387,46 +385,44 @@ inline constexpr FlagValue kTMF_MP_TOKEN_ISSUANCE_SET_MUTABLE_MASK =
|
||||
// The fixRemoveNFTokenAutoTrustLine amendment disables minting with the tfTrustLine flag as a way
|
||||
// to prevent the attack. But until the amendment passes we still need to keep the old behavior
|
||||
// available.
|
||||
inline constexpr FlagValue kTF_TRUST_LINE = 0x00000004; // needed for backwards compatibility
|
||||
inline constexpr FlagValue kTF_NF_TOKEN_MINT_MASK_WITHOUT_MUTABLE =
|
||||
~(tfUniversal | kTF_BURNABLE | kTF_ONLY_XRP | kTF_TRANSFERABLE);
|
||||
inline constexpr FlagValue tfTrustLine = 0x00000004; // needed for backwards compatibility
|
||||
inline constexpr FlagValue tfNFTokenMintMaskWithoutMutable =
|
||||
~(tfUniversal | tfBurnable | tfOnlyXRP | tfTransferable);
|
||||
|
||||
inline constexpr FlagValue kTF_NF_TOKEN_MINT_OLD_MASK =
|
||||
~(~kTF_NF_TOKEN_MINT_MASK_WITHOUT_MUTABLE | kTF_TRUST_LINE);
|
||||
inline constexpr FlagValue tfNFTokenMintOldMask = ~(~tfNFTokenMintMaskWithoutMutable | tfTrustLine);
|
||||
|
||||
// if featureDynamicNFT enabled then new flag allowing mutable URI available.
|
||||
inline constexpr FlagValue kTF_NF_TOKEN_MINT_OLD_MASK_WITH_MUTABLE =
|
||||
~(~kTF_NF_TOKEN_MINT_OLD_MASK | kTF_MUTABLE);
|
||||
inline constexpr FlagValue tfNFTokenMintOldMaskWithMutable = ~(~tfNFTokenMintOldMask | tfMutable);
|
||||
|
||||
inline constexpr FlagValue kTF_WITHDRAW_SUB_TX = kTF_LP_TOKEN | kTF_SINGLE_ASSET | kTF_TWO_ASSET |
|
||||
kTF_ONE_ASSET_LP_TOKEN | kTF_LIMIT_LP_TOKEN | kTF_WITHDRAW_ALL | kTF_ONE_ASSET_WITHDRAW_ALL;
|
||||
inline constexpr FlagValue kTF_DEPOSIT_SUB_TX = kTF_LP_TOKEN | kTF_SINGLE_ASSET | kTF_TWO_ASSET |
|
||||
kTF_ONE_ASSET_LP_TOKEN | kTF_LIMIT_LP_TOKEN | kTF_TWO_ASSET_IF_EMPTY;
|
||||
inline constexpr FlagValue tfWithdrawSubTx = tfLPToken | tfSingleAsset | tfTwoAsset |
|
||||
tfOneAssetLPToken | tfLimitLPToken | tfWithdrawAll | tfOneAssetWithdrawAll;
|
||||
inline constexpr FlagValue tfDepositSubTx =
|
||||
tfLPToken | tfSingleAsset | tfTwoAsset | tfOneAssetLPToken | tfLimitLPToken | tfTwoAssetIfEmpty;
|
||||
|
||||
#pragma push_macro("ACCOUNTSET_FLAGS")
|
||||
#pragma push_macro("ACCOUNTSET_FLAG_TO_VALUE")
|
||||
#pragma push_macro("ACCOUNTSET_FLAG_TO_MAP")
|
||||
|
||||
// AccountSet SetFlag/ClearFlag values
|
||||
#define ACCOUNTSET_FLAGS(ASF_FLAG) \
|
||||
ASF_FLAG(kASF_REQUIRE_DEST, 1) \
|
||||
ASF_FLAG(kASF_REQUIRE_AUTH, 2) \
|
||||
ASF_FLAG(kASF_DISALLOW_XRP, 3) \
|
||||
ASF_FLAG(kASF_DISABLE_MASTER, 4) \
|
||||
ASF_FLAG(kASF_ACCOUNT_TXN_ID, 5) \
|
||||
ASF_FLAG(kASF_NO_FREEZE, 6) \
|
||||
ASF_FLAG(kASF_GLOBAL_FREEZE, 7) \
|
||||
ASF_FLAG(kASF_DEFAULT_RIPPLE, 8) \
|
||||
ASF_FLAG(kASF_DEPOSIT_AUTH, 9) \
|
||||
ASF_FLAG(kASF_AUTHORIZED_NF_TOKEN_MINTER, 10) \
|
||||
/* 11 is reserved for Hooks amendment */ \
|
||||
/* ASF_FLAG(asfTshCollect, 11) */ \
|
||||
ASF_FLAG(kASF_DISALLOW_INCOMING_NF_TOKEN_OFFER, 12) \
|
||||
ASF_FLAG(kASF_DISALLOW_INCOMING_CHECK, 13) \
|
||||
ASF_FLAG(kASF_DISALLOW_INCOMING_PAY_CHAN, 14) \
|
||||
ASF_FLAG(kASF_DISALLOW_INCOMING_TRUSTLINE, 15) \
|
||||
ASF_FLAG(kASF_ALLOW_TRUST_LINE_CLAWBACK, 16) \
|
||||
ASF_FLAG(kASF_ALLOW_TRUST_LINE_LOCKING, 17)
|
||||
#define ACCOUNTSET_FLAGS(ASF_FLAG) \
|
||||
ASF_FLAG(asfRequireDest, 1) \
|
||||
ASF_FLAG(asfRequireAuth, 2) \
|
||||
ASF_FLAG(asfDisallowXRP, 3) \
|
||||
ASF_FLAG(asfDisableMaster, 4) \
|
||||
ASF_FLAG(asfAccountTxnID, 5) \
|
||||
ASF_FLAG(asfNoFreeze, 6) \
|
||||
ASF_FLAG(asfGlobalFreeze, 7) \
|
||||
ASF_FLAG(asfDefaultRipple, 8) \
|
||||
ASF_FLAG(asfDepositAuth, 9) \
|
||||
ASF_FLAG(asfAuthorizedNFTokenMinter, 10) \
|
||||
/* 11 is reserved for Hooks amendment */ \
|
||||
/* ASF_FLAG(asfTshCollect, 11) */ \
|
||||
ASF_FLAG(asfDisallowIncomingNFTokenOffer, 12) \
|
||||
ASF_FLAG(asfDisallowIncomingCheck, 13) \
|
||||
ASF_FLAG(asfDisallowIncomingPayChan, 14) \
|
||||
ASF_FLAG(asfDisallowIncomingTrustline, 15) \
|
||||
ASF_FLAG(asfAllowTrustLineClawback, 16) \
|
||||
ASF_FLAG(asfAllowTrustLineLocking, 17)
|
||||
|
||||
#define ACCOUNTSET_FLAG_TO_VALUE(name, value) inline constexpr FlagValue name = value;
|
||||
#define ACCOUNTSET_FLAG_TO_MAP(name, value) {#name, value},
|
||||
@@ -436,9 +432,9 @@ ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_VALUE)
|
||||
inline std::map<std::string, FlagValue> const&
|
||||
getAsfFlagMap()
|
||||
{
|
||||
static std::map<std::string, FlagValue> const kFLAGS = {
|
||||
static std::map<std::string, FlagValue> const flags = {
|
||||
ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_MAP)};
|
||||
return kFLAGS;
|
||||
return flags;
|
||||
}
|
||||
|
||||
#undef ACCOUNTSET_FLAG_TO_VALUE
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -220,7 +220,7 @@ public:
|
||||
{
|
||||
// Most transactors do nothing
|
||||
// after checkSeq/Fee/Sign.
|
||||
return TesSuccess;
|
||||
return tesSUCCESS;
|
||||
}
|
||||
|
||||
static NotTEC
|
||||
@@ -456,10 +456,10 @@ Transactor::invokePreflight(PreflightContext const& ctx)
|
||||
auto const feature = Permission::getInstance().getTxFeature(ctx.tx.getTxnType());
|
||||
|
||||
if (feature && !ctx.rules.enabled(*feature))
|
||||
return TemDisabled;
|
||||
return temDISABLED;
|
||||
|
||||
if (!T::checkExtraFeatures(ctx))
|
||||
return TemDisabled;
|
||||
return temDISABLED;
|
||||
|
||||
if (auto const ret = preflight1(ctx, T::getFlagsMask(ctx)))
|
||||
return ret;
|
||||
|
||||
@@ -40,7 +40,7 @@ checkValidity(HashRouter& router, STTx const& tx, Rules const& rules)
|
||||
auto const flags = router.getFlags(id);
|
||||
|
||||
// Ignore signature check on batch inner transactions
|
||||
if (tx.isFlag(kTF_INNER_BATCH_TXN) && rules.enabled(featureBatch))
|
||||
if (tx.isFlag(tfInnerBatchTxn) && rules.enabled(featureBatch))
|
||||
{
|
||||
// Defensive Check: These values are also checked in Batch::preflight
|
||||
if (tx.isFieldPresent(sfTxnSignature) || !tx.getSigningPubKey().empty() ||
|
||||
@@ -203,13 +203,13 @@ applyBatchTransactions(
|
||||
|
||||
if (!isTesSuccess(result.ter))
|
||||
{
|
||||
if ((mode & kTF_ALL_OR_NOTHING) != 0u)
|
||||
if ((mode & tfAllOrNothing) != 0u)
|
||||
return false;
|
||||
|
||||
if ((mode & kTF_UNTIL_FAILURE) != 0u)
|
||||
if ((mode & tfUntilFailure) != 0u)
|
||||
break;
|
||||
}
|
||||
else if ((mode & kTF_ONLY_ONE) != 0u)
|
||||
else if ((mode & tfOnlyOne) != 0u)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -22,48 +22,48 @@ private:
|
||||
{
|
||||
switch (flag)
|
||||
{
|
||||
case kASF_REQUIRE_DEST:
|
||||
mask_ |= LsfRequireDestTag;
|
||||
case asfRequireDest:
|
||||
mask_ |= lsfRequireDestTag;
|
||||
break;
|
||||
case kASF_REQUIRE_AUTH:
|
||||
mask_ |= LsfRequireAuth;
|
||||
case asfRequireAuth:
|
||||
mask_ |= lsfRequireAuth;
|
||||
break;
|
||||
case kASF_DISALLOW_XRP:
|
||||
mask_ |= LsfDisallowXrp;
|
||||
case asfDisallowXRP:
|
||||
mask_ |= lsfDisallowXRP;
|
||||
break;
|
||||
case kASF_DISABLE_MASTER:
|
||||
mask_ |= LsfDisableMaster;
|
||||
case asfDisableMaster:
|
||||
mask_ |= lsfDisableMaster;
|
||||
break;
|
||||
// case asfAccountTxnID: // ???
|
||||
case kASF_NO_FREEZE:
|
||||
mask_ |= LsfNoFreeze;
|
||||
case asfNoFreeze:
|
||||
mask_ |= lsfNoFreeze;
|
||||
break;
|
||||
case kASF_GLOBAL_FREEZE:
|
||||
mask_ |= LsfGlobalFreeze;
|
||||
case asfGlobalFreeze:
|
||||
mask_ |= lsfGlobalFreeze;
|
||||
break;
|
||||
case kASF_DEFAULT_RIPPLE:
|
||||
mask_ |= LsfDefaultRipple;
|
||||
case asfDefaultRipple:
|
||||
mask_ |= lsfDefaultRipple;
|
||||
break;
|
||||
case kASF_DEPOSIT_AUTH:
|
||||
mask_ |= LsfDepositAuth;
|
||||
case asfDepositAuth:
|
||||
mask_ |= lsfDepositAuth;
|
||||
break;
|
||||
case kASF_ALLOW_TRUST_LINE_CLAWBACK:
|
||||
mask_ |= LsfAllowTrustLineClawback;
|
||||
case asfAllowTrustLineClawback:
|
||||
mask_ |= lsfAllowTrustLineClawback;
|
||||
break;
|
||||
case kASF_DISALLOW_INCOMING_CHECK:
|
||||
mask_ |= LsfDisallowIncomingCheck;
|
||||
case asfDisallowIncomingCheck:
|
||||
mask_ |= lsfDisallowIncomingCheck;
|
||||
break;
|
||||
case kASF_DISALLOW_INCOMING_NF_TOKEN_OFFER:
|
||||
mask_ |= LsfDisallowIncomingNfTokenOffer;
|
||||
case asfDisallowIncomingNFTokenOffer:
|
||||
mask_ |= lsfDisallowIncomingNFTokenOffer;
|
||||
break;
|
||||
case kASF_DISALLOW_INCOMING_PAY_CHAN:
|
||||
mask_ |= LsfDisallowIncomingPayChan;
|
||||
case asfDisallowIncomingPayChan:
|
||||
mask_ |= lsfDisallowIncomingPayChan;
|
||||
break;
|
||||
case kASF_DISALLOW_INCOMING_TRUSTLINE:
|
||||
mask_ |= LsfDisallowIncomingTrustline;
|
||||
case asfDisallowIncomingTrustline:
|
||||
mask_ |= lsfDisallowIncomingTrustline;
|
||||
break;
|
||||
case kASF_ALLOW_TRUST_LINE_LOCKING:
|
||||
mask_ |= LsfAllowTrustLineLocking;
|
||||
case asfAllowTrustLineLocking:
|
||||
mask_ |= lsfAllowTrustLineLocking;
|
||||
break;
|
||||
default:
|
||||
Throw<std::runtime_error>("unknown flag");
|
||||
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
operator()(Env&, JTx& jt) const
|
||||
{
|
||||
// The RPC request should fail. RPC errors result in telENV_RPC_FAILED.
|
||||
jt.ter = TelEnvRpcFailed;
|
||||
jt.ter = telENV_RPC_FAILED;
|
||||
if (code_)
|
||||
{
|
||||
auto const& errorInfo = RPC::getErrorInfo(*code_);
|
||||
|
||||
Reference in New Issue
Block a user