From 70f03eba662d6cb9963f31ce24fcc412ab8b34a4 Mon Sep 17 00:00:00 2001 From: yinyiqian1 Date: Tue, 12 May 2026 13:31:13 -0400 Subject: [PATCH] Update error code for transfer rate error (#7115) --- .../tx/transactors/token/MPTokenIssuanceCreate.cpp | 2 +- .../tx/transactors/token/MPTokenIssuanceSet.cpp | 2 +- src/test/app/ConfidentialTransfer_test.cpp | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp index b38296f63b..69d7c1ef95 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp @@ -74,7 +74,7 @@ MPTokenIssuanceCreate::preflight(PreflightContext const& ctx) // Confidential amounts are encrypted so transfer rate is disallowed. if (fee > 0u && ctx.tx.isFlag(tfMPTCanConfidentialAmount)) - return temMALFORMED; + return temBAD_TRANSFER_FEE; } if (auto const domain = ctx.tx[~sfDomainID]) diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp index b42e200010..0a4bf80e27 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp @@ -171,7 +171,7 @@ MPTokenIssuanceSet::preflight(PreflightContext const& ctx) // in the same transaction is not allowed. if ((transferFee.value_or(0) > 0u) && ((*mutableFlags & tmfMPTSetCanConfidentialAmount) != 0u)) - return temMALFORMED; + return temBAD_TRANSFER_FEE; } } diff --git a/src/test/app/ConfidentialTransfer_test.cpp b/src/test/app/ConfidentialTransfer_test.cpp index 75c4f0b2cb..c9112d3b9f 100644 --- a/src/test/app/ConfidentialTransfer_test.cpp +++ b/src/test/app/ConfidentialTransfer_test.cpp @@ -1179,7 +1179,7 @@ class ConfidentialTransfer_test : public beast::unit_test::Suite mptAlice.create({ .transferFee = 100, .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, - .err = temMALFORMED, + .err = temBAD_TRANSFER_FEE, }); // transferFee being 0 is allowed, even with tfMPTCanConfidentialAmount @@ -1206,7 +1206,7 @@ class ConfidentialTransfer_test : public beast::unit_test::Suite .account = alice, .mutableFlags = tmfMPTSetCanConfidentialAmount, .transferFee = 100, - .err = temMALFORMED, + .err = temBAD_TRANSFER_FEE, }); } @@ -1249,6 +1249,12 @@ class ConfidentialTransfer_test : public beast::unit_test::Suite .transferFee = 100, .err = tecNO_PERMISSION, }); + + // Setting transfer fee to 0 is allowed, but have no effect. + mptAlice.set({ + .account = alice, + .transferFee = 0, + }); } }