|
| 1 | +--- |
| 2 | +category: 2025 |
| 3 | +date: 2025-03-06 |
| 4 | +seo: |
| 5 | + title: Introducing XRP Ledger version 2.4.0 |
| 6 | + description: rippled version 2.4.0 is now available. This version introduces new features and stability fixes. |
| 7 | +labels: |
| 8 | + - rippled Release Notes |
| 9 | +markdown: |
| 10 | + editPage: |
| 11 | + hide: true |
| 12 | +--- |
| 13 | +# Introducing XRP Ledger version 2.4.0 |
| 14 | + |
| 15 | +Version 2.4.0 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release adds new features and bug fixes, and introduces these amendments: |
| 16 | + |
| 17 | +- `PermissionedDomains` |
| 18 | +- `DeepFreeze` |
| 19 | +- `DynamicNFT` |
| 20 | +- `fixFrozenLPTokenTransfer` |
| 21 | +- `fixInvalidTxFlags` |
| 22 | + |
| 23 | + |
| 24 | +## Notable Updates: New Public Key Provided by the new XRPL Foundation |
| 25 | + |
| 26 | +Following the recent announcement regarding the [move to the new XRPL Foundation](./move-to-the-new-xrpl-foundation-commences.md), the XRPL Foundation members have been working diligently to facilitate a smooth transition of the Unique Node List (UNL) from the old XRPL Foundation to the new XRPL Foundation. |
| 27 | + |
| 28 | +There are two key goals driving this transition: |
| 29 | +- Ensure continued network participation and avoid potential downtime. |
| 30 | +- Allow for a staged migration with minimal impact on validators and node operators. |
| 31 | + |
| 32 | +Keeping these goals in mind, a new subdomain, **unl.xrplf.org**, has been introduced alongside the existing list at **vl.xrplf.org**. This approach allows for a staged migration without modifying the key for the current UNL list. Eventually, vl.xrplf.org will be fully deprecated and replaced by unl.xrplf.org. |
| 33 | + |
| 34 | +In `rippled` release 2.4.0, the `validators-example.txt` file has been updated to include the new public key published by the new XRPL Foundation. |
| 35 | + |
| 36 | +Further information on the transition will be shared by the XRPL Foundation in the near future. |
| 37 | + |
| 38 | + |
| 39 | +## Action Required |
| 40 | + |
| 41 | +If you run an XRP Ledger server, upgrade to version 2.4.0 as soon as possible to ensure service continuity. |
| 42 | + |
| 43 | +Additionally, new amendments are now open for voting according to the XRP Ledger's [amendment process](../../docs/concepts/networks-and-servers/amendments.md), which enables protocol changes following two weeks of >80% support from trusted validators. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network. |
| 44 | + |
| 45 | + |
| 46 | +## Install / Upgrade |
| 47 | + |
| 48 | +On supported platforms, see the [instructions on installing or updating `rippled`](../../docs/infrastructure/installation/index.md). |
| 49 | + |
| 50 | +| Package | SHA-256 | |
| 51 | +|:--------|:--------| |
| 52 | +| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.4.0-1.el7.x86_64.rpm) | `f87f44005b84b35606413313f7414bfdf2bf09f01ce88bfe9fafc3ff75fd5199` | |
| 53 | +| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.4.0-1_amd64.deb) | `a3df84ba3d21f7182a57c8ca11fb2fbd1707e5cf53112822e60aa89886d943ad` | |
| 54 | +| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) | |
| 55 | + |
| 56 | +For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version: |
| 57 | + |
| 58 | +```text |
| 59 | +commit 2216e5a13f306d01baf34ef3a48966ecaf908ad6 |
| 60 | +Author: Michael Legleux <mlegleux@ripple.com> |
| 61 | +Date: Wed Mar 5 11:48:16 2025 -0800 |
| 62 | +
|
| 63 | + Set version to 2.4.0 |
| 64 | +``` |
| 65 | + |
| 66 | + |
| 67 | +## Full Changelog |
| 68 | + |
| 69 | +### Amendments |
| 70 | + |
| 71 | +The following amendments are open for voting with this release: |
| 72 | + |
| 73 | +- **DynamicNFT (XLS-46)** - Adds the ability to mint mutable `NFToken` objects whose URI can be changed. ([#5048](https://github.com/XRPLF/rippled/pull/5048)) |
| 74 | +- **PermissionedDomains (XLS-80)** - Adds Permissioned Domains, which act as part of broader systems on the XRP Ledger to restrict access to satisfy compliance rules. ([#5161](https://github.com/XRPLF/rippled/pull/5161)) |
| 75 | +- **DeepFreeze (XLS-77)** - Adds the ability to deep freeze trust lines, enabling token issuers to block the transfer of assets for holders who have been deep frozen. ([#5187](https://github.com/XRPLF/rippled/pull/5187)) |
| 76 | +- **fixFrozenLPTokenTransfer** - Prohibits the transfer of LP tokens when the associated liquidity pool contains at least one frozen asset. ([#5227](https://github.com/XRPLF/rippled/pull/5227)) |
| 77 | +- **fixInvalidTxFlags** - Adds transaction flag checking for `CredentialCreate`, `CredentialAccept`, and `CredentialDelete` transactions. ([#5250](https://github.com/XRPLF/rippled/pull/5250)) |
| 78 | + |
| 79 | + |
| 80 | +### New Features |
| 81 | + |
| 82 | +- Added a new `simulate` API method to execute dry runs of transactions and see the simulated metadata. ([#5069](https://github.com/XRPLF/rippled/pull/5069), [#5265](https://github.com/XRPLF/rippled/pull/5265)) |
| 83 | +- Added the ability to specify MPTs when defining assets in transactions. ([#5200](https://github.com/XRPLF/rippled/pull/5200)) |
| 84 | +- Added a `state` alias for `ripple_state` in the `ledger_entry` API method. Also refactored `LedgerEntry.cpp` to make it easier to read. ([#5199](https://github.com/XRPLF/rippled/pull/5199)) |
| 85 | +- Improved UNL security by enabling validators to set a minimum number of UNL publishers to agree on validators. ([#5112](https://github.com/XRPLF/rippled/pull/5112)) |
| 86 | +- Updated the XRPL Foundation UNL keys. ([#5289](https://github.com/XRPLF/rippled/pull/5289)) |
| 87 | +- Added a new XRPL Foundation subdomain to enable a staged migration without modifying the key for the current UNL list. ([#5326](https://github.com/XRPLF/rippled/pull/5326)) |
| 88 | +- Added support to filter ledger entry types by their canonical names in the `ledger`, `ledger_data`, and `account_objects` API methods. ([#5271](https://github.com/XRPLF/rippled/pull/5271)) |
| 89 | +- Added detailed logging for each validation and proposal received from the network. ([#5291](https://github.com/XRPLF/rippled/pull/5291)) |
| 90 | +- Improved git commit hash lookups when checking the version of a `rippled` debug build. Also added git commit hash info when using the `server_info` API method on an admin connection. ([#5225](https://github.com/XRPLF/rippled/pull/5225)) |
| 91 | + |
| 92 | + |
| 93 | +### Bug fixes |
| 94 | + |
| 95 | +- Fixed an issue with overlapping data types in the `Expected` class. ([#5218](https://github.com/XRPLF/rippled/pull/5218)) |
| 96 | +- Fixed an issue that prevented `rippled` from building on Windows with VS2022. ([#5197](https://github.com/XRPLF/rippled/pull/5197)) |
| 97 | +- Fixed `server_definitions` prefixes. ([#5231](https://github.com/XRPLF/rippled/pull/5231)) |
| 98 | +- Added missing dependency installations for generic MasOS runners. ([#5233](https://github.com/XRPLF/rippled/pull/5233)) |
| 99 | +- Updated deprecated Github actions. ([#5241](https://github.com/XRPLF/rippled/pull/5241)) |
| 100 | +- Fixed a failing assert scenario when submitting the `connect` admin RPC. ([#5235](https://github.com/XRPLF/rippled/pull/5235)) |
| 101 | +- Fixed the levelization script to ignore single-line comments during dependency analysis. ([#5194](https://github.com/XRPLF/rippled/pull/5194)) |
| 102 | +- Fixed the assert name used in `PermissionedDomainDelete`. ([#5245](https://github.com/XRPLF/rippled/pull/5245)) |
| 103 | +- Fixed MacOS unit tests. ([#5196](https://github.com/XRPLF/rippled/pull/5196)) |
| 104 | +- Fixed an issue with validators not accurately reflecting amendment votes. Also added debug logging of amendment votes. ([#5173](https://github.com/XRPLF/rippled/pull/5173), [#5312](https://github.com/XRPLF/rippled/pull/5312)) |
| 105 | +- Fixed a potential issue with double-charging fees. ([#5269](https://github.com/XRPLF/rippled/pull/5269)) |
| 106 | +- Removed the `new parent hash` assert and replaced it with a log message. ([#5313](https://github.com/XRPLF/rippled/pull/5313)) |
| 107 | +- Fixed an issue that prevented previously-failed inbound ledgers to not be acquired if a new trusted proposal arrived. ([#5318](https://github.com/XRPLF/rippled/pull/5318)) |
| 108 | + |
| 109 | + |
| 110 | +### Other Improvements |
| 111 | + |
| 112 | +- Added unit tests for `AccountID` handling. ([#5174](https://github.com/XRPLF/rippled/pull/5174)) |
| 113 | +- Added enforced levelization in `libxrpl` with CMake. ([#5199](https://github.com/XRPLF/rippled/pull/5111)) |
| 114 | +- Updated `libxrpl` and all submodules to use the same compiler options. ([#5228](https://github.com/XRPLF/rippled/pull/5228)) |
| 115 | +- Added Antithesis instrumentation. ([#5042](https://github.com/XRPLF/rippled/pull/5042), [#5213](https://github.com/XRPLF/rippled/pull/5213)) |
| 116 | +- Added `rpcName` to the `LEDGER_ENTRY` macro to help prevent future bugs. ([#5202](https://github.com/XRPLF/rippled/pull/5202)) |
| 117 | +- Updated the contribution guidelines to introduce a new workflow that avoids code freezes. Also added scripts that can be used by maintainers in branch management, and a CI job to check that code is consistent across the three main branches: `master`, `release`, and `develop`. ([#5215](https://github.com/XRPLF/rippled/pull/5215)) |
| 118 | +- Added unit tests to check for caching issues fixed in `rippled 2.3.0`. ([#5242](https://github.com/XRPLF/rippled/pull/5242)) |
| 119 | +- Cleaned up the API changelog. ([#5207](https://github.com/XRPLF/rippled/pull/5207)) |
| 120 | +- Improved logs readability. ([#5251](https://github.com/XRPLF/rippled/pull/5251)) |
| 121 | +- Updated Visual Studio CI to VS 2022, and added VS Debug builds. ([#5240](https://github.com/XRPLF/rippled/pull/5240)) |
| 122 | +- Updated the `secp256k1` library to version 0.6.0. ([#5254](https://github.com/XRPLF/rippled/pull/5254)) |
| 123 | +- Changed the `[port_peer]` parameter in `rippled` example config back to `51235`; also added the recommendation to use the default port of `2459` for new deployments. ([#5290](https://github.com/XRPLF/rippled/pull/5290), [#5299](https://github.com/XRPLF/rippled/pull/5299)) |
| 124 | +- Improved CI management. ([#5268](https://github.com/XRPLF/rippled/pull/5268)) |
| 125 | +- Updated the git commit message rules for contributors. ([#5283](https://github.com/XRPLF/rippled/pull/5283)) |
| 126 | +- Fixed unnecessary `setCurrentThreadName` calls. ([#5280](https://github.com/XRPLF/rippled/pull/5280)) |
| 127 | +- Added a check to prevent permissioned domains from being created in the event the Permissioned Domains amendement is enabled before the Credentials amendement. ([#5275](https://github.com/XRPLF/rippled/pull/5275)) |
| 128 | +- Updated Conan dependencies. ([#5256](https://github.com/XRPLF/rippled/pull/5256)) |
| 129 | +- Fixed minor typos in code comments. ([#5279](https://github.com/XRPLF/rippled/pull/5279)) |
| 130 | +- Fixed incorrect build instructions. ([#5274](https://github.com/XRPLF/rippled/pull/5274)) |
| 131 | +- Refactored `rotateWithLock()` to not hold a lock during callbacks. ([#5276](https://github.com/XRPLF/rippled/pull/5276)) |
| 132 | +- Cleaned up debug logging by combining multiple data points into a single message. ([#5302](https://github.com/XRPLF/rippled/pull/5302)) |
| 133 | +- Updated build flags to fix performance regressions. ([#5325](https://github.com/XRPLF/rippled/pull/5325)) |
| 134 | + |
| 135 | + |
| 136 | +## Credits |
| 137 | + |
| 138 | +The following people contributed directly to this release: |
| 139 | + |
| 140 | +- Aanchal Malhotra <amalhotra@ripple.com> |
| 141 | +- Bart Thomee <11445373+bthomee@users.noreply.github.com> |
| 142 | +- Bronek Kozicki <brok@incorrekt.com> |
| 143 | +- code0xff <ian.jungyong.um@gmail.com> |
| 144 | +- Darius Tumas <tokeiito@tokeiito.eu> |
| 145 | +- David Fuelling <fuelling@ripple.com> |
| 146 | +- Donovan Hide <donovanhide@gmail.com> |
| 147 | +- Ed Hennis <ed@ripple.com> |
| 148 | +- Elliot Lee <github.public@intelliot.com> |
| 149 | +- Javier Romero <jromero@ripple.com> |
| 150 | +- Kenny Lei <klei@ripple.com> |
| 151 | +- Mark Travis <7728157+mtrippled@users.noreply.github.com> |
| 152 | +- Mayukha Vadari <mvadari@gmail.com> |
| 153 | +- Michael Legleux <mlegleux@ripple.com> |
| 154 | +- Oleksandr <115580134+oleks-rip@users.noreply.github.com> |
| 155 | +- Qi Zhao <qzhao@ripple.com> |
| 156 | +- Ramkumar Srirengaram Gunasegharan <rgunasegharan@ripple.com> |
| 157 | +- Shae Wang <swang@ripple.com> |
| 158 | +- Shawn Xie <shawnxie920@gmail.com> |
| 159 | +- Sophia Xie <sxie@ripple.com> |
| 160 | +- Vijay Khanna Raviraj <vraviraj@ripple.com> |
| 161 | +- Vladislav Vysokikh <vvysokikh@gmail.com> |
| 162 | +- Xun Zhao <xzhao@ripple.com> |
| 163 | + |
| 164 | + |
| 165 | +## Bug Bounties and Responsible Disclosures |
| 166 | + |
| 167 | +We welcome reviews of the `rippled` code and urge researchers to responsibly disclose any issues they may find. |
| 168 | + |
| 169 | +To report a bug, please send a detailed report to: <bugs@xrpl.org> |
0 commit comments