This week's highlights include a merged API change expanding server_definitions to include transaction and ledger entry formats and flags (rippled#6321), a bug fix in xrpl-py correcting serialization field codes for DynamicMPT and Lending Protocol transactions (xrpl-py#918), and a Clio fix restoring startup when no cache file is present (clio#2976).
Transaction definitions now available directly from nodes. For years, developers building wallets and signing tools had to maintain their own hardcoded lists of which transaction types exist, what fields they take, and what flag values mean. This week, a merged change means that any rippled node's server_definitions API call now returns this information directly — including transaction formats, field types, and flag names. This makes it easier to build clients that work correctly even as new transaction types are added to the ledger, because they can fetch the current definitions instead of relying on stale hardcoded data.
A serialization bug in xrpl-py was silently corrupting certain transactions. The xrpl-py library had two incorrect entries in its field code table — used to encode transactions into the binary format the network understands. For developers building transactions involving Dynamic Multi-Purpose Tokens (XLS-94) or the Lending Protocol (XLS-66), these wrong codes would result in serialized transactions that appear valid but contain fields in the wrong positions. The fix corrects the field code assignments and the wrong field name. Any application using xrpl-py to construct these transaction types should update to the corrected version.
Clio regained the ability to start fresh. Clio is the read-only API server that many ecosystem tools use to query historical ledger data. A recent change accidentally broke its startup sequence when no local cache file existed — a situation that occurs on first boot or after clearing the data directory. This week's fix restores normal startup behavior. Operators running Clio in environments where the cache isn't pre-populated (such as fresh deployments or containerized setups) should update to the latest nightly build at github.com/XRPLF/clio. Follow @XRPLF and @RippleXDev on X for ongoing development updates.
server_definitions now includes transaction formats and flags — rippled#6321 (+1169/-503 in 29 files) closes the long-standing issue #5151. The server_definitions RPC response now includes transaction and ledger entry formats, field definitions, and flags. This is labeled an API Change and means client libraries can introspect supported transaction types, flag names, and formats directly from a live node rather than hardcoding them. Developers building wallets, custody integrations, and signing tools should review the updated response shape.
Gateway balance RPC now handles MPTs correctly — rippled#6143 (+44/-1, labeled API Change): the gateway_balances RPC previously had undefined behavior when encountering MPT-type entries. It now skips MPT entries cleanly, since gateway balances are an IOU-specific concept.
xrpl-py: Corrected SField codes for DynamicMPT and Lending Protocol — xrpl-py#918 fixes two incorrect entries in the binary codec definitions.json: sfMutableFlags was mapped to field code nth=54 instead of the correct nth=53 (colliding with sfStartDate), and sfPreviousPaymentDueDate was misnamed. Both errors would corrupt serialized transactions involving DynamicMPT (XLS-94) or Lending Protocol (XLS-66) fields. Anyone using xrpl-py to construct these transaction types should upgrade.
XRPL-Standards: Confidential MPT audit updates — Three spec updates merged for XLS-0096 (Confidential MPT): credential handling for ConfidentialMPTSend (XRPL-Standards#491), inbox/zero-balance merge behavior (XRPL-Standards#487), and invariant additions (XRPL-Standards#486).
Confidential MPT: Lighter equality proof — rippled#6496 adopts a shared r value for ConfidentialMPTSend equality proofs, reducing proof size (+50/-52).
Vault invariant rounding for IOUs — rippled#6217 relaxes Vault (XLS-65 / SingleAssetVault) deposit, withdraw, and clawback invariants to allow minimal floating-point discrepancy for IOU balances (tolerance of 1×10⁻¹³). XRP and MPT invariants remain exact (zero tolerance).
WASM module: Defensive data length check — rippled#6449 adds a size guard on sfData output from WASM (Smart Escrow) execution before it is written into a ledger entry, preventing oversized outputs from reaching the ledger.
Clio: Fix startup failure without cache file — clio#2976 (+435/-201): a regression introduced in PR #2830 prevented Clio from starting when no cache file was present. This is now resolved. Operators running Clio in environments where the cache file may not exist on first boot should upgrade to the nightly build nightly-20260306.
Transaction folder restructure (no behavior change) — rippled#6483 (+222/-222 across 165 files) reorganizes transactor source files to lowercase/snake_case directories and merges AMM and Offer directories for consistency. Pure refactor, approved by reviewer.
Build: Git info compiled into one file — rippled#6464 confines Git compile-time metadata to a single translation unit, reducing the number of files that trigger a full rebuild when Git state changes. This should meaningfully speed up incremental builds.
CMake: Switched to gersemi — Both rippled (#6486, #6491) and Clio (clio#2980, clio#2983) replaced the old cmake-format tool with gersemi, reformatting CMake files across both codebases.
Clang-tidy checks enabled — A batch of bugprone-* and related static analysis checks were enabled in rippled this week: bugprone-sizeof-expression (#6466), bugprone-return-const-ref-from-parameter (#6459), bugprone-move-forwarding-reference (#6457), bugprone-empty-catch (#6419), and others. These catches add compile-time protection against common C++ error patterns.
Subscribe test stability — rippled#6420 fixes a flaky subscribe test (issue #6399) by enforcing single-threaded I/O in those tests and adding an assertion to syncClose().
Dev portal: Major tutorials restructure — xrpl-dev-portal#3245 (+5921/-18560 across 423 files) revises the tutorials information architecture on xrpl.org.
Dev portal: Updated devnet reset blog and ledger entry commands — xrpl-dev-portal#3533 adds devnet entries for Loan, LoanBroker, PermissionedDomain, and Vault, and removes the not-enabled tag from PermissionedDomain.
Dev portal: LLMs.txt cleanup — xrpl-dev-portal#3536 reduces the llms.txt file from ~384k to ~116k characters, making XRPL documentation more usable in AI context windows.
ripplerpc RPC parameter (part of XLS-0095 renaming effort). Under review; no blocking reviews yet.NotDelegable. Approved by one reviewer.verifyAggregatedBulletproof also needs a proof size check.ConfidentialMPTSend.View.h/View.cpp into dedicated per-type files (+4712/-4281). Preparatory refactor for Typed Ledger Entry Views.SPDX-License-Identifier: ISC instead of simply removing headers.VaultList RPC for the Lending Protocol (+1143/-0 in 7 files). Under active review.ripplerpc removal (rippled#6498): Part of the XLS-0095 rename initiative. If you depend on the ripplerpc field in RPC responses, this is the PR to watch — it removes the field rather than renaming it.Path-finding limits questioned — Community member @shortthefomo asked why rippled caps payment paths at 6 paths / 8 hops, noting the limits may be too conservative given the presence of multiple AMM pools and DEX routes. A secondary hardcoded limit of 4 in PathRequest.h was also flagged as inconsistent with the 6-path cap.
LoanPay missing delivered_amount — Issue #6500 (labeled Feature Request): a community member notes that LoanPay transactions can have a different applied amount than the Amount field, and requests a synthetic delivered_amount field similar to how Payment handles it.
Blackholed accounts and Token Escrow — XRPL-Standards discussion #488 asks whether blackholed accounts could be permitted to use Token Escrow via a fix amendment or Smart Escrow. Community and core contributors note this would require a separate amendment.
Trust-line eligibility verification for commerce — xrpl.js discussion #3219 proposes standardizing issuer-aware trust-line balance checks for commerce use cases (e.g., verifying RLUSD holdings for merchant payment eligibility).
Five community-contributed PRs opened for xrpl.js by @slurpyone (authorAssociation: NONE): enhancements to parseTransactionFlags (#3224), currency name/code conversion utilities (#3223), improved validation error messages (#3222), replacement of deprecated hex conversion functions (#3221), and adding an algorithm property to the Wallet class (#3220).
| Metric | Count |
| Repos with activity | 6 |
| rippled PRs merged | 22 |
| rippled PRs opened | 27 |
| clio PRs merged | 9 |
| clio PRs opened | 6 |
| xrpl.js PRs merged | 2 |
| xrpl.js PRs opened | 5 |
| xrpl-py PRs merged | 1 |
| xrpl-py PRs opened | 1 |
| xrpl-dev-portal PRs merged | 4 |
| xrpl-dev-portal PRs opened | 6 |
| XRPL-Standards PRs merged | 4 |
| XRPL-Standards PRs opened | 2 |
| Clio releases | 1 |
| New issues (rippled) | 2 |
| rippled commits this week | 17 |
| clio commits this week | 11 |
| xrpl-dev-portal commits this week | 10 |
| xrpl.js commits this week | 2 |
| xrpl-py commits this week | 1 |
| XRPL-Standards commits this week | 4 |