<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: RippleX Developers</title>
    <description>The latest articles on DEV Community by RippleX Developers (ripplexdev).</description>
    <link>https://dev.to/ripplexdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F4275%2Fc928fdb3-3be0-427c-971c-2224f6c6224a.jpeg</url>
      <title>DEV Community: RippleX Developers</title>
      <link>https://dev.to/ripplexdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ripplexdev"/>
    <language>en</language>
    <item>
      <title>Batch V1.1: What Changed and Why It's Ready</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Mon, 14 Sep 2026 13:52:53 +0000</pubDate>
      <link>https://dev.to/ripplexdev/batch-v11-what-changed-and-why-its-ready-4ek0</link>
      <guid>https://dev.to/ripplexdev/batch-v11-what-changed-and-why-its-ready-4ek0</guid>
      <description>&lt;h1&gt;
  
  
  What is Batch?
&lt;/h1&gt;

&lt;p&gt;Batch (XLS-56) allows multiple XRPL transactions from different accounts to execute atomically in a single ledger close. For example, if any inner transaction fails during the all-or-nothing mode of the feature, the entire batch reverts. This makes various types of atomic operations much easier, and is also foundational infrastructure for multi-party coordination on the XRPL: atomic swaps, coordinated settlements, and any workflow where two or more parties need to move in lockstep without trust assumptions.&lt;/p&gt;

&lt;h1&gt;
  
  
  What happened with the original Batch (v1.0)
&lt;/h1&gt;

&lt;p&gt;On February 19, 2026, security researchers and &lt;a href="https://cantina.xyz/welcome" rel="noopener noreferrer"&gt;Cantina AI&lt;/a&gt; identified a critical logic flaw in the signature-validation routine of the original Batch amendment. The function &lt;code&gt;checkBatchSign&lt;/code&gt;, which validates that each inner-transaction account has authorized the batch, contained an early-return bug: when it encountered a signer whose account did not yet exist on the ledger, it immediately returned success and skipped validation of all remaining signers. This would have allowed an attacker to essentially execute arbitrary transactions on behalf of any victim accounts without their private keys.&lt;/p&gt;

&lt;p&gt;See the full Vulnerability Disclosure Report &lt;a href="https://xrpl.org/blog/2026/vulnerabilitydisclosurereport-bug-feb2026" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The amendment was in its voting phase and had not been activated on Mainnet. No funds were at risk. Within hours of receiving the report, UNL validators were advised to vote "No," Ripple's engineering team reproduced the issue with an independent unit test, and an emergency release was published, marking both &lt;code&gt;Batch&lt;/code&gt; and &lt;code&gt;fixBatchInnerSigs&lt;/code&gt; as "unsupported".&lt;/p&gt;

&lt;h1&gt;
  
  
  What changed in Batch V1.1
&lt;/h1&gt;

&lt;p&gt;Batch V1.1 is a replacement amendment that ships the corrected implementation in &lt;code&gt;xrpld&lt;/code&gt; v3.3.0. The primary focus was on fixing the bug found in February and further hardening the implementation. &lt;/p&gt;

&lt;p&gt;We took the following steps to ensure that the new version is secure:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Checkpoint&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Root-cause fix (early-return elimination)&lt;/td&gt;
&lt;td&gt;Complete, merged via &lt;a href="https://github.com/XRPLF/rippled/pull/6446" rel="noopener noreferrer"&gt;PR #6446&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code review by 4 senior engineers&lt;/td&gt;
&lt;td&gt;Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://audits.sherlock.xyz/contests/1260" rel="noopener noreferrer"&gt;Sherlock Batch Attackathon contest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.halborn.com/audits/ripple/batch-re-audit-314089" rel="noopener noreferrer"&gt;Halborn Batch re-assessment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.commonprefix.com/blog/xrp-ledger-batch-transactions-security-audit-report" rel="noopener noreferrer"&gt;Common Prefix Batch audit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-assisted static analysis pipeline (including a Cantina scan)&lt;/td&gt;
&lt;td&gt;Integrated into review and release process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/ripplexdev/batch-transaction-qa-test-report-5g5g"&gt;QA Devnet and testnet regression testing&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In addition, we found and fixed the following bugs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch Transaction Bypasses MPT Validation, Crashes Node
&lt;/li&gt;
&lt;li&gt;Simulate RPC &lt;code&gt;tfInnerBatchTxn&lt;/code&gt; Flag Assertion Crash
&lt;/li&gt;
&lt;li&gt;Path Size Validation Bypass via Batch Transactions
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;preflight2&lt;/code&gt; &lt;code&gt;tfInnerBatchTxn&lt;/code&gt; flag bypasses signature verification in release builds
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;preflight1&lt;/code&gt; batch &lt;code&gt;parentBatchId&lt;/code&gt; invariant — assert-only enforcement with boolean logic error
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;checkValidity&lt;/code&gt; does not return early for valid inner batch transactions
&lt;/li&gt;
&lt;li&gt;Batch Signatures Miss Outer Account Binding
&lt;/li&gt;
&lt;li&gt;Batch signer ordering not enforced, allowing attacker to control authorization check order
&lt;/li&gt;
&lt;li&gt;Node crash via uncaught &lt;code&gt;std::runtime_error&lt;/code&gt; from &lt;code&gt;Batch::calculateBaseFee&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;buildBatchTxnIds&lt;/code&gt; hashes full inner array pre-count-cap at deserialization
&lt;/li&gt;
&lt;li&gt;Protocol bounds follow hashing and signature verification&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Why Batch matters for the XRPL
&lt;/h1&gt;

&lt;p&gt;Batch is a prerequisite or accelerant for several high-value XRPL use cases already under contract or in active pipeline, such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atomic multi-party settlements.&lt;/strong&gt; Institutional workflows (custody transfers, DvP settlement, cross-border payment finalization) require two or more accounts to act simultaneously. Batch removes the need for trust in execution ordering, eliminating a class of race conditions and partial-execution risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer experience and ecosystem growth.&lt;/strong&gt; Batch is one of the most requested features by XRPL application developers and the community broadly. It enables patterns common on programmatic chains (such as multi-call, atomic bundles, and flash loans) natively on XRPL without smart contracts, reducing friction for new builders entering the ecosystem. Batch also enables DEXs, Wallets and Marketplaces to monetise on transactions they process by bundling the base transaction (such as a Payment) with a platform fee. There are many members of the XRPL ecosystem eager to use this feature.&lt;/p&gt;

&lt;h1&gt;
  
  
  Governance context
&lt;/h1&gt;

&lt;p&gt;The original Batch incident demonstrated that the XRPL governance model works. A critical bug was reported, validators responded within hours, and no funds were ever at risk because the amendment had not yet been activated. The v1.1 replacement was given additional scrutiny precisely because of that history: broader code review, AI-assisted auditing, Sherlock contest, a Halborn re-assessment, and a Common Prefix audit on top of the standard internal audit process.&lt;/p&gt;

&lt;p&gt;For validators voting on Batch V1.1 in &lt;code&gt;xrpld&lt;/code&gt; version 3.3.0:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The root cause is fully understood and publicly documented (vulnerability disclosure report published February 25, 2026).
&lt;/li&gt;
&lt;li&gt;The fix addresses not just the specific bug but the class of vulnerability (early-return in validation loops, signing payload binding).
&lt;/li&gt;
&lt;li&gt;The review process has been expanded with additional tooling and reviewers relative to v1.0.
&lt;/li&gt;
&lt;li&gt;The business case is concrete: named partners, contracted use cases, and protocol-level dependencies are waiting on this capability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://xrpl.org/docs/references/protocol/transactions/types/batch" rel="noopener noreferrer"&gt;Try it on Devnet today&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>xrp</category>
      <category>xrpl</category>
    </item>
    <item>
      <title>Batch Transaction - QA Test Report</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Tue, 08 Sep 2026 22:39:39 +0000</pubDate>
      <link>https://dev.to/ripplexdev/batch-transaction-qa-test-report-5g5g</link>
      <guid>https://dev.to/ripplexdev/batch-transaction-qa-test-report-5g5g</guid>
      <description>&lt;p&gt;&lt;strong&gt;Test Report Date&lt;/strong&gt;: 9/8/2026&lt;br&gt;
&lt;strong&gt;Prepared By&lt;/strong&gt;: &lt;a href="https://github.com/sgramkumar" rel="noopener noreferrer"&gt;sgramkumar&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: GitLab CI Runner (nix-debian)&lt;br&gt;
&lt;strong&gt;Network&lt;/strong&gt;: xrpld devnet + private CI network&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;This report presents the results of QA testing performed on Batch (XLS-56) Transactions across xrpld servers. Coverage targets the  BatchV1_1  amendment, which supersedes the original  Batch  amendment and tightened BatchSigner authorization and signing semantics.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Feature
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Feature Name:&lt;/strong&gt; Batch (Atomic) Transactions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Prior to this feature, an account that needed several operations to succeed or fail together had no way to bind them atomically; each transaction settled independently, leaving the risk of partial completion. Batch allows an account to package up to 8 inner transactions into a single outer &lt;code&gt;Batch&lt;/code&gt; transaction that is processed as one atomic unit. Inner transactions execute under one of four modes — &lt;code&gt;AllOrNothing&lt;/code&gt;, &lt;code&gt;OnlyOne&lt;/code&gt;, &lt;code&gt;UntilFailure&lt;/code&gt;, or &lt;code&gt;Independent&lt;/code&gt; — and may be authorized across multiple accounts (BatchSigners), via delegated authority, via multi-signing, or sequenced by tickets. This unlocks reliable multi-step and multi-party workflows on the XRP Ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specification Reference:&lt;/strong&gt; &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0056-batch" rel="noopener noreferrer"&gt;https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0056-batch&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Test Scope
&lt;/h2&gt;

&lt;p&gt;This report covers the full Batch surface as it stands under the &lt;code&gt;BatchV1_1&lt;/code&gt; amendment (xrpld PRs &lt;a href="https://github.com/XRPLF/rippled/pull/5060" rel="noopener noreferrer"&gt;#5060&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/6446" rel="noopener noreferrer"&gt;#6446&lt;/a&gt;). Testing focused on ensuring that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All four execution modes (&lt;code&gt;AllOrNothing&lt;/code&gt;, &lt;code&gt;OnlyOne&lt;/code&gt;, &lt;code&gt;UntilFailure&lt;/code&gt;, &lt;code&gt;Independent&lt;/code&gt;) behave per the XLS-56 specification, including correct commit/rollback semantics&lt;/li&gt;
&lt;li&gt;The 2–8 inner-transaction bounds, fee calculation, and &lt;code&gt;tfInnerBatchTxn&lt;/code&gt; rules are enforced&lt;/li&gt;
&lt;li&gt;Multi-account and multi-signed BatchSigner authorization is validated, including canonical signer ordering and the hardened &lt;code&gt;BatchV1_1&lt;/code&gt; signing preimage&lt;/li&gt;
&lt;li&gt;Batch composes correctly with the full range of inner transaction types (Payments, Offers, Checks, Escrow, MPT, Vault/Loan operations, and more), and with the features that have special interaction rules at the batch authorization/sequencing layer — Permission Delegation (inner  Delegate  field), Sponsored Fees &amp;amp; Reserves (outer/inner  Sponsor  rules), Confidential MPT (in-batch proof staleness), and Tickets (inner  TicketSequence)&lt;/li&gt;
&lt;li&gt;Security-critical properties hold under adversarial input, including malformed BatchSigners, stale-proof inner transactions, replay, and structural/serialization attacks&lt;/li&gt;
&lt;li&gt;Inner-transaction metadata (&lt;code&gt;sfParentBatchID&lt;/code&gt;) and same-ledger inclusion are correctly reported&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3. Types of Testing Conducted
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Functional&lt;/td&gt;
&lt;td&gt;Verifying each execution mode, inner-transaction type, fee path, and RPC/metadata surface against the XLS-56 specification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression&lt;/td&gt;
&lt;td&gt;Running the full xrpld test suite to confirm Batch changes did not break existing functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversarial / Security&lt;/td&gt;
&lt;td&gt;Attack-matrix scenarios probing malformed BatchSigners, signature-binding violations, stale-proof inner transactions, replay, over-size batches, and structural/serialization smuggling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Feature&lt;/td&gt;
&lt;td&gt;Interactions between Batch and Permission Delegation (XLS-75), Sponsored Fees &amp;amp; Reserves, Confidential MPT (XLS-96), and Tickets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End-to-End&lt;/td&gt;
&lt;td&gt;Full flows spanning batch assembly, multi-party signing, submission, atomic commit/rollback, and downstream metadata validation via xrpld&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  4. Test Results Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Total Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Batch — Core Functional (execution modes, multi-account/multi-sign, tickets/replay/metadata, vault/loan/transaction types, signature &amp;amp; structural validation)&lt;/td&gt;
&lt;td&gt;106&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch — Adversarial / Security&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch — Cross-Feature (Delegation, Sponsorship, Confidential MPT)&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Batch — Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;189&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression — xrpld (full suite)&lt;/td&gt;
&lt;td&gt;5,088&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Testcases: &lt;a href="https://dev.to/ripplexdev/batch-transaction-testcases-1klf"&gt;https://dev.to/ripplexdev/batch-transaction-testcases-1klf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feature commit history:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Introduced as  Batch  in PR #5060 (2a61aee562, merged 2025-05-23)
- Disabled in v3.1.1 due to a critical bug discovered in the original implementation
- Replaced by  BatchV1_1  (hardened BatchSigners + signing preimage) in PR #6446 (86d8b244d6, merged 2026-07-01)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Related xrpld changes covered in this round:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5060" rel="noopener noreferrer"&gt;#5060&lt;/a&gt; — Initial Batch (XLS-56) feature — four execution modes, &lt;code&gt;parentBatchId&lt;/code&gt; propagation&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6446" rel="noopener noreferrer"&gt;#6446&lt;/a&gt; — BatchV1_1 — supersedes &lt;code&gt;Batch&lt;/code&gt;/&lt;code&gt;fixBatchInnerSigs&lt;/code&gt;, tightens BatchSigner authorization and signing-message construction&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/7736" rel="noopener noreferrer"&gt;#7736&lt;/a&gt; — enforces &lt;code&gt;kMaxBatchTxCount&lt;/code&gt; (rejects &amp;gt;8 inner transactions at STTx construction)&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/7279" rel="noopener noreferrer"&gt;#7279&lt;/a&gt; — delegated Confidential MPT inner-transaction cases inside Batch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Related specification change:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XRPL-Standards updated XLS-0056 to align with the BatchV1_1 implementation (BatchSigners sorting/signing payload, &lt;code&gt;tfInnerBatchTxn&lt;/code&gt; common-field semantics)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Bugs Reported
&lt;/h2&gt;

&lt;p&gt;All internal bugs are fixed and there are no Critical Open bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Conclusion
&lt;/h2&gt;

&lt;p&gt;Batch (XLS-56) Transactions have now been exercised across 189 dedicated tests spanning core functional coverage (four execution modes, multi-account/multi-sign authorization, tickets/replay/metadata, and inner transaction-type coverage), adversarial / security scenarios, and cross-feature interactions with Permission Delegation, Sponsored Fees &amp;amp; Reserves, and Confidential MPT. In addition, the full xrpld (5,088) regression suite has been executed to confirm no downstream breakage.&lt;/p&gt;

&lt;p&gt;All security-critical properties documented in XLS-56 have been validated, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct atomic commit/rollback semantics for every execution mode (&lt;code&gt;AllOrNothing&lt;/code&gt; rolls the whole batch back on any inner failure; &lt;code&gt;OnlyOne&lt;/code&gt;, &lt;code&gt;UntilFailure&lt;/code&gt;, and &lt;code&gt;Independent&lt;/code&gt; apply their defined subsets)&lt;/li&gt;
&lt;li&gt;Enforcement of the 2–8 inner-transaction bounds and rejection of over-size batches before preflight work (PR &lt;a href="https://github.com/XRPLF/rippled/pull/7736" rel="noopener noreferrer"&gt;#7736&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Correct BatchSigner authorization under the hardened &lt;code&gt;BatchV1_1&lt;/code&gt; signing preimage, including canonical ascending signer ordering and multi-signed BatchSigners&lt;/li&gt;
&lt;li&gt;Correct interaction with delegated authority, sponsorship, tickets, and Confidential MPT inner transactions, including stale-proof rollback under &lt;code&gt;AllOrNothing&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Accurate inner-transaction metadata (&lt;code&gt;sfParentBatchID&lt;/code&gt;) and same-ledger inclusion reporting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The feature is considered ready for production use at the tested commit level. Future updates to this report will follow any material additions to the Batch surface.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>softwaredevelopment</category>
      <category>testing</category>
    </item>
    <item>
      <title>Batch Transaction - Testcases</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Tue, 08 Sep 2026 21:40:47 +0000</pubDate>
      <link>https://dev.to/ripplexdev/batch-transaction-testcases-1klf</link>
      <guid>https://dev.to/ripplexdev/batch-transaction-testcases-1klf</guid>
      <description>&lt;p&gt;Automated test coverage for the &lt;strong&gt;Batch&lt;/strong&gt; transaction feature (XLS-56), grouped by the invariant or execution mode each test exercises with &lt;strong&gt;189 tests.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Test Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Execution Modes&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Account &amp;amp; Multi-Sign&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tickets, Replay &amp;amp; Metadata&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vault, Loan &amp;amp; Transaction Types&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signature &amp;amp; Structural Validation&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security &amp;amp; Adversarial&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Feature Interactions&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;189&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Execution Modes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AllOrNothing
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch allornothing all payments succeed&lt;/li&gt;
&lt;li&gt;Test Batch allornothing submit batch multiple times&lt;/li&gt;
&lt;li&gt;Test Batch allornothing one payment fails&lt;/li&gt;
&lt;li&gt;Test Batch allornothing all payments fail&lt;/li&gt;
&lt;li&gt;Test Batch allornothing mixed transaction types&lt;/li&gt;
&lt;li&gt;Test Batch allornothing fee calculation&lt;/li&gt;
&lt;li&gt;Test Batch allornothing max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch allornothing more than max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch allornothing cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch allornothing fail and then succeed&lt;/li&gt;
&lt;li&gt;Test Batch allornothing with tickets&lt;/li&gt;
&lt;li&gt;Test Batch allornothing deep rollback on late inner failure&lt;/li&gt;
&lt;li&gt;Test Batch allornothing value conservation&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  OnlyOne
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch onlyone first succeeds&lt;/li&gt;
&lt;li&gt;Test Batch onlyone first fails second succeeds&lt;/li&gt;
&lt;li&gt;Test Batch onlyone all fail&lt;/li&gt;
&lt;li&gt;Test Batch onlyone offer priority&lt;/li&gt;
&lt;li&gt;Test Batch onlyone max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch onlyone more than max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch onlyone cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch onlyone fail and then succeed&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  UntilFailure
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch untilfailure all succeed&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure stops at first&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure stops at second&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure stops at third&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure sequential setup&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure progressive payments&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure mixed success failure pattern&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure more than max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure fail and then succeed&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Independent
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch independent all succeed&lt;/li&gt;
&lt;li&gt;Test Batch independent some fail&lt;/li&gt;
&lt;li&gt;Test Batch independent all fail&lt;/li&gt;
&lt;li&gt;Test Batch independent parallel operations&lt;/li&gt;
&lt;li&gt;Test Batch independent mixed transaction types&lt;/li&gt;
&lt;li&gt;Test Batch independent account setup operations&lt;/li&gt;
&lt;li&gt;Test Batch independent max transactions&lt;/li&gt;
&lt;li&gt;Test Batch independent more than max transactions&lt;/li&gt;
&lt;li&gt;Test Batch independent cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch independent fail and then succeed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Multi-Account &amp;amp; Multi-Sign
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Multi-Account
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch multiaccount workflow all payments succeed&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount atomic swap xrp for xrp&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount atomic swap xrp for token&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount circular three way swap&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount with submitter not in inner txns&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount without signers&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount with max signers&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount with more than max signers&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount txn1 fails txn2 succeeds&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create check succeeds cash check fails&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts too soon with other account as signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts after flag ledger with other account as signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete submitting account after flag ledger with no signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete submitting account after flag ledger with signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount alice creates offer bob creates offer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create nftokenmint nftokenoffercreate fails reverts nftokenmint&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount exploit steal funds&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount ticket based outer succeeds&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Multi-Sign
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test multisigned outer batch succeeds&lt;/li&gt;
&lt;li&gt;Test multisigned outer with multisigned batch signer succeeds&lt;/li&gt;
&lt;li&gt;Test multisigned outer below quorum rejected tefBAD_QUORUM&lt;/li&gt;
&lt;li&gt;Test multisigned batch signer below quorum rejected tefBAD_QUORUM&lt;/li&gt;
&lt;li&gt;Test multisigned outer with unauthorized signer rejected tefBAD_SIGNATURE&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Tickets, Replay &amp;amp; Metadata
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tickets
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch inner txns consume tickets succeeds&lt;/li&gt;
&lt;li&gt;Test Batch inner tickets used out of order succeeds&lt;/li&gt;
&lt;li&gt;Test Batch inner with sequence and ticket rejected temSEQ_AND_TICKET&lt;/li&gt;
&lt;li&gt;Test Batch duplicate ticket same account rejected temREDUNDANT&lt;/li&gt;
&lt;li&gt;Test Batch nonexistent ticket rolls back allornothing&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Replay
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch resubmission is rejected and pays inner once&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Metadata
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch inner txns carry parent batch id and share ledger&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. Vault, Loan &amp;amp; Transaction Types
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Single-Asset Vault (SAV)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch with vault create&lt;/li&gt;
&lt;li&gt;Test Batch with vault set&lt;/li&gt;
&lt;li&gt;Test Batch with vault deposit&lt;/li&gt;
&lt;li&gt;Test Batch with vault withdraw&lt;/li&gt;
&lt;li&gt;Test Batch with vault delete&lt;/li&gt;
&lt;li&gt;Test Batch with vault clawback&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  LoanBroker / Loan
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch with loan broker set&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker delete&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover deposit&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover withdraw&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover clawback&lt;/li&gt;
&lt;li&gt;Test Batch with loan set&lt;/li&gt;
&lt;li&gt;Test Batch with loan pay&lt;/li&gt;
&lt;li&gt;Test Batch with loan delete&lt;/li&gt;
&lt;li&gt;Test Batch with loan manage&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Supported Transaction Types
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch transaction type trustset&lt;/li&gt;
&lt;li&gt;Test Batch transaction type offercreate&lt;/li&gt;
&lt;li&gt;Test Batch transaction type account set&lt;/li&gt;
&lt;li&gt;Test Batch transaction type escrow create&lt;/li&gt;
&lt;li&gt;Test Batch transaction type check create&lt;/li&gt;
&lt;li&gt;Test Batch transaction type nftokenmint&lt;/li&gt;
&lt;li&gt;Test Batch with ticket create transaction&lt;/li&gt;
&lt;li&gt;Test Batch transaction type signerlistset&lt;/li&gt;
&lt;li&gt;Test Batch transaction type depositpreauth&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  5. Signature &amp;amp; Structural Validation (V1.1 Readiness)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Readiness / Preimage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch v1.1 preimage matches pr1010 single&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 preimage matches pr1010 multi&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 preimage layout&lt;/li&gt;
&lt;li&gt;Test batchsigners signature binds outer account sequence and signer account&lt;/li&gt;
&lt;li&gt;Test Batch signers sorted by account id&lt;/li&gt;
&lt;li&gt;Test sdk encode for signing batch natively binds account and sequence&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Preflight Error Ordering
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch inner tx with negative fee rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Batch inner tx with positive xrp fee rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Batch inner tx with iou fee rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Batch inner tx with zero fee passes fee preflight&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  6. Security &amp;amp; Adversarial
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Structural / Flag Enforcement
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch empty raw transactions&lt;/li&gt;
&lt;li&gt;Test Batch with one raw transaction&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having no tfInnerBatchTxn flag&lt;/li&gt;
&lt;li&gt;Test Batch with some inner transactions having no tfInnerBatchTxn flag&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having incorrect tfInnerBatchTxn flag&lt;/li&gt;
&lt;li&gt;Test Batch with tfInnerBatchTxn flag set for outer transaction&lt;/li&gt;
&lt;li&gt;Test Batch with no mode set for outer transaction&lt;/li&gt;
&lt;li&gt;Test Batch with invalid mode set for outer transaction&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having no fee field&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having invalid fee values&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having bad fee values&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with SigningPubKey&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with fee and SigningPubKey&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with TxnSignature&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with Signers&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with SponsorSignature&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with CounterpartySignature&lt;/li&gt;
&lt;li&gt;Test Batch with invalid inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch inside non empty batch&lt;/li&gt;
&lt;li&gt;Test Batch inside empty batch&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with same sequence leaves no state change&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with same sequence&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with past sequence&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with future not incremental sequences&lt;/li&gt;
&lt;li&gt;Test Batch with account does not exist&lt;/li&gt;
&lt;li&gt;Test Batch with deposit auth on account&lt;/li&gt;
&lt;li&gt;Test Batch with master key disabled on account&lt;/li&gt;
&lt;li&gt;Test Batch all payments with destination account not funded&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Adversarial Attack Matrix
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch with single inner tx returns temARRAY_EMPTY&lt;/li&gt;
&lt;li&gt;Test inner tx with non zero fee returns temBAD_FEE&lt;/li&gt;
&lt;li&gt;Test inner tx with non empty signing pubkey returns temBAD_REGKEY&lt;/li&gt;
&lt;li&gt;Test inner tx missing inner batch flag returns temINVALID_FLAG&lt;/li&gt;
&lt;li&gt;Test standalone payment with tfInnerBatchTxn flag rejected&lt;/li&gt;
&lt;li&gt;Test Batch with outer account in BatchSigners rejected&lt;/li&gt;
&lt;li&gt;Test Batch with duplicate BatchSigners rejected&lt;/li&gt;
&lt;li&gt;Test Batch with BatchSigner for unrelated account rejected&lt;/li&gt;
&lt;li&gt;Test Batch BatchSigners signature for different batch rejected&lt;/li&gt;
&lt;li&gt;Test Batch with single inner transaction rejected temARRAY_EMPTY&lt;/li&gt;
&lt;li&gt;Test Batch with nested inner batch rejected&lt;/li&gt;
&lt;li&gt;Test Batch with duplicate inner sequences rejected temREDUNDANT&lt;/li&gt;
&lt;li&gt;Test Batch inner setregularkey succeeds when outer signed by master&lt;/li&gt;
&lt;li&gt;Test Batch innerbatch flag on standalone payment rejected&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 oversized inner array rejected as tem&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 far oversized inner array survives eager hashing&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 far oversized inner array at scale survives eager hashing&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 batchsigner sig bound to outer sequence&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 batchsigner sig bound to outer account&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 unsorted batchsigners rejected&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 standalone tx with inner batch flag rejected&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 standalone oversized path stays tel&lt;/li&gt;
&lt;li&gt;Test Batch v1.1 batchsigners over kmax rejected&lt;/li&gt;
&lt;li&gt;Test non batch tx with raw transactions rejected at construction&lt;/li&gt;
&lt;li&gt;Test non batch raw transactions rejection does not crash server&lt;/li&gt;
&lt;li&gt;Test Batch outer with sfDelegate rejected by notdelegable template&lt;/li&gt;
&lt;li&gt;Test Batch inner notdelegable type with sfDelegate inner rejected&lt;/li&gt;
&lt;li&gt;Test Batch inner delegated without permission grant returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  7. Cross-Feature Interactions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Delegation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test delegate as outer account executes delegated inner succeeds&lt;/li&gt;
&lt;li&gt;Test delegate as batch signer authorizes delegated inner succeeds&lt;/li&gt;
&lt;li&gt;Test delegated inner without batch signer rejected temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test delegated inner signed by account holder rejected temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test delegate without permission inner fails and batch rolls back&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Sponsorship
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test outer batch with reserve sponsorship flag rejected temINVALID_FLAG&lt;/li&gt;
&lt;li&gt;Test inner batch txn with fee sponsorship rejected temINVALID_FLAG&lt;/li&gt;
&lt;li&gt;Test inner batch txn with sponsor signature material rejected temBAD_SIGNATURE&lt;/li&gt;
&lt;li&gt;Test prefunded fee sponsored outer batch succeeds&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Confidential MPT
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch confidential mpt two sends with stale proof allornothing&lt;/li&gt;
&lt;li&gt;Test Batch confidential mpt independent send with one failing&lt;/li&gt;
&lt;li&gt;Test Batch confidential mpt convert then merge inbox allornothing&lt;/li&gt;
&lt;li&gt;Test Batch delegated send missing permission allornothing&lt;/li&gt;
&lt;li&gt;Test Batch delegated send with delegate as outer needs no batch signer&lt;/li&gt;
&lt;li&gt;Test Batch delegated send with delegate as outer with batch signer&lt;/li&gt;
&lt;li&gt;Test Batch confidential mpt two chained sends same sender allornothing&lt;/li&gt;
&lt;li&gt;Test Batch confidential mpt send then convert back same sender allornothing&lt;/li&gt;
&lt;li&gt;Test Batch confidential mpt three chained sends same sender allornothing&lt;/li&gt;
&lt;li&gt;Test Batch confidential mpt chained send wrong predicted ciphertext fails&lt;/li&gt;
&lt;li&gt;Test Batch only one with two valid chained sends executes first only&lt;/li&gt;
&lt;li&gt;Test Batch only one first send to unconverted fails falls through to second&lt;/li&gt;
&lt;li&gt;Test Batch until failure first send commits then stale second fails&lt;/li&gt;
&lt;li&gt;Test Batch allornothing issuer lock then alice send rolls back both&lt;/li&gt;
&lt;li&gt;Test Batch independent three holders converts coa aggregate correct&lt;/li&gt;
&lt;li&gt;Test Batch allornothing inner revokes delegate then later inner uses it rolls back&lt;/li&gt;
&lt;li&gt;Test Batch two chained delegated sends from same delegator both commit&lt;/li&gt;
&lt;li&gt;Test delegated send after delegator loses domain membership fails&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>automation</category>
      <category>security</category>
      <category>software</category>
      <category>testing</category>
    </item>
    <item>
      <title>Ripple’s Recommendation: Withdraw the XChainBridge Amendment (XLS-38)</title>
      <dc:creator>David Fuelling</dc:creator>
      <pubDate>Thu, 27 Aug 2026 15:00:00 +0000</pubDate>
      <link>https://dev.to/ripplexdev/ripples-recommendation-withdraw-the-xchainbridge-amendment-xls-38-5d51</link>
      <guid>https://dev.to/ripplexdev/ripples-recommendation-withdraw-the-xchainbridge-amendment-xls-38-5d51</guid>
      <description>&lt;p&gt;When we set out to bring cross-chain bridging natively to the XRP Ledger, the &lt;code&gt;XChainBridge&lt;/code&gt; amendment (&lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0038-cross-chain-bridge" rel="noopener noreferrer"&gt;XLS-38&lt;/a&gt;) was our proposed solution. Today, we're recommending that the XRPL community withdraw &lt;code&gt;XChainBridge&lt;/code&gt; along with the related &lt;code&gt;fixXChainRewardRounding&lt;/code&gt; amendment.&lt;/p&gt;

&lt;h2&gt;
  
  
  What XLS-38 Set Out to Do
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0038-cross-chain-bridge" rel="noopener noreferrer"&gt;XLS-38&lt;/a&gt; defined a protocol for native cross-chain bridges on the XRPL to enable custom sidechains. Rather than delegating to third-party bridge operators, it proposed a model where a decentralized network of "witness servers" would observe and attest to transactions across chains, enabling assets to move between XRPL mainnet and any connected sidechain.&lt;/p&gt;

&lt;p&gt;The original vision was compelling: give developers the building blocks to create custom sidechains: private chains, permissioned networks, or experimental environments for features not yet available on mainnet. XLS-38 was also intended to bridge the XRPL EVM Sidechain to mainnet, with XRP as the native gas token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Chose Axelar for the EVM Sidechain
&lt;/h2&gt;

&lt;p&gt;As we prepared to launch the XRPL EVM Sidechain (a collaboration between Peersyst, Ripple, and the broader XRPL community), we conducted a thorough evaluation of bridging options, weighing security, user experience, decentralization, and long-term operational sustainability.&lt;/p&gt;

&lt;p&gt;The XLS-38 witness server model presents inherent trade-offs between security and decentralization that become harder to manage as the value locked in a bridge grows. The architecture places significant trust in a set of witness server operators: the larger and more decentralized that set, the better the security; but also the greater the coordination overhead, the harder the governance, and the more diffuse the accountability. For a bridge securing a public chain's native gas token, these tensions don't have easy resolutions, and Ripple concluded that it wasn't an area where we had the operational expertise to do it well at scale. Building and managing bridges between public blockchains is genuinely specialized work.&lt;/p&gt;

&lt;p&gt;Axelar, on the other hand, is purpose-built for exactly this problem. Its 75+ validators, threshold signature scheme, and key-rotation discipline reflect the kind of operational maturity that takes years to develop, backed by experience bridging across 55+ blockchains. That expertise isn't easy to replicate, and Ripple's team didn't see a need to when a capable partner already existed.&lt;/p&gt;

&lt;p&gt;In June 2024&lt;sup&gt;1&lt;/sup&gt;, we announced the decision to use the Axelar network alongside the XRPL EVM Sidechain launch. At that time, we committed to leaving the XLS-38 amendment available for a vote while Ripple's UNL validator would continue voting &lt;code&gt;No&lt;/code&gt;, and pledged to give the community 12–15 months to demonstrate interest in XLS-38 as a foundation for private sidechain use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Observed
&lt;/h2&gt;

&lt;p&gt;That window has now passed. During this time, we actively engaged with developers, monitored community forums, and looked for concrete projects or proposals that would benefit from an activated XLS-38 bridge on mainnet. We didn't find the level of adoption or developer interest that would justify keeping the amendment moving toward activation.&lt;/p&gt;

&lt;p&gt;A few observations drove our current thinking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The EVM Sidechain bridge is well-served by Axelar.&lt;/em&gt;&lt;/strong&gt; The primary use case that motivated XLS-38's development is fully addressed, and we believe better addressed, by the Axelar integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Lack of Demand.&lt;/em&gt;&lt;/strong&gt; No significant private sidechain demand materialized for private sidechains that would use XLS-38 specifically. We wanted to see real developer projects that specifically required a native XLS-38 bridge, but that hasn't emerged at the level we hoped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Maintaining inactive code carries real costs.&lt;/em&gt;&lt;/strong&gt; Keeping the &lt;code&gt;XChainBridge&lt;/code&gt; code in xrpld creates an ongoing maintenance burden and a source of confusion for new contributors, with no corresponding benefit to the network today. We estimate that withdrawing this amendment would let us remove more than 10,000 lines of code from &lt;code&gt;xrpld&lt;/code&gt;, reducing the surface area we maintain and review.&lt;/p&gt;

&lt;p&gt;That said, we want to be clear: &lt;strong&gt;this is a recommendation, not a unilateral decision&lt;/strong&gt;. If there are developers or organizations actively building on XLS-38, or who have concrete plans to do so, we want to hear from you. Ripple controls one vote among many on the XRPL, and we're open to revisiting this assessment if the community presents a strong case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Different Problems, Different Tools
&lt;/h2&gt;

&lt;p&gt;The Axelar decision was specific to the EVM Sidechain, which is a public chain bridging XRP to a permissionless EVM environment. XLS-38, by contrast, was meant to support a wider range of use cases: private chains, permissioned networks, experimental environments for features not yet on mainnet. The reality for that wider set is that no single mechanism fits every use case.&lt;/p&gt;

&lt;p&gt;Axelar and Wormhole represent one class of solution (trust-minimized bridging between mature public chains), but the broader space includes ZK-based approaches, L2-style architectures, and early research directions like consensus-within-consensus. Active work is happening across all of these, and the right tool depends on the problem.&lt;/p&gt;

&lt;p&gt;None of these is a drop-in replacement for XLS-38, and none is the right answer for every problem. They're a portfolio. Part of our reason for proposing to withdraw XLS-38 is that, as a single mechanism trying to serve all of these use cases, it was solving too many problems at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Withdrawal Process Would Work
&lt;/h2&gt;

&lt;p&gt;If the community aligns with this direction, the next steps are deliberate and consensus-driven, which is exactly how it should be. Here's how it would unfold:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 1: Mark the amendment as Obsolete.&lt;/em&gt;&lt;/strong&gt; Ripple's intended first step is to open a pull request to the &lt;a href="https://github.com/XRPLF/rippled" rel="noopener noreferrer"&gt;&lt;code&gt;xrpld&lt;/code&gt; repository&lt;/a&gt; that sets &lt;code&gt;VoteBehavior::Obsolete&lt;/code&gt; for the &lt;code&gt;XChainBridge&lt;/code&gt; feature. Once this change is merged, &lt;code&gt;xrpld&lt;/code&gt; servers running that version will automatically vote against the amendment and will never vote in favor of it, regardless of operator configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 2: Network consensus.&lt;/em&gt;&lt;/strong&gt; As validators update their &lt;code&gt;xrpld&lt;/code&gt; software to versions that include this change, the amendment will gradually lose support across the network. Once all active validators consider the amendment Obsolete, it can be removed from the codebase entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 3: Code removal.&lt;/em&gt;&lt;/strong&gt; A subsequent update will fully remove the &lt;code&gt;XChainBridge&lt;/code&gt; and &lt;code&gt;fixXChainRewardRounding&lt;/code&gt; code from xrpld.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for You
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you're building on the XRPL EVM Sidechain:&lt;/strong&gt; Nothing changes. The Axelar bridge is your path to and from XRPL mainnet, and it will continue to be supported and improved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're a validator:&lt;/strong&gt; When and if you upgrade to the &lt;code&gt;xrpld&lt;/code&gt; version that includes the &lt;code&gt;Obsolete&lt;/code&gt; vote behavior, your node will automatically stop voting for &lt;code&gt;XChainBridge&lt;/code&gt;. No action required on your part beyond the normal upgrade cycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you were exploring XLS-38 for a private sidechain:&lt;/strong&gt; This is the most important group we want to hear from. Please reach out on the &lt;a href="https://discord.gg/sfX3ERAMjH" rel="noopener noreferrer"&gt;XRPL developer Discord&lt;/a&gt; or engage on GitHub to share your use case. Concrete plans and active projects are exactly the kind of signal that could change our recommendation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're a contributor to &lt;code&gt;xrpld&lt;/code&gt;:&lt;/strong&gt; The PR to mark &lt;code&gt;XChainBridge&lt;/code&gt; as &lt;code&gt;Obsolete&lt;/code&gt; will go through normal open-source review. We welcome technical feedback and discussion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;p&gt;This recommendation reflects something broader about how we'd like to think about the XRPL: lean, purposeful, and battle-tested. Carrying unused code paths through years of mainnet evolution has real costs, such as maintenance burden, attack surface, and onboarding complexity for new contributors. XLS-38 is unlikely to be the last withdrawal we propose for those reasons.&lt;/p&gt;

&lt;p&gt;We're grateful to the developers who built witness server tooling, the community members who debated the design over the years, and the validators who weighed in. That work wasn't wasted, but instead sharpened our understanding of bridging trade-offs and shaped how we now think about cross-chain interoperability more generally.&lt;/p&gt;

&lt;p&gt;We'll leave a comment period open before moving forward. If you have feedback, a use case to share, or a reason we should reconsider, please weigh in on &lt;a href="https://github.com/XRPLF/rippled" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; or in the &lt;a href="https://discord.gg/sfX3ERAMjH" rel="noopener noreferrer"&gt;XRPL developer Discord&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;[1] &lt;em&gt;For more context, see our June 2024 post on &lt;a href="https://ripple.com/insights/xrpl-evm-sidechain-enhancing-interoperability-with-axelar-bridge/" rel="noopener noreferrer"&gt;XRPL EVM Sidechain: Enhancing Interoperability with Axelar Bridge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>xrp</category>
      <category>xrpl</category>
    </item>
    <item>
      <title>Account Permission Delegation - QA Test Report</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Wed, 26 Aug 2026 19:18:57 +0000</pubDate>
      <link>https://dev.to/ripplexdev/account-permission-delegation-qa-test-report-4ia0</link>
      <guid>https://dev.to/ripplexdev/account-permission-delegation-qa-test-report-4ia0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Test Report Date&lt;/strong&gt;: 8/26/2026&lt;br&gt;
&lt;strong&gt;Prepared By&lt;/strong&gt;: QA Team [&lt;a href="https://github.com/sgramkumar" rel="noopener noreferrer"&gt;sgramkumar&lt;/a&gt;, &lt;a href="https://github.com/mkunasani" rel="noopener noreferrer"&gt;mkunasani&lt;/a&gt;, &lt;a href="https://github.com/manasip-prog" rel="noopener noreferrer"&gt;manasip-prog&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: GitLab CI Runner (nix-debian)&lt;br&gt;
&lt;strong&gt;Network&lt;/strong&gt;: xrpld devnet + private CI network&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
This report presents the updated results of QA testing performed on Account Permission Delegation across xrpld servers. It supersedes the initial report from May 2025, reflecting the substantial expansion of test coverage that has occurred as the feature evolved through follow-up xrpld changes.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Feature
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Feature Name&lt;/strong&gt;: Account Permission Delegation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Prior to this feature, critical issuer actions — such as authorizing trustlines — required direct control by the account's own keys, hindering operational efficiency and complex use cases. Account Permission Delegation empowers account holders to selectively delegate specific permissions to other accounts, enhancing account usability without compromising security. This mechanism unlocks new possibilities for XRPL applications, including multi-party workflows and advanced account management strategies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specification Reference&lt;/strong&gt;: &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0075-permission-delegation" rel="noopener noreferrer"&gt;https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0075-permission-delegation&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Test Scope
&lt;/h3&gt;

&lt;p&gt;This report covers the full delegation surface as it stands after the follow-up xrpld changes (PRs &lt;a href="https://github.com/XRPLF/rippled/pull/6126" rel="noopener noreferrer"&gt;#6126&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/7064" rel="noopener noreferrer"&gt;#7064&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/7584" rel="noopener noreferrer"&gt;#7584&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/7640" rel="noopener noreferrer"&gt;#7640&lt;/a&gt;). Testing focused on ensuring that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All specified functionalities behave per the XLS-0075 specification&lt;/li&gt;
&lt;li&gt;The API handles both valid and invalid input gracefully&lt;/li&gt;
&lt;li&gt;Delegated transactions interact correctly with adjacent features (Batch, Confidential MPT, transaction queue, multi-signing)&lt;/li&gt;
&lt;li&gt;Security-critical properties hold under adversarial input, including permission-escalation attempts via flag/field side-channels&lt;/li&gt;
&lt;li&gt;Behavior is consistent across both RPC and WebSocket interfaces&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Types of Testing Conducted
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Functional&lt;/td&gt;
&lt;td&gt;Verifying each transaction, permission grant, and RPC path against the feature specification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression&lt;/td&gt;
&lt;td&gt;Running full xrpld test suites to confirm delegation changes did not break existing functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversarial / Security&lt;/td&gt;
&lt;td&gt;Attack-matrix scenarios probing self-delegation, permission-scope escalation, flag/field smuggling, granular-permission union semantics, and revocation edge cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Feature&lt;/td&gt;
&lt;td&gt;Interactions between Delegation and Batch (XLS-56), Confidential MPT, the transaction queue, and multi-signing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End-to-End&lt;/td&gt;
&lt;td&gt;Full flows spanning delegation setup, delegated submission, revocation, and downstream validation via xrpld&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  4. Test Results Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Total Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Permission Delegation — Core Functional&lt;/td&gt;
&lt;td&gt;112&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission Delegation — Adversarial / Security&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission Delegation — Cross-Feature (Batch, Confidential MPT, TxQ)&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permission Delegation — Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;179&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Regression — xrpld (full suite)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5,088&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Testcases&lt;/strong&gt;: &lt;a href="https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b"&gt;https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature commit history:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Introduced as `PermissionDelegation` in PR #5354 (2db2791805, 2025-05-08)
- Marked unsupported (2ae65d2fdb, 2025-09-18) pending security fix
- Renamed to `PermissionDelegationV1_1` with security fix in PR #5825
  (fa69918124, 2025-10-31)
- Re-supported (`Supported::Yes`) in PR #6613 (772ea80a25, 2026-06-17)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Related xrpld changes covered in this round:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5354" rel="noopener noreferrer"&gt;#5354&lt;/a&gt; — Initial &lt;code&gt;PermissionDelegation&lt;/code&gt; feature&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5650" rel="noopener noreferrer"&gt;#5650&lt;/a&gt; — &lt;code&gt;fixDelegateV1_1&lt;/code&gt; — restrictions on Permission Delegation&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5825" rel="noopener noreferrer"&gt;#5825&lt;/a&gt; — Security vulnerability fix + rename to &lt;code&gt;PermissionDelegationV1_1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6126" rel="noopener noreferrer"&gt;#6126&lt;/a&gt; — &lt;code&gt;account_tx&lt;/code&gt; delegate filter parameter&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6729" rel="noopener noreferrer"&gt;#6729&lt;/a&gt; — Delegation tests for Confidential Transfers&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6808" rel="noopener noreferrer"&gt;#6808&lt;/a&gt; — Confidential delegation tests with tickets&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Bugs Reported
&lt;/h3&gt;

&lt;p&gt;All Internal bugs are fixed and there are no Critical Open bugs&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Conclusion
&lt;/h3&gt;

&lt;p&gt;Account Permission Delegation has now been exercised across 179 dedicated tests spanning core functional coverage, adversarial / security scenarios, and cross-feature interactions — a substantial expansion from the 66 tests reported at initial feature landing. In addition, the full xrpld (5,088) regression suites have been executed to confirm no downstream breakage.&lt;/p&gt;

&lt;p&gt;All security-critical properties documented in XLS-0075 have been validated, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct rejection of self-delegation, unknown permissions, and NotDelegable transaction types&lt;/li&gt;
&lt;li&gt;Enforcement of granular-permission field/flag restrictions with no side-channel escalation via  SetFlag / ClearFlag  or restricted-field assignment&lt;/li&gt;
&lt;li&gt;Correct interaction with the transaction queue (delegated transactions cannot queue — PR &lt;a href="https://github.com/XRPLF/rippled/pull/7640" rel="noopener noreferrer"&gt;#7640&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Correct  account_tx  attribution semantics under regular-key and multi-sign paths (PR &lt;a href="https://github.com/XRPLF/rippled/pull/6126" rel="noopener noreferrer"&gt;#6126&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Independence of delegation from  asfDisableMaster  (delegated payments continue to work after the master key is disabled)&lt;/li&gt;
&lt;li&gt;The feature is considered ready for production use at the tested commit level. Future updates to this report will follow any material additions to the delegation surface.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>software</category>
      <category>testing</category>
    </item>
    <item>
      <title>Account Permission Delegation - Testcases</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Wed, 26 Aug 2026 19:15:41 +0000</pubDate>
      <link>https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b</link>
      <guid>https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Test Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core Functional&lt;/td&gt;
&lt;td&gt;112&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversarial / Security&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Feature Interactions&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;179&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Core Functional
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test DelegateSet with permissions field&lt;/li&gt;
&lt;li&gt;Test DelegateSet skipped before payment&lt;/li&gt;
&lt;li&gt;Test DelegateSet without permissions field&lt;/li&gt;
&lt;li&gt;Test DelegateSet with empty list&lt;/li&gt;
&lt;li&gt;Test DelegateSet with permissions as non-JSON&lt;/li&gt;
&lt;li&gt;Test DelegateSet by non-existing account&lt;/li&gt;
&lt;li&gt;Test DelegateSet by non-existing authorize account&lt;/li&gt;
&lt;li&gt;Test DelegateSet by account with deposit auth enabled&lt;/li&gt;
&lt;li&gt;Test DelegateSet and submit different transaction&lt;/li&gt;
&lt;li&gt;Test DelegateSet and submit transaction as original account&lt;/li&gt;
&lt;li&gt;Test DelegateSet with same permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet to self&lt;/li&gt;
&lt;li&gt;Test DelegateSet with invalid permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet with restricted permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet with 10 permissions&lt;/li&gt;
&lt;li&gt;Test DelegateSet with more than 10 permissions&lt;/li&gt;
&lt;li&gt;Test DelegateSet with multiple permissions&lt;/li&gt;
&lt;li&gt;Test DelegateSet and delete delegated account&lt;/li&gt;
&lt;li&gt;Test DelegateSet and delete delegating account&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make pay self&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make pay delegated account without deposit auth&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make pay delegated account with deposit auth&lt;/li&gt;
&lt;li&gt;Test DelegateSet authorize multiple users&lt;/li&gt;
&lt;li&gt;Test DelegateSet and submit AccountSet as original account&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make payment&lt;/li&gt;
&lt;li&gt;Test DelegateSet and offer create&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and cash check&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and cancel check&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and finish escrow&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and cancel escrow&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and claim paychan&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and fund paychan&lt;/li&gt;
&lt;li&gt;Test DelegateSet and payment on ticket&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create trustline&lt;/li&gt;
&lt;li&gt;Test DelegateSet and clawback&lt;/li&gt;
&lt;li&gt;Test DelegateSet and AMM create&lt;/li&gt;
&lt;li&gt;Test DelegateSet and AMM deposit&lt;/li&gt;
&lt;li&gt;Test DelegateSet multiple times with same permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet remove permission add same permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet change in permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet and update with invalid permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission TrustlineAuthorize&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission TrustlineFreeze and TrustlineUnfreeze individual freeze&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission TrustlineFreeze global freeze&lt;/li&gt;
&lt;li&gt;Test DelegateSet and payment with deep freeze&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountDomainSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountEmailHashSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountMessageKeySet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountTransferRateSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountTickSizeSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission PaymentMint&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission PaymentBurn&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission MPTokenIssuanceLock and MPTokenIssuanceUnlock&lt;/li&gt;
&lt;li&gt;Test DelegateSet on account with master key disabled&lt;/li&gt;
&lt;li&gt;Test DelegateSet with empty Permissions revokes delegate authority&lt;/li&gt;
&lt;li&gt;Test DelegateSet with NotDelegable permission rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet with empty Permissions when no existing Delegate object is rejected&lt;/li&gt;
&lt;li&gt;Test Delegate object appears in authorized account's account_objects&lt;/li&gt;
&lt;li&gt;Test Delegated payment with basic permission succeeds&lt;/li&gt;
&lt;li&gt;Test Delegated unauthorized tx type returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;li&gt;Test Delegated payment consumes delegate fee, not source fee&lt;/li&gt;
&lt;li&gt;Test AccountDelete on authorized account removes Delegate from both directories&lt;/li&gt;
&lt;li&gt;Test Token escrow — delegate create and finish escrow (IOU)&lt;/li&gt;
&lt;li&gt;Test Token escrow — delegate create and finish escrow (MPT)&lt;/li&gt;
&lt;li&gt;Test Circular delegation — positive scenario&lt;/li&gt;
&lt;li&gt;Test Circular delegation — negative scenario&lt;/li&gt;
&lt;li&gt;Test Chain delegation — positive scenario&lt;/li&gt;
&lt;li&gt;Test Chain delegation — negative scenario&lt;/li&gt;
&lt;li&gt;Test Delegated account with multiple signers and master key disabled&lt;/li&gt;
&lt;li&gt;Test Delegated account with multiple signers and master key not disabled&lt;/li&gt;
&lt;li&gt;Test Authorized account with multiple signers and master key disabled&lt;/li&gt;
&lt;li&gt;Test Authorized account with multiple signers and master key not disabled&lt;/li&gt;
&lt;li&gt;Test DelegateSet with base reserve on delegating account&lt;/li&gt;
&lt;li&gt;Test DelegateSet with base reserve on delegated account&lt;/li&gt;
&lt;li&gt;Test DelegateSet with no funds for fee on delegated account&lt;/li&gt;
&lt;li&gt;Test Delegation to Batch tfAllOrNothing — all payments (outer transaction)&lt;/li&gt;
&lt;li&gt;Test Delegation to Batch tfAllOrNothing — all payments (inner transaction)&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet WalletLocator granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet NFTokenMinter granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet combined field and flag&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet ClearFlag granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet SetFlag with granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate granular permission exceeds scope&lt;/li&gt;
&lt;li&gt;Test Delegate multiple granular permissions with no full AccountSet&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet restricted field returns correct error code&lt;/li&gt;
&lt;li&gt;Test Delegate transaction with fee greater than account balance&lt;/li&gt;
&lt;li&gt;Test Delegate payment amount exceeds balance&lt;/li&gt;
&lt;li&gt;Test Delegate reserve manipulation via trustline creation&lt;/li&gt;
&lt;li&gt;Test Delegate using regular key instead of master&lt;/li&gt;
&lt;li&gt;Test Delegator regular key change during active delegation&lt;/li&gt;
&lt;li&gt;Test Batch tfAllOrNothing with payment and DelegateSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet with Delegate field set&lt;/li&gt;
&lt;li&gt;Test Delegate trustline freeze without permission&lt;/li&gt;
&lt;li&gt;Test Delegate bypass RequireAuth flag&lt;/li&gt;
&lt;li&gt;Test Delegate permission change removes old permission&lt;/li&gt;
&lt;li&gt;Test Delegate payment with deposit auth bypass attempt&lt;/li&gt;
&lt;li&gt;Test Delegate offer crossing with unauthorized account&lt;/li&gt;
&lt;li&gt;Test Delegate conflicting granular permissions&lt;/li&gt;
&lt;li&gt;Test Delegate all granular AccountSet permissions — no flag access&lt;/li&gt;
&lt;li&gt;Test Delegate with zero-amount payment&lt;/li&gt;
&lt;li&gt;Test Delegate multi-signed transaction&lt;/li&gt;
&lt;li&gt;Test Delegate with multi-signers on delegated and authorized account&lt;/li&gt;
&lt;li&gt;Test Payment offline signing&lt;/li&gt;
&lt;li&gt;Test Delegate payment with offline signing&lt;/li&gt;
&lt;li&gt;Test Delegate payment by third party with offline signing&lt;/li&gt;
&lt;li&gt;Test account_tx  delegate_filter=actor  returns delegated txns&lt;/li&gt;
&lt;li&gt;Test account_tx  delegate_filter=authorizer  returns delegated txns&lt;/li&gt;
&lt;li&gt;Test account_tx  counter_party  narrows results&lt;/li&gt;
&lt;li&gt;Test account_tx  delegate_filter=actor  returns empty for authorizer&lt;/li&gt;
&lt;li&gt;Test account_tx  counter_party  no-match returns empty&lt;/li&gt;
&lt;li&gt;Test account_tx with malformed  delegate  returns invalidParams&lt;/li&gt;
&lt;li&gt;Test account_tx with malformed  counter_party  returns actMalformed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Adversarial / Security
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test DelegateSet replaces existing permissions (silently revoking dropped)&lt;/li&gt;
&lt;li&gt;Test DelegateSet to self rejected with temMALFORMED&lt;/li&gt;
&lt;li&gt;Test DelegateSet with duplicate PermissionValues rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet with eleven permissions rejected&lt;/li&gt;
&lt;li&gt;Test 3.2.0 Vault and Batch tx types are not delegable&lt;/li&gt;
&lt;li&gt;Test 3.2.0 Loan tx types are not delegable&lt;/li&gt;
&lt;li&gt;Test Delegated Batch outer returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;li&gt;Test Account SignerList cannot authorize delegated tx (returns tefNOT_MULTI_SIGNING)&lt;/li&gt;
&lt;li&gt;Test Delegate SignerList can authorize delegated tx&lt;/li&gt;
&lt;li&gt;Test Delegated tx signed by delegate's master key succeeds&lt;/li&gt;
&lt;li&gt;Test PR #7064 — delegate  sign_for  on own delegated tx returns invalidParams&lt;/li&gt;
&lt;li&gt;Test PR #7064 — delegator can be signer when in delegate's SignerList&lt;/li&gt;
&lt;li&gt;Test Delegate to self rejected with temMALFORMED&lt;/li&gt;
&lt;li&gt;Test DelegateSet with duplicate permission rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet with unknown PermissionValue rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet to non-existent account returns tecNO_TARGET&lt;/li&gt;
&lt;li&gt;Test Batch transaction type is not delegable&lt;/li&gt;
&lt;li&gt;Test Delegated tx after revocation returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;li&gt;Test Delegated payment works after master key disabled&lt;/li&gt;
&lt;li&gt;Test  Delegate  field set to own account rejected with temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test Delegated no-op AccountSet rejected&lt;/li&gt;
&lt;li&gt;Test Delegated no-op TrustSet rejected&lt;/li&gt;
&lt;li&gt;Test Delegated SignerListSet rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Delegated SetRegularKey rejected at preflight&lt;/li&gt;
&lt;li&gt;Test AccountSet WalletSize field rejected under granular AccountDomainSet delegate&lt;/li&gt;
&lt;li&gt;Test TrustlineFreeze rejects disallowed flag tfSetNoRipple&lt;/li&gt;
&lt;li&gt;Test TrustlineFreeze rejects disallowed field QualityIn&lt;/li&gt;
&lt;li&gt;Test PaymentBurn rejects disallowed flag tfPartialPayment&lt;/li&gt;
&lt;li&gt;Test PaymentBurn rejects disallowed field Paths&lt;/li&gt;
&lt;li&gt;Test Union of two granular permissions still forbids fields ungranted by either&lt;/li&gt;
&lt;li&gt;Test Union of Freeze and Unfreeze widens allowed flags but not fields&lt;/li&gt;
&lt;li&gt;Test AccountDomainSet delegate cannot smuggle SetFlag asfRequireAuth&lt;/li&gt;
&lt;li&gt;Test AccountDomainSet delegate cannot smuggle SetFlag asfDisableMaster&lt;/li&gt;
&lt;li&gt;Test AccountDomainSet delegate cannot smuggle NFTokenMinter via WalletSize&lt;/li&gt;
&lt;li&gt;Test MPTokenIssuanceLock rejects disallowed field DomainID&lt;/li&gt;
&lt;li&gt;Test MPTokenIssuanceLock rejects unlock flag&lt;/li&gt;
&lt;li&gt;Test PaymentBurn delegate cannot flip issuer to mint&lt;/li&gt;
&lt;li&gt;Test PaymentMint delegate cannot flip issuer to burn&lt;/li&gt;
&lt;li&gt;Test PaymentBurn delegate rejected when holder balance is zero&lt;/li&gt;
&lt;li&gt;Test PaymentMint delegate rejected when destination lacks trustline&lt;/li&gt;
&lt;li&gt;Test Granular Mint/Burn do not authorize XRP payment&lt;/li&gt;
&lt;li&gt;Test DelegateSet rejects truncating PermissionValue&lt;/li&gt;
&lt;li&gt;Test PR #6126 — actor filter ignores regular-key-signed payment&lt;/li&gt;
&lt;li&gt;Test PR #6126 — actor filter ignores multi-sig-signed non-delegated payment&lt;/li&gt;
&lt;li&gt;Test PR #6126 — delegate marker without  delegate  param rejected&lt;/li&gt;
&lt;li&gt;Test PR #6126 — non-delegate marker with  delegate  param rejected&lt;/li&gt;
&lt;li&gt;Test PR #6126 — delegated tx with multi-signed delegatee matches both filters&lt;/li&gt;
&lt;li&gt;Test PR #6126 — delegate actor filter paginates all delegated txns&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cross-Feature Interactions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test Delegate as outer account executes delegated inner (succeeds)&lt;/li&gt;
&lt;li&gt;Test Delegate as BatchSigner authorizes delegated inner (succeeds)&lt;/li&gt;
&lt;li&gt;Test Delegated inner without BatchSigner rejected with temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test Delegated inner signed by account holder rejected with temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test Delegate without permission — inner fails and Batch rolls back&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTSend — basic&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTSend — missing permission&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTConvert&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTMergeInbox&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTConvertBack&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTClawback by issuer&lt;/li&gt;
&lt;li&gt;Test Delegate — send permission only cannot ConvertBack&lt;/li&gt;
&lt;li&gt;Test Delegate — ConvertBack permission only cannot send&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTClawback with non-issuer account rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Delegate — revoked permission blocks subsequent use&lt;/li&gt;
&lt;li&gt;Test Delegate — self-delegation rejected&lt;/li&gt;
&lt;li&gt;Test Delegate — ConfidentialMPTSend with proof over delegate keys rejected&lt;/li&gt;
&lt;li&gt;Test PR #7640 — delegated payment rejected with telCAN_NOT_QUEUE when ledger full&lt;/li&gt;
&lt;li&gt;Test PR #7640 — delegated payment succeeds when paying open ledger fee&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>security</category>
      <category>softwareengineering</category>
      <category>testing</category>
    </item>
    <item>
      <title>UBRI Student Builder Residency Cohort 3.0: A New Frontier for High-Impact XRPL Innovation</title>
      <dc:creator>Emma Nasseri</dc:creator>
      <pubDate>Mon, 29 Jun 2026 14:48:06 +0000</pubDate>
      <link>https://dev.to/ripplexdev/ubri-student-builder-residency-cohort-30-a-new-frontier-for-high-impact-xrpl-innovation-3j18</link>
      <guid>https://dev.to/ripplexdev/ubri-student-builder-residency-cohort-30-a-new-frontier-for-high-impact-xrpl-innovation-3j18</guid>
      <description>&lt;p&gt;This spring marked Cohort 3.0 of the XRPL Student Builder Residency (SBR), a program run by Ripple's &lt;a href="https://ripple.com/impact/ubri/" rel="noopener noreferrer"&gt;University Blockchain Research Initiative (UBRI)&lt;/a&gt; that supports the development of the next generation of blockchain developers through global university partnerships.&lt;/p&gt;

&lt;p&gt;SBR 3.0 brought together an elite cohort of student builders from universities around the world to imagine, build, and ship new use cases on the XRP Ledger.&lt;/p&gt;

&lt;p&gt;The 14 selected students built leveraging Smart Escrows (&lt;a href="https://opensource.ripple.com/docs/xls-100-smart-escrows?__hstc=78174987.a6ed1d40ea7d03f751fd15242a2e11e6.1748562634173.1778076643532.1778516395428.81&amp;amp;__hssc=78174987.1.1778516395428&amp;amp;__hsfp=c8f1fa5b8e461a8c2f0c73758995b293" rel="noopener noreferrer"&gt;XLS-100&lt;/a&gt;), Ripple’s RLUSD stablecoin, interoperability primitives, the new Lending Protocol (&lt;a href="https://xrpl.org/resources/known-amendments#lendingprotocol" rel="noopener noreferrer"&gt;XLS-66&lt;/a&gt;), and more. &lt;/p&gt;

&lt;h3&gt;
  
  
  Project Focus
&lt;/h3&gt;

&lt;p&gt;From lending protocols to cross-border payment rails, here's what the cohort shipped:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atlas (Sankara Wigneswaran, ESILV Paris):&lt;/strong&gt; An overcollateralized lending protocol built on the XRP Ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cascrow (Paul Wagner &amp;amp; Jan-Niklas Möller, EBS University):&lt;/strong&gt; An AI-powered verification and escrow platform on XRPL that automates RLUSD payouts once milestone proof is validated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ShipSure (Hassene Ezzeddine, ETH Zurich):&lt;/strong&gt; A trustless cross-chain escrow platform that automatically releases XRP payments to sellers only when real-world FedEx delivery is cryptographically verified on-chain via Flare's Data Connector. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Returnee (Sejal Jain, Cornell Tech)&lt;/strong&gt;: A smart package drop-off box for apartment buildings that gives residents an instant refund the moment the courier verifies their return.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zipp (Antonio Meneses, IE Madrid):&lt;/strong&gt; Automates cross-border supplier payments for Latin American importers using AI invoice extraction and XRPL settlement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TerraSwap (Youssef Jeddi, EPFL-ETHZ):&lt;/strong&gt; A stablecoin DEX on XRPL where compliance is enforced at the protocol level through credential-gated Permissioned Domains. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verix (Sumit Shinde, National University of Singapore):&lt;/strong&gt; A trustless task settlement for AI agents. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sidiq - صِدِّيق (Madiha Zafar, University of Birmingham):&lt;/strong&gt; A decentralized interest-free lending protocol on the XRP Ledger, giving underserved communities access to Qard Hasan microloans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UniPay (Junaid Oozeerally, NYU Abu Dhabi):&lt;/strong&gt; A blockchain-based payment and escrow platform on XRPL that enables students across the world to securely and instantly access international educational services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PayTrace (Ranjana K. Kodandaraman, University of Birmingham):&lt;/strong&gt; A real-time cross-border payment intelligence layer for SMEs that provides end-to-end settlement visibility and invoice matching powered by the XRP Ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DropIn (Aaron Zheng, University of Pittsburgh):&lt;/strong&gt; A per-article micropayment platform where readers pay cents to unlock individual articles instead of committing to monthly subscriptions. Publishers set their own prices and receive instant payments directly via the XRPL. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SafiPoints (Enock Mecheo, NYU Abu Dhabi):&lt;/strong&gt; A blockchain-powered loyalty platform where restaurants issue and redeem verifiable loyalty tokens on the XRP Ledger, and customers earn and claim rewards via SMS with no app download and no crypto knowledge required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Freeway (Irene del Carmen Gracia Perez, IE University):&lt;/strong&gt; A turnkey API gateway that lets developers monetize their endpoints using XRP prepaid credits. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Beyond the Code: What Four Weeks can Do&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Most students came in as XRPL beginners. Four weeks later, nearly all were shipping independently on-chain. According to self-assessments, the students’ developer skills increased by an average of 52% and their knowledge of blockchain technology grew 98%.&lt;/p&gt;

&lt;p&gt;Beyond the numbers, the students shared deeper wins and takeaways. In their own words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Made my first (and not last) project on XRPL." — Youssef&lt;br&gt;&lt;br&gt;
"Built a much stronger introduction to blockchain through a real end-to-end product." — Sejal&lt;br&gt;&lt;br&gt;
"Met with incredibly successful and driven people. It motivated me to work harder and become a better developer." — Junaid&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;92% of participants said they were proud of what they accomplished throughout the residency, and almost all are sure they’ll continue building. Nearly every student noted they hope to support the program in the future through peer mentorship as it continues to grow and create new opportunities for others. &lt;/p&gt;

&lt;p&gt;Beyond generating creative XRPL projects or new use cases, the Student Builder Residency is about supporting young builders developing cutting-edge technology while paving the paths for others to follow them.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Looking To The Future&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Across three cohorts, the Student Builder Residency has produced 40+ high-quality projects built on the XRP Ledger, shipped by students from 28 universities across the globe.&lt;/p&gt;

&lt;p&gt;The next generation of developers is already building solutions for the future of financial technology. Between classes and exams, they’ve been hard at work ideating, innovating, and iterating infrastructure for the internet of value. &lt;/p&gt;

&lt;p&gt;This program could not have been possible without the dedicated mentors Tushar Pardhe (WellArrive), Modupe Diyaolu (meCash), Ashley Rho (Ripple), Sree Sanakkayala (CoverMax), Dhruv Shah (Flare), Filip Koprivec (Flare), and Satyam Singh. &lt;/p&gt;

&lt;p&gt;We are especially grateful for the support of this year’s peer mentors and program alumni Stan Stelcher (SBR 1.0), Alex Salsali (SBR 2.0), and Nischay Rawal (SBR 2.0) who have been integral in shaping the culture and community of the Student Builder Residency across all three cohorts.&lt;/p&gt;

&lt;p&gt;Follow Ripple (&lt;a href="https://www.linkedin.com/company/ripple/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://x.com/Ripple" rel="noopener noreferrer"&gt;X&lt;/a&gt;) on social media for future updates!&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>learning</category>
      <category>softwaredevelopment</category>
      <category>web3</category>
    </item>
    <item>
      <title>The Road Toward Mainnet: A Security-First Approach to XRPL Lending Protocol</title>
      <dc:creator>J. Ayo Akinyele</dc:creator>
      <pubDate>Thu, 18 Jun 2026 15:15:00 +0000</pubDate>
      <link>https://dev.to/ripplexdev/the-road-toward-mainnet-a-security-first-approach-to-xrpl-lending-protocol-3bn6</link>
      <guid>https://dev.to/ripplexdev/the-road-toward-mainnet-a-security-first-approach-to-xrpl-lending-protocol-3bn6</guid>
      <description>&lt;p&gt;Over the last several months, XRP Ledger (XRPL) has fundamentally shifted in how amendments move from concept to mainnet. Historically, amendment development was largely focused on functional correctness, performance testing, traditional security audits, bug bounties and independent validator testing as the last line of defense to catch security vulnerabilities.&lt;/p&gt;

&lt;p&gt;As XRPL continues to grow in complexity and the value secured by the network increases, we recognized that the previous model was no longer sufficient. Advances in AI are also rapidly reducing the cost of vulnerability discovery, making it increasingly important to identify issues as early as possible in the development lifecycle. With that in mind, we set out to establish a stronger, repeatable, defense-in-depth model that makes it increasingly difficult for critical vulnerabilities, consensus risks, and feature interaction bugs to reach mainnet. &lt;/p&gt;

&lt;p&gt;The result is a significantly higher bar for amendment activation that combines specification rigor, adversarial testing, multiple independent audits, attackathons with expert security researchers, AI-assisted security reviews and phased deployments. &lt;/p&gt;

&lt;p&gt;The Lending Protocol (&lt;a href="https://opensource.ripple.com/docs/xls-66-lending-protocol" rel="noopener noreferrer"&gt;XLS-66&lt;/a&gt;) and Single Asset Vault (SAV) - &lt;a href="https://opensource.ripple.com/docs/xls-65-single-asset-vault" rel="noopener noreferrer"&gt;XLS-65&lt;/a&gt; are among the first major amendments to undergo this full review process, making them some of the most rigorously tested amendments in XRPL's history.&lt;/p&gt;

&lt;p&gt;They also represent some of the most significant new financial capabilities added to the XRP Ledger since 2012, introducing native primitives for lending and borrowing built around Single Asset Vaults. Together, the Lending Protocol and Single Asset Vault bring lending and borrowing capabilities directly into the core XRPL protocol, advancing XRPL's capabilities for Institutional DeFi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lending Protocol Security and Quality Gates
&lt;/h2&gt;

&lt;p&gt;This report provides transparency into the development and security process behind one of the most financially complex features XRPL has ever shipped.&lt;/p&gt;

&lt;p&gt;As context, the Lending Protocol combines loan lifecycle state management, multi-party fee routing, interest rate arithmetic, credential-gated permissioning, and tight coupling with the Single Asset Vault (SAV). Each of these components introduces unique security and correctness requirements.&lt;/p&gt;

&lt;p&gt;Moreover, Single Asset Vault is a foundational primitive that looks simple on the surface (deposit, withdraw, get shares) but is deeply complex in practice because it introduces a share price model that creates new economic attack surfaces everywhere it touches another feature.&lt;/p&gt;

&lt;p&gt;The following sections outline the ten phases of review, testing, internal and external validation that these two amendments underwent before reaching the mainnet proposal. In addition, we provide details on what we have done since beginning to leverage AI-assisted reviews and formal methods as a fundamental part of our day-to-day development at the beginning of the year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 0: Internal Quality &amp;amp; Performance Testing (Early 2025)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before any external auditor touched the code, RippleX's core engineering team put both the Lending and SAV amendments through extensive internal quality assurance and performance testing. This included unit tests, integration tests, fuzzing, and load testing to validate correctness, stability, and performance under stress.&lt;/p&gt;

&lt;p&gt;Next, the Lending Protocol and SAV were submitted to Halborn (end-to-end security firm covering services from smart contract auditing to independent security assessments).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Initial SAV Audit by Halborn (February–April 2025)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Security review began with the Single Asset Vault. &lt;a href="https://www.halborn.com/audits/ripple/ripple---single-asset-vault---smart-contract-assessment-d39437" rel="noopener noreferrer"&gt;Halborn&lt;/a&gt; conducted a dedicated smart contract assessment from February 17 to March 13, 2025, covering all core vault transaction types (VaultCreate, VaultDeposit, VaultWithdraw, VaultSet, VaultDelete, and VaultClawback) along with share token management, asset handling, and access controls.&lt;/p&gt;

&lt;p&gt;Halborn identified 7 findings across the SAV codebase: 2 Critical, 1 High, 2 Medium, 1 Low, and 1 Informational. The critical findings addressed insufficient amount validation in vault operations and a flaw where the vault failed to account for IOU transfer fees. &lt;/p&gt;

&lt;p&gt;100% of all reported findings were addressed before the SAV moved forward.&lt;/p&gt;

&lt;p&gt;For a detailed look at how Halborn collaborated with RippleX's engineering team across these audits, see their published &lt;a href="https://www.halborn.com/case-studies/post/case-study-hardening-new-xrpl-amendments-for-ripple-with-halborn" rel="noopener noreferrer"&gt;case study&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Immunefi Attackathon - $200K Public Bug Bounty (October–November 2025)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rather than stop at private audits, Ripple partnered with &lt;a href="https://immunefi.com/audit-competition/xrpl-ripple-attackathon/information/" rel="noopener noreferrer"&gt;Immunefi&lt;/a&gt; to run a public Attackathon - opening both the Lending Protocol and SAV to adversarial testing by the global security research community. This was the first public program of its kind and yielded significant results.&lt;/p&gt;

&lt;p&gt;The Attackathon launched on October 27, 2025 with a $200,000 prize pool (paid in RLUSD). A two-week learning period preceded the live window, giving researchers access to educational resources and full &lt;a href="https://immunefi.com/audit-competition/xrpl-ripple-attackathon/scope/#top" rel="noopener noreferrer"&gt;scope documentation&lt;/a&gt; covering 35,498 lines of C/C++ code.&lt;/p&gt;

&lt;p&gt;The results were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;455 total submissions from 131 unique researchers&lt;/li&gt;
&lt;li&gt;94 unique valid findings out of 183 valid submissions after triage&lt;/li&gt;
&lt;li&gt;Final severity breakdown: 15 Critical · 19 High · 17 Medium · 20 Low · 23 Insights&lt;/li&gt;
&lt;li&gt;54 eligible researchers &lt;a href="https://immunefi.com/audit-competition/xrpl-ripple-attackathon/leaderboard/#top" rel="noopener noreferrer"&gt;paid out&lt;/a&gt; after KYC, with the full $200K distributed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The triage period closed January 7, 2026, and all findings were reviewed by RippleX's core engineering team, which addressed every identified issue and prepared the codebase for re-audit. Immunefi report is published &lt;a href="https://drive.google.com/file/d/1PsfPxaQJgCgm0ch8SoC1s9t7xcCKAI7k/view" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Building on the findings from v1.0, we are planning a v1.1 enhancement amendment to incorporate partner feedback and operational learnings. The release includes both user-facing improvements and targeted protocol enhancements and is scheduled for Q3 this year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Halborn Re-Audit Post-Attackathon (December 2025–January 2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With all critical/high and medium Attackathon findings fixed, we submitted the updated Lending Protocol codebase to Halborn for a second audit starting December 15, 2025. This was a full month engagement covering the entire protocol after incorporating fixes from both the original audits and the Attackathon. &lt;/p&gt;

&lt;p&gt;Halborn delivered the re-audit in January 2026. RippleX's engineering team finalized all remaining fixes before the mainnet release.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 5: Mainnet Release &amp;amp; Validator Voting (January 2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On January 28–29, 2026, the Lending Protocol and Single Asset Vault shipped in rippled v3.1.0 and went live for initial validator voting and independent community testing by validators and core developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 6: Independent Community Testing (March 2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The XRPL Commons independently tested the Single Asset Vault, running &lt;a href="https://x.com/xrpl_commons/status/2029584834373263823" rel="noopener noreferrer"&gt;257 test cases across 10 categories&lt;/a&gt; covering every transaction type, edge case, and adversarial scenario they could identify. 257 out of 257 tests passed, representing a 100% pass rate. Squid UNL validator performed extensive testing in April 2026 (&lt;a href="https://x.com/ecdsafu/status/2044808910222373249" rel="noopener noreferrer"&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 7: Red Team Activities and Bug Bounty (March - May 2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Between March and May 2026, the Lending Protocol and SAV went through the most rigorous pre-launch security process of any XRPL feature to date, across three parallel tracks on top of community testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Red Team&lt;/strong&gt;: The AI-assisted red team filed 20 Lending Protocol-specific tickets. Seven confirmed bugs were fixed including an inverted invariant that would have allowed phantom collateral to go undetected, a fee-free network spam vector in LoanPay, and a node deadlock via integer overflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bug Bounty&lt;/strong&gt;: Multiple researchers submitted reports during the review period. One report identified a confirmed first-depositor vault attack that could result in fund loss and has since been remediated. Other submissions related to known issues for which mitigations were already planned or underway.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fuzz Testing&lt;/strong&gt;: We also completed extensive fuzz testing for the Lending Protocol and SAV, including multi-hour runs through the fuzz testing framework. This helped identify and address a vault deposit issue, adding another layer of validation and strengthening the overall security posture for Lending.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fixes from these efforts were split between the recent &lt;a href="https://xrpl.org/blog/2026/rippled-3.1.3" rel="noopener noreferrer"&gt;3.1.3 release&lt;/a&gt; and the new &lt;a href="https://xrpl.org/blog/2026/xrpld-3.2.0" rel="noopener noreferrer"&gt;3.2.0 release&lt;/a&gt; on June 15th.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 8: Formal Verification in Collaboration with &lt;a href="https://www.commonprefix.com/" rel="noopener noreferrer"&gt;Common Prefix&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We began with an exploratory phase focused on &lt;a href="https://dev.to/ripplexdev/a-formal-verification-of-the-xrp-ledger-part-ii-4a0j"&gt;formally specifying critical components&lt;/a&gt; of the Lending Protocol in Lean 4. Over eight weeks (Feb - April 2026), Common Prefix modeled key protocol components and defined the properties they must satisfy. &lt;/p&gt;

&lt;p&gt;These formal modeling efforts exposed subtle edge cases that might otherwise have gone undetected, including vault invariant violations, loan payment assertion failures, arithmetic rounding errors, and discrepancies between the XLS specification and the implementation. The identified issues have since been addressed in the latest 3.1.3 and 3.2.0 releases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 9: Partner Adoption and additional testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Institutional-grade players like &lt;a href="https://www.evernorth.xyz/blog-post-01-29-2026" rel="noopener noreferrer"&gt;Evernorth&lt;/a&gt;, &lt;a href="https://chainwire.org/2026/02/09/soil-introduces-single-asset-vault-on-xrpl-to-streamline-institutional-lending/?mfk=d1VEvuqkqNRkpIuUNZCdz0sEORUrCf5VNatGzl%2B9qq%2FVJDFYlfmXucPPCqXWqUj0SEarxTZsJgH9N9M1jxkSkRQvM%2FbKpxti1f%2FxUuT5qwd%2F3BPMQpFaXEm%2FQrPOqOOXr01q7Jqzg61LeOoMbpftsrhuu6%2Fp" rel="noopener noreferrer"&gt;SOIL&lt;/a&gt; and &lt;a href="https://x.com/vs1_finance/status/2044819609455345977" rel="noopener noreferrer"&gt;VS1.Finance&lt;/a&gt; have already lined up to leverage and build on the Single Asset Vault and Lending Protocol - a signal that the security rigor behind these features is translating directly into business confidence. This list is not exhaustive: more partners are in flight and will be covered in dedicated posts as they become public.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;p&gt;The most important takeaway is that preparing the Lending Protocol and Single Asset Vault for production through the phases described above has helped establish a new security and quality baseline for XRPL amendments.&lt;/p&gt;

&lt;p&gt;This baseline is backed by multiple independent layers of validation, including multiple independent audits, attackathons / bug bounties, AI-assisted security reviews, red team activities, formal modeling, UNL validator review, and community testing. Collectively, these efforts uncovered issues that other approaches would have missed.&lt;/p&gt;

&lt;p&gt;Together, this defense-in-depth approach has significantly raised the bar for production readiness and will help shape how future XRPL amendments are developed, reviewed, and deployed.&lt;/p&gt;

</description>
      <category>xrpl</category>
      <category>lendingprotocol</category>
      <category>defi</category>
      <category>security</category>
    </item>
    <item>
      <title>A Formal Verification of the XRP Ledger: Part II</title>
      <dc:creator>Vito Tumas</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:06:57 +0000</pubDate>
      <link>https://dev.to/ripplexdev/a-formal-verification-of-the-xrp-ledger-part-ii-4a0j</link>
      <guid>https://dev.to/ripplexdev/a-formal-verification-of-the-xrp-ledger-part-ii-4a0j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a second article in the XRP Ledger Formal Verification Series. If you’d like to start at the beginning you can find the first article: &lt;a href="https://dev.to/ripplexdev/a-formal-verification-of-the-xrp-ledger-51e4"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Introduction: Building the Standard of Security
&lt;/h3&gt;

&lt;p&gt;We are shifting formal verification work with Common Prefix from the established Payment Engine to the novel protocols,  Single Asset Vault and the Lending Protocol. While the Payment Engine has run reliably for more than a decade, these protocols are new. They introduce complex logic that brings real economic exposure, presenting a novel risk profile.&lt;/p&gt;

&lt;p&gt;After completing our exploratory phase earlier this year to define our technical scope and strategies, we are ready to proceed. For more technical details, please see Common Prefix’s companion post: &lt;a href="https://www.commonprefix.com/blog/formal-verification-of-xrpl-foundations-and-first-proofs" rel="noopener noreferrer"&gt;Formal Verification of XRPL: Foundations and first Proofs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This pivot represents a change in how we approach protocol-native feature development. Rather than a safety net, we will embed formal verification practices from day one, specifying and verifying complex new features. We are making provable protocol correctness a design property.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Pivot: Securing High-Stakes Native DeFi
&lt;/h3&gt;

&lt;p&gt;Unlike other blockchain networks, where DeFi logic is fragmented across smart contracts, the XRP Ledger embeds its DeFi primitives directly into its core C++ architecture.&lt;/p&gt;

&lt;p&gt;This is a core architectural distinction with security implications: a vulnerability in an external smart contract can be contained or replaced. A vulnerability in core Layer-1 C++ code can propagate across the entire ledger. The elevated risk profile demands features whose correctness is guaranteed.&lt;/p&gt;

&lt;p&gt;The complexity of the Single Asset Vault and the Lending Protocol does not arise from the volume of logic, but from the need to preserve numerical precision across multiple sequential operations, where rounding errors cannot be allowed to compound.&lt;/p&gt;

&lt;p&gt;Formal verification is the natural tool for this class of problem, mathematically proving the correctness of these mechanisms and setting the standard for every native DeFi primitive that follows.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Problem: Anatomy of Software Correctness
&lt;/h3&gt;

&lt;p&gt;What defines software as “correct”? To answer this, consider software as a target with three distinct zones:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh17jm1h7f5q4bet4pu4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh17jm1h7f5q4bet4pu4.png" width="800" height="852"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Red Zone:&lt;/strong&gt; The outer area represents the near-infinite range of actions the code could perform, most catastrophic. For example, minting XRP or enabling unauthorised withdrawals.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blue Zone:&lt;/strong&gt; This smaller inner set includes all theoretically correct behaviours, as defined by the protocol’s mathematical design.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Green Zone:&lt;/strong&gt; These are the actual, implementable behaviours. Since protocols are embedded in a C++ system with strict constraints and a unique architecture, the software must remain inside this zone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Software is correct when the Green Zone sits entirely within the Blue, with every behaviour the implementation can produce being permitted by the mathematical design, with no path into the Red.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Limits of Testing
&lt;/h4&gt;

&lt;p&gt;Software remains in the Green Zone through testing, unit, integration, and system tests designed to anticipate user and adversarial interactions. The ceiling of this approach is human imagination and expertise: engineers can only write tests for scenarios they can conceive. For a DeFi protocol with near-infinite state space, that ceiling is low. Testing confirms the system behaves correctly in the scenarios it was asked about; it cannot speak to the ones it wasn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. The Solution: Formal Verification in Practice&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Formal verification constructs an abstract model of the Green Zone to represent the protocol's intended behaviour. This model is written in a precise language that computers can analyse. While standard testing asks, "Does this input produce the correct output?", formal verification asks, "Can this model behave incorrectly?" and provides a proof rather than a test result.&lt;/p&gt;

&lt;p&gt;Developing the abstract model requires domain expertise and significant initial effort from specialised engineers. Once established, the model changes only with core protocol updates and serves as the authoritative reference for system behaviour. Formal verification ensures the model behaves correctly under all expressible conditions. Extending this guarantee to the C++ implementation is a separate challenge.&lt;/p&gt;

&lt;h4&gt;
  
  
  From Model to Implementation
&lt;/h4&gt;

&lt;p&gt;An oracle is an artefact derived from the formally proven model, for example, the model directly compiled to C++. It serves as the source of truth against which the implementation is continuously checked: identical inputs are provided to both the Oracle and the &lt;code&gt;xrpld&lt;/code&gt; implementation, and any deviation in output is immediately flagged.&lt;/p&gt;

&lt;p&gt;In collaboration with Common Prefix, we are applying this methodology to the Single Asset Vault and the Lending Protocol. The modelling phase has already surfaced edge cases that standard tests missed, not as a sign of weakness, but as evidence that formal verification is working exactly as intended. These are early results, but they reflect a methodology with decades of proof behind it, now within reach of mainstream engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. From Aerospace to Everyday Engineering
&lt;/h3&gt;

&lt;p&gt;Formal verification has its roots in domains where failure could be catastrophic, such as aviation, nuclear power, and other critical infrastructure. Such an approach descends from that tradition, but what once demanded the resources of a space programme is now within reach of mainstream software engineering. For blockchain protocols managing real economic value, the threshold for adopting it is no longer cost, it's ambition.&lt;/p&gt;

&lt;p&gt;The broader industry is beginning to recognise what was once a niche conviction: &lt;a href="https://www.coindesk.com/tech/2026/05/18/vitalik-buterin-says-ai-formal-verification-could-actually-make-crypto-much-more-secure" rel="noopener noreferrer"&gt;together, AI and formal verification are effective&lt;/a&gt; for securing the next generation of blockchain protocols. AI has begun accelerating code analysis and identification of novel attack patterns; formal verification mathematically proves conformance to specification, eliminating entire classes of design flaws at the architectural level. While no security approach is exhaustive, these two disciplines are complementary. One navigates a shifting threat landscape, the other anchors the protocol in provable correctness.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Future: Spec-Driven Development and Network Governance
&lt;/h4&gt;

&lt;p&gt;The XRPL engineering roadmap is moving in this direction: we are integrating formal verification into our workflows and building toward a development process where protocols are specified and verified before being built and shipped.&lt;/p&gt;

&lt;p&gt;The value of this work reaches beyond engineering. Formal verification will become a key factor for network governance: we expect proofs to create a clear, objective baseline for amendment maturity, giving validators the technical assurance needed to evaluate and activate new features with confidence.&lt;/p&gt;

&lt;p&gt;By embedding this standard into our engineering lifecycle from the outset, we ensure that as the XRP Ledger expands its native DeFi capabilities, it remains a protocol whose security properties are proven and not just claimed.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Inside the XRPL AI Red Team: What We've Found and Fixed</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Fri, 29 May 2026 17:30:07 +0000</pubDate>
      <link>https://dev.to/ripplexdev/inside-the-xrpl-ai-red-team-what-weve-found-and-fixed-2h3h</link>
      <guid>https://dev.to/ripplexdev/inside-the-xrpl-ai-red-team-what-weve-found-and-fixed-2h3h</guid>
      <description>&lt;p&gt;Back in March, we &lt;a href="https://ripple.com/insights/strengthening-xrp-ledger-security-with-ai-for-next-phase-of-growth/" rel="noopener noreferrer"&gt;announced&lt;/a&gt; that Ripple was standing up a dedicated AI-assisted red team to continuously hunt for vulnerabilities in the XRP Ledger. Two months in, we want to give the community a real look under the hood: how the effort is structured, what kinds of bugs we've found, and what we've learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge: Security at Scale
&lt;/h2&gt;

&lt;p&gt;The XRPL has been running continuously since 2012 and has processed over three billion transactions. That track record is something to be proud of, but it also means the codebase carries the weight of a decade of engineering evolution - design decisions made at a different scale, assumptions that predate modern tooling, and legacy patterns that interact in non-obvious ways with newer features.&lt;/p&gt;

&lt;p&gt;New features ship regularly, each adding complexity across the core protocol, client SDKs, and the Clio API server. A codebase that has evolved over a decade accumulates subtle interactions between subsystems that no single person can hold entirely in their head.&lt;/p&gt;

&lt;p&gt;AI models allow us to go both deeper and broader in larger codebases, at a speed and scale that would otherwise be near-impossible. Teams can thoroughly explore large codebases at a depth and breadth that would be impractical with manual review alone, finding edge cases where subsystems intersect and in sections of the codebase that haven’t been closely scrutinized in years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Multi-Layered Pipeline
&lt;/h2&gt;

&lt;p&gt;The red team combines several complementary techniques, each catching different classes of bugs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI bug-finding agents.&lt;/strong&gt; The core of our approach is custom AI pipelines that analyze the rippled codebase, XRPL client SDKs (xrpl.js, xrpl-py, xrpl4j, xrpl-rust, xrpl-go), and Clio. We run these agents against feature branches, release candidates, and the main codebase on a continuous basis, including scheduled weekly runs against the &lt;code&gt;develop&lt;/code&gt; branch to catch bugs introduced by new code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DepthFirst.&lt;/strong&gt; We use &lt;a href="https://depthfirst.com/" rel="noopener noreferrer"&gt;DepthFirst&lt;/a&gt;, an AI-powered vulnerability discovery platform, for deep scans of our repositories. While our custom pipelines are purpose-built around XRPL-specific semantics, DepthFirst brings broader coverage: it traces data flows, business logic, and cross-service interactions across the codebase to find attack paths that span module boundaries. We specifically use their low-level C/C++ model, which is tuned for the memory safety and type-confusion bugs that dominate systems-level code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antithesis (fault-injection testing).&lt;/strong&gt; We use &lt;a href="https://antithesis.com/" rel="noopener noreferrer"&gt;Antithesis&lt;/a&gt;, a continuous fault-injection platform, to run rippled under adversarial conditions - exploring behaviors that only emerge under concurrent load, partial failures, or unusual transaction ordering. This catches a different class of bug than static analysis: timing-dependent crashes and assertion failures that only appear when the system is under stress. Antithesis has already caught real bugs that we have shipped fixes for in production releases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;External security research intake.&lt;/strong&gt; We actively receive and triage reports from external researchers, whether through our &lt;a href="https://ripple.com/legal/bug-bounty/" rel="noopener noreferrer"&gt;bug bounty program&lt;/a&gt; or via other channels. These flow through the same triage pipeline as our internal findings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PR review bots.&lt;/strong&gt; We run GitHub Copilot and a Ripple-managed Claude-based bot on rippled PRs. Both post inline comments directly on the PRs, catching issues before they can become bugs in the codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Bug to Fix: The Full Lifecycle
&lt;/h2&gt;

&lt;p&gt;Discovery is only the first step. As Mozilla observed in their similar work &lt;a href="https://hacks.mozilla.org/2026/05/behind-the-scenes-hardening-firefox/" rel="noopener noreferrer"&gt;hardening Firefox with AI&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;"A discovery subsystem is necessary but not sufficient. In order to scale the effort, we needed to integrate it with our full security bug lifecycle: determining what to look for, where to look, and how to handle what it produces."&lt;/p&gt;

&lt;p&gt;We've built the same thing for the XRPL. Our lifecycle looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Discovery:&lt;/strong&gt; AI pipelines, DepthFirst scans, Antithesis, and external researchers report candidate bugs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deduplication:&lt;/strong&gt; Before filing, we cross-check against existing boards to avoid duplicate tickets across our various pipelines.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-assisted triage:&lt;/strong&gt; An automated triage pass does the first cut: root cause analysis, false positive detection, reproduction test generation, and severity scoring using the OWASP Risk Rating Methodology. This substantially reduces the manual burden on engineers.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human expert review:&lt;/strong&gt; Domain experts validate triage results. AI triage is powerful but imperfect, and human review is essential, particularly for subtle invariant bugs where the AI can misread the intended semantics.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalation and routing:&lt;/strong&gt; Confirmed bugs are routed to the right engineering team with full triage reports and reproduction tests already attached.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix and release:&lt;/strong&gt; Fixes are shipped via the amendment system for on-ledger changes, or as direct patches for off-ledger issues.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Coverage spans nearly every major subsystem: the transaction engine, the RPC layer, the peer/overlay protocol, AMM, MPT, Vault, Lending, Permission Delegation, NFTs, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We've Found So Far
&lt;/h2&gt;

&lt;p&gt;To date, the team has publicly disclosed 287 xrpld issues on GitHub (231 open, 49 closed), with more issues regularly created as triage continues. These issues are mainly code-quality improvements and defense-in-depth enhancements, and none affect system stability, availability, or the safety of funds. The full list is &lt;a href="https://github.com/XRPLF/rippled/issues?q=is%3Aissue+label%3A%22AI+Triage%22" rel="noopener noreferrer"&gt;on Github&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Shipped in 3.1.3
&lt;/h3&gt;

&lt;p&gt;The 3.1.3 release was dedicated entirely to security and bug fixes. No new features, just hardening. It included 20 red-team findings across several categories:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permissioned Domain + Tickets crash (Critical).&lt;/strong&gt; A specific combination of a Ticket-based transaction with the PermissionedDomain feature could trigger a keylet collision that would crash the validator. This bug was initially caught by the XRPL Commons team back in March, and an initial fix that fixed the crash but not the root cause (since that required an amendment) was released in 3.1.2. However, during our release testing for 3.1.3 with Antithesis, we caught a second crashing issue with the same root cause. &lt;em&gt;This is exactly the class of issue the red team was built to find, and exactly why we run fault injection against staging before release.&lt;/em&gt; The initial PR from 3.1.2 is &lt;a href="https://github.com/XRPLF/rippled/pull/6540" rel="noopener noreferrer"&gt;#6540&lt;/a&gt;, and the full fix in 3.1.3 is &lt;a href="https://github.com/XRPLF/rippled/pull/7129" rel="noopener noreferrer"&gt;#7129&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ledger RPC API v2 crash (High).&lt;/strong&gt; The Ledger RPC API v2 endpoint had a crash path reachable from any public connection (no authentication required). A malformed request would bring down the node. This is the kind of bug that's easy to miss in code review because the crash condition is a few layers removed from the input handling, yet straightforward to find with systematic adversarial input generation. The fix PR is &lt;a href="https://github.com/XRPLF/rippled/pull/7109" rel="noopener noreferrer"&gt;#7109&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The remaining findings are summarized in the table below:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Bug&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Severity&lt;/th&gt;
&lt;th&gt;PR&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTTP Forwarded Header Out-of-Bounds Heap Read&lt;/td&gt;
&lt;td&gt;Core / RPC&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/7126" rel="noopener noreferrer"&gt;#7126&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHAMap Leaf Node Size Validation Denial of Service&lt;/td&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/7130" rel="noopener noreferrer"&gt;#7130&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STArray JSON Parsing Lacks Bounds Checking&lt;/td&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/7112" rel="noopener noreferrer"&gt;#7112&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STIssue Deserialization Crash via noAccount() Issuer&lt;/td&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/7110" rel="noopener noreferrer"&gt;#7110&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;strUnHex Signed Char Out-of-Bounds Array Access&lt;/td&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/7104" rel="noopener noreferrer"&gt;#7104&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;removeEmptyHolding / authorizeMPToken Delete MPToken With Active Escrow (sfLockedAmount &amp;gt; 0)&lt;/td&gt;
&lt;td&gt;MPT / Escrow&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6635" rel="noopener noreferrer"&gt;#6635&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stale Read in rippleSendMultiMPT Allows Exceeding MaximumAmount&lt;/td&gt;
&lt;td&gt;MPT / Payments&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6644" rel="noopener noreferrer"&gt;#6644&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VaultWithdraw Trustline Limit Bypass via Share-Denominated Withdrawal&lt;/td&gt;
&lt;td&gt;Vault&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6645" rel="noopener noreferrer"&gt;#6645&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero-Amount ("Clawback All") Fails When Vault Has Outstanding Loans&lt;/td&gt;
&lt;td&gt;Vault&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6646" rel="noopener noreferrer"&gt;#6646&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;associateAsset calls skipped for all flag-bearing LoanManage operations&lt;/td&gt;
&lt;td&gt;Lending&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6678" rel="noopener noreferrer"&gt;#6678&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ValidLoanBroker CoverAvailable invariant check is inverted&lt;/td&gt;
&lt;td&gt;Lending&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6678" rel="noopener noreferrer"&gt;#6678&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoanPay::calculateBaseFee uncapped fee estimation overcharges users&lt;/td&gt;
&lt;td&gt;Lending&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6970" rel="noopener noreferrer"&gt;#6970&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dry-run transactions can be queued in the real TxQ during fee escalation&lt;/td&gt;
&lt;td&gt;Transaction Queue&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/7131" rel="noopener noreferrer"&gt;#7131&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;removeExpired&lt;/code&gt; Silently Ignores &lt;code&gt;deleteSLE&lt;/code&gt; Failure&lt;/td&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6962" rel="noopener noreferrer"&gt;#6962&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ValidLoan invariant emits identical error message for opposite conditions&lt;/td&gt;
&lt;td&gt;Lending&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6668" rel="noopener noreferrer"&gt;#6668&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ValidPermissionedDEX invariant does not check for empty AdditionalBooks array on hybrid offers&lt;/td&gt;
&lt;td&gt;Permissioned DEX&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/XRPLF/rippled/pull/6716" rel="noopener noreferrer"&gt;#6716&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There were also several assorted smaller fixes included, some of which were found by AI.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: this is not an exhaustive list of all bugs fixed in 3.1.3 - only those found by AI red team efforts.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Beyond rippled
&lt;/h3&gt;

&lt;p&gt;The team has also been scanning Clio and several widely-used client libraries (xrpl.js, xrpl-py, xrpl4j, xrpl-go, xrpl-rust). The SDK scan found many issues across multiple language implementations, several of which have already been patched.&lt;/p&gt;

&lt;p&gt;We have also publicly disclosed &lt;a href="https://github.com/XRPLF/xrpl-py/issues?q=is%3Aissue%20label%3A%22AI%20Triage%22" rel="noopener noreferrer"&gt;44 issues&lt;/a&gt; in xrpl-py, &lt;a href="https://github.com/XRPLF/xrpl.js/issues?q=is%3Aissue%20label%3A%22AI%20Triage%22" rel="noopener noreferrer"&gt;48 issues&lt;/a&gt; in xrpl.js, and &lt;a href="https://github.com/XRPLF/xrpl-rust/issues?q=is%3Aissue%20label%3A%22AI%20Triage%22" rel="noopener noreferrer"&gt;126 issues&lt;/a&gt; in xrpl-rust.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We've Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI is a force multiplier, but cannot fully replace humans.&lt;/strong&gt; Our pipelines find real bugs (including Critical and High severity issues), but also produce false positives. Human review of AI verdicts, especially for false positives, is a crucial part of the process. The combination of AI discovery + AI triage + human expert validation is what makes the system work. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A full pipeline beats a great tool.&lt;/strong&gt; Having a strong bug-finding AI model is necessary but not sufficient. The real value is in how you use it (the prompts and harnesses you use to guide the model to find bugs) and the surrounding infrastructure (issue tracking integration, deduplication, severity standardization, routing to the right teams, and tracking through to the fix).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-feature interactions are the hardest bugs to find.&lt;/strong&gt; The most significant findings were in the intersections between features that individually worked correctly, rather than in any one single feature. This is where AI-assisted analysis has the clearest advantage: it can explore the full range of possible feature interactions much more exhaustively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security transparency requires responsible coordination.&lt;/strong&gt; Fixing critical bugs while protecting the network and users requires close coordination with validators and ecosystem participants before public disclosure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The 3.1.3 release was the first dedicated security release to come out of this effort. Future planned releases, including 3.2.0, will include more fixes from the backlog of confirmed findings.&lt;/p&gt;

&lt;p&gt;We're expanding our analysis to cover cross-feature interactions better, and continuing to run Antithesis fault-injection tests on new release branches. We're also working to run more comprehensive attackathons on new amendments before they're activated on mainnet - the security bar for new amendments is going up.&lt;/p&gt;

&lt;p&gt;We also plan on open-sourcing our pipelines as soon as we have fixed all the exploitable bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsible Disclosure
&lt;/h2&gt;

&lt;p&gt;If you find a potential vulnerability in the XRP Ledger, please report it through our &lt;a href="https://ripple.com/legal/bug-bounty/" rel="noopener noreferrer"&gt;responsible disclosure process&lt;/a&gt;. The red team reviews all incoming reports.&lt;/p&gt;

&lt;p&gt;Security at this scale requires the whole ecosystem. We'll continue to keep you posted on what we find.  &lt;/p&gt;

</description>
      <category>xrp</category>
      <category>xrpl</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>MPT DEX Performance Test Report</title>
      <dc:creator>Qi Zhao</dc:creator>
      <pubDate>Thu, 21 May 2026 02:07:19 +0000</pubDate>
      <link>https://dev.to/ripplexdev/mpt-dex-performance-test-report-3n45</link>
      <guid>https://dev.to/ripplexdev/mpt-dex-performance-test-report-3n45</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;MPTVersion2&lt;/code&gt; amendment (XLS-82) extends Multi-Purpose Token (MPT) support to the XRP Ledger's Decentralized Exchange (DEX), enabling MPT assets to participate natively in Automated Market Maker (AMM) pools, order book offers, cross-currency payments, and check-based transfers. This builds directly on the XLS-33 MPT foundation and the existing XRPL DEX infrastructure (XLS-30).&lt;/p&gt;

&lt;p&gt;Rather than introducing new on-ledger objects or a separate trading engine, MPTVersion2 extends existing transaction types — &lt;code&gt;AMMCreate&lt;/code&gt;, &lt;code&gt;AMMDeposit&lt;/code&gt;, &lt;code&gt;AMMWithdraw&lt;/code&gt;, &lt;code&gt;AMMClawback&lt;/code&gt;, &lt;code&gt;AMMDelete&lt;/code&gt;, &lt;code&gt;CheckCreate&lt;/code&gt;, &lt;code&gt;CheckCash&lt;/code&gt;, &lt;code&gt;OfferCreate&lt;/code&gt;, and &lt;code&gt;Payment&lt;/code&gt; — to treat MPT as a first-class asset alongside XRP and IOUs. MPT amounts are identified by &lt;code&gt;mpt_issuance_id&lt;/code&gt; in transaction JSON in place of the &lt;code&gt;currency&lt;/code&gt;/&lt;code&gt;issuer&lt;/code&gt; fields used by IOUs.&lt;/p&gt;

&lt;p&gt;This report summarizes a comprehensive performance evaluation of the MPTVersion2 amendment under high-load conditions. Tests were executed in RippleX's private performance network to quantify throughput, consensus latency, CPU/memory utilization, and regression impact relative to the 3.1.2 release baseline.&lt;/p&gt;

&lt;p&gt;The results demonstrate that MPT DEX integration is performant and stable, with no material regression against baseline IOU-based DEX operations, and that the amendment can be safely activated without compromising the 5-second consensus target.&lt;/p&gt;




&lt;h2&gt;
  
  
  Executive Summary
&lt;/h2&gt;

&lt;p&gt;The MPTVersion2 amendment introduces no measurable performance regression against the 3.1.2 production release. Under identical conditions, the mpt_dex build matched baseline throughput within 0.4%. Pure MPT path payments outperformed the IOU baseline by 14.2%, while the most complex mixed MPT-IOU paths came within 1.7% of baseline. DEX transaction capacity with MPT token pairs exceeded IOU equivalents by over 36%. All scenarios maintained consensus latency below the 5-second target across both 1-hour and 5-hour endurance runs, with stable CPU and memory utilization throughout. The amendment is safe to activate without compromising MainNet SLOs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Testing Objectives
&lt;/h2&gt;

&lt;p&gt;The primary objective of this testing was to assess the performance impact of enabling MPT assets in DEX and payment flows, and to validate that no regressions are introduced relative to the 3.1.2 production release. Specifically, we aimed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Establish a clean performance baseline comparing the &lt;code&gt;mpt_dex&lt;/code&gt; build against the 3.1.2 release under identical load and database conditions.&lt;/li&gt;
&lt;li&gt;Validate that the &lt;code&gt;mpt_dex&lt;/code&gt; build performs equivalently when run against both the baseline performance database and the MPT DEX-enriched database, confirming that MPT ledger object population does not degrade existing transaction performance.&lt;/li&gt;
&lt;li&gt;Measure the throughput, consensus latency, and resource utilization of MPT-enabled path payments across multiple path complexity tiers.&lt;/li&gt;
&lt;li&gt;Compare MPT path payment performance across three middle path configurations — pure IOU-IOU (baseline), pure MPT-MPT, and alternating MPT-IOU — at increasing path complexity tiers.&lt;/li&gt;
&lt;li&gt;Stress test rippled's DEX transaction processing under a load distribution mirroring the most frequent MainNet operations (&lt;code&gt;AMMCreate&lt;/code&gt;, &lt;code&gt;AMMDeposit&lt;/code&gt;, &lt;code&gt;OfferCreate&lt;/code&gt;) with MPT/MPT token pairs, validating no regression against the IOU-only baseline.&lt;/li&gt;
&lt;li&gt;Ensure that the network consistently maintains a 5-second consensus latency threshold under all test scenarios.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Testing Methodology
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Capacity Planning
&lt;/h3&gt;

&lt;p&gt;The 5-second consensus latency limit serves as the benchmark for network capacity across all scenarios. This threshold ensures the network remains in optimal condition while processing a mix of MPT-enabled DEX, AMM, and payment transactions alongside standard payment flows. Instances where the network surpassed this limit are referred to as "overvalidation" in the results below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Environment
&lt;/h3&gt;

&lt;p&gt;Testing was conducted in a private XRPL environment with 9 nodes, mirroring Ripple's MainNet hardware specifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network Setup&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 nodes function as validator nodes&lt;/li&gt;
&lt;li&gt;4 nodes serve as client P2P nodes, interfacing with load generators&lt;/li&gt;
&lt;li&gt;All nodes are hosted on AWS EC2 &lt;code&gt;z1d.2xlarge&lt;/code&gt; instances: 8 CPU cores, 64 GB RAM, 300 GB NVMe SSD&lt;/li&gt;
&lt;li&gt;All nodes operate within the same AWS region, interconnected via a shared LAN&lt;/li&gt;
&lt;li&gt;Between 1 and 4 load servers transmit transactions to the 4 P2P nodes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Account Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A total of 250,000 synthetic accounts were established, built atop a public ledger synchronized from MainNet. 15 accounts were designated as MPT token issuers, distributing MPT balances to the remaining MPT participant accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rippled Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The rippled configuration was sourced from a Ripple MainNet validator, with modifications made only as required for the test environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Data Setup
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Multi-Purpose Token Initialization
&lt;/h4&gt;

&lt;p&gt;To support MPT-backed DEX testing, the environment was pre-initialized with MPT objects following the XLS-33 and XLS-82 specifications.&lt;/p&gt;

&lt;p&gt;Three token chains were constructed to support the full range of path payment scenarios:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IOU1 → IOU2 → IOU3 → IOU4 → IOU5 → IOU6 → IOU7 → IOU8

MPT1 → MPT2 → MPT3 → MPT4 → MPT5 → MPT6 → MPT7 → MPT8

MPT1 → IOU1 → MPT2 → IOU2 → MPT3 → IOU3 → MPT4 → IOU4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pure IOU chain serves as the baseline control. The pure MPT chain exercises MPT-only pathfinding. The alternating MPT-IOU chain represents the most complex cross-type routing scenario, requiring the pathfinding engine to resolve offer crossings between &lt;code&gt;MPTokenIssuance&lt;/code&gt; and trust line objects at every hop.&lt;/p&gt;

&lt;p&gt;Database creation followed this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Issuer accounts created MPT issuances via &lt;code&gt;MPTokenIssuanceCreate&lt;/code&gt;, with &lt;code&gt;lsfMPTCanTrade&lt;/code&gt; and &lt;code&gt;lsfMPTCanTransfer&lt;/code&gt; flags set to enable DEX participation.&lt;/li&gt;
&lt;li&gt;All holder accounts were authorized via &lt;code&gt;MPTokenAuthorize&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Token issuers funded root accounts via &lt;code&gt;Payment&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;All four load servers distributed MPT balances to the full holder population.&lt;/li&gt;
&lt;li&gt;AMM pools and order book offers were pre-created to seed liquidity across the full asset graph.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Load Modeling
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Scenario 1 — Baseline: Build Regression (mpt_dex vs. 3.1.2 Release)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Confirm that the &lt;code&gt;mpt_dex&lt;/code&gt; build introduces no performance regression against the current 3.1.2 production release under identical baseline conditions.&lt;/p&gt;

&lt;p&gt;Two sub-comparisons were performed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1a. Baseline DB — 5-Hour Build Comparison&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both builds executed against the standard 250K account baseline performance database (no MPT objects). This isolates code-level regressions introduced by the MPTVersion2 amendment independent of ledger state changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load: Standard IOU mixed payment load (XRP-XRP, IOU Direct, AMM/LOB 1path1step, 3path3step, 6path8step)&lt;/li&gt;
&lt;li&gt;No MPT transactions included&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Average Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3.1.2 Release&lt;/td&gt;
&lt;td&gt;160.84&lt;/td&gt;
&lt;td&gt;4.03&lt;/td&gt;
&lt;td&gt;4.72&lt;/td&gt;
&lt;td&gt;9.25&lt;/td&gt;
&lt;td&gt;30 out of 4476&lt;/td&gt;
&lt;td&gt;12.4&lt;/td&gt;
&lt;td&gt;17.6/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mpt_dex build&lt;/td&gt;
&lt;td&gt;160.29&lt;/td&gt;
&lt;td&gt;4.07&lt;/td&gt;
&lt;td&gt;4.80&lt;/td&gt;
&lt;td&gt;9.59&lt;/td&gt;
&lt;td&gt;32 out of 4438&lt;/td&gt;
&lt;td&gt;12.5&lt;/td&gt;
&lt;td&gt;17.9/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;1b. mpt_dex Build — 5-Hour DB Comparison (Baseline DB vs. MPT DEX DB)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;mpt_dex&lt;/code&gt; build was tested against both the baseline database and the MPT DEX-enriched database (populated with MPT issuances, MPToken objects, new AMM pools, and offers) under the same standard mixed payment load. This validates that MPT ledger object population does not degrade performance for non-MPT transactions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Baseline DB&lt;/td&gt;
&lt;td&gt;159.45&lt;/td&gt;
&lt;td&gt;4.06&lt;/td&gt;
&lt;td&gt;4.78&lt;/td&gt;
&lt;td&gt;9.75&lt;/td&gt;
&lt;td&gt;31 out of 4451&lt;/td&gt;
&lt;td&gt;11.7&lt;/td&gt;
&lt;td&gt;18.9/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPT DEX DB&lt;/td&gt;
&lt;td&gt;159.20&lt;/td&gt;
&lt;td&gt;4.08&lt;/td&gt;
&lt;td&gt;4.83&lt;/td&gt;
&lt;td&gt;10.05&lt;/td&gt;
&lt;td&gt;44 out of 4423&lt;/td&gt;
&lt;td&gt;12.3&lt;/td&gt;
&lt;td&gt;19.8/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Scenario 2 — MPT DEX Path Payments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Measure throughput, latency, and resource impact of MPT-enabled cross-currency path payments at increasing path complexity, compared against an IOU-only baseline.&lt;/p&gt;

&lt;p&gt;All three configurations below were tested under a mixed load combining all three path complexity tiers simultaneously:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path Complexity&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 path / 1 step&lt;/td&gt;
&lt;td&gt;Direct single-hop payment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3 paths / 3 steps&lt;/td&gt;
&lt;td&gt;Moderate path fan-out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6 paths / 8 steps&lt;/td&gt;
&lt;td&gt;Worst-case routing complexity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  2a. IOU-IOU Middle Path — Baseline (Control)
&lt;/h4&gt;

&lt;p&gt;Pure IOU-to-IOU payments routed through IOU intermediate hops. No MPT involvement. Used as the regression control for all path payment comparisons.&lt;/p&gt;

&lt;p&gt;Path structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IOU1 → IOU2 → IOU3 → ... → IOU8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IOU-IOU Middle Path&lt;/td&gt;
&lt;td&gt;142.89&lt;/td&gt;
&lt;td&gt;3.92&lt;/td&gt;
&lt;td&gt;4.59&lt;/td&gt;
&lt;td&gt;9.42&lt;/td&gt;
&lt;td&gt;4 out of 932&lt;/td&gt;
&lt;td&gt;11.4&lt;/td&gt;
&lt;td&gt;16.8/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  2b. MPT-MPT Middle Path — Pure MPT
&lt;/h4&gt;

&lt;p&gt;MPT-to-MPT payments routed exclusively through MPT intermediate hops. This exercises &lt;code&gt;MPTokenIssuance&lt;/code&gt; and &lt;code&gt;MPToken&lt;/code&gt; state lookups at every step of the payment path, with no trust line traversal involved.&lt;/p&gt;

&lt;p&gt;Path structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MPT1 → MPT2 → MPT3 → ... → MPT8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MPT-MPT Middle Path&lt;/td&gt;
&lt;td&gt;163.24&lt;/td&gt;
&lt;td&gt;3.99&lt;/td&gt;
&lt;td&gt;4.59&lt;/td&gt;
&lt;td&gt;11.79&lt;/td&gt;
&lt;td&gt;3 out of 918&lt;/td&gt;
&lt;td&gt;11.7&lt;/td&gt;
&lt;td&gt;16.9/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  2c. MPT-IOU Alternating Middle Path
&lt;/h4&gt;

&lt;p&gt;MPT-to-MPT source/destination payments routed through an alternating sequence of MPT and IOU intermediate hops. This is the most complex path payment configuration, requiring the pathfinding engine to resolve cross-type offer crossings at every step, alternating between &lt;code&gt;MPTokenIssuance&lt;/code&gt; and trust line state lookups.&lt;/p&gt;

&lt;p&gt;Path structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MPT1 → IOU1 → MPT2 → IOU2 → MPT3 → ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MPT-IOU Middle Path&lt;/td&gt;
&lt;td&gt;140.46&lt;/td&gt;
&lt;td&gt;3.98&lt;/td&gt;
&lt;td&gt;4.73&lt;/td&gt;
&lt;td&gt;12.05&lt;/td&gt;
&lt;td&gt;3 out of 921&lt;/td&gt;
&lt;td&gt;11.8&lt;/td&gt;
&lt;td&gt;17.2/64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  2d. Endurance Testing across three scenarios
&lt;/h4&gt;

&lt;p&gt;To validate stability under sustained load, all three path payment configurations were run continuously for 5 hours. The objective was to confirm consistent throughput, detect any anomalous degradation over time, and observe CPU and memory behavior beyond the initial ramp-up period.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IOU-IOU Middle Path&lt;/td&gt;
&lt;td&gt;142.56&lt;/td&gt;
&lt;td&gt;4.03&lt;/td&gt;
&lt;td&gt;4.75&lt;/td&gt;
&lt;td&gt;9.72&lt;/td&gt;
&lt;td&gt;34 out of 4476&lt;/td&gt;
&lt;td&gt;12.3&lt;/td&gt;
&lt;td&gt;17.6/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPT-MPT Middle Path&lt;/td&gt;
&lt;td&gt;163.15&lt;/td&gt;
&lt;td&gt;4.04&lt;/td&gt;
&lt;td&gt;4.77&lt;/td&gt;
&lt;td&gt;11.67&lt;/td&gt;
&lt;td&gt;24 out of 4475&lt;/td&gt;
&lt;td&gt;12.2&lt;/td&gt;
&lt;td&gt;17.7/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPT-IOU Middle Path&lt;/td&gt;
&lt;td&gt;140.35&lt;/td&gt;
&lt;td&gt;4.09&lt;/td&gt;
&lt;td&gt;4.84&lt;/td&gt;
&lt;td&gt;12.93&lt;/td&gt;
&lt;td&gt;24 out of 4416&lt;/td&gt;
&lt;td&gt;12.4&lt;/td&gt;
&lt;td&gt;18.9/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  Endurance Testing System Utilization Graph
&lt;/h5&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;Ledger Validation Time&lt;/em&gt;
&lt;/h6&gt;

&lt;p&gt;Ledger validation time increases with scenario complexity, progressing from IOU-IOU through MPT-MPT to MPT-IOU. All validation times remain below the 5-second target threshold.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiunyverean8ufpgnnfxt.png" alt=" "&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1k67if4q3g8agxo9sdq0.png" alt=" "&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;Memory Usage Analysis&lt;/em&gt;
&lt;/h6&gt;

&lt;p&gt;This chart displays normal memory behavior, with usage stabilizing after an initial ramp-up and then holding steady.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IOU-IOU Middle Path&lt;/th&gt;
&lt;th&gt;MPT-MPT Middle Path&lt;/th&gt;
&lt;th&gt;MPT-IOU Middle Path&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowq3n7jdebvbpmckubq8.png" alt=" "&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6y2fhh9xf5hpk2xbq8xn.png" alt=" "&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wzmfzu0sut66m1zfw5i.png" alt=" "&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;CPU Usage Analysis&lt;/em&gt;
&lt;/h6&gt;

&lt;p&gt;This chart shows stable and low CPU utilization for validator nodes. The spikes are result from the online delete being triggered during the tests.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IOU-IOU Middle Path&lt;/th&gt;
&lt;th&gt;MPT-MPT Middle Path&lt;/th&gt;
&lt;th&gt;MPT-IOU Middle Path&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhltfs530qxkp0ndpabt.png" alt=" "&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmi30kdqcmphlpklo31g.png" alt=" "&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllozwqf6t2atrkhrnwlw.png" alt=" "&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Scenario 3 — OfferCreate &amp;amp; AMM Capacity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Assess the performance impact of MPT DEX support on high-frequency DEX transaction types. The load distribution is modeled on observed MainNet DEX traffic, where &lt;code&gt;OfferCreate&lt;/code&gt;, &lt;code&gt;AMMDeposit&lt;/code&gt;, and &lt;code&gt;AMMCreate&lt;/code&gt; are among the most common operations. By comparing IOU-only against MPT/MPT token pair configurations under the same transaction mix, this scenario quantifies how MPT asset support affects DEX throughput and consensus stability.&lt;/p&gt;

&lt;p&gt;The load mix mostly reflects the observed MainNet DEX distribution: 80% &lt;code&gt;OfferCreate&lt;/code&gt;, 18% &lt;code&gt;AMMDeposit&lt;/code&gt;, and 2% &lt;code&gt;AMMCreate&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  3a. 1-Hour Capacity Run — IOU/IOU vs. MPT/MPT
&lt;/h4&gt;

&lt;p&gt;Both token pair configurations were tested under the same load mix. IOU/IOU serves as the regression control; MPT/MPT exercises all MPT-specific flag and authorization checks on both legs of every &lt;code&gt;OfferCreate&lt;/code&gt;, &lt;code&gt;AMMDeposit&lt;/code&gt;, and &lt;code&gt;AMMCreate&lt;/code&gt; transaction.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IOU-IOU&lt;/td&gt;
&lt;td&gt;207.43&lt;/td&gt;
&lt;td&gt;3.89&lt;/td&gt;
&lt;td&gt;4.18&lt;/td&gt;
&lt;td&gt;8.33&lt;/td&gt;
&lt;td&gt;0 out of 940&lt;/td&gt;
&lt;td&gt;12.1&lt;/td&gt;
&lt;td&gt;16.3/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPT-MPT&lt;/td&gt;
&lt;td&gt;282.57&lt;/td&gt;
&lt;td&gt;3.86&lt;/td&gt;
&lt;td&gt;4.17&lt;/td&gt;
&lt;td&gt;7.58&lt;/td&gt;
&lt;td&gt;0 out of 948&lt;/td&gt;
&lt;td&gt;13.1&lt;/td&gt;
&lt;td&gt;16.9/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  3b. 5-Hour Endurance Testing
&lt;/h4&gt;

&lt;p&gt;Extended longevity runs were conducted to monitor system stability, CPU utilization, and memory growth trends under sustained DEX load with MPT token pairs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Ledger throughput per second&lt;/th&gt;
&lt;th&gt;Mean Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;P95 Ledger Publishing Latency (s)&lt;/th&gt;
&lt;th&gt;Response Time (ms)&lt;/th&gt;
&lt;th&gt;Over Validation&lt;/th&gt;
&lt;th&gt;CPU Utilization (%)&lt;/th&gt;
&lt;th&gt;Memory Usage (GB / Total)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IOU-IOU&lt;/td&gt;
&lt;td&gt;206.85&lt;/td&gt;
&lt;td&gt;4.34&lt;/td&gt;
&lt;td&gt;4.18&lt;/td&gt;
&lt;td&gt;8.91&lt;/td&gt;
&lt;td&gt;12 out of 4589&lt;/td&gt;
&lt;td&gt;13.3&lt;/td&gt;
&lt;td&gt;17.1/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPT-MPT&lt;/td&gt;
&lt;td&gt;281.11&lt;/td&gt;
&lt;td&gt;4.27&lt;/td&gt;
&lt;td&gt;4.17&lt;/td&gt;
&lt;td&gt;8.15&lt;/td&gt;
&lt;td&gt;16 out of 4634&lt;/td&gt;
&lt;td&gt;14.3&lt;/td&gt;
&lt;td&gt;18.2/64GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The performance evaluation of the MPTVersion2 amendment (XLS-82) demonstrates no material regression against the 3.1.2 production release baseline. The &lt;code&gt;mpt_dex&lt;/code&gt; build achieved 160.29 TPS against 160.84 TPS for the 3.1.2 release under identical load and database conditions — a difference of less than 0.4% — confirming that the amendment introduces no measurable code-level overhead. Similarly, running the &lt;code&gt;mpt_dex&lt;/code&gt; build against the MPT DEX-enriched database (populated with MPT issuances, &lt;code&gt;MPToken&lt;/code&gt; objects, AMM pools, and offers) produced 159.20 TPS compared to 159.45 TPS on the baseline database, confirming that the expanded ledger state from MPT object population does not degrade performance for non-MPT transactions.&lt;/p&gt;

&lt;p&gt;For MPT path payments, the pure MPT-MPT middle path outperformed the IOU-IOU baseline at 163.24 TPS vs. 142.89 TPS — a &lt;strong&gt;14.2%&lt;/strong&gt; improvement — reflecting the lighter per-hop state footprint of &lt;code&gt;MPToken&lt;/code&gt; lookups compared to trust line traversal. The alternating MPT-IOU middle path came in at 140.46 TPS, approximately 1.7% below the IOU-IOU baseline, consistent with the additional cross-type offer crossing overhead incurred at every hop. These results held stable across the 5-hour endurance runs, with throughput, latency, and memory utilization remaining consistent between the 1-hour and extended runs across all three configurations. CPU utilization remained low and stable throughout, and memory growth stabilized after an initial ramp-up with no runaway growth observed.&lt;/p&gt;

&lt;p&gt;For Offer/AMM transaction mixload capacity, MPT/MPT token pairs demonstrated notably higher throughput than IOU/IOU under the MainNet-modeled load mix, achieving 282.57 TPS vs. 207.43 TPS in the 1-hour run and 281.11 TPS vs. 206.85 TPS over the 5-hour endurance run. Overvalidation rates remained low and well within acceptable bounds across both configurations, and consensus latency stayed comfortably within the 5-second target throughout all test runs.&lt;/p&gt;

&lt;p&gt;From a deployment perspective, the MPTVersion2 amendment can be safely activated without compromising MainNet SLOs for throughput, consensus latency, or resource utilization. MPT assets are performant as first-class DEX participants, and the amendment introduces no regressions to existing IOU-based payment and DEX operations.&lt;/p&gt;

</description>
      <category>xrpl</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Permissioned DEX: Building the Next Layer of Liquidity on XRPL</title>
      <dc:creator>Antonio Kaplan</dc:creator>
      <pubDate>Wed, 11 Feb 2026 15:48:49 +0000</pubDate>
      <link>https://dev.to/ripplexdev/permissioned-dex-building-the-next-layer-of-liquidity-on-xrpl-22l3</link>
      <guid>https://dev.to/ripplexdev/permissioned-dex-building-the-next-layer-of-liquidity-on-xrpl-22l3</guid>
      <description>&lt;p&gt;The &lt;a href="http://xrpl.org" rel="noopener noreferrer"&gt;XRP Ledger&lt;/a&gt; has always stood apart for its simplicity and resilience. Since 2012, its &lt;a href="https://xrpl.org/docs/concepts/tokens/decentralized-exchange" rel="noopener noreferrer"&gt;built-in decentralized exchange (DEX)&lt;/a&gt; has processed trades continuously proving that low-cost, on-ledger markets can operate at scale. Over time, features like AMMs and &lt;a href="https://xrpl.org/docs/concepts/tokens/fungible-tokens/multi-purpose-tokens" rel="noopener noreferrer"&gt;Multi-Purpose Tokens (MPTs)&lt;/a&gt; have expanded its toolkit, opening new possibilities without sacrificing efficiency or decentralization.&lt;/p&gt;

&lt;p&gt;Now the next major evolution is here: &lt;a href="https://xls.xrpl.org/xls/XLS-0081-permissioned-dex.html" rel="noopener noreferrer"&gt;the Permissioned DEX&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Permissioned DEX Matters
&lt;/h2&gt;

&lt;p&gt;This feature introduces a permissioned DEX system for the XRPL. By integrating permissioning features directly into the DEX protocol, regulated financial institutions can participate in the XRPL's DEX while still adhering to their compliance requirements. This approach avoids the drawbacks of isolated, permissioned tokens or private blockchains, ensuring a vibrant, liquid marketplace that facilitates seamless arbitrage. Ultimately, this permissioned DEX system paves the way for wider institutional adoption of XRPL, fostering a more accessible and efficient financial landscape.&lt;/p&gt;

&lt;p&gt;The open DEX isn’t going anywhere. It will continue to function exactly as it does today, enabling anyone to place and fill offers. Permissioned DEX builds alongside it giving developers and institutions an option to create permissioned order books tied to verified credentials.&lt;/p&gt;

&lt;p&gt;This is key to unlocking real-world financial flows. Most regulated institutions can’t engage on open systems without counterparties being verified. By enabling credential-gated liquidity on the same ledger as open markets, XRPL becomes far more suitable for institutional-grade payments, FX, and settlement use cases.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/184YnbiY9-s"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Permissioned DEX as a Hybrid Innovation
&lt;/h2&gt;

&lt;p&gt;The true novelty of XLS-81 lies in its implementation as the industry’s first permissioned and permissionless hybrid system. Previous institutional DeFi attempts struggled to gain traction because pools of capital were disconnected from the broader market. These walled gardens often suffered from thin liquidity and inefficient pricing, ultimately failing to provide the depth that institutional players require.&lt;/p&gt;

&lt;p&gt;The Permissioned DEX avoids this pitfall by building regulated order books directly into the existing, battle-tested DEX protocol. This creates a symbiotic liquidity engine: because both open and permissioned markets live on the same ledger, market participants can perform seamless arbitrage between them. &lt;/p&gt;

&lt;p&gt;The hybrid model is key to unlocking institutional-grade cross-border payments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shared Institutional Liquidity&lt;/strong&gt;: Regulated entities can tap into deep, shared pools of liquidity to move value without fragmenting capital.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Local Payout&lt;/strong&gt;: Institutions achieve near-instant settlement by connecting payment corridors through a unified ledger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Policy Control&lt;/strong&gt;: Issuers maintain the ability to enforce jurisdiction-specific compliance and KYC requirements at the protocol level. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an institutional order book moves out of sync with the global market, the open DEX provides the necessary liquidity to correct it instantly. This relationship ensures that regulated financial flows aren't just compliant. They are efficient, liquid, and deeply integrated into the entire XRPL ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works at the Protocol Level
&lt;/h2&gt;

&lt;p&gt;Delivering an onchain FX and settlement network with shared institutional liquidity, instant local payout, and full policy control on XRPL depends on a small set of core building blocks working together. To understand how this vision comes together, it helps to look at how the individual pieces fit together using the familiar experience of international travel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://xrpl.org/resources/known-amendments#credentials" rel="noopener noreferrer"&gt;Credentials (XLS-70)&lt;/a&gt;: &lt;strong&gt;The Digital Passport&lt;/strong&gt;: This acts like your travel documents. These are verifiable proofs of identity or compliance issued by trusted authorities. Just as a passport proves who you are to a foreign official, these credentials allow participants to prove their status on-ledger without revealing sensitive private data.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://xrpl.org/resources/known-amendments#permissioneddomains" rel="noopener noreferrer"&gt;Permissioned Domains (XLS-80)&lt;/a&gt;: &lt;strong&gt;The Visa Process&lt;/strong&gt;: Each country sets its own requirements for who may enter its borders. Similarly, Permissioned Domains define the specific entry requirements for a regulated environment on XRPL. This is where an issuer or institution decides which specific credentials (visas) are required for a participant to access their liquidity.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://xrpl.org/resources/known-amendments#permissioneddex" rel="noopener noreferrer"&gt;Permissioned DEX (XLS-81)&lt;/a&gt;: &lt;strong&gt;The Transportation Network&lt;/strong&gt;: International travel does not end at the border. Once admitted, travelers use connecting routes and local transportation to reach their final destination. The Permissioned DEX provides these high-speed "routes" via native order books that only accept trades from verified participants. These routes are built into the XRPL itself, ensuring that trades are instant, secure, and fully compliant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these tools create a flexible system: open markets remain fully open, while permissioned markets can operate with credential-based gating. Liquidity isn’t siloed across external venues. It remains on ledger in a trusted, policy-controlled environment designed for financial institutions.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/48PAr7iyE28?start=10"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Applications
&lt;/h2&gt;

&lt;p&gt;For developers and market makers, Permissioned DEX is not about replacing what exists today, it’s about unlocking new flows that currently bypass XRPL altogether.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Foreign Exchange&lt;/strong&gt;: Onchain FX and settlement network that uses shared institutional liquidity to power cross-border payments with instant local payout and full policy control on XRPL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B2B and Treasury Payments&lt;/strong&gt;: Corporates converting between stablecoins and fiat-backed assets across regions with compliance features built in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stablecoin Issuers&lt;/strong&gt;: Opportunities to increase liquidity and the adoption of their relevant stablecoin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short: Permissioned DEX brings fresh liquidity into XRPL, benefiting the open DEX as well as new permissioned venues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Strengthens the XRPL Ecosystem
&lt;/h2&gt;

&lt;p&gt;Permissioned DEX enables regulated payment and treasury flows to take place directly on the Ledger, rather than being limited to bilateral or externally constrained venues. Compliance-focused order books at the protocol level allow the XRPL to support regulated participation across both fiat-backed and blockchain-native assets.&lt;br&gt;
Instead of pre-funding accounts in every corridor, institutions access shared institutional liquidity on the XRPL where FX and settlement occur atomically. Local payouts are executed via domestic rails only after value has been exchanged on-ledger which reduces settlement and counterparty risk.&lt;/p&gt;

&lt;p&gt;Value is created and captured by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Transparent Pricing&lt;/strong&gt;: Institutions benefit from the competitive, transparent FX pricing generated by shared liquidity pools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capital Efficiency&lt;/strong&gt;: Lower capital requirements by reducing the need for pre-funding (nostro/vostra accounts).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk Mitigation&lt;/strong&gt;: Atomic settlement removes the timing and counterparty risks inherent in traditional multi-day settlement cycles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native Compliance&lt;/strong&gt;: Policy enforcement and transparency are handled by protocol logic, ensuring every trade meets regulatory standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As more regulated flows are executed on-ledger, they contribute to deeper liquidity, broader participation, and increased network usage. This shared liquidity model supports both open DeFi and regulated financial activity on the same ledger, without fragmenting markets across separate systems. &lt;br&gt;
Over time, this dynamic reinforces a positive feedback loop: greater transaction volume attracts more liquidity providers and developers, which in turn improves market depth and utility. This further strengthens the XRPL’s relevance as a global settlement layer, and is a key step towards bringing the financial system onchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Ripple Plans to Utilize The Permissioned DEX
&lt;/h2&gt;

&lt;p&gt;The permissioned DEX provides a compliance-focused on-ledger marketplace for FX and liquidity, enabling institutions to route payments efficiently across currencies. By combining shared liquidity with policy enforcement it delivers lower costs, instant local payout and reduced settlement risk.&lt;br&gt;
Ripple plans to utilize Permissioned DEX as an on-ledger mechanism for asset conversion within payment and treasury workflows, including cross-border payments, B2B transfers, and stablecoin-based settlement.&lt;br&gt;
At a high level, Ripple routes the conversion step of these flows through a permissioned order book, where only verified liquidity providers can participate. Depending on available liquidity and pricing, conversions may execute directly between assets or route across intermediate pairs, settling atomically on XRPL.&lt;br&gt;
For example, in a USD–Colombia corridor, a payment funded in RLUSD can convert on-ledger into a COP-denominated asset via permissioned liquidity, after which the payout partner redeems locally through existing rails. If the pricing were more favorable via an alternative trade route, that path would be executed instead.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
