From 709b35c487216294a2651f35a838bcb299fc1918 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Wed, 29 Jul 2026 15:36:45 -0400 Subject: [PATCH] add raw prefixes --- include/xrpl/protocol/SeqProxy.h | 4 ++-- src/libxrpl/protocol/STTx.cpp | 6 +++--- src/libxrpl/tx/Transactor.cpp | 2 +- src/libxrpl/tx/applySteps.cpp | 2 +- src/libxrpl/tx/transactors/dex/OfferCancel.cpp | 3 ++- src/libxrpl/tx/transactors/dex/OfferCreate.cpp | 2 +- src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp | 6 ++++-- src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp | 6 ++++-- src/libxrpl/tx/transactors/lending/LoanSet.cpp | 2 +- .../permissioned_domain/PermissionedDomainSet.cpp | 2 +- src/libxrpl/tx/transactors/system/TicketCreate.cpp | 2 +- src/tests/libxrpl/tx/AccountSet.cpp | 2 +- src/xrpld/app/ledger/detail/LocalTxs.cpp | 2 +- src/xrpld/app/misc/detail/TxQ.cpp | 8 ++++---- src/xrpld/rpc/handlers/VaultInfo.cpp | 2 +- src/xrpld/rpc/handlers/account/AccountInfo.cpp | 2 +- src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp | 14 +++++++------- 17 files changed, 36 insertions(+), 31 deletions(-) diff --git a/include/xrpl/protocol/SeqProxy.h b/include/xrpl/protocol/SeqProxy.h index d395b181b5..fa72914591 100644 --- a/include/xrpl/protocol/SeqProxy.h +++ b/include/xrpl/protocol/SeqProxy.h @@ -59,7 +59,7 @@ public: * the "primary" sequence of a transaction, `sfSequence`. */ static constexpr SeqProxy - sequence(std::uint32_t v) + rawSequence(std::uint32_t v) { return SeqProxy{Type::Seq, v}; } @@ -71,7 +71,7 @@ public: * the "primary" ticket sequence of a transaction, `sfTicketSequence`. */ static constexpr SeqProxy - ticket(std::uint32_t v) + rawTicket(std::uint32_t v) { return SeqProxy{Type::Ticket, v}; } diff --git a/src/libxrpl/protocol/STTx.cpp b/src/libxrpl/protocol/STTx.cpp index aa712b3b72..88ec13504a 100644 --- a/src/libxrpl/protocol/STTx.cpp +++ b/src/libxrpl/protocol/STTx.cpp @@ -200,16 +200,16 @@ STTx::getSeqProxy() const { std::uint32_t const seq{getFieldU32(sfSequence)}; if (seq != 0) - return SeqProxy::sequence(seq); + return SeqProxy::rawSequence(seq); std::optional const ticketSeq{at(~sfTicketSequence)}; if (!ticketSeq) { // No TicketSequence specified. Return the Sequence, whatever it is. - return SeqProxy::sequence(seq); + return SeqProxy::rawSequence(seq); } - return SeqProxy::ticket(*ticketSeq); + return SeqProxy::rawTicket(*ticketSeq); } std::uint32_t diff --git a/src/libxrpl/tx/Transactor.cpp b/src/libxrpl/tx/Transactor.cpp index 64b1ce36bb..5fc6942e20 100644 --- a/src/libxrpl/tx/Transactor.cpp +++ b/src/libxrpl/tx/Transactor.cpp @@ -709,7 +709,7 @@ Transactor::checkSeqProxy(ReadView const& view, STTx const& tx, beast::Journal j } SeqProxy const tSeqProx = tx.getSeqProxy(); - SeqProxy const aSeq = SeqProxy::sequence((*sle)[sfSequence]); + SeqProxy const aSeq = SeqProxy::rawSequence((*sle)[sfSequence]); if (tSeqProx.isSeq()) { diff --git a/src/libxrpl/tx/applySteps.cpp b/src/libxrpl/tx/applySteps.cpp index 5af4f621a7..2c05c874d3 100644 --- a/src/libxrpl/tx/applySteps.cpp +++ b/src/libxrpl/tx/applySteps.cpp @@ -251,7 +251,7 @@ TxConsequences::TxConsequences(NotTEC pfResult) : isBlocker_(false) , fee_(beast::kZero) , potentialSpend_(beast::kZero) - , seqProx_(SeqProxy::sequence(0)) + , seqProx_(SeqProxy::rawSequence(0)) , sequencesConsumed_(0) { XRPL_ASSERT( diff --git a/src/libxrpl/tx/transactors/dex/OfferCancel.cpp b/src/libxrpl/tx/transactors/dex/OfferCancel.cpp index 0e1bc40b7d..70a9370aee 100644 --- a/src/libxrpl/tx/transactors/dex/OfferCancel.cpp +++ b/src/libxrpl/tx/transactors/dex/OfferCancel.cpp @@ -58,7 +58,8 @@ OfferCancel::doApply() if (!sle) return tefINTERNAL; // LCOV_EXCL_LINE - if (auto sleOffer = view().peek(keylet::offer(accountID_, SeqProxy::sequence(offerSequence)))) + if (auto sleOffer = + view().peek(keylet::offer(accountID_, SeqProxy::rawSequence(offerSequence)))) { JLOG(j_.debug()) << "Trying to cancel offer #" << offerSequence; return offerDelete(view(), sleOffer, ctx_.registry.get().getJournal("View")); diff --git a/src/libxrpl/tx/transactors/dex/OfferCreate.cpp b/src/libxrpl/tx/transactors/dex/OfferCreate.cpp index 9d62e0bff1..c217eeccf6 100644 --- a/src/libxrpl/tx/transactors/dex/OfferCreate.cpp +++ b/src/libxrpl/tx/transactors/dex/OfferCreate.cpp @@ -639,7 +639,7 @@ OfferCreate::applyGuts(Sandbox& sb, Sandbox& sbCancel) if (cancelSequence) { auto const sleCancel = - sb.peek(keylet::offer(accountID_, SeqProxy::sequence(*cancelSequence))); + sb.peek(keylet::offer(accountID_, SeqProxy::rawSequence(*cancelSequence))); // It's not an error to not find the offer to cancel: it might have // been consumed or removed. If it is found, however, it's an error diff --git a/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp b/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp index 1819d2495e..1a66d9fb91 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp @@ -93,7 +93,8 @@ EscrowCancel::preclaim(PreclaimContext const& ctx) { if (ctx.view.rules().enabled(featureTokenEscrow)) { - auto const k = keylet::escrow(ctx.tx[sfOwner], SeqProxy::sequence(ctx.tx[sfOfferSequence])); + auto const k = + keylet::escrow(ctx.tx[sfOwner], SeqProxy::rawSequence(ctx.tx[sfOfferSequence])); auto const slep = ctx.view.read(k); if (!slep) return tecNO_TARGET; @@ -118,7 +119,8 @@ EscrowCancel::preclaim(PreclaimContext const& ctx) TER EscrowCancel::doApply() { - auto const k = keylet::escrow(ctx_.tx[sfOwner], SeqProxy::sequence(ctx_.tx[sfOfferSequence])); + auto const k = + keylet::escrow(ctx_.tx[sfOwner], SeqProxy::rawSequence(ctx_.tx[sfOfferSequence])); auto const slep = ctx_.view().peek(k); if (!slep) { diff --git a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp index 0fc80792a6..1f1af75209 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp @@ -204,7 +204,8 @@ EscrowFinish::preclaim(PreclaimContext const& ctx) if (ctx.view.rules().enabled(featureTokenEscrow)) { - auto const k = keylet::escrow(ctx.tx[sfOwner], SeqProxy::sequence(ctx.tx[sfOfferSequence])); + auto const k = + keylet::escrow(ctx.tx[sfOwner], SeqProxy::rawSequence(ctx.tx[sfOfferSequence])); auto const slep = ctx.view.read(k); if (!slep) return tecNO_TARGET; @@ -229,7 +230,8 @@ EscrowFinish::preclaim(PreclaimContext const& ctx) TER EscrowFinish::doApply() { - auto const k = keylet::escrow(ctx_.tx[sfOwner], SeqProxy::sequence(ctx_.tx[sfOfferSequence])); + auto const k = + keylet::escrow(ctx_.tx[sfOwner], SeqProxy::rawSequence(ctx_.tx[sfOfferSequence])); auto const slep = ctx_.view().peek(k); if (!slep) { diff --git a/src/libxrpl/tx/transactors/lending/LoanSet.cpp b/src/libxrpl/tx/transactors/lending/LoanSet.cpp index 9bdb84e94f..24b18926a3 100644 --- a/src/libxrpl/tx/transactors/lending/LoanSet.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanSet.cpp @@ -595,7 +595,7 @@ LoanSet::doApply() // Create the loan auto loan = - std::make_shared(keylet::loan(brokerID, SeqProxy::sequence(*loanSequenceProxy))); + std::make_shared(keylet::loan(brokerID, SeqProxy::rawSequence(*loanSequenceProxy))); // Prevent copy/paste errors auto setLoanField = [&loan, &tx](auto const& field, std::uint32_t const defValue = 0) { diff --git a/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainSet.cpp b/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainSet.cpp index c61e3d2225..69f9c82c05 100644 --- a/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainSet.cpp +++ b/src/libxrpl/tx/transactors/permissioned_domain/PermissionedDomainSet.cpp @@ -116,7 +116,7 @@ PermissionedDomainSet::doApply() bool const fixEnabled = view().rules().enabled(fixCleanup3_1_3); auto const seq = fixEnabled ? ctx_.tx.getSeqValue() : ctx_.tx.getFieldU32(sfSequence); - Keylet const pdKeylet = keylet::permissionedDomain(accountID_, SeqProxy::sequence(seq)); + Keylet const pdKeylet = keylet::permissionedDomain(accountID_, SeqProxy::rawSequence(seq)); auto slePd = std::make_shared(pdKeylet); slePd->setAccountID(sfOwner, accountID_); diff --git a/src/libxrpl/tx/transactors/system/TicketCreate.cpp b/src/libxrpl/tx/transactors/system/TicketCreate.cpp index f0f461cf67..8844d325a8 100644 --- a/src/libxrpl/tx/transactors/system/TicketCreate.cpp +++ b/src/libxrpl/tx/transactors/system/TicketCreate.cpp @@ -99,7 +99,7 @@ TicketCreate::doApply() for (std::uint32_t i = 0; i < ticketCount; ++i) { std::uint32_t const curTicketSeq = firstTicketSeq + i; - Keylet const ticketKeylet = keylet::ticket(accountID_, SeqProxy::ticket(curTicketSeq)); + Keylet const ticketKeylet = keylet::ticket(accountID_, SeqProxy::rawTicket(curTicketSeq)); SLE::pointer const sleTicket = std::make_shared(ticketKeylet); sleTicket->setAccountID(sfAccount, accountID_); diff --git a/src/tests/libxrpl/tx/AccountSet.cpp b/src/tests/libxrpl/tx/AccountSet.cpp index 65256778e3..ae291791d4 100644 --- a/src/tests/libxrpl/tx/AccountSet.cpp +++ b/src/tests/libxrpl/tx/AccountSet.cpp @@ -611,7 +611,7 @@ TEST(AccountSet, Ticket) // Get alice's current sequence - the ticket will be created at seq + 1 std::uint32_t const aliceSeqBefore = env.getAccountRoot(alice.id()).getSequence(); - auto const ticketSeq = SeqProxy::ticket(aliceSeqBefore + 1); + auto const ticketSeq = SeqProxy::rawTicket(aliceSeqBefore + 1); // Create a ticket EXPECT_EQ(env.submit(transactions::TicketCreateBuilder{alice, 1}, alice).ter, tesSUCCESS); diff --git a/src/xrpld/app/ledger/detail/LocalTxs.cpp b/src/xrpld/app/ledger/detail/LocalTxs.cpp index 5bfe8684f0..81c7713a1b 100644 --- a/src/xrpld/app/ledger/detail/LocalTxs.cpp +++ b/src/xrpld/app/ledger/detail/LocalTxs.cpp @@ -147,7 +147,7 @@ public: if (!sleAcct) return false; - SeqProxy const acctSeq = SeqProxy::sequence(sleAcct->getFieldU32(sfSequence)); + SeqProxy const acctSeq = SeqProxy::rawSequence(sleAcct->getFieldU32(sfSequence)); SeqProxy const seqProx = txn.getSeqProxy(); if (seqProx.isSeq()) diff --git a/src/xrpld/app/misc/detail/TxQ.cpp b/src/xrpld/app/misc/detail/TxQ.cpp index 041d2ade1e..b9cfc1d65c 100644 --- a/src/xrpld/app/misc/detail/TxQ.cpp +++ b/src/xrpld/app/misc/detail/TxQ.cpp @@ -773,7 +773,7 @@ TxQ::apply( return {terNO_ACCOUNT, false}; // If the transaction needs a Ticket is that Ticket in the ledger? - SeqProxy const acctSeqProx = SeqProxy::sequence((*sleAccount)[sfSequence]); + SeqProxy const acctSeqProx = SeqProxy::rawSequence((*sleAccount)[sfSequence]); SeqProxy const txSeqProx = tx->getSeqProxy(); if (txSeqProx.isTicket() && !view.exists(keylet::ticket(account, txSeqProx))) { @@ -1605,9 +1605,9 @@ TxQ::nextQueuableSeqImpl(SLE::const_ref sleAccount, std::scoped_lock // If the account is not in the ledger or a non-account was passed // then return zero. We have no idea. if (!sleAccount || sleAccount->getType() != ltACCOUNT_ROOT) - return SeqProxy::sequence(0); + return SeqProxy::rawSequence(0); - SeqProxy const acctSeqProx = SeqProxy::sequence((*sleAccount)[sfSequence]); + SeqProxy const acctSeqProx = SeqProxy::rawSequence((*sleAccount)[sfSequence]); // If the account is not in the queue then acctSeqProx is good enough. auto const accountIter = byAccount_.find((*sleAccount)[sfAccount]); @@ -1669,7 +1669,7 @@ TxQ::tryDirectApply( if (!sleAccount) return {}; - SeqProxy const acctSeqProx = SeqProxy::sequence((*sleAccount)[sfSequence]); + SeqProxy const acctSeqProx = SeqProxy::rawSequence((*sleAccount)[sfSequence]); SeqProxy const txSeqProx = tx->getSeqProxy(); // Can only directly apply if the transaction sequence matches the account diff --git a/src/xrpld/rpc/handlers/VaultInfo.cpp b/src/xrpld/rpc/handlers/VaultInfo.cpp index 293eb8f33d..35f8b62c01 100644 --- a/src/xrpld/rpc/handlers/VaultInfo.cpp +++ b/src/xrpld/rpc/handlers/VaultInfo.cpp @@ -49,7 +49,7 @@ parseVault(json::Value const& params, json::Value& jvResult) return std::nullopt; } - uNodeIndex = keylet::vault(*id, SeqProxy::sequence(params[jss::seq].asUInt())).key; + uNodeIndex = keylet::vault(*id, SeqProxy::rawSequence(params[jss::seq].asUInt())).key; } else { diff --git a/src/xrpld/rpc/handlers/account/AccountInfo.cpp b/src/xrpld/rpc/handlers/account/AccountInfo.cpp index 3a96593452..55fb1f489c 100644 --- a/src/xrpld/rpc/handlers/account/AccountInfo.cpp +++ b/src/xrpld/rpc/handlers/account/AccountInfo.cpp @@ -260,7 +260,7 @@ doAccountInfo(RPC::JsonContext& context) // We expect txs to be returned sorted by SeqProxy. Verify // that with a couple of asserts. - SeqProxy prevSeqProxy = SeqProxy::sequence(0); + SeqProxy prevSeqProxy = SeqProxy::rawSequence(0); for (auto const& tx : txs) { json::Value jvTx = json::ValueType::Object; diff --git a/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp b/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp index 80cddc032e..07790fa2cc 100644 --- a/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp +++ b/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp @@ -432,7 +432,7 @@ parseEscrow( if (!seq) return std::unexpected(seq.error()); - return keylet::escrow(*id, SeqProxy::sequence(*seq)).key; + return keylet::escrow(*id, SeqProxy::rawSequence(*seq)).key; } auto const parseFeeSettings = fixed(keylet::feeSettings()); @@ -494,7 +494,7 @@ parseLoanBroker( if (!seq) return std::unexpected(seq.error()); - return keylet::loanBroker(*id, SeqProxy::sequence(*seq)).key; + return keylet::loanBroker(*id, SeqProxy::rawSequence(*seq)).key; } static std::expected @@ -516,7 +516,7 @@ parseLoan( if (!seq) return std::unexpected(seq.error()); - return keylet::loan(*id, SeqProxy::sequence(*seq)).key; + return keylet::loan(*id, SeqProxy::rawSequence(*seq)).key; } static std::expected @@ -598,7 +598,7 @@ parseOffer( if (!seq) return std::unexpected(seq.error()); - return keylet::offer(*id, SeqProxy::sequence(*seq)).key; + return keylet::offer(*id, SeqProxy::rawSequence(*seq)).key; } static std::expected @@ -659,7 +659,7 @@ parsePermissionedDomain( if (!seq) return std::unexpected(seq.error()); - return keylet::permissionedDomain(*account, SeqProxy::sequence(pd[jss::seq].asUInt())).key; + return keylet::permissionedDomain(*account, SeqProxy::rawSequence(pd[jss::seq].asUInt())).key; } static std::expected @@ -762,7 +762,7 @@ parseTicket( if (!seq) return std::unexpected(seq.error()); - return keylet::ticket(*id, SeqProxy::sequence(*seq)).key; + return keylet::ticket(*id, SeqProxy::rawSequence(*seq)).key; } static std::expected @@ -784,7 +784,7 @@ parseVault( if (!seq) return std::unexpected(seq.error()); - return keylet::vault(*id, SeqProxy::sequence(*seq)).key; + return keylet::vault(*id, SeqProxy::rawSequence(*seq)).key; } static std::expected