diff --git a/include/xrpl/protocol/LedgerFormats.h b/include/xrpl/protocol/LedgerFormats.h index 711754df94..7cf92d0822 100644 --- a/include/xrpl/protocol/LedgerFormats.h +++ b/include/xrpl/protocol/LedgerFormats.h @@ -188,14 +188,14 @@ enum LedgerSpecificFlags { lsfMPTCanTransfer = 0x00000020, lsfMPTCanClawback = 0x00000040, - lsfMPTCanMutateCanLock = 0x00000002, - lsfMPTCanMutateRequireAuth = 0x00000004, - lsfMPTCanMutateCanEscrow = 0x00000008, - lsfMPTCanMutateCanTrade = 0x00000010, - lsfMPTCanMutateCanTransfer = 0x00000020, - lsfMPTCanMutateCanClawback = 0x00000040, - lsfMPTCanMutateMetadata = 0x00010000, - lsfMPTCanMutateTransferFee = 0x00020000, + lmfMPTCanMutateCanLock = 0x00000002, + lmfMPTCanMutateRequireAuth = 0x00000004, + lmfMPTCanMutateCanEscrow = 0x00000008, + lmfMPTCanMutateCanTrade = 0x00000010, + lmfMPTCanMutateCanTransfer = 0x00000020, + lmfMPTCanMutateCanClawback = 0x00000040, + lmfMPTCanMutateMetadata = 0x00010000, + lmfMPTCanMutateTransferFee = 0x00020000, // ltMPTOKEN lsfMPTAuthorized = 0x00000002, diff --git a/include/xrpl/protocol/TxFlags.h b/include/xrpl/protocol/TxFlags.h index c376180ac0..70c6833d3a 100644 --- a/include/xrpl/protocol/TxFlags.h +++ b/include/xrpl/protocol/TxFlags.h @@ -153,17 +153,17 @@ constexpr std::uint32_t const tfMPTokenIssuanceCreateMask = // MPTokenIssuanceCreate MutableFlags: // Indicating specific fields or flags may be changed after issuance. -constexpr std::uint32_t const tfMPTCanMutateCanLock = lsfMPTCanMutateCanLock; -constexpr std::uint32_t const tfMPTCanMutateRequireAuth = lsfMPTCanMutateRequireAuth; -constexpr std::uint32_t const tfMPTCanMutateCanEscrow = lsfMPTCanMutateCanEscrow; -constexpr std::uint32_t const tfMPTCanMutateCanTrade = lsfMPTCanMutateCanTrade; -constexpr std::uint32_t const tfMPTCanMutateCanTransfer = lsfMPTCanMutateCanTransfer; -constexpr std::uint32_t const tfMPTCanMutateCanClawback = lsfMPTCanMutateCanClawback; -constexpr std::uint32_t const tfMPTCanMutateMetadata = lsfMPTCanMutateMetadata; -constexpr std::uint32_t const tfMPTCanMutateTransferFee = lsfMPTCanMutateTransferFee; -constexpr std::uint32_t const tfMPTokenIssuanceCreateMutableMask = - ~(tfMPTCanMutateCanLock | tfMPTCanMutateRequireAuth | tfMPTCanMutateCanEscrow | tfMPTCanMutateCanTrade - | tfMPTCanMutateCanTransfer | tfMPTCanMutateCanClawback | tfMPTCanMutateMetadata | tfMPTCanMutateTransferFee); +constexpr std::uint32_t const tmfMPTCanMutateCanLock = lmfMPTCanMutateCanLock; +constexpr std::uint32_t const tmfMPTCanMutateRequireAuth = lmfMPTCanMutateRequireAuth; +constexpr std::uint32_t const tmfMPTCanMutateCanEscrow = lmfMPTCanMutateCanEscrow; +constexpr std::uint32_t const tmfMPTCanMutateCanTrade = lmfMPTCanMutateCanTrade; +constexpr std::uint32_t const tmfMPTCanMutateCanTransfer = lmfMPTCanMutateCanTransfer; +constexpr std::uint32_t const tmfMPTCanMutateCanClawback = lmfMPTCanMutateCanClawback; +constexpr std::uint32_t const tmfMPTCanMutateMetadata = lmfMPTCanMutateMetadata; +constexpr std::uint32_t const tmfMPTCanMutateTransferFee = lmfMPTCanMutateTransferFee; +constexpr std::uint32_t const tmfMPTokenIssuanceCreateMutableMask = + ~(tmfMPTCanMutateCanLock | tmfMPTCanMutateRequireAuth | tmfMPTCanMutateCanEscrow | tmfMPTCanMutateCanTrade + | tmfMPTCanMutateCanTransfer | tmfMPTCanMutateCanClawback | tmfMPTCanMutateMetadata | tmfMPTCanMutateTransferFee); // MPTokenAuthorize flags: constexpr std::uint32_t const tfMPTUnauthorize = 0x00000001; @@ -177,22 +177,22 @@ constexpr std::uint32_t const tfMPTokenIssuanceSetPermissionMask = ~(tfUniversal // MPTokenIssuanceSet MutableFlags: // Set or Clear flags. -constexpr std::uint32_t const tfMPTSetCanLock = 0x00000001; -constexpr std::uint32_t const tfMPTClearCanLock = 0x00000002; -constexpr std::uint32_t const tfMPTSetRequireAuth = 0x00000004; -constexpr std::uint32_t const tfMPTClearRequireAuth = 0x00000008; -constexpr std::uint32_t const tfMPTSetCanEscrow = 0x00000010; -constexpr std::uint32_t const tfMPTClearCanEscrow = 0x00000020; -constexpr std::uint32_t const tfMPTSetCanTrade = 0x00000040; -constexpr std::uint32_t const tfMPTClearCanTrade = 0x00000080; -constexpr std::uint32_t const tfMPTSetCanTransfer = 0x00000100; -constexpr std::uint32_t const tfMPTClearCanTransfer = 0x00000200; -constexpr std::uint32_t const tfMPTSetCanClawback = 0x00000400; -constexpr std::uint32_t const tfMPTClearCanClawback = 0x00000800; -constexpr std::uint32_t const tfMPTokenIssuanceSetMutableMask = ~(tfMPTSetCanLock | tfMPTClearCanLock | - tfMPTSetRequireAuth | tfMPTClearRequireAuth | tfMPTSetCanEscrow | tfMPTClearCanEscrow | - tfMPTSetCanTrade | tfMPTClearCanTrade | tfMPTSetCanTransfer | tfMPTClearCanTransfer | - tfMPTSetCanClawback | tfMPTClearCanClawback); +constexpr std::uint32_t const tmfMPTSetCanLock = 0x00000001; +constexpr std::uint32_t const tmfMPTClearCanLock = 0x00000002; +constexpr std::uint32_t const tmfMPTSetRequireAuth = 0x00000004; +constexpr std::uint32_t const tmfMPTClearRequireAuth = 0x00000008; +constexpr std::uint32_t const tmfMPTSetCanEscrow = 0x00000010; +constexpr std::uint32_t const tmfMPTClearCanEscrow = 0x00000020; +constexpr std::uint32_t const tmfMPTSetCanTrade = 0x00000040; +constexpr std::uint32_t const tmfMPTClearCanTrade = 0x00000080; +constexpr std::uint32_t const tmfMPTSetCanTransfer = 0x00000100; +constexpr std::uint32_t const tmfMPTClearCanTransfer = 0x00000200; +constexpr std::uint32_t const tmfMPTSetCanClawback = 0x00000400; +constexpr std::uint32_t const tmfMPTClearCanClawback = 0x00000800; +constexpr std::uint32_t const tmfMPTokenIssuanceSetMutableMask = ~(tmfMPTSetCanLock | tmfMPTClearCanLock | + tmfMPTSetRequireAuth | tmfMPTClearRequireAuth | tmfMPTSetCanEscrow | tmfMPTClearCanEscrow | + tmfMPTSetCanTrade | tmfMPTClearCanTrade | tmfMPTSetCanTransfer | tmfMPTClearCanTransfer | + tmfMPTSetCanClawback | tmfMPTClearCanClawback); // MPTokenIssuanceDestroy flags: constexpr std::uint32_t const tfMPTokenIssuanceDestroyMask = ~tfUniversal; diff --git a/src/test/app/MPToken_test.cpp b/src/test/app/MPToken_test.cpp index 1410370c33..e9740e67de 100644 --- a/src/test/app/MPToken_test.cpp +++ b/src/test/app/MPToken_test.cpp @@ -2871,8 +2871,8 @@ class MPToken_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob}}); mptAlice.create( {.ownerCount = 1, - .mutableFlags = tfMPTCanMutateMetadata | - tfMPTCanMutateCanLock | tfMPTCanMutateTransferFee}); + .mutableFlags = tmfMPTCanMutateMetadata | + tmfMPTCanMutateCanLock | tmfMPTCanMutateTransferFee}); // Setting flags is not allowed when MutableFlags is present mptAlice.set( @@ -2906,7 +2906,7 @@ class MPToken_test : public beast::unit_test::suite .ownerCount = 1, .flags = tfMPTCanTransfer, .mutableFlags = - tfMPTCanMutateTransferFee | tfMPTCanMutateMetadata}); + tmfMPTCanMutateTransferFee | tmfMPTCanMutateMetadata}); mptAlice.set( {.account = alice, @@ -2943,15 +2943,15 @@ class MPToken_test : public beast::unit_test::suite auto const mptID = makeMptID(env.seq(alice), alice); auto const flagCombinations = { - tfMPTSetCanLock | tfMPTClearCanLock, - tfMPTSetRequireAuth | tfMPTClearRequireAuth, - tfMPTSetCanEscrow | tfMPTClearCanEscrow, - tfMPTSetCanTrade | tfMPTClearCanTrade, - tfMPTSetCanTransfer | tfMPTClearCanTransfer, - tfMPTSetCanClawback | tfMPTClearCanClawback, - tfMPTSetCanLock | tfMPTClearCanLock | tfMPTClearCanTrade, - tfMPTSetCanTransfer | tfMPTClearCanTransfer | - tfMPTSetCanEscrow | tfMPTClearCanClawback}; + tmfMPTSetCanLock | tmfMPTClearCanLock, + tmfMPTSetRequireAuth | tmfMPTClearRequireAuth, + tmfMPTSetCanEscrow | tmfMPTClearCanEscrow, + tmfMPTSetCanTrade | tmfMPTClearCanTrade, + tmfMPTSetCanTransfer | tmfMPTClearCanTransfer, + tmfMPTSetCanClawback | tmfMPTClearCanClawback, + tmfMPTSetCanLock | tmfMPTClearCanLock | tmfMPTClearCanTrade, + tmfMPTSetCanTransfer | tmfMPTClearCanTransfer | + tmfMPTSetCanEscrow | tmfMPTClearCanClawback}; for (auto const& mutableFlags : flagCombinations) { @@ -2971,18 +2971,18 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create({.ownerCount = 1}); auto const mutableFlags = { - tfMPTSetCanLock, - tfMPTClearCanLock, - tfMPTSetRequireAuth, - tfMPTClearRequireAuth, - tfMPTSetCanEscrow, - tfMPTClearCanEscrow, - tfMPTSetCanTrade, - tfMPTClearCanTrade, - tfMPTSetCanTransfer, - tfMPTClearCanTransfer, - tfMPTSetCanClawback, - tfMPTClearCanClawback}; + tmfMPTSetCanLock, + tmfMPTClearCanLock, + tmfMPTSetRequireAuth, + tmfMPTClearRequireAuth, + tmfMPTSetCanEscrow, + tmfMPTClearCanEscrow, + tmfMPTSetCanTrade, + tmfMPTClearCanTrade, + tmfMPTSetCanTransfer, + tmfMPTClearCanTransfer, + tmfMPTSetCanClawback, + tmfMPTClearCanClawback}; for (auto const& mutableFlag : mutableFlags) { @@ -2999,7 +2999,7 @@ class MPToken_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob}}); mptAlice.create( - {.ownerCount = 1, .mutableFlags = tfMPTCanMutateMetadata}); + {.ownerCount = 1, .mutableFlags = tmfMPTCanMutateMetadata}); std::string metadata(maxMPTokenMetadataLength + 1, 'a'); mptAlice.set( @@ -3025,7 +3025,7 @@ class MPToken_test : public beast::unit_test::suite auto const mptID = makeMptID(env.seq(alice), alice); mptAlice.create( - {.ownerCount = 1, .mutableFlags = tfMPTCanMutateTransferFee}); + {.ownerCount = 1, .mutableFlags = tmfMPTCanMutateTransferFee}); mptAlice.set( {.account = alice, @@ -3045,13 +3045,13 @@ class MPToken_test : public beast::unit_test::suite .ownerCount = 1, .flags = tfMPTCanTransfer, .mutableFlags = - tfMPTCanMutateTransferFee | tfMPTCanMutateCanTransfer}); + tmfMPTCanMutateTransferFee | tmfMPTCanMutateCanTransfer}); // Can not set non-zero transfer fee and clear MPTCanTransfer at the // same time mptAlice.set( {.account = alice, - .mutableFlags = tfMPTClearCanTransfer, + .mutableFlags = tmfMPTClearCanTransfer, .transferFee = 1, .err = temMALFORMED}); @@ -3060,7 +3060,7 @@ class MPToken_test : public beast::unit_test::suite // be removed. mptAlice.set( {.account = alice, - .mutableFlags = tfMPTClearCanTransfer, + .mutableFlags = tmfMPTClearCanTransfer, .transferFee = 0}); BEAST_EXPECT(!mptAlice.isTransferFeePresent()); } @@ -3073,7 +3073,7 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, .mutableFlags = - tfMPTCanMutateTransferFee | tfMPTCanMutateCanTransfer}); + tmfMPTCanMutateTransferFee | tmfMPTCanMutateCanTransfer}); mptAlice.set( {.account = alice, @@ -3085,7 +3085,7 @@ class MPToken_test : public beast::unit_test::suite // fee can be set in a separate transaction. mptAlice.set( {.account = alice, - .mutableFlags = tfMPTSetCanTransfer, + .mutableFlags = tmfMPTSetCanTransfer, .transferFee = 100, .err = tecNO_PERMISSION}); } @@ -3116,8 +3116,8 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, - .mutableFlags = tfMPTCanMutateCanTrade | - tfMPTCanMutateCanTransfer | tfMPTCanMutateMetadata}); + .mutableFlags = tmfMPTCanMutateCanTrade | + tmfMPTCanMutateCanTransfer | tmfMPTCanMutateMetadata}); // Can not mutate transfer fee mptAlice.set( @@ -3126,14 +3126,14 @@ class MPToken_test : public beast::unit_test::suite .err = tecNO_PERMISSION}); auto const invalidFlags = { - tfMPTSetCanLock, - tfMPTClearCanLock, - tfMPTSetRequireAuth, - tfMPTClearRequireAuth, - tfMPTSetCanEscrow, - tfMPTClearCanEscrow, - tfMPTSetCanClawback, - tfMPTClearCanClawback}; + tmfMPTSetCanLock, + tmfMPTClearCanLock, + tmfMPTSetRequireAuth, + tmfMPTClearRequireAuth, + tmfMPTSetCanEscrow, + tmfMPTClearCanEscrow, + tmfMPTSetCanClawback, + tmfMPTClearCanClawback}; // Can not mutate flags which are not mutable for (auto const& mutableFlag : invalidFlags) @@ -3145,15 +3145,15 @@ class MPToken_test : public beast::unit_test::suite } // Can mutate MPTCanTrade - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanTrade}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanTrade}); mptAlice.set( - {.account = alice, .mutableFlags = tfMPTClearCanTrade}); + {.account = alice, .mutableFlags = tmfMPTClearCanTrade}); // Can mutate MPTCanTransfer mptAlice.set( - {.account = alice, .mutableFlags = tfMPTSetCanTransfer}); + {.account = alice, .mutableFlags = tmfMPTSetCanTransfer}); mptAlice.set( - {.account = alice, .mutableFlags = tfMPTClearCanTransfer}); + {.account = alice, .mutableFlags = tmfMPTClearCanTransfer}); // Can mutate metadata mptAlice.set({.account = alice, .metadata = "test"}); @@ -3176,7 +3176,7 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create( {.metadata = "test", .ownerCount = 1, - .mutableFlags = tfMPTCanMutateMetadata}); + .mutableFlags = tmfMPTCanMutateMetadata}); std::vector metadatas = { "mutate metadata", @@ -3206,7 +3206,7 @@ class MPToken_test : public beast::unit_test::suite .metadata = "test", .ownerCount = 1, .flags = tfMPTCanTransfer, - .mutableFlags = tfMPTCanMutateTransferFee}); + .mutableFlags = tmfMPTCanMutateTransferFee}); for (std::uint16_t const fee : std::initializer_list{ 1, 10, 100, 200, 500, 1000, maxTransferFee}) @@ -3250,25 +3250,27 @@ class MPToken_test : public beast::unit_test::suite }; testFlagToggle( - tfMPTCanMutateCanLock, tfMPTCanLock, tfMPTClearCanLock); + tmfMPTCanMutateCanLock, tfMPTCanLock, tmfMPTClearCanLock); testFlagToggle( - tfMPTCanMutateRequireAuth, - tfMPTSetRequireAuth, - tfMPTClearRequireAuth); + tmfMPTCanMutateRequireAuth, + tmfMPTSetRequireAuth, + tmfMPTClearRequireAuth); testFlagToggle( - tfMPTCanMutateCanEscrow, - tfMPTSetCanEscrow, - tfMPTClearCanEscrow); + tmfMPTCanMutateCanEscrow, + tmfMPTSetCanEscrow, + tmfMPTClearCanEscrow); testFlagToggle( - tfMPTCanMutateCanTrade, tfMPTSetCanTrade, tfMPTClearCanTrade); + tmfMPTCanMutateCanTrade, + tmfMPTSetCanTrade, + tmfMPTClearCanTrade); testFlagToggle( - tfMPTCanMutateCanTransfer, - tfMPTSetCanTransfer, - tfMPTClearCanTransfer); + tmfMPTCanMutateCanTransfer, + tmfMPTSetCanTransfer, + tmfMPTClearCanTransfer); testFlagToggle( - tfMPTCanMutateCanClawback, - tfMPTSetCanClawback, - tfMPTClearCanClawback); + tmfMPTCanMutateCanClawback, + tmfMPTSetCanClawback, + tmfMPTClearCanClawback); } } @@ -3289,20 +3291,22 @@ class MPToken_test : public beast::unit_test::suite {.ownerCount = 1, .holderCount = 0, .flags = tfMPTCanLock | tfMPTCanTransfer, - .mutableFlags = tfMPTCanMutateCanLock | - tfMPTCanMutateCanTrade | tfMPTCanMutateTransferFee}); + .mutableFlags = tmfMPTCanMutateCanLock | + tmfMPTCanMutateCanTrade | tmfMPTCanMutateTransferFee}); mptAlice.authorize({.account = bob, .holderCount = 1}); // Lock bob's mptoken mptAlice.set({.account = alice, .holder = bob, .flags = tfMPTLock}); // Can mutate the mutable flags and fields - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanLock}); - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanLock}); - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanLock}); - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanTrade}); mptAlice.set( - {.account = alice, .mutableFlags = tfMPTClearCanTrade}); + {.account = alice, .mutableFlags = tmfMPTClearCanLock}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanLock}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTClearCanLock}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanTrade}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTClearCanTrade}); mptAlice.set({.account = alice, .transferFee = 200}); } @@ -3314,21 +3318,23 @@ class MPToken_test : public beast::unit_test::suite {.ownerCount = 1, .holderCount = 0, .flags = tfMPTCanLock, - .mutableFlags = tfMPTCanMutateCanLock | - tfMPTCanMutateCanClawback | tfMPTCanMutateMetadata}); + .mutableFlags = tmfMPTCanMutateCanLock | + tmfMPTCanMutateCanClawback | tmfMPTCanMutateMetadata}); mptAlice.authorize({.account = bob, .holderCount = 1}); // Lock issuance mptAlice.set({.account = alice, .flags = tfMPTLock}); // Can mutate the mutable flags and fields - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanLock}); - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanLock}); - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanLock}); mptAlice.set( - {.account = alice, .mutableFlags = tfMPTSetCanClawback}); + {.account = alice, .mutableFlags = tmfMPTClearCanLock}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanLock}); mptAlice.set( - {.account = alice, .mutableFlags = tfMPTClearCanClawback}); + {.account = alice, .mutableFlags = tmfMPTClearCanLock}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTSetCanClawback}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTClearCanClawback}); mptAlice.set({.account = alice, .metadata = "mutate"}); } @@ -3340,8 +3346,8 @@ class MPToken_test : public beast::unit_test::suite {.ownerCount = 1, .holderCount = 0, .flags = tfMPTCanLock, - .mutableFlags = tfMPTCanMutateCanLock | - tfMPTCanMutateCanClawback | tfMPTCanMutateMetadata}); + .mutableFlags = tmfMPTCanMutateCanLock | + tmfMPTCanMutateCanClawback | tmfMPTCanMutateMetadata}); mptAlice.authorize({.account = bob, .holderCount = 1}); // Can lock and unlock @@ -3352,7 +3358,8 @@ class MPToken_test : public beast::unit_test::suite {.account = alice, .holder = bob, .flags = tfMPTUnlock}); // Clear lsfMPTCanLock - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanLock}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTClearCanLock}); // Can not lock or unlock mptAlice.set( @@ -3375,7 +3382,7 @@ class MPToken_test : public beast::unit_test::suite .err = tecNO_PERMISSION}); // Set MPTCanLock again - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanLock}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanLock}); // Can lock and unlock again mptAlice.set({.account = alice, .flags = tfMPTLock}); @@ -3400,7 +3407,7 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, .flags = tfMPTRequireAuth, - .mutableFlags = tfMPTCanMutateRequireAuth}); + .mutableFlags = tmfMPTCanMutateRequireAuth}); mptAlice.authorize({.account = bob}); mptAlice.authorize({.account = alice, .holder = bob}); @@ -3416,13 +3423,14 @@ class MPToken_test : public beast::unit_test::suite mptAlice.pay(bob, alice, 100, tecNO_AUTH); // Clear RequireAuth - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearRequireAuth}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTClearRequireAuth}); // Can pay to bob mptAlice.pay(alice, bob, 1000); // Set RequireAuth again - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetRequireAuth}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetRequireAuth}); // Can not pay to bob since he is not authorized mptAlice.pay(bob, alice, 100, tecNO_AUTH); @@ -3452,7 +3460,7 @@ class MPToken_test : public beast::unit_test::suite {.ownerCount = 1, .holderCount = 0, .flags = tfMPTCanTransfer, - .mutableFlags = tfMPTCanMutateCanEscrow}); + .mutableFlags = tmfMPTCanMutateCanEscrow}); mptAlice.authorize({.account = carol}); mptAlice.authorize({.account = bob}); @@ -3469,14 +3477,14 @@ class MPToken_test : public beast::unit_test::suite ter(tecNO_PERMISSION)); // MPTCanEscrow is enabled now - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanEscrow}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanEscrow}); env(escrow::create(carol, bob, MPT(3)), escrow::condition(escrow::cb1), escrow::finish_time(env.now() + 1s), fee(baseFee * 150)); // Clear MPTCanEscrow - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanEscrow}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTClearCanEscrow}); env(escrow::create(carol, bob, MPT(3)), escrow::condition(escrow::cb1), escrow::finish_time(env.now() + 1s), @@ -3501,7 +3509,7 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, .mutableFlags = - tfMPTCanMutateCanTransfer | tfMPTCanMutateTransferFee}); + tmfMPTCanMutateCanTransfer | tmfMPTCanMutateTransferFee}); mptAlice.authorize({.account = bob}); mptAlice.authorize({.account = carol}); @@ -3522,13 +3530,13 @@ class MPToken_test : public beast::unit_test::suite // MPTCanTransfer at the same time mptAlice.set( {.account = alice, - .mutableFlags = tfMPTSetCanTransfer, + .mutableFlags = tmfMPTSetCanTransfer, .transferFee = 100, .err = tecNO_PERMISSION}); // Alice sets MPTCanTransfer mptAlice.set( - {.account = alice, .mutableFlags = tfMPTSetCanTransfer}); + {.account = alice, .mutableFlags = tmfMPTSetCanTransfer}); // Can set transfer fee now BEAST_EXPECT(!mptAlice.isTransferFeePresent()); @@ -3540,7 +3548,7 @@ class MPToken_test : public beast::unit_test::suite // Alice clears MPTCanTransfer mptAlice.set( - {.account = alice, .mutableFlags = tfMPTClearCanTransfer}); + {.account = alice, .mutableFlags = tmfMPTClearCanTransfer}); // TransferFee field is removed when MPTCanTransfer is cleared BEAST_EXPECT(!mptAlice.isTransferFeePresent()); @@ -3550,7 +3558,7 @@ class MPToken_test : public beast::unit_test::suite } // Can set transfer fee to zero when MPTCanTransfer is not set, but - // tfMPTCanMutateTransferFee is set. + // tmfMPTCanMutateTransferFee is set. { Env env{*this, features}; @@ -3560,13 +3568,13 @@ class MPToken_test : public beast::unit_test::suite .ownerCount = 1, .flags = tfMPTCanTransfer, .mutableFlags = - tfMPTCanMutateTransferFee | tfMPTCanMutateCanTransfer}); + tmfMPTCanMutateTransferFee | tmfMPTCanMutateCanTransfer}); BEAST_EXPECT(mptAlice.checkTransferFee(100)); // Clear MPTCanTransfer and transfer fee is removed mptAlice.set( - {.account = alice, .mutableFlags = tfMPTClearCanTransfer}); + {.account = alice, .mutableFlags = tmfMPTClearCanTransfer}); BEAST_EXPECT(!mptAlice.isTransferFeePresent()); // Can still set transfer fee to zero, although it is already zero @@ -3592,7 +3600,7 @@ class MPToken_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, .holderCount = 0, - .mutableFlags = tfMPTCanMutateCanClawback}); + .mutableFlags = tmfMPTCanMutateCanClawback}); // Bob creates an MPToken mptAlice.authorize({.account = bob}); @@ -3604,13 +3612,14 @@ class MPToken_test : public beast::unit_test::suite mptAlice.claw(alice, bob, 1, tecNO_PERMISSION); // Enable MPTCanClawback - mptAlice.set({.account = alice, .mutableFlags = tfMPTSetCanClawback}); + mptAlice.set({.account = alice, .mutableFlags = tmfMPTSetCanClawback}); // Can clawback now mptAlice.claw(alice, bob, 1); // Clear MPTCanClawback - mptAlice.set({.account = alice, .mutableFlags = tfMPTClearCanClawback}); + mptAlice.set( + {.account = alice, .mutableFlags = tmfMPTClearCanClawback}); // Can not clawback mptAlice.claw(alice, bob, 1, tecNO_PERMISSION); diff --git a/src/test/jtx/impl/mpt.cpp b/src/test/jtx/impl/mpt.cpp index f35b1b1ebb..f2f51492e3 100644 --- a/src/test/jtx/impl/mpt.cpp +++ b/src/test/jtx/impl/mpt.cpp @@ -265,34 +265,34 @@ MPTTester::set(MPTSet const& arg) if (arg.mutableFlags) { - if (*arg.mutableFlags & tfMPTSetCanLock) + if (*arg.mutableFlags & tmfMPTSetCanLock) flags |= lsfMPTCanLock; - else if (*arg.mutableFlags & tfMPTClearCanLock) + else if (*arg.mutableFlags & tmfMPTClearCanLock) flags &= ~lsfMPTCanLock; - if (*arg.mutableFlags & tfMPTSetRequireAuth) + if (*arg.mutableFlags & tmfMPTSetRequireAuth) flags |= lsfMPTRequireAuth; - else if (*arg.mutableFlags & tfMPTClearRequireAuth) + else if (*arg.mutableFlags & tmfMPTClearRequireAuth) flags &= ~lsfMPTRequireAuth; - if (*arg.mutableFlags & tfMPTSetCanEscrow) + if (*arg.mutableFlags & tmfMPTSetCanEscrow) flags |= lsfMPTCanEscrow; - else if (*arg.mutableFlags & tfMPTClearCanEscrow) + else if (*arg.mutableFlags & tmfMPTClearCanEscrow) flags &= ~lsfMPTCanEscrow; - if (*arg.mutableFlags & tfMPTSetCanClawback) + if (*arg.mutableFlags & tmfMPTSetCanClawback) flags |= lsfMPTCanClawback; - else if (*arg.mutableFlags & tfMPTClearCanClawback) + else if (*arg.mutableFlags & tmfMPTClearCanClawback) flags &= ~lsfMPTCanClawback; - if (*arg.mutableFlags & tfMPTSetCanTrade) + if (*arg.mutableFlags & tmfMPTSetCanTrade) flags |= lsfMPTCanTrade; - else if (*arg.mutableFlags & tfMPTClearCanTrade) + else if (*arg.mutableFlags & tmfMPTClearCanTrade) flags &= ~lsfMPTCanTrade; - if (*arg.mutableFlags & tfMPTSetCanTransfer) + if (*arg.mutableFlags & tmfMPTSetCanTransfer) flags |= lsfMPTCanTransfer; - else if (*arg.mutableFlags & tfMPTClearCanTransfer) + else if (*arg.mutableFlags & tmfMPTClearCanTransfer) flags &= ~lsfMPTCanTransfer; } } diff --git a/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp b/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp index 6a6e598f42..c195e45c1d 100644 --- a/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp +++ b/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp @@ -44,7 +44,7 @@ MPTokenIssuanceCreate::preflight(PreflightContext const& ctx) return ret; if (auto const mutableFlags = ctx.tx[~sfMutableFlags]; mutableFlags && - (!*mutableFlags || *mutableFlags & tfMPTokenIssuanceCreateMutableMask)) + (!*mutableFlags || *mutableFlags & tmfMPTokenIssuanceCreateMutableMask)) return temINVALID_FLAG; if (ctx.tx.getFlags() & tfMPTokenIssuanceCreateMask) diff --git a/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp b/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp index 83b771c705..37c563460a 100644 --- a/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp +++ b/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp @@ -37,12 +37,14 @@ struct MPTMutabilityFlags }; static constexpr std::array mptMutabilityFlags = { - {{tfMPTSetCanLock, tfMPTClearCanLock, lsfMPTCanMutateCanLock}, - {tfMPTSetRequireAuth, tfMPTClearRequireAuth, lsfMPTCanMutateRequireAuth}, - {tfMPTSetCanEscrow, tfMPTClearCanEscrow, lsfMPTCanMutateCanEscrow}, - {tfMPTSetCanTrade, tfMPTClearCanTrade, lsfMPTCanMutateCanTrade}, - {tfMPTSetCanTransfer, tfMPTClearCanTransfer, lsfMPTCanMutateCanTransfer}, - {tfMPTSetCanClawback, tfMPTClearCanClawback, lsfMPTCanMutateCanClawback}}}; + {{tmfMPTSetCanLock, tmfMPTClearCanLock, lmfMPTCanMutateCanLock}, + {tmfMPTSetRequireAuth, tmfMPTClearRequireAuth, lmfMPTCanMutateRequireAuth}, + {tmfMPTSetCanEscrow, tmfMPTClearCanEscrow, lmfMPTCanMutateCanEscrow}, + {tmfMPTSetCanTrade, tmfMPTClearCanTrade, lmfMPTCanMutateCanTrade}, + {tmfMPTSetCanTransfer, tmfMPTClearCanTransfer, lmfMPTCanMutateCanTransfer}, + {tmfMPTSetCanClawback, + tmfMPTClearCanClawback, + lmfMPTCanMutateCanClawback}}}; NotTEC MPTokenIssuanceSet::preflight(PreflightContext const& ctx) @@ -110,7 +112,7 @@ MPTokenIssuanceSet::preflight(PreflightContext const& ctx) if (mutableFlags) { if (!*mutableFlags || - (*mutableFlags & tfMPTokenIssuanceSetMutableMask)) + (*mutableFlags & tmfMPTokenIssuanceSetMutableMask)) return temINVALID_FLAG; // Can not set and clear the same flag @@ -126,7 +128,7 @@ MPTokenIssuanceSet::preflight(PreflightContext const& ctx) // Trying to set a non-zero TransferFee and clear MPTCanTransfer // in the same transaction is not allowed. if (transferFee.value_or(0) && - (*mutableFlags & tfMPTClearCanTransfer)) + (*mutableFlags & tmfMPTClearCanTransfer)) return temMALFORMED; } } @@ -241,7 +243,7 @@ MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx) return tecNO_PERMISSION; } - if (!isMutableFlag(lsfMPTCanMutateMetadata) && + if (!isMutableFlag(lmfMPTCanMutateMetadata) && ctx.tx.isFieldPresent(sfMPTokenMetadata)) return tecNO_PERMISSION; @@ -249,12 +251,12 @@ MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx) { // A non-zero TransferFee is only valid if the lsfMPTCanTransfer flag // was previously enabled (at issuance or via a prior mutation). Setting - // it by tfMPTSetCanTransfer in the current transaction does not meet + // it by tmfMPTSetCanTransfer in the current transaction does not meet // this requirement. if (fee > 0u && !sleMptIssuance->isFlag(lsfMPTCanTransfer)) return tecNO_PERMISSION; - if (!isMutableFlag(lsfMPTCanMutateTransferFee)) + if (!isMutableFlag(lmfMPTCanMutateTransferFee)) return tecNO_PERMISSION; } @@ -296,7 +298,7 @@ MPTokenIssuanceSet::doApply() flagsOut &= ~f.canMutateFlag; } - if (mutableFlags & tfMPTClearCanTransfer) + if (mutableFlags & tmfMPTClearCanTransfer) { // If the lsfMPTCanTransfer flag is being cleared, then also clear // the TransferFee field.