Skip to content

Commit 57579d4

Browse files
authored
Merge branch 'rippled-2.4.0' into add_dynamic_nfts
2 parents a75c868 + 43b53b8 commit 57579d4

File tree

13 files changed

+547
-20
lines changed

13 files changed

+547
-20
lines changed

blog/2025/rippled-2.4.0.md

Lines changed: 62 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
category: 2025
3-
date: 2025-03-03
3+
date: 2025-03-05
44
seo:
55
title: Introducing XRP Ledger version 2.4.0
66
description: rippled version 2.4.0 is now available. This version introduces new features and stability fixes.
@@ -12,20 +12,40 @@ markdown:
1212
---
1313
# Introducing XRP Ledger version 2.4.0
1414

15-
Version 2.4.0 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release includes 8 new amendments, including Multi-Purpose Tokens (MPTs), Credentials, Clawback support for AMMs, and the ability to make offers as part of minting NFTs. Additionally, this release includes important fixes for stability, so server operators are encouraged to upgrade as soon as possible.
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:
1616

17-
## Additional Announcement
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 https://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 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.
1837

19-
New UNL pub keys will be published on ...
2038

2139
## Action Required
2240

23-
If you run an XRP Ledger server, upgrade to version 2.3.0 as soon as possible to ensure service continuity.
41+
If you run an XRP Ledger server, upgrade to version 2.4.0 as soon as possible to ensure service continuity.
2442

2543
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.
2644

2745
## Install / Upgrade
2846

47+
**TODO: Update package and SHA-256**
48+
2949
On supported platforms, see the [instructions on installing or updating `rippled`](../../docs/infrastructure/installation/index.md).
3050

3151
| Package | SHA-256 |
@@ -52,20 +72,21 @@ Date: Mon Nov 25 12:27:17 2024 -0800
5272
The following amendments are open for voting with this release:
5373

5474

55-
- **XLS-46 DynamicNFT** - Adds the ability to update the URI of `NFToken` objects. ([#5048](https://github.com/XRPLF/rippled/pull/5048)) **TODO: doc update `NFToken` object**
56-
- **XLS-80 Permissioned Domains** - 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)) **TODO: move docs from opensource**
57-
- **XLS-77 Deep Freeze** - 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)) **TODO: move docs from opensource**
75+
- **XLS-46 DynamicNFT** - Adds the ability to update the URI of `NFToken` objects. ([#5048](https://github.com/XRPLF/rippled/pull/5048))
76+
- **XLS-80 Permissioned Domains** - 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))
77+
- **XLS-77 Deep Freeze** - 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))
5878
- **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))
5979
- **fixInvalidTxFlags** - Adds transaction flag checking for `CredentialCreate`, `CredentialAccept`, and `CredentialDelete` transactions. ([#5250](https://github.com/XRPLF/rippled/pull/5250))
6080

6181

6282
### New Features
6383

84+
- 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))
6485
- Added the ability to specify MPTs when defining assets in transactions. ([#5200](https://github.com/XRPLF/rippled/pull/5200))
6586
- Refactored `LedgerEntry.cpp` to make it easier to read. Also added a `state` alias for `ripple_state` in the `ledger_entry` API method. ([#5199](https://github.com/XRPLF/rippled/pull/5199))
6687
- 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))
67-
- 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))
6888
- Updated the XRPL Foundation UNL keys. ([#5289](https://github.com/XRPLF/rippled/pull/5289))
89+
- 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))
6990
- 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))
7091
- Added detailed logging for each validation and proposal received from the network. ([#5291](https://github.com/XRPLF/rippled/pull/5291))
7192
- 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))
@@ -82,8 +103,11 @@ The following amendments are open for voting with this release:
82103
- Fixed the levelization script to ignore single-line comments during dependency analysis. ([#5194](https://github.com/XRPLF/rippled/pull/5194))
83104
- Fixed the assert name used in `PermissionedDomainDelete`. ([#5245](https://github.com/XRPLF/rippled/pull/5245))
84105
- Fixed MacOS unit tests. ([#5196](https://github.com/XRPLF/rippled/pull/5196))
85-
- 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))
106+
- 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))
86107
- Fixed a potential issue with double-charging fees. ([#5269](https://github.com/XRPLF/rippled/pull/5269))
108+
- Removed the `new parent hash` assert and replaced it with a log message. ([#5313](https://github.com/XRPLF/rippled/pull/5313))
109+
- 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))
110+
87111

88112
### Other Improvements
89113

@@ -98,25 +122,46 @@ The following amendments are open for voting with this release:
98122
- Improved logs readability. ([#5251](https://github.com/XRPLF/rippled/pull/5251))
99123
- Updated Visual Studio CI to VS 2022, and added VS Debug builds. ([#5240](https://github.com/XRPLF/rippled/pull/5240))
100124
- Updated the `secp256k1` library to version 0.6.0. ([#5254](https://github.com/XRPLF/rippled/pull/5254))
101-
- 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. ([#5299](https://github.com/XRPLF/rippled/pull/5299))
125+
- 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))
102126
- Improved CI management. ([#5268](https://github.com/XRPLF/rippled/pull/5268))
103127
- Updated the git commit message rules for contributors. ([#5283](https://github.com/XRPLF/rippled/pull/5283))
104128
- Fixed unnecessary `setCurrentThreadName` calls. ([#5280](https://github.com/XRPLF/rippled/pull/5280))
105129
- 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))
106130
- Updated Conan dependencies. ([#5256](https://github.com/XRPLF/rippled/pull/5256))
131+
- Fixed minor typos in code comments. ([#5279](https://github.com/XRPLF/rippled/pull/5279))
132+
- Fixed incorrect build instructions. ([#5274](https://github.com/XRPLF/rippled/pull/5274))
133+
- Refactored `rotateWithLock()` to not hold a lock during callbacks. ([#5276](https://github.com/XRPLF/rippled/pull/5276))
134+
- Cleaned up debug logging by combining multiple data points into a single message. ([#5302](https://github.com/XRPLF/rippled/pull/5302))
135+
- Updated build flags to fix performance regressions. ([#5325](https://github.com/XRPLF/rippled/pull/5325))
107136

108137

109138
## Credits
110139

111140
The following people contributed directly to this release:
112141

142+
- Aanchal Malhotra <amalhotra@ripple.com>
143+
- Bart Thomee <11445373+bthomee@users.noreply.github.com>
144+
- Bronek Kozicki <brok@incorrekt.com>
145+
- code0xff <ian.jungyong.um@gmail.com>
146+
- Darius Tumas <tokeiito@tokeiito.eu>
147+
- David Fuelling <fuelling@ripple.com>
148+
- Donovan Hide <donovanhide@gmail.com>
113149
- Ed Hennis <ed@ripple.com>
114-
- JoelKatz <DavidJoelSchwartz@GMail.com>
115-
- Sophia Xie <106177003+sophiax851@users.noreply.github.com>
116-
- Valentin Balaschenko <13349202+vlntb@users.noreply.github.com>
117-
118-
@rrmanukyan made their first contribution in #5233
119-
@kuznetsss made their first contribution in #5252
150+
- Elliot Lee <github.public@intelliot.com>
151+
- Javier Romero <jromero@ripple.com>
152+
- Kenny Lei <klei@ripple.com>
153+
- Mark Travis <7728157+mtrippled@users.noreply.github.com>
154+
- Mayukha Vadari <mvadari@gmail.com>
155+
- Michael Legleux <mlegleux@ripple.com>
156+
- Oleksandr <115580134+oleks-rip@users.noreply.github.com>
157+
- Qi Zhao <qzhao@ripple.com>
158+
- Ramkumar Srirengaram Gunasegharan <rgunasegharan@ripple.com>
159+
- Shae Wang <swang@ripple.com>
160+
- Shawn Xie <shawnxie920@gmail.com>
161+
- Sophia Xie <sxie@ripple.com>
162+
- Vijay Khanna Raviraj <vraviraj@ripple.com>
163+
- Vladislav Vysokikh <vvysokikh@gmail.com>
164+
- Xun Zhao <xzhao@ripple.com>
120165

121166

122167
## Bug Bounties and Responsible Disclosures

docs/_snippets/common-links.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
[Clawback transaction]: /docs/references/protocol/transactions/types/clawback.md
7272
[Clawback transactions]: /docs/references/protocol/transactions/types/clawback.md
7373
[Clawbackトランザクション]: /docs/references/protocol/transactions/types/clawback.md
74+
[credentials]: /docs/concepts/decentralized-storage/credentials.md
7475
[Credentials amendment]: /resources/known-amendments.md#credentials
7576
[CredentialCreate transaction]: /docs/references/protocol/transactions/types/credentialcreate.md
7677
[CredentialCreate transactions]: /docs/references/protocol/transactions/types/credentialcreate.md
@@ -241,6 +242,8 @@
241242
[PaymentChannelFundトランザクション]: /docs/references/protocol/transactions/types/paymentchannelfund.md
242243
[Payment]: /docs/references/protocol/transactions/types/payment.md
243244
[Paymentトランザクション]: /docs/references/protocol/transactions/types/payment.md
245+
[PermissionedDomains amendment]: /resources/known-amendments.md#permissioneddomains
246+
[permissioned domain]: /docs/concepts/tokens/decentralized-exchange/permissioned-domains.md
244247
[PriceOracle amendment]: /resources/known-amendments.md#priceoracle
245248
[RFC-1751]: https://tools.ietf.org/html/rfc1751
246249
[Reporting Mode]: /docs/concepts/networks-and-servers/rippled-server-modes.md#reporting-mode
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
seo:
3+
description: The definition and details of a Permissioned Domain instance.
4+
labels:
5+
- Compliance
6+
- Permissioned Domains
7+
---
8+
# Permissioned Domains
9+
10+
Permissioned domains are controlled environments within the broader ecosystem of the XRP Ledger blockchain. Domains do nothing on their own, but features such as Permissioned DEXes and Lending Protocols can use domains to restrict access, so that traditional financial institutions can offer services on chain while complying with various compliance rules.
11+
12+
The only configurable rule for a domain is the set of accepted [credentials][]. Future amendments may add new and different types of rules to encompass any limits that a financial institution may need to follow to maintain compliance with the laws of the jurisdictions where they do business.
13+
14+
Anyone can define a permissioned domain in the ledger. That person becomes the owner of that domain, and can update its settings or delete it. The only limit to the number of domains that can exist in the ledger is the reserve requirement: each Domain counts as one item toward its owner's reserve requirement.
15+
16+
_(Requires the [PermissionedDomains amendment][] {% not-enabled /%})_
17+
18+
{% admonition type="info" name="Note" %}
19+
The [Credentials amendment][] is also required. If the [PermissionedDomains amendment][] is enabled without Credentials, PermissionedDomainSet transactions are considered invalid.
20+
{% /admonition %}
21+
22+
## Accepted Credentials
23+
24+
A permissioned domain has a set of _accepted credentials_, a list of 1 to 10 credentials that grant access. Each item in the list describes a credential by its issuer and credential type. Any account that holds _at least one_ matching credential automatically gains access to the domain.
25+
26+
A domain serves as an abstraction layer between credentials and a resource being resricted, because the owner of the domain can update the list of required credentials without changing the restricted resource itself.
27+
28+
[{% inline-svg file="../../../img/permissioned-domain.svg" /%}](../../../img/permissioned-domain.svg "Diagram: a permissioned DEX points to a permissioned domain by ID. The domain's Accepted Credentials describes 3 possible credentials to get access")
29+
30+
Users do not need to apply to join or leave a domain. When a transaction requires access to a resource that is restricted by a domain, the transaction automatically checks if the account holds a credential matching that domain's accepted credentials, and fails if they have none. The user's credential must be accepted and not expired.
31+
32+
## Uses for Domains
33+
34+
Currently, there are no available XRP Ledger features that use permissioned domains. However, amendments that are in development and use domains include:
35+
36+
- Single Asset Vault and Lending Protocol
37+
- Permissioned DEXes
38+
39+
{% raw-partial file="/docs/_snippets/common-links.md" /%}

0 commit comments

Comments
 (0)