diff --git a/include/xrpl/tx/transactors/Batch.h b/include/xrpl/tx/transactors/Batch.h index eae92ef1a3..0861deb094 100644 --- a/include/xrpl/tx/transactors/Batch.h +++ b/include/xrpl/tx/transactors/Batch.h @@ -32,6 +32,24 @@ public: TER doApply() override; + + static constexpr auto disabledTxTypes = std::to_array({ + ttVAULT_CREATE, + ttVAULT_SET, + ttVAULT_DELETE, + ttVAULT_DEPOSIT, + ttVAULT_WITHDRAW, + ttVAULT_CLAWBACK, + ttLOAN_BROKER_SET, + ttLOAN_BROKER_DELETE, + ttLOAN_BROKER_COVER_DEPOSIT, + ttLOAN_BROKER_COVER_WITHDRAW, + ttLOAN_BROKER_COVER_CLAWBACK, + ttLOAN_SET, + ttLOAN_DELETE, + ttLOAN_MANAGE, + ttLOAN_PAY, + }); }; } // namespace xrpl diff --git a/src/libxrpl/tx/transactors/Batch.cpp b/src/libxrpl/tx/transactors/Batch.cpp index 67bb1f26e4..d160ed1619 100644 --- a/src/libxrpl/tx/transactors/Batch.cpp +++ b/src/libxrpl/tx/transactors/Batch.cpp @@ -258,7 +258,8 @@ Batch::preflight(PreflightContext const& ctx) return temINVALID; } - if (std::any_of( + if (!ctx.rules.enabled(fixLendingProtocolV1_1) && + std::any_of( disabledTxTypes.begin(), disabledTxTypes.end(), [txType](auto const& disabled) { return txType == disabled; })) diff --git a/src/test/app/Batch_test.cpp b/src/test/app/Batch_test.cpp index bd1d701381..0a8a9c4f4b 100644 --- a/src/test/app/Batch_test.cpp +++ b/src/test/app/Batch_test.cpp @@ -2600,16 +2600,18 @@ class Batch_test : public beast::unit_test::suite { testcase("loan"); - bool const lendingBatchEnabled = !std::any_of( - Batch::disabledTxTypes.begin(), Batch::disabledTxTypes.end(), [](auto const& disabled) { - return disabled == ttLOAN_BROKER_SET; - }); - using namespace test::jtx; test::jtx::Env env{ *this, features | featureSingleAssetVault | featureLendingProtocol | featureMPTokensV1}; + bool const lendingBatchEnabled = + !std::any_of( + Batch::disabledTxTypes.begin(), + Batch::disabledTxTypes.end(), + [](auto const& disabled) { return disabled == ttLOAN_BROKER_SET; }) || + env.enabled(fixLendingProtocolV1_1); + Account const issuer{"issuer"}; // For simplicity, lender will be the sole actor for the vault & // brokers. diff --git a/src/test/app/Loan/Loan_test.cpp b/src/test/app/Loan/Loan_test.cpp index df4a3f2481..c409474dd0 100644 --- a/src/test/app/Loan/Loan_test.cpp +++ b/src/test/app/Loan/Loan_test.cpp @@ -2174,15 +2174,17 @@ protected: // From FIND-001 testcase << "Batch Bypass Counterparty"; - bool const lendingBatchEnabled = !std::any_of( - Batch::disabledTxTypes.begin(), Batch::disabledTxTypes.end(), [](auto const& disabled) { - return disabled == ttLOAN_BROKER_SET; - }); - using namespace jtx; using namespace std::chrono_literals; Env env(*this, all); + bool const lendingBatchEnabled = + !std::any_of( + Batch::disabledTxTypes.begin(), + Batch::disabledTxTypes.end(), + [](auto const& disabled) { return disabled == ttLOAN_BROKER_SET; }) || + env.enabled(fixLendingProtocolV1_1); + Account const lender{"lender"}; Account const borrower{"borrower"};