Bart
19d8ff8ff5
fix: Reject a misplaced leaf at entry, fail closed if one slips past
...
`NodePathStack`'s position and depth checks were `XRPL_ASSERT_IF`s, which are
stripped under `NDEBUG`, so a release build walked on with a node sitting where
it did not belong. Each is now a live test that refuses the push and lets the
caller stop, and each reports `SOMETIMES` rather than `UNREACHABLE`: a node
resolved from the local store reaches a walk through `descend(parent, branch)`,
which fetches by the parent's recorded child hash and judges neither position nor
type, so external data can reach either case and neither may abort a build.
Every path that does know the position now judges a node before hooking it: the
two filter descents and the deferred-read hook, each marking the map invalid the
way `addKnownNode` already did. `getMissingNodes` no longer calls
`clearSynching()` on a map it has condemned, at either of its two returns, since
that would move the state to `Modifying` and erase the verdict.
`gmnProcessDeferredReads` became non-static so it can record one.
`boundHelper` now throws where it used to answer `end()`. An empty map still
leaves its root on the path, so an empty path means only that a node was refused,
while `end()` is the positive claim that no key lies on the requested side of the
key asked for. New `SHAMapMisplacedLeaf` tests build a tree whose hashes agree
but whose leaf sits under the wrong branch, drive it in through both acquisition
routes, and check that iteration and both bounds refuse it.
2026-09-23 21:46:45 +02:00
Bart
66ead1a7e0
refactor: Unify upperBound and lowerBound into boundHelper
...
The two functions were near duplicates: walk to the key, then look for the
nearest leaf on one side. Only the scan direction, the comparison deciding a
leaf qualifies, and whether to take the first or last leaf below the subtree
differed, exactly the distinction `BelowDirection` already draws for
`belowHelper`, so the pair collapse into one parameterized walk. Also drops
the stale `// TODO: what to return here?` above `lowerBound`'s `return end()`:
no predecessor is the correct answer for the smallest key, and the tests pin
it.
Adds the two map shapes the existing tests never built. Every test map held at
least three items, so the root was always an inner node with a populated
branch on either side of a probe. An empty map exercises the childless root,
where the scan finds nothing on any branch and the walk falls through to
`end()`. A single-item map exercises a leaf directly under the root, where
that one leaf decides the outcome.
The single-item test's comment records why `root_` is an inner node even
there: a map built through `addItem` keeps the root it was constructed with,
and only a single-item map synced from a peer (`addRootNode`) replaces `root_`
with a leaf directly. The comment also notes that the leaf entry settles a
probe only when the leaf qualifies against it; for every other probe the leaf
is popped and `root_`'s own inner-node scan is what reaches `end()`.
2026-09-23 19:57:54 +02:00
Bart
00606bec1a
fix: Derive traversal node IDs from the branch actually descended ( #7942 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
2026-09-22 14:02:11 +00:00
Mayukha Vadari
2bc17c3e73
refactor: Add initial wrapper classes for all SLEs ( #7886 )
2026-09-21 19:47:23 +00:00
Bart
16f7b263fd
docs: Correct three comments about null-terminated views ( #8253 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
2026-09-21 11:12:09 +00:00
Pratik Mankawde
e20f448a71
fix: Reject variable-length prefixes the encoder cannot write
2026-09-17 13:33:07 +02:00
Jingchen
b60636169a
fix: Make calculateBaseFee exception-safe
2026-09-17 13:33:06 +02:00
Vito Tumas
da260fa42b
fix: Relax Loan Invariants to allow zero-principal LoanPay transaction
2026-09-17 13:33:04 +02:00
Timothy Banks
227f1b4d9c
fix: Unbounded Database Seek via TMGetLedger
2026-09-17 13:33:03 +02:00
Mayukha Vadari
54e62a621f
fix: Prevent simulate from updating the orderbook db
2026-09-17 13:33:02 +02:00
Timothy Banks
53628b70c0
fix: Use a hardened hash on the STPathElement
2026-09-17 13:33:01 +02:00
Vito Tumas
6fec2c11bf
refactor: Rename vault accrual accounting to instant interest recognition ( #8237 )
2026-09-17 10:27:44 +00:00
Bart
04108a030c
refactor: Build the RPC dispatch and command-line tables at compile time ( #8006 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-09-17 10:01:28 +00:00
Bart
e302e4eeed
fix: Set the peer limit total when per-direction limits are configured ( #8220 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
2026-09-15 13:14:12 +00:00
Mayukha Vadari
1a4a40ebb8
fix: Update noripple_check to exclude transactions field on error responses ( #6303 )
...
Co-authored-by: Timur Yalymov <36795566+tyalymov@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-09-15 00:21:57 +00:00
yinyiqian1
7f55dd390c
feat: Support mirror key epochs in confidential MPT transactions for Key Rotation amendment ( #8210 )
2026-09-14 18:23:38 +00:00
Mayukha Vadari
028783661d
feat: Apply .macro changes from ripple/smart-escrow ( #8157 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-09-09 20:05:58 +00:00
Vito Tumas
21890d9daf
feat: Register featureLendingProtocolV1_2 amendment ( #8185 )
...
Co-authored-by: Bart <bthomee@users.noreply.github.com >
2026-09-09 10:01:32 +00:00
Mayukha Vadari
e3c8996e44
feat: Add fixCleanup3_5_0 amendment placeholder ( #8174 )
2026-09-05 00:06:14 +00:00
yinyiqian1
d5bfe94f15
feat: Support key rotation in MPTokenIssuanceSet ( #7915 )
2026-09-03 21:13:06 +00:00
Mayukha Vadari
58a59c37ed
fix: Add signature prefixes for sfCounterpartySignature and sfSponsorSignature ( #8162 )
2026-09-03 17:19:07 +00:00
Chenna Keshava B S
636d2d4851
fix: Reinforce the priority of AMMClawback in case of insufficient reserves ( #7796 )
...
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-09-02 20:48:53 +00:00
Timur Yalymov
5d8fd9824e
fix: Revert credential cleanup for pseudo-accounts ( #8161 )
2026-09-02 15:00:50 +00:00
Vito Tumas
8809bdf3f0
fix: Treat an existing IOU line as a no-op in addEmptyHolding ( #8154 )
2026-09-02 12:15:29 +00:00
Vito Tumas
7863ac8cf6
fix: Add 60s buffer before closed-ended vault redemption ( #8151 )
2026-09-01 18:27:05 +00:00
Vito Tumas
b3b38e4416
fix: Correct fee-payer XRP delta in ValidVault for sponsored VaultWithdraw ( #8141 )
2026-09-01 14:43:11 +00:00
Vito Tumas
ccd5dc5e06
fix: Keep LoanBrokerDelete valid for auth-required MPT cover ( #8144 )
2026-09-01 14:40:53 +00:00
Copilot
fac20a06f3
refactor: Add common helper function for injected metadata fields in RPCs ( #5706 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Mayukha Vadari <mvadari@gmail.com >
Co-authored-by: Mayukha Vadari <mvadari@ripple.com >
Co-authored-by: Timur Yalymov <36795566+tyalymov@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-08-31 17:21:25 +00:00
Jingchen
7281e0606a
feat: Add vault invariants ( #7732 )
...
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-08-27 17:15:17 +00:00
Jingchen
71f5555873
feat: Remove pseudo account field filter ( #8042 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-08-27 13:52:23 +00:00
Gregory Tsipenyuk
dc3bd9cf00
fix: Fix MPT/DEX Audit/Attackathon reports (Phase 1) ( #7334 )
2026-08-26 18:09:46 +00:00
Vito Tumas
1e8b136bfb
feat: Enable LendingProtocolV1_1 amendment ( #8125 )
2026-08-26 17:35:54 +00:00
Vito Tumas
3c47af779c
fix: Clamp Vault Deposit, Withdraw, and Clawback to assetsTotal grid ( #8057 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-08-26 17:02:05 +00:00
Vito Tumas
36c165f74d
fix: Prevent early loan impairment and due-date manipulation ( #6557 )
...
Co-authored-by: Ed Hennis <ed@ripple.com >
Co-authored-by: Timur Yalymov <36795566+tyalymov@users.noreply.github.com >
2026-08-26 13:38:24 +00:00
Jingchen
c5dc408596
fix: Remove explicit from std/boost hash specialisation default constructors ( #8100 )
2026-08-25 14:13:02 +00:00
Jingchen
f137d71510
test: Split Invariants_test.cpp into per-topic files ( #8077 )
2026-08-24 16:17:33 +00:00
Ed Hennis
764cbe7c29
perf: Pause online delete if there any gaps in recent ledger history ( #5531 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-08-24 14:16:03 +00:00
Timur Yalymov
520650081b
fix: Remove credentials pinned to Vault, LoanBroker, and AMM pseudo-accounts ( #7877 )
...
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
2026-08-24 13:06:44 +00:00
Timur Yalymov
a097ccebae
fix: Tighten destination checks on vault withdrawal ( #7977 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
2026-08-24 12:50:57 +00:00
Mayukha Vadari
85512541ad
refactor: Collapse transactions.macro settings into a TxSettings struct ( #8001 )
...
Co-authored-by: Timur Yalymov <36795566+tyalymov@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-08-20 19:25:27 +00:00
Kassaking7
d0dbf9163c
fix: Prevent AMM auction slots from being acquired at zero cost when trading fee is zero ( #7430 )
2026-08-20 19:04:04 +00:00
Shawn Xie
e3ba569187
fix: Check credential for LoanBrokerCoverWithdraw and VaultWithdraw ( #7107 )
...
Co-authored-by: Peter Chen <ychen@ripple.com >
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-08-20 15:33:46 +00:00
Vito Tumas
d1dc7a6ccf
refactor: Extract invariant invocation into free checkInvariants runner ( #7404 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-19 14:10:11 +00:00
Timur Yalymov
368ff1afce
fix: Exempt loan default from asset freeze ( #7932 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-08-19 13:43:40 +00:00
Vito Tumas
3adf2d40b5
fix: Reject VaultWithdraw fixed-share amounts that round to zero ( #7950 )
2026-08-19 13:09:38 +00:00
Bart
ca39bff3c8
refactor: Add SHAMapNodeID::isPrefixOf ( #7939 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
2026-08-18 12:35:32 +00:00
Copilot
820ca5b332
refactor: Convert boost::beast::string_view to std::string_view ( #6306 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: mvadari <8029314+mvadari@users.noreply.github.com >
Co-authored-by: Mayukha Vadari <mvadari@ripple.com >
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
Co-authored-by: xrplf-ai-reviewer[bot] <266832837+xrplf-ai-reviewer[bot]@users.noreply.github.com>
Co-authored-by: Mayukha Vadari <mvadari@gmail.com >
Co-authored-by: Timur Yalymov <36795566+tyalymov@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com >
2026-08-17 23:19:56 +00:00
Gregory Tsipenyuk
1b226c8b2e
perf: Optimize MPT freeze checks to reduce redundant state reads ( #7411 )
...
Co-authored-by: Chenna Keshava B S <21219765+ckeshava@users.noreply.github.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-08-17 21:15:16 +00:00
Gregory Tsipenyuk
ca6121c5b3
feat: Enforce MPT CanTransfer on AMM LPTokens transfers ( #7418 )
2026-08-17 20:58:46 +00:00
Bart
5337d028a2
refactor: Use unsigned int for branch-related operations ( #7938 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-17 10:07:14 +00:00