From 0c7aa43490b6253448f46c38e2e46ddefc83fea2 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Thu, 25 Jun 2026 22:26:40 -0500 Subject: [PATCH] fix it better --- src/libxrpl/tx/transactors/oracle/OracleSet.cpp | 13 ++++++------- .../payment_channel/PaymentChannelCreate.cpp | 16 ++++++---------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/libxrpl/tx/transactors/oracle/OracleSet.cpp b/src/libxrpl/tx/transactors/oracle/OracleSet.cpp index 93d8bda025..8384f90158 100644 --- a/src/libxrpl/tx/transactors/oracle/OracleSet.cpp +++ b/src/libxrpl/tx/transactors/oracle/OracleSet.cpp @@ -183,14 +183,13 @@ OracleSet::preclaim(PreclaimContext const& ctx) if (!ctx.view.rules().enabled(featureSponsor)) { + auto const fees = ctx.view.fees(); + auto const reserve = + fees.reserve + fees.increment * (sleSetter->getFieldU32(sfOwnerCount) + adjustReserve); auto const& balance = sleSetter->getFieldAmount(sfBalance); - auto const sponsorSle = getTxReserveSponsor(ctx.view, ctx.tx); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE - if (auto const ret = checkInsufficientReserve( - ctx.view, ctx.tx, sleSetter, balance, *sponsorSle, adjustReserve, 0, ctx.j); - !isTesSuccess(ret)) - return ret; + + if (balance < reserve) + return tecINSUFFICIENT_RESERVE; } return tesSUCCESS; diff --git a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp index 2199fce70c..768c2be350 100644 --- a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp +++ b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp @@ -81,17 +81,13 @@ PaymentChannelCreate::preclaim(PreclaimContext const& ctx) if (!ctx.view.rules().enabled(featureSponsor)) { auto const balance = (*sle)[sfBalance]; - auto const sponsorSle = getTxReserveSponsor(ctx.view, ctx.tx); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE - if (auto const ret = - checkInsufficientReserve(ctx.view, ctx.tx, sle, balance, *sponsorSle, 1, 0, ctx.j); - !isTesSuccess(ret)) - return ret; + auto const fees = ctx.view.fees(); + auto const reserve = fees.reserve + fees.increment * ((*sle)[sfOwnerCount] + 1); - if (auto const ret = checkInsufficientReserve( - ctx.view, ctx.tx, sle, balance - ctx.tx[sfAmount], *sponsorSle, 1, 0, ctx.j); - !isTesSuccess(ret)) + if (balance < reserve) + return tecINSUFFICIENT_RESERVE; + + if (balance < reserve + ctx.tx[sfAmount]) return tecUNFUNDED; }