Skip to content
Last updated

Introducing XRP Ledger version 3.0.0

Version 3.0.0 of rippled, the reference server implementation of the XRP Ledger protocol, is now available. This release introduces new amendments and bug fixes.

Action Required

If you run an XRP Ledger server, upgrade to version 3.0.0 as soon as possible to ensure service continuity.

Install / Upgrade

On supported platforms, see the instructions on installing or updating rippled.

PackageSHA-256
RPM for Red Hat / CentOS (x86-64)2e181c8e966e043e10e32f3b0e30184014b88c2b5b9513d07c0e13c605edf050
DEB for Ubuntu / Debian (x86-64)efbce53f39e2d94d74c3cfdb049758f8826aa5e0a2a246cd9b19e9246e7b4172

For other platforms, please build from source. The most recent commit in the git log should be the change setting the version:

commit 7527e35379a78901320b17a9a26c618e4384b1f6
Author: Ed Hennis <[email protected]>
Date:   Tue Dec 9 12:11:16 2025 -0500

    Set version to 3.0.0

Full Changelog

Amendments

  • fixTokenEscrowV1: Fixes an accounting error in MPT escrows. Specifically, when an escrow unlocks MPTs that have a transfer fee, the system incorrectly reduces the MPT issuer's locked token balance by the gross amount (without fees) rather than the net amount (with fees). This leads to discrepancies in the token's total supply accounting. (#5571)
  • fixIncludeKeyletFields: Adds missing keylet fields to these ledger entries:
    • Sequence to Escrow and PayChannel.
    • Owner to SignerList.
    • OracleDocumentID to Oracle. (#5646)
  • fixPriceOracleOrder: Fixes an issue where the order of asset pair data is different from when a price oracle is created versus when it is updated. (#5485)
  • fixAMMClawbackRounding: Fixes a rounding error that can occur in the LPTokenBalance of an AMM when performing an AMMClawback transaction. (#5750)
  • fixMPTDeliveredAmount: This amendment adds missing DeliveredAmount and delivered_amount metadata fields from direct MPT Payment transactions. (#5569)

Features

  • Added delivered_amount, nftoken_id, nftoken_ids, offer_id, and mpt_issuance_id metadata fields to the simulate API method. (#5754)
  • Added STInt32 as a new SType to support negative 32-bit integer fields. (#5788)

Breaking Changes

  • Updated the ledger_entry API method to return an invalidParams error if you specify multiple entries. Previously, the method would return information for only one entry selected at random. This change enforces a single entry lookup per request. (#5237)

Bug Fixes

  • Fixed consensus stall detection to not flag prematurely. (#5658)
  • Added additional logging to differentiate why peer connections were refused. (#5690)
  • Fixed a code coverage error. (#5765)
  • Raised severity of unexpected/invalid keys when handling UNL manifest from INFO to WARN. Also changed internal error code for invalid UNL manifest formats from untrusted to invalid. (#5804)
  • Fixed release build errors with GCC 15.2. (#5864)
  • Fixed JSON parsing of negative integers in STNumber and STAmount. (#5990)
  • Fixed HTTP header case sensitivity issue in HttpClient.cpp. (#5767)
  • Fixed transaction signature checking functions to accept only required parameters instead of full PreclaimContext. (#5829)
  • Fixed an issue where the sfSubjectNode wasn't populated by the CredentialCreate transaction for self-issued credentials. (#5936)
  • Fixed domain order books not populating during node startup. (#5998)

Refactors

  • Decoupled net module from xrpld and moved RPC related classes to the rpc folder. (#5477)
  • Moved ledger component to libxrpl as part of modularization effort. (#5493)
  • Refactored code in preparation for LendingProtocol. (#5590)
  • Refactored parseLeaf to separate the handlers for STI_UINT16 and STI_UINT32 into separate helper functions. (#5591)
  • Restructured Transactor::preflight to remove boilerplate code in derived classes' implementations of preflight. (#5592)
  • Restructured Transactor signature checking code to be able to handle a sigObject, which may be the full transaction or a field containing a separate transaction. (#5594)
  • Revamped CI workflows to leverage new Docker images and improve testing automation. (#5661)
  • Cleaned up CTID.h code for improved readability and maintainability. (#5681)
  • Added support for extra transaction signature validation. (#5851)
  • Replaced JSON LastLedgerSequence with last_ledger_seq to make tests simpler and easier to read. (#5884)
  • Replaced boost::lexical_cast<std::string> with to_string in tests. (#5883)
  • Replaced tests that write out JSONs as strings instead of using the Json::Value library. (#5886)
  • Added a paychan namespace to the TestHelpers and implementation files, improving organization and clarity. (#5840)
  • Improved and refactored txset handling. (#5951)

Documentation

  • Updated old links and descriptions in README.md. (#4701)
  • Added compiler warning for std::counting_semaphore usage. (#5595)
  • Removed redundant word in code comment. (#5752)
  • Added remote to conan lock create command. (#5770)
  • Fixed typo in JSON writer documentation. (#5881)
  • Fixed spelling issues across the codebase. (#6002)
  • Fixed typos in code comments. (#6040)
  • Removed accidental copyright notice from NetworkOps_test.cpp. (#6066)

Testing

  • Migrated json unit tests to use doctest framework. (#5533)
  • Added basic tests for STInteger and STParsedJSON. (#5726)
  • Fixed test framework to handle null metadata for unvalidated transactions in env.meta. (#5715)
  • Added more comprehensive tests for the FeeVote module. (#5746)
  • Added additional tests for simulate RPC metadata. (#5827)
  • Updated unit test summary to count crashed tests as failures. (#5924)
  • Fixed CI to upload all test binaries. (#5932)

CI/Build

  • Modified GitHub Actions jobs to use >> instead of tee for ${GITHUB_OUTPUT} to prevent output overwriting. (#5699)
  • Fixed CI workflow issues and reduced separate OS jobs into one by using a strategy matrix. (#5700)
  • Fixed build_only conditional check to correctly determine whether to run tests. (#5708)
  • Updated clang-format and added prettier to the pre-commit. Also added proto file formatting. (#5709)
  • Reverted formatting changes to external files and added formatting for proto files. (#5711)
  • Fixed notify-clio job to skip when running in forks, and reordered config fields for better job name visibility. (#5712)
  • Added workaround for CI build errors on arm64 with Clang 20. (#5717)
  • Fixed file formatting in anticipation of enabling additional clang-format-hooks. (#5718)
  • Removed codecov token check to support tokenless uploads from forks. (#5722)
  • Reverted PR pipeline trigger rules to fix unintended job skipping behavior. (#5727)
  • Replaced on: pull_request: paths with changed-files action for better CI control. (#5728)
  • Added support for merge_group event in GitHub CI to enable merge queues. (#5734)
  • Added codecov token to the on-trigger workflow to enable report uploading. (#5736)
  • Modified CI test jobs to run if files changed or PR has "Ready to merge" label. (#5739)
  • Used XRPLF/prepare-runner action to fix CONAN_HOME issues on macOS. Also removed old CMake code. (#5740)
  • Removed extraneous LCOV_EXCL_START marker from coverage reporting. (#5744)
  • Added conan lockfile for better dependency management and reproducible builds. (#5751)
  • Updated pre-commit to manage tools on its own. (#5753)
  • Added required disable_ccache option to workflow. (#5756)
  • Fixed coverage parameter in Cmake file. (#5760)
  • Added additional info to notify-clio workflow. (#5761)
  • Implemented separate upload workflow. (#5762)
  • Added cleanup-workspace action to clean workspace before builds. (#5763)
  • Added conan.lock to workflow file checks. (#5769)
  • Removed extra @ symbol in notify-clio.yml. (#5771)
  • Fixed pre-commit workflows. (#5772)
  • Switched on-trigger workflow to minimal build to reduce the number of builds. (#5773)
  • Fixed passed jobs to properly pass if all its dependencies passed or were skipped. (#5776)
  • Added should-run filtering back to build-test and notify-clio workflows. (#5777)
  • Switched CI pipeline bookworm:gcc-13 from arm64 to amd64 architecture. (#5779)
  • Updated to self-hosted Windows runners to shorten build times. (#5780)
  • Limited upload-conan-deps to 10 parallel instances when using max-parallel. (#5781)
  • Changed when upload-conan-deps workflows run to avoid unnecessary execution on PRs. (#5782)
  • Added missing dependencies to workflows. (#5783)
  • Updated to use default conan install without --format json. (#5784)
  • Fixed secrets and variables in upload-conan-deps workflow. (#5785)
  • Modified Clio notifications to only happen when a PR targets the release or master branch. (#5794)
  • Wrapped all GitHub CI conditionals in curly braces for consistency. (#5796)
  • Limited CI build and test parallelism to 10 concurrent jobs. (#5799)
  • Enabled building and testing all configurations for daily scheduled runs. (#5801)
  • Excluded unit tests from code coverage reporting. (#5803)
  • Pinned all CI Docker image tags to latest versions in the XRPLF/CI repo. (#5813)
  • Implemented separate upload workflow for artifacts during build and test phases. (#5817)
  • Renamed all reusable workflows to include "reusable" in their names for clarity. (#5818)
  • Set free-form CI inputs as environment variables to prevent injection attacks. (#5822)
  • Removed extraneous coverage warnings. (#5838)
  • Excluded UNREACHABLE blocks from codecov to improve coverage accuracy. (#5846)
  • Excluded old, unreachable transaction code from codecov for better coverage reporting. (#5847)
  • Updated CI strategy matrix to use new RHEL 9 and RHEL 10 Docker images. (#5856)
  • Fixed Windows build log size issue by setting log verbosity to quiet. (#5865)
  • Added support for CMake 4 without workarounds. (#5866)
  • Added wildcard to support triggering for release pipelines. (#5879)
  • Added support for RHEL 8. (#5880)
  • Updated pre-commit workflow to latest version. (#5902)
  • Updated the Docker image hashes for tools-rippled. (#5896)
  • Set fail-fast to false unless it is run by a merge group. (#5897)
  • Cleaned up Conan variables in CI. (#5903)
  • Set explicit timeouts for build and test jobs. (#5912)
  • Removed unnecessary LCOV_EXCL_LINE marker in Escrow.cpp. (#5913)
  • Updated ${{ env.ENVVAR }} syntax to ${ENVVAR} in GitHub Actions. (#5923)
  • Cleaned up build profile options. (#5934)
  • Added network info output to CI test job to help diagnose port exhaustion issues. (#5938)
  • Reduced the number of cores used to build and test by two. (#5939)
  • Updated pre-commit failure message. (#5940)
  • Fixed CI to only run .exe files during test phase on Windows. (#5947)
  • Changed the CI concurrency group for pushes to the develop branch to use the commit hash instead of the target branch. (#5950)
  • Changed Conan remote login to only occur when uploading packages. (#5952)
  • Updated CI to only upload codecov reports in the original repo, not in forks. (#5953)
  • Updated CI to use new prepare-runner action. (#5970)
  • Updated CI image hashes to use netstat. (#5987)
  • Made CMake improvements, including removing unused definitions, moving variable definitions, and updating the minimum GCC and Clang versions required. (#6010)
  • Unified build and test jobs into a single job and added ctest to coverage reporting. (#6013)
  • Moved running of unit tests out of coverage target. (#6018)
  • Updated Conan to version 2.22.2. (#6019)
  • Specified bash as default shell in workflows. (#6021)
  • Updated the cleanup-workspace action to its latest version to add support for Windows. (#6024)
  • Added new Debian Trixie CI images to build and test with. (#6034)
  • Changed strategy matrix check to filter out Clang 20+ on ARM. (#6046)
  • Updated CI to only upload artifacts in XRPLF repo. (#6060)
  • Removed missing commits check. (#6077)
  • Updated CI to trigger Clio pipeline on PRs targeting any release branches. (#6080)

Credits

The following GitHub users contributed to this release:

  • RippleX Engineering
  • RippleX Docs
  • RippleX Product
  • @dangell7
  • @tequdev
  • @tzchenxixi
  • @wojake

Bug Bounties and Responsible Disclosures

We welcome reviews of the rippled code and urge researchers to responsibly disclose any issues they may find.

To report a bug, please send a detailed report to: [email protected]