From 82b0d57aac5b281d7dbbacb3fbd5ee31d17bca05 Mon Sep 17 00:00:00 2001 From: Vito <5780819+Tapanito@users.noreply.github.com> Date: Tue, 17 Feb 2026 13:33:47 +0100 Subject: [PATCH] minor code improvements --- include/xrpl/ledger/View.h | 5 +++++ include/xrpl/protocol/TxFlags.h | 2 -- src/libxrpl/ledger/View.cpp | 9 +++++++++ src/xrpld/app/tx/detail/VaultDeposit.cpp | 2 +- src/xrpld/app/tx/detail/VaultSet.cpp | 4 ++-- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/include/xrpl/ledger/View.h b/include/xrpl/ledger/View.h index fa16e16006..d6f3bdfe5e 100644 --- a/include/xrpl/ledger/View.h +++ b/include/xrpl/ledger/View.h @@ -985,6 +985,11 @@ sharesToAssetsWithdraw( std::shared_ptr const& issuance, STAmount const& shares); +// Determine if a vault is insolvent. A vault is considered insolvent when +// the total assets in the vault are zero, and outstanding shares are non-zero. +[[nodiscard]] bool +isVaultInsolvent(std::shared_ptr const& vault, std::shared_ptr const& shareIssuance); + /** Has the specified time passed? @param now the current time diff --git a/include/xrpl/protocol/TxFlags.h b/include/xrpl/protocol/TxFlags.h index a1c18f2827..e424f914aa 100644 --- a/include/xrpl/protocol/TxFlags.h +++ b/include/xrpl/protocol/TxFlags.h @@ -270,13 +270,11 @@ constexpr std::uint32_t const tfBatchMask = // LoanPay: True, indicates any excess in this payment can be used // as an overpayment. False, no overpayments will be taken. constexpr std::uint32_t const tfLoanOverpayment = 0x00010000; - // LoanPay exclusive flags: // tfLoanFullPayment: 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. constexpr std::uint32_t const tfLoanFullPayment = 0x00020000; - // tfLoanLatePayment: 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 diff --git a/src/libxrpl/ledger/View.cpp b/src/libxrpl/ledger/View.cpp index 72df44ec4a..01f7dcf881 100644 --- a/src/libxrpl/ledger/View.cpp +++ b/src/libxrpl/ledger/View.cpp @@ -3438,4 +3438,13 @@ after(NetClock::time_point now, std::uint32_t mark) return now.time_since_epoch().count() > mark; } +[[nodiscard]] bool +isVaultInsolvent(std::shared_ptr const& vault, std::shared_ptr const& shareIssuance) +{ + auto const assetsTotal = vault->at(sfAssetsTotal); + auto const sharesOutstanding = shareIssuance->at(sfOutstandingAmount); + + return assetsTotal == 0 && sharesOutstanding > 0; +} + } // namespace xrpl diff --git a/src/xrpld/app/tx/detail/VaultDeposit.cpp b/src/xrpld/app/tx/detail/VaultDeposit.cpp index 0ed722f408..5b8afa2a85 100644 --- a/src/xrpld/app/tx/detail/VaultDeposit.cpp +++ b/src/xrpld/app/tx/detail/VaultDeposit.cpp @@ -82,7 +82,7 @@ VaultDeposit::preclaim(PreclaimContext const& ctx) // Perform these checks early to avoid unnecessary processing // The Vault is insolvent, deposits are not allowed - if (vault->at(sfAssetsTotal) == 0 && sleShareIssuance->at(sfOutstandingAmount) > 0) + if (isVaultInsolvent(vault, sleShareIssuance)) { JLOG(ctx.j.debug()) << "VaultDeposit: Vault is insolvent, deposits are not allowed"; return tecNO_PERMISSION; diff --git a/src/xrpld/app/tx/detail/VaultSet.cpp b/src/xrpld/app/tx/detail/VaultSet.cpp index 1cc39f0edc..f8aafb6a91 100644 --- a/src/xrpld/app/tx/detail/VaultSet.cpp +++ b/src/xrpld/app/tx/detail/VaultSet.cpp @@ -35,13 +35,13 @@ VaultSet::getFlagsMask(PreflightContext const& ctx) static bool isValidVaultUpdate(PreflightContext const& ctx) { - auto const checkFlags = ctx.rules.enabled(fixLendingProtocolV1_1); + auto const shouldCheckFlags = ctx.rules.enabled(fixLendingProtocolV1_1); auto const atLeastOneFieldPresent = ctx.tx.isFieldPresent(sfDomainID) || ctx.tx.isFieldPresent(sfAssetsMaximum) || ctx.tx.isFieldPresent(sfData); return atLeastOneFieldPresent || - (checkFlags && (ctx.tx.isFlag(tfVaultDepositBlock) || ctx.tx.isFlag(tfVaultDepositUnblock))); + (shouldCheckFlags && (ctx.tx.isFlag(tfVaultDepositBlock) || ctx.tx.isFlag(tfVaultDepositUnblock))); } NotTEC