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.
If you run an XRP Ledger server, upgrade to version 3.0.0 as soon as possible to ensure service continuity.
On supported platforms, see the instructions on installing or updating rippled.
| Package | SHA-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- 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:
SequencetoEscrowandPayChannel.OwnertoSignerList.OracleDocumentIDtoOracle. (#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
LPTokenBalanceof an AMM when performing anAMMClawbacktransaction. (#5750) - fixMPTDeliveredAmount: This amendment adds missing
DeliveredAmountanddelivered_amountmetadata fields from direct MPTPaymenttransactions. (#5569)
- Added
delivered_amount,nftoken_id,nftoken_ids,offer_id, andmpt_issuance_idmetadata fields to thesimulateAPI method. (#5754) - Added
STInt32as a newSTypeto support negative 32-bit integer fields. (#5788)
- Updated the
ledger_entryAPI method to return aninvalidParamserror 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)
- 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
INFOtoWARN. Also changed internal error code for invalid UNL manifest formats fromuntrustedtoinvalid. (#5804) - Fixed release build errors with GCC 15.2. (#5864)
- Fixed JSON parsing of negative integers in
STNumberandSTAmount. (#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
sfSubjectNodewasn't populated by theCredentialCreatetransaction for self-issued credentials. (#5936) - Fixed domain order books not populating during node startup. (#5998)
- Decoupled net module from xrpld and moved RPC related classes to the rpc folder. (#5477)
- Moved ledger component to
libxrplas part of modularization effort. (#5493) - Refactored code in preparation for
LendingProtocol. (#5590) - Refactored
parseLeafto separate the handlers forSTI_UINT16andSTI_UINT32into separate helper functions. (#5591) - Restructured
Transactor::preflightto remove boilerplate code in derived classes' implementations ofpreflight. (#5592) - Restructured
Transactorsignature checking code to be able to handle asigObject, 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.hcode for improved readability and maintainability. (#5681) - Added support for extra transaction signature validation. (#5851)
- Replaced JSON
LastLedgerSequencewithlast_ledger_seqto make tests simpler and easier to read. (#5884) - Replaced
boost::lexical_cast<std::string>withto_stringin tests. (#5883) - Replaced tests that write out JSONs as strings instead of using the
Json::Valuelibrary. (#5886) - Added a
paychannamespace to the TestHelpers and implementation files, improving organization and clarity. (#5840) - Improved and refactored txset handling. (#5951)
- Updated old links and descriptions in
README.md. (#4701) - Added compiler warning for
std::counting_semaphoreusage. (#5595) - Removed redundant word in code comment. (#5752)
- Added remote to
conan lock createcommand. (#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)
- Migrated json unit tests to use doctest framework. (#5533)
- Added basic tests for
STIntegerandSTParsedJSON. (#5726) - Fixed test framework to handle null metadata for unvalidated transactions in
env.meta. (#5715) - Added more comprehensive tests for the
FeeVotemodule. (#5746) - Added additional tests for
simulateRPC metadata. (#5827) - Updated unit test summary to count crashed tests as failures. (#5924)
- Fixed CI to upload all test binaries. (#5932)
- Modified GitHub Actions jobs to use
>>instead ofteefor${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_onlyconditional check to correctly determine whether to run tests. (#5708) - Updated
clang-formatand addedprettierto thepre-commit. Also added proto file formatting. (#5709) - Reverted formatting changes to external files and added formatting for proto files. (#5711)
- Fixed
notify-cliojob 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: pathswithchanged-filesaction for better CI control. (#5728) - Added support for
merge_groupevent in GitHub CI to enable merge queues. (#5734) - Added codecov token to the
on-triggerworkflow 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-runneraction to fixCONAN_HOMEissues on macOS. Also removed old CMake code. (#5740) - Removed extraneous
LCOV_EXCL_STARTmarker 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_ccacheoption to workflow. (#5756) - Fixed coverage parameter in Cmake file. (#5760)
- Added additional info to
notify-clioworkflow. (#5761) - Implemented separate upload workflow. (#5762)
- Added
cleanup-workspaceaction to clean workspace before builds. (#5763) - Added
conan.lockto workflow file checks. (#5769) - Removed extra @ symbol in
notify-clio.yml. (#5771) - Fixed
pre-commitworkflows. (#5772) - Switched
on-triggerworkflow to minimal build to reduce the number of builds. (#5773) - Fixed
passedjobs to properly pass if all its dependencies passed or were skipped. (#5776) - Added
should-runfiltering back tobuild-testandnotify-clioworkflows. (#5777) - Switched CI pipeline
bookworm:gcc-13from arm64 to amd64 architecture. (#5779) - Updated to self-hosted Windows runners to shorten build times. (#5780)
- Limited
upload-conan-depsto 10 parallel instances when usingmax-parallel. (#5781) - Changed when
upload-conan-depsworkflows 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-depsworkflow. (#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
UNREACHABLEblocks 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_LINEmarker inEscrow.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
developbranch 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-runneraction. (#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
ctestto 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-workspaceaction 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
releasebranches. (#6080)
The following GitHub users contributed to this release:
- RippleX Engineering
- RippleX Docs
- RippleX Product
- @dangell7
- @tequdev
- @tzchenxixi
- @wojake
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]