From 864c4123056fe538549d2a4f5149de634a5da4c5 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 4 Nov 2025 13:25:34 -0800 Subject: [PATCH 01/19] initialize 3.0 doc branch From ed4b18586b92123540d0c479b6147cb7ea2fcbd1 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Wed, 5 Nov 2025 21:14:14 -0800 Subject: [PATCH 02/19] update known amendment page --- resources/known-amendments.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index d69b41a4212..69d3c92baad 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -169,7 +169,7 @@ See [Clawback](../docs/concepts/tokens/fungible-tokens/clawing-back-tokens.md) f | Amendment | Credentials | |:-------------|:------------| | Amendment ID | 1CB67D082CF7D9102412D34258CEDB400E659352D3B207348889297A6D90F5EF | -| Status | Open for Voting | +| Status | Enabled | | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | @@ -1093,6 +1093,21 @@ Ledger entries that were created before this amendment was enabled will get the Without this amendment, some types of ledger entries don't have those fields, which makes it harder to trace the history of modifications to those ledger entries. +### fixPriceOracleOrder +[fixPriceOracleOrder]: #fixpriceoracleorder + +| Amendment | fixPriceOracleOrder | +|:-------------|:--------------------| +| Amendment ID | TBD | +| Status | Open for Voting | +| Default Vote (Latest stable release) | No | +| Pre-amendment functionality retired? | No | + +Fixes an issue where the order of asset pair data is different from when a price oracle is created versus when it is updated. + +This amendment ensures asset pairs follow a canonical order at all times. + + ### fixQualityUpperBound [fixQualityUpperBound]: #fixqualityupperbound @@ -1210,6 +1225,21 @@ Without this fix, the dry offer remains on the ledger and counts toward its owne With this amendment enabled, the XRP Ledger removes these dry offers when they're matched in auto-bridging. +### fixTokenEscrowV1 +[fixTokenEscrowV1]: #fixtokenescrowv1 + +| Amendment | fixTokenEscrowV1 | +|:-------------|:-----------------| +| Amendment ID | TBD | +| Status | Open for Voting | +| Default Vote (Latest stable release) | No | +| Pre-amendment functionality retired? | No | + +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. + +This amendment ensures that when escrowed MPTs are unlocked, the issuer's locked amount is reduced by the net amount, and the total supply is reduced by the transfer fees. + + ### fixTrustLinesToSelf [fixTrustLinesToSelf]: #fixtrustlinestoself From 6be3d0117af34ce960ddff38a8f1d52a5b65798e Mon Sep 17 00:00:00 2001 From: oeggert <117319296+oeggert@users.noreply.github.com> Date: Mon, 10 Nov 2025 20:34:59 -0800 Subject: [PATCH 03/19] Update resources/known-amendments.md Co-authored-by: Rome Reginelli --- resources/known-amendments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index 69d3c92baad..eb9254b9269 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -1098,7 +1098,7 @@ Without this amendment, some types of ledger entries don't have those fields, wh | Amendment | fixPriceOracleOrder | |:-------------|:--------------------| -| Amendment ID | TBD | +| Amendment ID | FF2D1E13CF6D22427111B967BD504917F63A900CECD320D6FD3AC9FA90344631 | | Status | Open for Voting | | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | From 427d0ce441e45df41e80cb9c317b236eee3788bf Mon Sep 17 00:00:00 2001 From: oeggert <117319296+oeggert@users.noreply.github.com> Date: Mon, 10 Nov 2025 20:35:08 -0800 Subject: [PATCH 04/19] Update resources/known-amendments.md Co-authored-by: Rome Reginelli --- resources/known-amendments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index eb9254b9269..35720420e75 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -1230,7 +1230,7 @@ With this amendment enabled, the XRP Ledger removes these dry offers when they'r | Amendment | fixTokenEscrowV1 | |:-------------|:-----------------| -| Amendment ID | TBD | +| Amendment ID | 32B8614321F7E070419115ABEAB1742EA20F3E3AF34432B5E2F474F8083260DC | | Status | Open for Voting | | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | From 104d07c6bf975441f427bd8b90ff545362fd31d9 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 25 Nov 2025 15:13:15 -0800 Subject: [PATCH 05/19] add fixMPTDeliveredAmount amendment info --- resources/known-amendments.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index 35720420e75..2319e703129 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -924,6 +924,19 @@ Without this fix, a user can unintentionally "black hole" their account by setti With this amendment enabled, a SetRegularKey transaction cannot set the regular key to match the master key; such a transaction results in the transaction code `temBAD_REGKEY`. Additionally, this amendment changes the signature verification code so that accounts which _already_ have their regular key set to match their master key can send transactions successfully using the key pair. +### fixMPTDeliveredAmount +[fixMPTDeliveredAmount]: #fixmptdeliveredamount + +| Amendment | fixMPTDeliveredAmount | +|:-------------|:----------------| +| Amendment ID | AB8D932A5F338903FE5BCBD80B611FFED70839ABA3170E9CE01D947C0EDEDCF2 | +| Status | Open for Voting | +| Default Vote (Latest stable release) | No | +| Pre-amendment functionality retired? | No | + +This amendment adds missing `DeliveredAmount` or `delivered_amount` metadata fields from direct MPT `Payment` transactions. + + ### fixNFTokenDirV1 [fixNFTokenDirV1]: #fixnftokendirv1 From 5c467f1c9b30f303601eb192e8644488f31d6313 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 4 Nov 2025 13:25:34 -0800 Subject: [PATCH 06/19] initialize 3.0 doc branch From 682389e4e7d894e2d3fccd3986033064b5d10533 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Wed, 5 Nov 2025 22:45:17 -0800 Subject: [PATCH 07/19] update binary format for signed int --- docs/references/protocol/binary-format.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/references/protocol/binary-format.md b/docs/references/protocol/binary-format.md index 4a23501e672..df5290538f8 100644 --- a/docs/references/protocol/binary-format.md +++ b/docs/references/protocol/binary-format.md @@ -189,6 +189,8 @@ Transactions and ledger entries may contain fields of any of the following types | [UInt256][] | 5 | 256 | No | A 256-bit binary value. This usually represents the hash of a transaction, ledger version, or ledger entry. | | [UInt384][] | 22 | 384 | No | **UNUSED.** A 384-bit binary value. | | [UInt512][] | 23 | 512 | No | **UNUSED.** A 512-bit binary value. | +| [Int32][] | 10 | 32 | No | **UNUSED.** A 32-bit signed integer. | +| [Int64][] | 11 | 64 | No | **UNUSED.** A 64-bit signed integer. | | [Vector256][] | 19 | Variable | Yes | A list of 256-bit binary values. This may be a list of ledger entries or other hash values. | | [XChainBridge][] | 25 | Variable | No | A bridge between two blockchains, identified by the door accounts and issued assets on both chains. | @@ -394,6 +396,21 @@ The types UInt96, UInt384, and UInt512 are currently defined but not used. The `TransactionType` field is a special case. In JSON, this field is conventionally represented as a string with the name of the transaction type. In binary, this field is a UInt16. The `TRANSACTION_TYPES` object in the [definitions file](#definitions-file) maps these strings to the numeric values used in the binary format. + +### Int Fields +[Int32]: #int-fields +[Int64]: #int-fields + +The XRP Ledger supports signed 32-bit integers (Int32), which use standard big-endian binary signed integer representation with two's complement to handle negative values. + +In JSON format, Int32 fields can be represented as: + +- JSON numbers (for values within JavaScript's safe integer range). +- Strings containing decimal numbers. + +Although the protocol supports the Int32 type, no fields currently use it. An Int64 type has also been defined, but is unsupported. + + ### Vector256 Fields [Vector256]: #vector256-fields From ad280c2c1bfa84166684aeca6105c070879698d1 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Mon, 1 Dec 2025 17:03:41 -0800 Subject: [PATCH 08/19] initial release notes --- blog/2025/rippled-3.0.0.md | 231 +++++++++++++++++++++++++++++++++++++ blog/sidebars.yaml | 1 + 2 files changed, 232 insertions(+) create mode 100644 blog/2025/rippled-3.0.0.md diff --git a/blog/2025/rippled-3.0.0.md b/blog/2025/rippled-3.0.0.md new file mode 100644 index 00000000000..86f61ffd2e2 --- /dev/null +++ b/blog/2025/rippled-3.0.0.md @@ -0,0 +1,231 @@ +--- +category: 2025 +date: "2025-12-08" +template: '../../@theme/templates/blogpost' +seo: + title: Introducing XRP Ledger version 3.0.0 + description: rippled version 3.0.0 is now available. This version introduces new amendments and bug fixes. +labels: + - rippled Release Notes +markdown: + editPage: + hide: true +--- +# 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`](../../docs/infrastructure/installation/index.md). + +| Package | SHA-256 | +|:--------|:--------| +| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.6.1-1.el9.x86_64.rpm) | `0fbbff570e962fea4df4d604cb848976fc9af9ebc34512a1002eb4866549850d` | +| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.6.1-1_amd64.deb) | `de3bfdae5fb95d922a4b5bffa5bc9441f1bc4bac15bd7b83f77f14166c65bb7e` | + +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: + +```text +commit 70d5c624e8cf732a362335642b2f5125ce4b43c1 +Author: Ed Hennis +Date: Tue Sep 30 16:09:11 2025 -0400 + + Set version to 2.6.1 +``` + + +## Full Changelog + +### Amendments + +- Fixed escrow creation with tokens to properly handle token amounts. ([#5571](https://github.com/XRPLF/rippled/pull/5571)) +- Added fix amendment to include missing keylet fields in ledger objects, including sequence for Escrow and PayChannel, owner for SignerList, and oracle document ID for Oracle. ([#5646](https://github.com/XRPLF/rippled/pull/5646)) +- Added fix amendment for PermissionDelegation V1.1. ([#5650](https://github.com/XRPLF/rippled/pull/5650)) +- Added Scale field to SingleAssetVault ledger objects. ([#5652](https://github.com/XRPLF/rippled/pull/5652)) +- Added DynamicMPT amendment (XLS-94d) allowing issuers to mutate Multi-Purpose Token properties after creation, including metadata, transfer fees, and permission flags. ([#5705](https://github.com/XRPLF/rippled/pull/5705)) +- Enabled fixPriceOracleOrder amendment to allow validator voting on fixing PriceDataSeries order during PriceOracle creation. ([#5749](https://github.com/XRPLF/rippled/pull/5749)) +- Enabled fixAMMClawbackRounding amendment to fix AMM LP token clawback rounding issues. ([#5750](https://github.com/XRPLF/rippled/pull/5750)) +- Enabled fixIncludeKeyletFields amendment to allow validator voting. ([#5819](https://github.com/XRPLF/rippled/pull/5819)) +- Renamed DynamicMPT flags to align with XLS-94d specification. ([#5820](https://github.com/XRPLF/rippled/pull/5820)) +- Enabled MPTDeliveredAmount amendment to Supported::yes. ([#5833](https://github.com/XRPLF/rippled/pull/5833)) + +### Features/API Improvements + +- Added support for additional metadata in simulate RPC response including delivered amount and transaction result. ([#5754](https://github.com/XRPLF/rippled/pull/5754)) +- Fixed HTTP header case sensitivity issue in HttpClient to properly handle Content-Length header variations. ([#5767](https://github.com/XRPLF/rippled/pull/5767)) + +### Bug Fixes + +- Fixed consensus stall detection to not flag prematurely. ([#5658](https://github.com/XRPLF/rippled/pull/5658)) +- Added graceful peer disconnection using proper asynchronous TLS shutdown procedures. ([#5669](https://github.com/XRPLF/rippled/pull/5669)) +- Added vault invariants to ensure proper validation of SingleAssetVault transactions. ([#5518](https://github.com/XRPLF/rippled/pull/5518)) +- Fixed assertion failure in NetworkOP when all transactions in batch processing list are marked as invalid. ([#5670](https://github.com/XRPLF/rippled/pull/5670)) +- Added additional logging to differentiate why peer connections were refused. ([#5690](https://github.com/XRPLF/rippled/pull/5690)) +- Fixed code coverage error by properly configuring coverage flags in RippledInterface.cmake and CodeCoverage.cmake. ([#5765](https://github.com/XRPLF/rippled/pull/5765)) +- Improved ValidatorList invalid UNL manifest logging by raising severity to WARN and changing error code for invalid format. ([#5804](https://github.com/XRPLF/rippled/pull/5804)) +- Added pre-emptive file descriptor/handle guarding with exponential backoff to prevent resource exhaustion. ([#5823](https://github.com/XRPLF/rippled/pull/5823)) +- Fixed release build errors by removing unused variables. ([#5864](https://github.com/XRPLF/rippled/pull/5864)) +- Fixed invariant error in VaultWithdraw when transaction amount equals fee. ([#5876](https://github.com/XRPLF/rippled/pull/5876)) +- Enforced reserve requirement when creating trust lines or MPToken in VaultWithdraw transactions. ([#5857](https://github.com/XRPLF/rippled/pull/5857)) +- Removed directory size limit as part of unlimited directory support. ([#5935](https://github.com/XRPLF/rippled/pull/5935)) +- Applied object reserve requirements for Vault pseudo-account to ensure proper reserve handling. ([#5954](https://github.com/XRPLF/rippled/pull/5954)) +- Fixed JSON parsing of negative STNumber and STAmount values. ([#5990](https://github.com/XRPLF/rippled/pull/5990)) +- Fixed floating point representation errors in vault transactions. ([#5997](https://github.com/XRPLF/rippled/pull/5997)) + +### Refactor + +- Major refactor of ledger_entry source code and tests, improving readability and maintainability. ([#5237](https://github.com/XRPLF/rippled/pull/5237)) +- Decoupled net module from xrpld and moved RPC related classes to the rpc folder. ([#5477](https://github.com/XRPLF/rippled/pull/5477)) +- Moved ledger module to libxrpl as part of modularization effort. ([#5493](https://github.com/XRPLF/rippled/pull/5493)) +- Refactored STParsedJSON to improve code organization. ([#5591](https://github.com/XRPLF/rippled/pull/5591)) +- Restructured Transactor::preflight to reduce boilerplate code in derived classes. ([#5592](https://github.com/XRPLF/rippled/pull/5592)) +- Added extra signing support to Transactor preflight functions. ([#5594](https://github.com/XRPLF/rippled/pull/5594)) +- Refactored lending protocol baseline with miscellaneous improvements including new helper functions and invariants. ([#5590](https://github.com/XRPLF/rippled/pull/5590)) +- Revamped CI workflows to leverage new Docker images and improve testing automation. ([#5661](https://github.com/XRPLF/rippled/pull/5661)) +- Cleaned up CTID.h code for improved readability and maintainability. ([#5681](https://github.com/XRPLF/rippled/pull/5681)) +- Added STInt32 as a new SType to support 32-bit integer fields in protocol. ([#5788](https://github.com/XRPLF/rippled/pull/5788)) +- Renamed mutable flags for DynamicMPT to align with XLS-94d specification changes. ([#5797](https://github.com/XRPLF/rippled/pull/5797)) +- Fixed transaction signature checking functions to accept only required parameters instead of full PreclaimContext. ([#5829](https://github.com/XRPLF/rippled/pull/5829)) +- Added support for extra transaction signature validation in preflight functions. ([#5851](https://github.com/XRPLF/rippled/pull/5851)) +- Replaced boost::lexical_cast with to_string in tests for cleaner code. ([#5883](https://github.com/XRPLF/rippled/pull/5883)) +- Replaced JSON LastLedgerSequence strings with last_ledger_seq helper in tests. ([#5884](https://github.com/XRPLF/rippled/pull/5884)) +- Refactored payment channel namespace and updated related tests. ([#5840](https://github.com/XRPLF/rippled/pull/5840)) +- Changed Credential sfSubjectNode from required to optional in object template. ([#5936](https://github.com/XRPLF/rippled/pull/5936)) +- Improved and refactored transaction set handling code for better performance and maintainability. ([#5951](https://github.com/XRPLF/rippled/pull/5951)) + +### Documentation + +- Updated README.md with improved descriptions of XRP Ledger features and capabilities. ([#4701](https://github.com/XRPLF/rippled/pull/4701)) +- Added warning comment about std::counting_semaphore usage considerations. ([#5595](https://github.com/XRPLF/rippled/pull/5595)) +- Removed redundant word in code comment for improved clarity. ([#5752](https://github.com/XRPLF/rippled/pull/5752)) +- Added remote parameter to conan lock create command in build documentation. ([#5770](https://github.com/XRPLF/rippled/pull/5770)) +- Fixed typo in JSON writer documentation. ([#5881](https://github.com/XRPLF/rippled/pull/5881)) +- Fixed a large number of spelling issues across the codebase. ([#6002](https://github.com/XRPLF/rippled/pull/6002)) +- Fixed typos in code comments. ([#6040](https://github.com/XRPLF/rippled/pull/6040)) +- Cleaned up copyright notice comment in NetworkOps_test.cpp. ([#6066](https://github.com/XRPLF/rippled/pull/6066)) +- Improved VaultWithdraw transaction documentation. ([#6068](https://github.com/XRPLF/rippled/pull/6068)) + +### Testing + +- Migrated json unit tests to use doctest framework. ([#5533](https://github.com/XRPLF/rippled/pull/5533)) +- Added basic tests for STInteger and STParsedJSON, and improved test error handling for null metadata. ([#5726](https://github.com/XRPLF/rippled/pull/5726)) +- Fixed test framework to handle null metadata for unvalidated transactions in Env::meta. ([#5715](https://github.com/XRPLF/rippled/pull/5715)) +- Added comprehensive tests for FeeVote module to improve coverage of fee voting flows. ([#5746](https://github.com/XRPLF/rippled/pull/5746)) +- Added additional tests for Simulate RPC metadata to verify values in tx_json metadata fields. ([#5827](https://github.com/XRPLF/rippled/pull/5827)) +- Replaced string JSONs with Json::Value in tests for better code readability. ([#5886](https://github.com/XRPLF/rippled/pull/5886)) +- Added crashed test suite count to unit test summary output. ([#5924](https://github.com/XRPLF/rippled/pull/5924)) +- Fixed CI to upload all test binaries including .pdb and .exe files. ([#5932](https://github.com/XRPLF/rippled/pull/5932)) + +### CI/Build Improvements + +- Updated Boost library from 1.83 to 1.88 to fix ASAN false positives. ([#5570](https://github.com/XRPLF/rippled/pull/5570)) +- Updated OpenSSL from 1.1.1w to 3.5.2 with Conan 2 dependency management. ([#5617](https://github.com/XRPLF/rippled/pull/5617)) +- Modified GitHub Actions jobs to use '>>' instead of 'tee' for GITHUB_OUTPUT to prevent output overwriting. ([#5699](https://github.com/XRPLF/rippled/pull/5699)) +- Adjusted CI workflows to fix issues with required status checks and workflow inputs. ([#5700](https://github.com/XRPLF/rippled/pull/5700)) +- Fixed build_only conditional check to correctly determine whether to run tests. ([#5708](https://github.com/XRPLF/rippled/pull/5708)) +- Updated clang-format and prettier with pre-commit hooks for better code formatting consistency. ([#5709](https://github.com/XRPLF/rippled/pull/5709)) +- Reverted formatting changes to external files and added formatting for proto files. ([#5711](https://github.com/XRPLF/rippled/pull/5711)) +- Fixed notify-clio job to skip when running in forks, and reordered config fields for better job name visibility. ([#5712](https://github.com/XRPLF/rippled/pull/5712)) +- Added workaround for CI build errors on arm64 with clang-20. ([#5717](https://github.com/XRPLF/rippled/pull/5717)) +- Fixed file formatting to comply with clang-format and prettier standards. ([#5718](https://github.com/XRPLF/rippled/pull/5718)) +- Removed codecov token check to support tokenless uploads from forks. ([#5722](https://github.com/XRPLF/rippled/pull/5722)) +- Reverted PR pipeline trigger rules to fix unintended job skipping behavior. ([#5727](https://github.com/XRPLF/rippled/pull/5727)) +- Replaced 'on: pull_request: paths' with 'changed-files' action for better CI control. ([#5728](https://github.com/XRPLF/rippled/pull/5728)) +- Added support for merge_group event in GitHub CI to enable merge queues. ([#5734](https://github.com/XRPLF/rippled/pull/5734)) +- Added codecov token to trigger workflow for coverage reporting. ([#5736](https://github.com/XRPLF/rippled/pull/5736)) +- Modified CI test jobs to run if files changed or PR has "Ready to merge" label. ([#5739](https://github.com/XRPLF/rippled/pull/5739)) +- Used XRPLF/prepare-runner action to fix CONAN_HOME issues on Windows and macOS, and clean up CMake code. ([#5740](https://github.com/XRPLF/rippled/pull/5740)) +- Removed extraneous LCOV_EXCL_START marker to fix code coverage reporting. ([#5744](https://github.com/XRPLF/rippled/pull/5744)) +- Used conan lockfile for better dependency management and reproducible builds. ([#5751](https://github.com/XRPLF/rippled/pull/5751)) +- Used tooling provided by pre-commit for clang-format and prettier instead of separate installations. ([#5753](https://github.com/XRPLF/rippled/pull/5753)) +- Added required disable_ccache option to workflow for proper cache control. ([#5756](https://github.com/XRPLF/rippled/pull/5756)) +- Fixed coverage parameter in CI configuration. ([#5760](https://github.com/XRPLF/rippled/pull/5760)) +- Fixed notify-clio workflow by adding missing user field and renaming pr to pr_number. ([#5761](https://github.com/XRPLF/rippled/pull/5761)) +- Implemented separate upload workflow for better artifact management. ([#5762](https://github.com/XRPLF/rippled/pull/5762)) +- Used cleanup-workspace action to properly clean workspace before builds. ([#5763](https://github.com/XRPLF/rippled/pull/5763)) +- Added conan.lock to workflow file checks to trigger CI when dependencies change. ([#5769](https://github.com/XRPLF/rippled/pull/5769)) +- Removed extra @ symbol in notify-clio.yml workflow configuration. ([#5771](https://github.com/XRPLF/rippled/pull/5771)) +- Used pre-commit reusable workflow to simplify CI configuration. ([#5772](https://github.com/XRPLF/rippled/pull/5772)) +- Switched on-trigger workflow to minimal build to reduce CI execution time. ([#5773](https://github.com/XRPLF/rippled/pull/5773)) +- Fixed "passed" job to properly fail when any dependent jobs fail instead of being skipped. ([#5776](https://github.com/XRPLF/rippled/pull/5776)) +- Added should-run filtering back to build-test and notify-clio workflows. ([#5777](https://github.com/XRPLF/rippled/pull/5777)) +- Switched CI pipeline bookworm:gcc-13 from arm64 to amd64 architecture. ([#5779](https://github.com/XRPLF/rippled/pull/5779)) +- Used self-hosted Windows runners to shorten build times. ([#5780](https://github.com/XRPLF/rippled/pull/5780)) +- Limited upload-conan-deps to 10 parallel instances using max-parallel to reduce resource contention. ([#5781](https://github.com/XRPLF/rippled/pull/5781)) +- Changed when upload-conan-deps workflow runs to avoid unnecessary execution on PRs. ([#5782](https://github.com/XRPLF/rippled/pull/5782)) +- Added missing dependencies to workflow paths for better CI triggering. ([#5783](https://github.com/XRPLF/rippled/pull/5783)) +- Used default conan install format instead of JSON for simpler dependency management. ([#5784](https://github.com/XRPLF/rippled/pull/5784)) +- Fixed secrets and variables in upload-conan-deps workflow for proper authentication. ([#5785](https://github.com/XRPLF/rippled/pull/5785)) +- Modified notify-clio to only run for PRs targeting release and master branches. ([#5794](https://github.com/XRPLF/rippled/pull/5794)) +- Wrapped all GitHub CI conditionals in curly braces for consistency. ([#5796](https://github.com/XRPLF/rippled/pull/5796)) +- Limited CI build and test parallelism to 10 concurrent jobs to reduce resource contention. ([#5799](https://github.com/XRPLF/rippled/pull/5799)) +- Enabled building and testing all configurations for daily scheduled CI runs. ([#5801](https://github.com/XRPLF/rippled/pull/5801)) +- Added unit tests directory to code coverage excludes for more accurate reporting. ([#5803](https://github.com/XRPLF/rippled/pull/5803)) +- Reverted Conan OpenSSL dependency update due to compatibility issues. ([#5807](https://github.com/XRPLF/rippled/pull/5807)) +- Pinned all CI Docker image tags to latest versions for reproducible builds. ([#5813](https://github.com/XRPLF/rippled/pull/5813)) +- Implemented separate upload workflow for artifacts during build and test phases. ([#5817](https://github.com/XRPLF/rippled/pull/5817)) +- Renamed all reusable workflows to include "reusable" in their names for clarity. ([#5818](https://github.com/XRPLF/rippled/pull/5818)) +- Set free-form CI inputs as environment variables to prevent injection attacks. ([#5822](https://github.com/XRPLF/rippled/pull/5822)) +- Removed bogus coverage warning from CI. ([#5838](https://github.com/XRPLF/rippled/pull/5838)) +- Excluded UNREACHABLE blocks from codecov to improve coverage accuracy. ([#5846](https://github.com/XRPLF/rippled/pull/5846)) +- Excluded old unreachable transaction code from codecov for better coverage reporting. ([#5847](https://github.com/XRPLF/rippled/pull/5847)) +- Reverted graceful peer disconnection due to insufficient testing time before release 3.0.0. ([#5855](https://github.com/XRPLF/rippled/pull/5855)) +- Updated CI strategy matrix to use new RHEL 9 and RHEL 10 Docker images. ([#5856](https://github.com/XRPLF/rippled/pull/5856)) +- Set version to 3.0.0-b1 for beta release. ([#5859](https://github.com/XRPLF/rippled/pull/5859)) +- Fixed Windows build log size issue by setting log verbosity to quiet. ([#5865](https://github.com/XRPLF/rippled/pull/5865)) +- Added support for CMake 4 without workarounds. ([#5866](https://github.com/XRPLF/rippled/pull/5866)) +- Reverted FD/handle guarding due to insufficient testing time before release 3.0.0. ([#5869](https://github.com/XRPLF/rippled/pull/5869)) +- Reverted Boost 1.88 update due to compatibility issues. ([#5872](https://github.com/XRPLF/rippled/pull/5872)) +- Added wildcard to release branch to support triggering release pipeline for branches like release-X.Y. ([#5879](https://github.com/XRPLF/rippled/pull/5879)) +- Added support for RHEL 8 in CI matrix. ([#5880](https://github.com/XRPLF/rippled/pull/5880)) +- Updated pre-commit workflow to latest version. ([#5902](https://github.com/XRPLF/rippled/pull/5902)) +- Updated tools-rippled Docker image SHAs for pre-commit and documentation images. ([#5896](https://github.com/XRPLF/rippled/pull/5896)) +- Set fail-fast to false except for merge queue to allow all CI jobs to complete. ([#5897](https://github.com/XRPLF/rippled/pull/5897)) +- Sanitized CI inputs by setting them as environment variables and adjusted CPU count for builds. ([#5903](https://github.com/XRPLF/rippled/pull/5903)) +- Set explicit timeouts for build and test jobs to prevent hanging CI jobs. ([#5912](https://github.com/XRPLF/rippled/pull/5912)) +- Removed unnecessary LCOV_EXCL_LINE marker in Escrow.cpp. ([#5913](https://github.com/XRPLF/rippled/pull/5913)) +- Used "${ENVVAR}" instead of ${{ env.ENVVAR }} syntax in GitHub Actions for better security. ([#5923](https://github.com/XRPLF/rippled/pull/5923)) +- Cleaned up build profile options including -Wno-missing-template-arg-list-after-template-kw flag. ([#5934](https://github.com/XRPLF/rippled/pull/5934)) +- Added network info output to CI test job to help diagnose port exhaustion issues. ([#5938](https://github.com/XRPLF/rippled/pull/5938)) +- Used nproc-2 (number of cores minus 2) to set parallelism for builds and tests to reduce resource contention. ([#5939](https://github.com/XRPLF/rippled/pull/5939)) +- Updated pre-commit failure message with new GitHub Actions workflow. ([#5940](https://github.com/XRPLF/rippled/pull/5940)) +- Fixed CI to only run .exe files during test phase on Windows. ([#5947](https://github.com/XRPLF/rippled/pull/5947)) +- Used commit hash for CI concurrency group on develop branch to prevent canceling workflows when merging multiple PRs. ([#5950](https://github.com/XRPLF/rippled/pull/5950)) +- Changed Conan remote login to only occur when uploading packages. ([#5952](https://github.com/XRPLF/rippled/pull/5952)) +- Updated CI to only upload codecov reports in the original XRPLF repository, not in forks. ([#5953](https://github.com/XRPLF/rippled/pull/5953)) +- Used new prepare-runner action for improved runner setup across platforms. ([#5970](https://github.com/XRPLF/rippled/pull/5970)) +- Updated CI image hashes to use netstat package. ([#5987](https://github.com/XRPLF/rippled/pull/5987)) +- Made CMake improvements including removing superfluous module imports and cleaning up configuration. ([#6010](https://github.com/XRPLF/rippled/pull/6010)) +- Unified build and test jobs into a single job and added ctest to coverage reporting. ([#6013](https://github.com/XRPLF/rippled/pull/6013)) +- Moved running of unit tests out of coverage target for cleaner separation. ([#6018](https://github.com/XRPLF/rippled/pull/6018)) +- Updated Conan to version 2.22.2. ([#6019](https://github.com/XRPLF/rippled/pull/6019)) +- Specified bash as default shell in GitHub workflows for consistency. ([#6021](https://github.com/XRPLF/rippled/pull/6021)) +- Cleaned up workspace on Windows self-hosted runners to prevent remnants from previous jobs. ([#6024](https://github.com/XRPLF/rippled/pull/6024)) +- Used new Debian Trixie CI images. ([#6034](https://github.com/XRPLF/rippled/pull/6034)) +- Fixed filtering out of Clang 20+ on ARM architecture. ([#6046](https://github.com/XRPLF/rippled/pull/6046)) +- Updated CI to only upload artifacts when running in XRPLF repository to prevent excessive artifact uploads in forks. ([#6060](https://github.com/XRPLF/rippled/pull/6060)) +- Removed missing commits check workflow as it's no longer needed with new release model. ([#6077](https://github.com/XRPLF/rippled/pull/6077)) +- Updated CI to trigger Clio pipeline on PRs targeting release branches in addition to master. ([#6080](https://github.com/XRPLF/rippled/pull/6080)) + + +## Credits + +The following GitHub users contributed to this release: + +- RippleX Engineering +- RippleX Docs +- RippleX Product + + +## 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: \ No newline at end of file diff --git a/blog/sidebars.yaml b/blog/sidebars.yaml index caeb989bee5..0ce16d88db9 100644 --- a/blog/sidebars.yaml +++ b/blog/sidebars.yaml @@ -10,6 +10,7 @@ - group: '2025' expanded: false items: + - page: 2025/rippled-3.0.0.md - page: 2025/rippled-2.6.2.md - page: 2025/rippled-2.6.1.md - page: 2025/vulnerabilitydisclosurereport-bug-sep2025.md From 938a85eac0f2eaf3bf6cf9d01517af82d3116abb Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 2 Dec 2025 14:15:38 -0800 Subject: [PATCH 09/19] add lending protocol amendment and reviewer suggestion --- resources/known-amendments.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index 2319e703129..f0125f597ab 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -23,6 +23,7 @@ The following is a list of [amendments](../docs/concepts/networks-and-servers/am |:----------------------------------|:------------------------------------------|:-------------------------------| | [Hooks][] | {% badge %}In Development: TBD{% /badge %} | [XRPL Hooks](https://hooks.xrpl.org/) | | [InvariantsV1_1][] | {% badge %}In Development: TBD{% /badge %} | | +| [LendingProtocol][] | {% badge %}In Development: TBD{% /badge %} | [Lending Protocol (Ripple Opensource)](https://opensource.ripple.com/docs/xls-66d-lending-protocol) | | [SingleAssetVault][] | {% badge %}In Development: TBD{% /badge %} | [Single Asset Vault (Ripple Opensource)](https://opensource.ripple.com/docs/xls-65d-single-asset-vault) | {% admonition type="success" name="Tip" %} @@ -934,7 +935,7 @@ With this amendment enabled, a SetRegularKey transaction cannot set the regular | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | -This amendment adds missing `DeliveredAmount` or `delivered_amount` metadata fields from direct MPT `Payment` transactions. +This amendment adds missing `DeliveredAmount` and `delivered_amount` metadata fields from direct MPT `Payment` transactions. ### fixNFTokenDirV1 @@ -1416,6 +1417,21 @@ This amendment adds several new invariants to protect the ledger against bugs in - When deleting an account, ensure that certain types of ledger entries are also deleted, including that account's `DirectoryNode`, `SignerList`, `NFTokenPage`, and `AMM` directories, if any, are deleted with it. +### LendingProtocol +[LendingProtocol]: #lendingprotocol + +| Amendment | LendingProtocol | +|:-------------|:-----------------| +| Amendment ID | 565B90CA1AB2B9D42208ED10884188C64F9E19083DECB9634AAF06EB03299509 | +| Status | In Development | +| Default Vote (Latest stable release) | No | +| Pre-amendment functionality retired? | No | + +The Lending Protocol enables on-chain, fixed-term, uncollateralized loans using pooled funds from a Single Asset Vault. This implementation relies on off-chain underwriting and risk management to assess the creditworthiness of borrowers, but offers configurable, peer-to-peer loans. + +Specification: [XLS-66](https://github.com/Tapanito/XRPL-Standards/tree/xls-66-lending-protocol/XLS-0066d-lending-protocol). + + ### MPTokensV1 [MPTokensV1]: #mptokensv1 From 506b1c7b21cbbf7d813e62dad73cbfe88737d04e Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Fri, 5 Dec 2025 13:42:51 -0800 Subject: [PATCH 10/19] add release notes --- blog/2025/rippled-3.0.0.md | 260 ++++++++++++++++++------------------- 1 file changed, 126 insertions(+), 134 deletions(-) diff --git a/blog/2025/rippled-3.0.0.md b/blog/2025/rippled-3.0.0.md index 86f61ffd2e2..0e2ceaad256 100644 --- a/blog/2025/rippled-3.0.0.md +++ b/blog/2025/rippled-3.0.0.md @@ -43,176 +43,164 @@ Date: Tue Sep 30 16:09:11 2025 -0400 ## Full Changelog + ### Amendments -- Fixed escrow creation with tokens to properly handle token amounts. ([#5571](https://github.com/XRPLF/rippled/pull/5571)) -- Added fix amendment to include missing keylet fields in ledger objects, including sequence for Escrow and PayChannel, owner for SignerList, and oracle document ID for Oracle. ([#5646](https://github.com/XRPLF/rippled/pull/5646)) -- Added fix amendment for PermissionDelegation V1.1. ([#5650](https://github.com/XRPLF/rippled/pull/5650)) -- Added Scale field to SingleAssetVault ledger objects. ([#5652](https://github.com/XRPLF/rippled/pull/5652)) -- Added DynamicMPT amendment (XLS-94d) allowing issuers to mutate Multi-Purpose Token properties after creation, including metadata, transfer fees, and permission flags. ([#5705](https://github.com/XRPLF/rippled/pull/5705)) -- Enabled fixPriceOracleOrder amendment to allow validator voting on fixing PriceDataSeries order during PriceOracle creation. ([#5749](https://github.com/XRPLF/rippled/pull/5749)) -- Enabled fixAMMClawbackRounding amendment to fix AMM LP token clawback rounding issues. ([#5750](https://github.com/XRPLF/rippled/pull/5750)) -- Enabled fixIncludeKeyletFields amendment to allow validator voting. ([#5819](https://github.com/XRPLF/rippled/pull/5819)) -- Renamed DynamicMPT flags to align with XLS-94d specification. ([#5820](https://github.com/XRPLF/rippled/pull/5820)) -- Enabled MPTDeliveredAmount amendment to Supported::yes. ([#5833](https://github.com/XRPLF/rippled/pull/5833)) +- **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](https://github.com/XRPLF/rippled/pull/5571)) +- **fixIncludeKeyletFields**: Adds missing keylet fields to these ledger entries: + - `Sequence` to `Escrow` and `PayChannel`. + - `Owner` to `SignerList`. + - `OracleDocumentID` to `Oracle`. ([#5646](https://github.com/XRPLF/rippled/pull/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](https://github.com/XRPLF/rippled/pull/5485)) +- **fixAMMClawbackRounding**: Fixes a rounding error that can occur in the `LPTokenBalance` of an AMM when performing an `AMMClawback` transaction. ([#5750](https://github.com/XRPLF/rippled/pull/5750)) +- **fixMPTDeliveredAmount**: This amendment adds missing `DeliveredAmount` and `delivered_amount` metadata fields from direct MPT `Payment` transactions. ([#5569](https://github.com/XRPLF/rippled/pull/5569)) + + +### Features -### Features/API Improvements +- Added `delivered_amount`, `nftoken_id`, `nftoken_ids`, `offer_id`, and `mpt_issuance_id` metadata fields to the `simulate` API method. ([#5754](https://github.com/XRPLF/rippled/pull/5754)) +- Added `STInt32` as a new `SType` to support negative 32-bit integer fields. ([#5788](https://github.com/XRPLF/rippled/pull/5788)) -- Added support for additional metadata in simulate RPC response including delivered amount and transaction result. ([#5754](https://github.com/XRPLF/rippled/pull/5754)) -- Fixed HTTP header case sensitivity issue in HttpClient to properly handle Content-Length header variations. ([#5767](https://github.com/XRPLF/rippled/pull/5767)) ### Bug Fixes - Fixed consensus stall detection to not flag prematurely. ([#5658](https://github.com/XRPLF/rippled/pull/5658)) -- Added graceful peer disconnection using proper asynchronous TLS shutdown procedures. ([#5669](https://github.com/XRPLF/rippled/pull/5669)) -- Added vault invariants to ensure proper validation of SingleAssetVault transactions. ([#5518](https://github.com/XRPLF/rippled/pull/5518)) -- Fixed assertion failure in NetworkOP when all transactions in batch processing list are marked as invalid. ([#5670](https://github.com/XRPLF/rippled/pull/5670)) - Added additional logging to differentiate why peer connections were refused. ([#5690](https://github.com/XRPLF/rippled/pull/5690)) -- Fixed code coverage error by properly configuring coverage flags in RippledInterface.cmake and CodeCoverage.cmake. ([#5765](https://github.com/XRPLF/rippled/pull/5765)) -- Improved ValidatorList invalid UNL manifest logging by raising severity to WARN and changing error code for invalid format. ([#5804](https://github.com/XRPLF/rippled/pull/5804)) -- Added pre-emptive file descriptor/handle guarding with exponential backoff to prevent resource exhaustion. ([#5823](https://github.com/XRPLF/rippled/pull/5823)) -- Fixed release build errors by removing unused variables. ([#5864](https://github.com/XRPLF/rippled/pull/5864)) -- Fixed invariant error in VaultWithdraw when transaction amount equals fee. ([#5876](https://github.com/XRPLF/rippled/pull/5876)) -- Enforced reserve requirement when creating trust lines or MPToken in VaultWithdraw transactions. ([#5857](https://github.com/XRPLF/rippled/pull/5857)) -- Removed directory size limit as part of unlimited directory support. ([#5935](https://github.com/XRPLF/rippled/pull/5935)) -- Applied object reserve requirements for Vault pseudo-account to ensure proper reserve handling. ([#5954](https://github.com/XRPLF/rippled/pull/5954)) -- Fixed JSON parsing of negative STNumber and STAmount values. ([#5990](https://github.com/XRPLF/rippled/pull/5990)) -- Fixed floating point representation errors in vault transactions. ([#5997](https://github.com/XRPLF/rippled/pull/5997)) - -### Refactor - -- Major refactor of ledger_entry source code and tests, improving readability and maintainability. ([#5237](https://github.com/XRPLF/rippled/pull/5237)) +- Fixed a code coverage error. ([#5765](https://github.com/XRPLF/rippled/pull/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](https://github.com/XRPLF/rippled/pull/5804)) +- Fixed release build errors with GCC 15.2. ([#5864](https://github.com/XRPLF/rippled/pull/5864)) +- Fixed JSON parsing of negative integers in `STNumber` and `STAmount`. ([#5990](https://github.com/XRPLF/rippled/pull/5990)) +- Fixed HTTP header case sensitivity issue in `HttpClient.cpp`. ([#5767](https://github.com/XRPLF/rippled/pull/5767)) +- Fixed transaction signature checking functions to accept only required parameters instead of full `PreclaimContext`. ([#5829](https://github.com/XRPLF/rippled/pull/5829)) +- Fixed an issue where the `sfSubjectNode` wasn't populated by the `CredentialCreate` transaction for self-issued credentials. ([#5936](https://github.com/XRPLF/rippled/pull/5936)) +- Fixed domain order books not populating during node startup. ([#5998](https://github.com/XRPLF/rippled/pull/5998)) + + +### Refactors + +- Refactor `ledger_entry` RPC source code and tests, improving readability and maintainability. ([#5237](https://github.com/XRPLF/rippled/pull/5237)) - Decoupled net module from xrpld and moved RPC related classes to the rpc folder. ([#5477](https://github.com/XRPLF/rippled/pull/5477)) -- Moved ledger module to libxrpl as part of modularization effort. ([#5493](https://github.com/XRPLF/rippled/pull/5493)) -- Refactored STParsedJSON to improve code organization. ([#5591](https://github.com/XRPLF/rippled/pull/5591)) -- Restructured Transactor::preflight to reduce boilerplate code in derived classes. ([#5592](https://github.com/XRPLF/rippled/pull/5592)) -- Added extra signing support to Transactor preflight functions. ([#5594](https://github.com/XRPLF/rippled/pull/5594)) -- Refactored lending protocol baseline with miscellaneous improvements including new helper functions and invariants. ([#5590](https://github.com/XRPLF/rippled/pull/5590)) +- Moved ledger component to `libxrpl` as part of modularization effort. ([#5493](https://github.com/XRPLF/rippled/pull/5493)) +- Refactored code in preparation for `LendingProtocol`. ([#5590](https://github.com/XRPLF/rippled/pull/5590)) +- Refactored `parseLeaf` to separate the handlers for `STI_UINT16` and `STI_UINT32` into separate helper functions. ([#5591](https://github.com/XRPLF/rippled/pull/5591)) +- Restructured `Transactor::preflight` to remove boilerplate code in derived classes' implementations of `preflight`. ([#5592](https://github.com/XRPLF/rippled/pull/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](https://github.com/XRPLF/rippled/pull/5594)) - Revamped CI workflows to leverage new Docker images and improve testing automation. ([#5661](https://github.com/XRPLF/rippled/pull/5661)) -- Cleaned up CTID.h code for improved readability and maintainability. ([#5681](https://github.com/XRPLF/rippled/pull/5681)) -- Added STInt32 as a new SType to support 32-bit integer fields in protocol. ([#5788](https://github.com/XRPLF/rippled/pull/5788)) -- Renamed mutable flags for DynamicMPT to align with XLS-94d specification changes. ([#5797](https://github.com/XRPLF/rippled/pull/5797)) -- Fixed transaction signature checking functions to accept only required parameters instead of full PreclaimContext. ([#5829](https://github.com/XRPLF/rippled/pull/5829)) -- Added support for extra transaction signature validation in preflight functions. ([#5851](https://github.com/XRPLF/rippled/pull/5851)) -- Replaced boost::lexical_cast with to_string in tests for cleaner code. ([#5883](https://github.com/XRPLF/rippled/pull/5883)) -- Replaced JSON LastLedgerSequence strings with last_ledger_seq helper in tests. ([#5884](https://github.com/XRPLF/rippled/pull/5884)) -- Refactored payment channel namespace and updated related tests. ([#5840](https://github.com/XRPLF/rippled/pull/5840)) -- Changed Credential sfSubjectNode from required to optional in object template. ([#5936](https://github.com/XRPLF/rippled/pull/5936)) -- Improved and refactored transaction set handling code for better performance and maintainability. ([#5951](https://github.com/XRPLF/rippled/pull/5951)) +- Cleaned up `CTID.h` code for improved readability and maintainability. ([#5681](https://github.com/XRPLF/rippled/pull/5681)) +- Added support for extra transaction signature validation. ([#5851](https://github.com/XRPLF/rippled/pull/5851)) +- Replaced JSON `LastLedgerSequence` with `last_ledger_seq` to make tests simpler and easier to read. ([#5884](https://github.com/XRPLF/rippled/pull/5884)) +- Replaced `boost::lexical_cast` with `to_string` in tests. ([#5883](https://github.com/XRPLF/rippled/pull/5883)) +- Replaced tests that write out JSONs as strings instead of using the `Json::Value` library. ([#5886](https://github.com/XRPLF/rippled/pull/5886)) +- Added a `paychan` namespace to the TestHelpers and implementation files, improving organization and clarity. ([#5840](https://github.com/XRPLF/rippled/pull/5840)) +- Improved and refactored txset handling. ([#5951](https://github.com/XRPLF/rippled/pull/5951)) + ### Documentation -- Updated README.md with improved descriptions of XRP Ledger features and capabilities. ([#4701](https://github.com/XRPLF/rippled/pull/4701)) -- Added warning comment about std::counting_semaphore usage considerations. ([#5595](https://github.com/XRPLF/rippled/pull/5595)) -- Removed redundant word in code comment for improved clarity. ([#5752](https://github.com/XRPLF/rippled/pull/5752)) -- Added remote parameter to conan lock create command in build documentation. ([#5770](https://github.com/XRPLF/rippled/pull/5770)) +- Updated old links and descriptions in `README.md`. ([#4701](https://github.com/XRPLF/rippled/pull/4701)) +- Added compiler warning for `std::counting_semaphore` usage. ([#5595](https://github.com/XRPLF/rippled/pull/5595)) +- Removed redundant word in code comment. ([#5752](https://github.com/XRPLF/rippled/pull/5752)) +- Added remote to `conan lock create` command. ([#5770](https://github.com/XRPLF/rippled/pull/5770)) - Fixed typo in JSON writer documentation. ([#5881](https://github.com/XRPLF/rippled/pull/5881)) -- Fixed a large number of spelling issues across the codebase. ([#6002](https://github.com/XRPLF/rippled/pull/6002)) +- Fixed spelling issues across the codebase. ([#6002](https://github.com/XRPLF/rippled/pull/6002)) - Fixed typos in code comments. ([#6040](https://github.com/XRPLF/rippled/pull/6040)) -- Cleaned up copyright notice comment in NetworkOps_test.cpp. ([#6066](https://github.com/XRPLF/rippled/pull/6066)) -- Improved VaultWithdraw transaction documentation. ([#6068](https://github.com/XRPLF/rippled/pull/6068)) +- Removed accidental copyright notice from `NetworkOps_test.cpp`. ([#6066](https://github.com/XRPLF/rippled/pull/6066)) + ### Testing - Migrated json unit tests to use doctest framework. ([#5533](https://github.com/XRPLF/rippled/pull/5533)) -- Added basic tests for STInteger and STParsedJSON, and improved test error handling for null metadata. ([#5726](https://github.com/XRPLF/rippled/pull/5726)) -- Fixed test framework to handle null metadata for unvalidated transactions in Env::meta. ([#5715](https://github.com/XRPLF/rippled/pull/5715)) -- Added comprehensive tests for FeeVote module to improve coverage of fee voting flows. ([#5746](https://github.com/XRPLF/rippled/pull/5746)) -- Added additional tests for Simulate RPC metadata to verify values in tx_json metadata fields. ([#5827](https://github.com/XRPLF/rippled/pull/5827)) -- Replaced string JSONs with Json::Value in tests for better code readability. ([#5886](https://github.com/XRPLF/rippled/pull/5886)) -- Added crashed test suite count to unit test summary output. ([#5924](https://github.com/XRPLF/rippled/pull/5924)) -- Fixed CI to upload all test binaries including .pdb and .exe files. ([#5932](https://github.com/XRPLF/rippled/pull/5932)) - -### CI/Build Improvements - -- Updated Boost library from 1.83 to 1.88 to fix ASAN false positives. ([#5570](https://github.com/XRPLF/rippled/pull/5570)) -- Updated OpenSSL from 1.1.1w to 3.5.2 with Conan 2 dependency management. ([#5617](https://github.com/XRPLF/rippled/pull/5617)) -- Modified GitHub Actions jobs to use '>>' instead of 'tee' for GITHUB_OUTPUT to prevent output overwriting. ([#5699](https://github.com/XRPLF/rippled/pull/5699)) -- Adjusted CI workflows to fix issues with required status checks and workflow inputs. ([#5700](https://github.com/XRPLF/rippled/pull/5700)) -- Fixed build_only conditional check to correctly determine whether to run tests. ([#5708](https://github.com/XRPLF/rippled/pull/5708)) -- Updated clang-format and prettier with pre-commit hooks for better code formatting consistency. ([#5709](https://github.com/XRPLF/rippled/pull/5709)) +- Added basic tests for `STInteger` and `STParsedJSON`. ([#5726](https://github.com/XRPLF/rippled/pull/5726)) +- Fixed test framework to handle null metadata for unvalidated transactions in `env.meta`. ([#5715](https://github.com/XRPLF/rippled/pull/5715)) +- Added more comprehensive tests for the `FeeVote` module. ([#5746](https://github.com/XRPLF/rippled/pull/5746)) +- Added additional tests for `simulate` RPC metadata. ([#5827](https://github.com/XRPLF/rippled/pull/5827)) +- Updated unit test summary to count crashed tests as failures. ([#5924](https://github.com/XRPLF/rippled/pull/5924)) +- Fixed CI to upload all test binaries. ([#5932](https://github.com/XRPLF/rippled/pull/5932)) + + +### CI/Build + +- Modified GitHub Actions jobs to use `>>` instead of `tee` for `${GITHUB_OUTPUT}` to prevent output overwriting. ([#5699](https://github.com/XRPLF/rippled/pull/5699)) +- Fixed CI workflow issues and reduced separate OS jobs into one by using a strategy matrix. ([#5700](https://github.com/XRPLF/rippled/pull/5700)) +- Fixed `build_only` conditional check to correctly determine whether to run tests. ([#5708](https://github.com/XRPLF/rippled/pull/5708)) +- Updated `clang-format` and added `prettier` to the `pre-commit`. Also added proto file formatting. ([#5709](https://github.com/XRPLF/rippled/pull/5709)) - Reverted formatting changes to external files and added formatting for proto files. ([#5711](https://github.com/XRPLF/rippled/pull/5711)) -- Fixed notify-clio job to skip when running in forks, and reordered config fields for better job name visibility. ([#5712](https://github.com/XRPLF/rippled/pull/5712)) -- Added workaround for CI build errors on arm64 with clang-20. ([#5717](https://github.com/XRPLF/rippled/pull/5717)) -- Fixed file formatting to comply with clang-format and prettier standards. ([#5718](https://github.com/XRPLF/rippled/pull/5718)) +- Fixed `notify-clio` job to skip when running in forks, and reordered config fields for better job name visibility. ([#5712](https://github.com/XRPLF/rippled/pull/5712)) +- Added workaround for CI build errors on arm64 with Clang 20. ([#5717](https://github.com/XRPLF/rippled/pull/5717)) +- Fixed file formatting in anticipation of enabling additional `clang-format-hooks`. ([#5718](https://github.com/XRPLF/rippled/pull/5718)) - Removed codecov token check to support tokenless uploads from forks. ([#5722](https://github.com/XRPLF/rippled/pull/5722)) - Reverted PR pipeline trigger rules to fix unintended job skipping behavior. ([#5727](https://github.com/XRPLF/rippled/pull/5727)) -- Replaced 'on: pull_request: paths' with 'changed-files' action for better CI control. ([#5728](https://github.com/XRPLF/rippled/pull/5728)) -- Added support for merge_group event in GitHub CI to enable merge queues. ([#5734](https://github.com/XRPLF/rippled/pull/5734)) -- Added codecov token to trigger workflow for coverage reporting. ([#5736](https://github.com/XRPLF/rippled/pull/5736)) +- Replaced `on: pull_request: paths` with `changed-files` action for better CI control. ([#5728](https://github.com/XRPLF/rippled/pull/5728)) +- Added support for `merge_group` event in GitHub CI to enable merge queues. ([#5734](https://github.com/XRPLF/rippled/pull/5734)) +- Added codecov token to the `on-trigger` workflow to enable report uploading. ([#5736](https://github.com/XRPLF/rippled/pull/5736)) - Modified CI test jobs to run if files changed or PR has "Ready to merge" label. ([#5739](https://github.com/XRPLF/rippled/pull/5739)) -- Used XRPLF/prepare-runner action to fix CONAN_HOME issues on Windows and macOS, and clean up CMake code. ([#5740](https://github.com/XRPLF/rippled/pull/5740)) -- Removed extraneous LCOV_EXCL_START marker to fix code coverage reporting. ([#5744](https://github.com/XRPLF/rippled/pull/5744)) -- Used conan lockfile for better dependency management and reproducible builds. ([#5751](https://github.com/XRPLF/rippled/pull/5751)) -- Used tooling provided by pre-commit for clang-format and prettier instead of separate installations. ([#5753](https://github.com/XRPLF/rippled/pull/5753)) -- Added required disable_ccache option to workflow for proper cache control. ([#5756](https://github.com/XRPLF/rippled/pull/5756)) -- Fixed coverage parameter in CI configuration. ([#5760](https://github.com/XRPLF/rippled/pull/5760)) -- Fixed notify-clio workflow by adding missing user field and renaming pr to pr_number. ([#5761](https://github.com/XRPLF/rippled/pull/5761)) -- Implemented separate upload workflow for better artifact management. ([#5762](https://github.com/XRPLF/rippled/pull/5762)) -- Used cleanup-workspace action to properly clean workspace before builds. ([#5763](https://github.com/XRPLF/rippled/pull/5763)) -- Added conan.lock to workflow file checks to trigger CI when dependencies change. ([#5769](https://github.com/XRPLF/rippled/pull/5769)) -- Removed extra @ symbol in notify-clio.yml workflow configuration. ([#5771](https://github.com/XRPLF/rippled/pull/5771)) -- Used pre-commit reusable workflow to simplify CI configuration. ([#5772](https://github.com/XRPLF/rippled/pull/5772)) -- Switched on-trigger workflow to minimal build to reduce CI execution time. ([#5773](https://github.com/XRPLF/rippled/pull/5773)) -- Fixed "passed" job to properly fail when any dependent jobs fail instead of being skipped. ([#5776](https://github.com/XRPLF/rippled/pull/5776)) -- Added should-run filtering back to build-test and notify-clio workflows. ([#5777](https://github.com/XRPLF/rippled/pull/5777)) -- Switched CI pipeline bookworm:gcc-13 from arm64 to amd64 architecture. ([#5779](https://github.com/XRPLF/rippled/pull/5779)) -- Used self-hosted Windows runners to shorten build times. ([#5780](https://github.com/XRPLF/rippled/pull/5780)) -- Limited upload-conan-deps to 10 parallel instances using max-parallel to reduce resource contention. ([#5781](https://github.com/XRPLF/rippled/pull/5781)) -- Changed when upload-conan-deps workflow runs to avoid unnecessary execution on PRs. ([#5782](https://github.com/XRPLF/rippled/pull/5782)) -- Added missing dependencies to workflow paths for better CI triggering. ([#5783](https://github.com/XRPLF/rippled/pull/5783)) -- Used default conan install format instead of JSON for simpler dependency management. ([#5784](https://github.com/XRPLF/rippled/pull/5784)) -- Fixed secrets and variables in upload-conan-deps workflow for proper authentication. ([#5785](https://github.com/XRPLF/rippled/pull/5785)) -- Modified notify-clio to only run for PRs targeting release and master branches. ([#5794](https://github.com/XRPLF/rippled/pull/5794)) +- Used `XRPLF/prepare-runner` action to fix `CONAN_HOME` issues on macOS. Also removed old CMake code. ([#5740](https://github.com/XRPLF/rippled/pull/5740)) +- Removed extraneous `LCOV_EXCL_START` marker from coverage reporting. ([#5744](https://github.com/XRPLF/rippled/pull/5744)) +- Added conan lockfile for better dependency management and reproducible builds. ([#5751](https://github.com/XRPLF/rippled/pull/5751)) +- Updated pre-commit to manage tools on its own. ([#5753](https://github.com/XRPLF/rippled/pull/5753)) +- Added required `disable_ccache` option to workflow. ([#5756](https://github.com/XRPLF/rippled/pull/5756)) +- Fixed coverage parameter in Cmake file. ([#5760](https://github.com/XRPLF/rippled/pull/5760)) +- Added additional info to `notify-clio` workflow. ([#5761](https://github.com/XRPLF/rippled/pull/5761)) +- Implemented separate upload workflow. ([#5762](https://github.com/XRPLF/rippled/pull/5762)) +- Added `cleanup-workspace` action to clean workspace before builds. ([#5763](https://github.com/XRPLF/rippled/pull/5763)) +- Added `conan.lock` to workflow file checks. ([#5769](https://github.com/XRPLF/rippled/pull/5769)) +- Removed extra @ symbol in `notify-clio.yml`. ([#5771](https://github.com/XRPLF/rippled/pull/5771)) +- Fixed `pre-commit` workflows. ([#5772](https://github.com/XRPLF/rippled/pull/5772)) +- Switched `on-trigger` workflow to minimal build to reduce the number of builds. ([#5773](https://github.com/XRPLF/rippled/pull/5773)) +- Fixed `passed` jobs to properly pass if all its dependencies passed or were skipped. ([#5776](https://github.com/XRPLF/rippled/pull/5776)) +- Added `should-run` filtering back to `build-test` and `notify-clio` workflows. ([#5777](https://github.com/XRPLF/rippled/pull/5777)) +- Switched CI pipeline `bookworm:gcc-13` from arm64 to amd64 architecture. ([#5779](https://github.com/XRPLF/rippled/pull/5779)) +- Updated to self-hosted Windows runners to shorten build times. ([#5780](https://github.com/XRPLF/rippled/pull/5780)) +- Limited `upload-conan-deps` to 10 parallel instances when using `max-parallel`. ([#5781](https://github.com/XRPLF/rippled/pull/5781)) +- Changed when `upload-conan-deps` workflows run to avoid unnecessary execution on PRs. ([#5782](https://github.com/XRPLF/rippled/pull/5782)) +- Added missing dependencies to workflows. ([#5783](https://github.com/XRPLF/rippled/pull/5783)) +- Updated to use default conan install without `--format json`. ([#5784](https://github.com/XRPLF/rippled/pull/5784)) +- Fixed secrets and variables in `upload-conan-deps` workflow. ([#5785](https://github.com/XRPLF/rippled/pull/5785)) +- Modified Clio notifications to only happen when a PR targets the release or master branch. ([#5794](https://github.com/XRPLF/rippled/pull/5794)) - Wrapped all GitHub CI conditionals in curly braces for consistency. ([#5796](https://github.com/XRPLF/rippled/pull/5796)) -- Limited CI build and test parallelism to 10 concurrent jobs to reduce resource contention. ([#5799](https://github.com/XRPLF/rippled/pull/5799)) -- Enabled building and testing all configurations for daily scheduled CI runs. ([#5801](https://github.com/XRPLF/rippled/pull/5801)) -- Added unit tests directory to code coverage excludes for more accurate reporting. ([#5803](https://github.com/XRPLF/rippled/pull/5803)) -- Reverted Conan OpenSSL dependency update due to compatibility issues. ([#5807](https://github.com/XRPLF/rippled/pull/5807)) -- Pinned all CI Docker image tags to latest versions for reproducible builds. ([#5813](https://github.com/XRPLF/rippled/pull/5813)) +- Limited CI build and test parallelism to 10 concurrent jobs. ([#5799](https://github.com/XRPLF/rippled/pull/5799)) +- Enabled building and testing all configurations for daily scheduled runs. ([#5801](https://github.com/XRPLF/rippled/pull/5801)) +- Excluded unit tests from code coverage reporting. ([#5803](https://github.com/XRPLF/rippled/pull/5803)) +- Pinned all CI Docker image tags to latest versions in the XRPLF/CI repo. ([#5813](https://github.com/XRPLF/rippled/pull/5813)) - Implemented separate upload workflow for artifacts during build and test phases. ([#5817](https://github.com/XRPLF/rippled/pull/5817)) - Renamed all reusable workflows to include "reusable" in their names for clarity. ([#5818](https://github.com/XRPLF/rippled/pull/5818)) - Set free-form CI inputs as environment variables to prevent injection attacks. ([#5822](https://github.com/XRPLF/rippled/pull/5822)) -- Removed bogus coverage warning from CI. ([#5838](https://github.com/XRPLF/rippled/pull/5838)) -- Excluded UNREACHABLE blocks from codecov to improve coverage accuracy. ([#5846](https://github.com/XRPLF/rippled/pull/5846)) -- Excluded old unreachable transaction code from codecov for better coverage reporting. ([#5847](https://github.com/XRPLF/rippled/pull/5847)) -- Reverted graceful peer disconnection due to insufficient testing time before release 3.0.0. ([#5855](https://github.com/XRPLF/rippled/pull/5855)) +- Removed extraneous coverage warnings. ([#5838](https://github.com/XRPLF/rippled/pull/5838)) +- Excluded `UNREACHABLE` blocks from codecov to improve coverage accuracy. ([#5846](https://github.com/XRPLF/rippled/pull/5846)) +- Excluded old, unreachable transaction code from codecov for better coverage reporting. ([#5847](https://github.com/XRPLF/rippled/pull/5847)) - Updated CI strategy matrix to use new RHEL 9 and RHEL 10 Docker images. ([#5856](https://github.com/XRPLF/rippled/pull/5856)) -- Set version to 3.0.0-b1 for beta release. ([#5859](https://github.com/XRPLF/rippled/pull/5859)) - Fixed Windows build log size issue by setting log verbosity to quiet. ([#5865](https://github.com/XRPLF/rippled/pull/5865)) - Added support for CMake 4 without workarounds. ([#5866](https://github.com/XRPLF/rippled/pull/5866)) -- Reverted FD/handle guarding due to insufficient testing time before release 3.0.0. ([#5869](https://github.com/XRPLF/rippled/pull/5869)) -- Reverted Boost 1.88 update due to compatibility issues. ([#5872](https://github.com/XRPLF/rippled/pull/5872)) -- Added wildcard to release branch to support triggering release pipeline for branches like release-X.Y. ([#5879](https://github.com/XRPLF/rippled/pull/5879)) -- Added support for RHEL 8 in CI matrix. ([#5880](https://github.com/XRPLF/rippled/pull/5880)) +- Added wildcard to support triggering for release pipelines. ([#5879](https://github.com/XRPLF/rippled/pull/5879)) +- Added support for RHEL 8. ([#5880](https://github.com/XRPLF/rippled/pull/5880)) - Updated pre-commit workflow to latest version. ([#5902](https://github.com/XRPLF/rippled/pull/5902)) -- Updated tools-rippled Docker image SHAs for pre-commit and documentation images. ([#5896](https://github.com/XRPLF/rippled/pull/5896)) -- Set fail-fast to false except for merge queue to allow all CI jobs to complete. ([#5897](https://github.com/XRPLF/rippled/pull/5897)) -- Sanitized CI inputs by setting them as environment variables and adjusted CPU count for builds. ([#5903](https://github.com/XRPLF/rippled/pull/5903)) -- Set explicit timeouts for build and test jobs to prevent hanging CI jobs. ([#5912](https://github.com/XRPLF/rippled/pull/5912)) -- Removed unnecessary LCOV_EXCL_LINE marker in Escrow.cpp. ([#5913](https://github.com/XRPLF/rippled/pull/5913)) -- Used "${ENVVAR}" instead of ${{ env.ENVVAR }} syntax in GitHub Actions for better security. ([#5923](https://github.com/XRPLF/rippled/pull/5923)) -- Cleaned up build profile options including -Wno-missing-template-arg-list-after-template-kw flag. ([#5934](https://github.com/XRPLF/rippled/pull/5934)) +- Updated the Docker image hashes for `tools-rippled`. ([#5896](https://github.com/XRPLF/rippled/pull/5896)) +- Set fail-fast to false unless it is run by a merge group. ([#5897](https://github.com/XRPLF/rippled/pull/5897)) +- Cleaned up Conan variables in CI. ([#5903](https://github.com/XRPLF/rippled/pull/5903)) +- Set explicit timeouts for build and test jobs. ([#5912](https://github.com/XRPLF/rippled/pull/5912)) +- Removed unnecessary `LCOV_EXCL_LINE` marker in `Escrow.cpp`. ([#5913](https://github.com/XRPLF/rippled/pull/5913)) +- Updated `${{ env.ENVVAR }}` syntax to `${ENVVAR}` in GitHub Actions. ([#5923](https://github.com/XRPLF/rippled/pull/5923)) +- Cleaned up build profile options. ([#5934](https://github.com/XRPLF/rippled/pull/5934)) - Added network info output to CI test job to help diagnose port exhaustion issues. ([#5938](https://github.com/XRPLF/rippled/pull/5938)) -- Used nproc-2 (number of cores minus 2) to set parallelism for builds and tests to reduce resource contention. ([#5939](https://github.com/XRPLF/rippled/pull/5939)) -- Updated pre-commit failure message with new GitHub Actions workflow. ([#5940](https://github.com/XRPLF/rippled/pull/5940)) +- Reduced the number of cores used to build and test by two. ([#5939](https://github.com/XRPLF/rippled/pull/5939)) +- Updated pre-commit failure message. ([#5940](https://github.com/XRPLF/rippled/pull/5940)) - Fixed CI to only run .exe files during test phase on Windows. ([#5947](https://github.com/XRPLF/rippled/pull/5947)) -- Used commit hash for CI concurrency group on develop branch to prevent canceling workflows when merging multiple PRs. ([#5950](https://github.com/XRPLF/rippled/pull/5950)) +- Changed the CI concurrency group for pushes to the `develop` branch to use the commit hash instead of the target branch. ([#5950](https://github.com/XRPLF/rippled/pull/5950)) - Changed Conan remote login to only occur when uploading packages. ([#5952](https://github.com/XRPLF/rippled/pull/5952)) -- Updated CI to only upload codecov reports in the original XRPLF repository, not in forks. ([#5953](https://github.com/XRPLF/rippled/pull/5953)) -- Used new prepare-runner action for improved runner setup across platforms. ([#5970](https://github.com/XRPLF/rippled/pull/5970)) -- Updated CI image hashes to use netstat package. ([#5987](https://github.com/XRPLF/rippled/pull/5987)) -- Made CMake improvements including removing superfluous module imports and cleaning up configuration. ([#6010](https://github.com/XRPLF/rippled/pull/6010)) -- Unified build and test jobs into a single job and added ctest to coverage reporting. ([#6013](https://github.com/XRPLF/rippled/pull/6013)) -- Moved running of unit tests out of coverage target for cleaner separation. ([#6018](https://github.com/XRPLF/rippled/pull/6018)) +- Updated CI to only upload codecov reports in the original repo, not in forks. ([#5953](https://github.com/XRPLF/rippled/pull/5953)) +- Updated CI to use new `prepare-runner` action. ([#5970](https://github.com/XRPLF/rippled/pull/5970)) +- Updated CI image hashes to use netstat. ([#5987](https://github.com/XRPLF/rippled/pull/5987)) +- Made CMake improvements, including removing unused definitions, moving variable definitions, and updating the minimum GCC and Clang versions required. ([#6010](https://github.com/XRPLF/rippled/pull/6010)) +- Unified build and test jobs into a single job and added `ctest` to coverage reporting. ([#6013](https://github.com/XRPLF/rippled/pull/6013)) +- Moved running of unit tests out of coverage target. ([#6018](https://github.com/XRPLF/rippled/pull/6018)) - Updated Conan to version 2.22.2. ([#6019](https://github.com/XRPLF/rippled/pull/6019)) -- Specified bash as default shell in GitHub workflows for consistency. ([#6021](https://github.com/XRPLF/rippled/pull/6021)) -- Cleaned up workspace on Windows self-hosted runners to prevent remnants from previous jobs. ([#6024](https://github.com/XRPLF/rippled/pull/6024)) -- Used new Debian Trixie CI images. ([#6034](https://github.com/XRPLF/rippled/pull/6034)) -- Fixed filtering out of Clang 20+ on ARM architecture. ([#6046](https://github.com/XRPLF/rippled/pull/6046)) -- Updated CI to only upload artifacts when running in XRPLF repository to prevent excessive artifact uploads in forks. ([#6060](https://github.com/XRPLF/rippled/pull/6060)) -- Removed missing commits check workflow as it's no longer needed with new release model. ([#6077](https://github.com/XRPLF/rippled/pull/6077)) -- Updated CI to trigger Clio pipeline on PRs targeting release branches in addition to master. ([#6080](https://github.com/XRPLF/rippled/pull/6080)) +- Specified bash as default shell in workflows. ([#6021](https://github.com/XRPLF/rippled/pull/6021)) +- Updated the `cleanup-workspace` action to its latest version to add support for Windows. ([#6024](https://github.com/XRPLF/rippled/pull/6024)) +- Added new Debian Trixie CI images to build and test with. ([#6034](https://github.com/XRPLF/rippled/pull/6034)) +- Changed strategy matrix check to filter out Clang 20+ on ARM. ([#6046](https://github.com/XRPLF/rippled/pull/6046)) +- Updated CI to only upload artifacts in XRPLF repo. ([#6060](https://github.com/XRPLF/rippled/pull/6060)) +- Removed missing commits check. ([#6077](https://github.com/XRPLF/rippled/pull/6077)) +- Updated CI to trigger Clio pipeline on PRs targeting any `release` branches. ([#6080](https://github.com/XRPLF/rippled/pull/6080)) ## Credits @@ -222,6 +210,10 @@ The following GitHub users contributed to this release: - RippleX Engineering - RippleX Docs - RippleX Product +- @dangell7 +- @tequdev +- @tzchenxixi +- @wojake ## Bug Bounties and Responsible Disclosures From fa40ba2b71806a68e07132bb9c410ac50210b148 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Fri, 5 Dec 2025 14:13:27 -0800 Subject: [PATCH 11/19] add fixincludekeyletfields --- resources/known-amendments.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index f0125f597ab..5c0d0d1ff07 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -855,6 +855,22 @@ With this amendment enabled, if an LP token is associated with a liquidity pool 2. The holder can receive frozen LP tokens, but can't send them out (similar to frozen trust lines). +### fixIncludeKeyletFields +[fixIncludeKeyletFields]: #fixincludekeyletfields + +| Amendment | fixIncludeKeyletFields | +|:-------------|:--------------------| +| Amendment ID | 6143A27B71F7DAF9330ECA7C5EC3D54C8083A4FDEF7016737EEC06AB61E82EE0 | +| Status | Open for Voting | +| Default Vote (Latest stable release) | No | +| Pre-amendment functionality retired? | No | + +This amendment adds missing keylet fields to these ledger entries: + - `Sequence` to `Escrow` and `PayChannel`. + - `Owner` to `SignerList`. + - `OracleDocumentID` to `Oracle`. + + ### fixInnerObjTemplate [fixInnerObjTemplate]: #fixinnerobjtemplate From da422329f9ac1a408fe61278aa9a96de5c0118cd Mon Sep 17 00:00:00 2001 From: oeggert <117319296+oeggert@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:11:03 -0800 Subject: [PATCH 12/19] Update blog/2025/rippled-3.0.0.md Co-authored-by: Maria Shodunke --- blog/2025/rippled-3.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2025/rippled-3.0.0.md b/blog/2025/rippled-3.0.0.md index 0e2ceaad256..8dcbf1ffd7e 100644 --- a/blog/2025/rippled-3.0.0.md +++ b/blog/2025/rippled-3.0.0.md @@ -78,7 +78,7 @@ Date: Tue Sep 30 16:09:11 2025 -0400 ### Refactors -- Refactor `ledger_entry` RPC source code and tests, improving readability and maintainability. ([#5237](https://github.com/XRPLF/rippled/pull/5237)) +- Refactored `ledger_entry` RPC source code and tests, improving readability and maintainability. ([#5237](https://github.com/XRPLF/rippled/pull/5237)) - Decoupled net module from xrpld and moved RPC related classes to the rpc folder. ([#5477](https://github.com/XRPLF/rippled/pull/5477)) - Moved ledger component to `libxrpl` as part of modularization effort. ([#5493](https://github.com/XRPLF/rippled/pull/5493)) - Refactored code in preparation for `LendingProtocol`. ([#5590](https://github.com/XRPLF/rippled/pull/5590)) From 9600871944906b2291f075fc68c00c8fda27f9be Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 11:08:53 -0800 Subject: [PATCH 13/19] add breaking change info --- blog/2025/rippled-3.0.0.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/blog/2025/rippled-3.0.0.md b/blog/2025/rippled-3.0.0.md index 8dcbf1ffd7e..0510d285473 100644 --- a/blog/2025/rippled-3.0.0.md +++ b/blog/2025/rippled-3.0.0.md @@ -62,6 +62,11 @@ Date: Tue Sep 30 16:09:11 2025 -0400 - Added `STInt32` as a new `SType` to support negative 32-bit integer fields. ([#5788](https://github.com/XRPLF/rippled/pull/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](https://github.com/XRPLF/rippled/pull/5237)) + + ### Bug Fixes - Fixed consensus stall detection to not flag prematurely. ([#5658](https://github.com/XRPLF/rippled/pull/5658)) @@ -78,7 +83,6 @@ Date: Tue Sep 30 16:09:11 2025 -0400 ### Refactors -- Refactored `ledger_entry` RPC source code and tests, improving readability and maintainability. ([#5237](https://github.com/XRPLF/rippled/pull/5237)) - Decoupled net module from xrpld and moved RPC related classes to the rpc folder. ([#5477](https://github.com/XRPLF/rippled/pull/5477)) - Moved ledger component to `libxrpl` as part of modularization effort. ([#5493](https://github.com/XRPLF/rippled/pull/5493)) - Refactored code in preparation for `LendingProtocol`. ([#5590](https://github.com/XRPLF/rippled/pull/5590)) From 1534ecfa268e11ea13f57dbc4e7a368170d934ae Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 12:04:05 -0800 Subject: [PATCH 14/19] add breaking change --- .../public-api-methods/ledger-methods/ledger_entry.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger_entry.md b/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger_entry.md index 0b29c4b2fef..38a58f9c7d2 100644 --- a/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger_entry.md +++ b/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger_entry.md @@ -52,8 +52,6 @@ In addition to the general fields above, you must specify *exactly 1* of the fol - [Response Format](#response-format) - [Possible Errors](#possible-errors) -{% admonition type="warning" name="Caution" %}If you specify more than 1 of these type-specific fields in a request, the server retrieves results for only 1 of them. It is not defined which one the server chooses, so you should avoid doing this.{% /admonition %} - ### Get Ledger Entry by ID @@ -1105,7 +1103,9 @@ An example of a successful response: * Any of the [universal error types][]. * `deprecatedFeature` - The request specified a removed field, such as `generator`. * `entryNotFound` - The requested ledger entry does not exist in the ledger. -* `invalidParams` - One or more fields are specified incorrectly, or one or more required fields are missing. +* `invalidParams` + - One or more fields are specified incorrectly or missing. + - The request specified more than one ledger entry. {% badge href="https://github.com/XRPLF/rippled/releases/tag/3.0.0" %}New in: rippled 3.0.0{% /badge %} * `lgrNotFound` - The ledger specified by the `ledger_hash` or `ledger_index` does not exist, or it does exist but the server does not have it. * `malformedAddress` - The request improperly specified an [Address][] field. * `malformedCurrency` - The request improperly specified a [Currency Code][] field. From 337a576d2d578c5404dc4f80295acd6b84ba5549 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 12:10:12 -0800 Subject: [PATCH 15/19] add ammclawbackrounding --- resources/known-amendments.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index 5c0d0d1ff07..c4bd7df21da 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -667,6 +667,19 @@ Fixes a bug that could cause an amendment to achieve a majority and later activa Without this amendment, the minimum threshold for amendment activation is any value that rounds to 204/256 of trusted validators, which depends on the number of trusted validators at the time. For example, an amendment could activate with exactly 28 out of 36 validators (approximately 77.8%). With this amendment, the actual minimum number of validators needed is never less than 80% of trusted validators. +### fixAMMClawbackRounding +[fixAMMClawbackRounding]: #fixammclawbackrounding + +| Amendment | fixAMMClawbackRounding | +|:-------------|:-------------------------| +| Amendment ID | 5E9586DB3D765B4C5794658FB6BB385071E9838DF4016027E6E26820C8526724 | +| Status | Open for Voting | +| Default Vote (Latest stable release) | No | +| Pre-amendment functionality retired? | No | + +Fixes a rounding error that can occur in the `LPTokenBalance` of an AMM when performing an `AMMClawback` transaction. + + ### fixAMMOverflowOffer [fixAMMOverflowOffer]: #fixammoverflowoffer From 3be9307845cba49d77c7b781b6a87cd67f6eddab Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 15:01:04 -0800 Subject: [PATCH 16/19] add reviewer suggestions --- resources/known-amendments.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index c4bd7df21da..0519995396d 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -677,7 +677,7 @@ Without this amendment, the minimum threshold for amendment activation is any va | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | -Fixes a rounding error that can occur in the `LPTokenBalance` of an AMM when performing an `AMMClawback` transaction. +Fixes an accounting error that can occur when performing an `AMMClawback` transaction on the last LP token holder. Due to rounding errors, the AMMs `LPTokenBalance` may not match the holder's trust line balance. This amendment adjusts the `LPTokenBalance` to match the trust line balance before the clawback, so invariant checks pass without errors. ### fixAMMOverflowOffer @@ -878,10 +878,14 @@ With this amendment enabled, if an LP token is associated with a liquidity pool | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | -This amendment adds missing keylet fields to these ledger entries: - - `Sequence` to `Escrow` and `PayChannel`. - - `Owner` to `SignerList`. - - `OracleDocumentID` to `Oracle`. +This amendment adds fields to ledger entries in cases where those fields are part of the identifying information that forms their ledger entry ID: + - Add a `Sequence` field to `Escrow` and `PayChannel` entries. + - Add an `Owner` field to `SignerList` entries. + - Add an `OracleDocumentID` field to `Oracle` entries. + +Without this amendment, some ledger entries do not store all the data that was used to create their ledger entry ID. After this amendment is enabled, ledger entries of those types have those fields added when the ledger entry is created or modified. Ledger entries that were created before the amendment are not changed until a transaction modifies them. + +The presence of a `Sequence` field on Escrow ledger entries is especially useful since you need that value to finish or cancel the escrow, and you otherwise might have to look up the sequence number of the transaction that created the escrow. ### fixInnerObjTemplate @@ -964,7 +968,7 @@ With this amendment enabled, a SetRegularKey transaction cannot set the regular | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | -This amendment adds missing `DeliveredAmount` and `delivered_amount` metadata fields from direct MPT `Payment` transactions. +This amendment adds missing `DeliveredAmount` and `delivered_amount` metadata fields from direct MPT `Payment` transactions. Without this amendment, direct MPT payments deliver the full amount but do not have the metadata fields to summarize how much was delivered. ### fixNFTokenDirV1 @@ -1148,7 +1152,7 @@ Without this amendment, some types of ledger entries don't have those fields, wh Fixes an issue where the order of asset pair data is different from when a price oracle is created versus when it is updated. -This amendment ensures asset pairs follow a canonical order at all times. +This amendment ensures asset pairs follow a canonical order at all times, so you can predictably look up asset prices. ### fixQualityUpperBound @@ -1353,7 +1357,7 @@ The Flow Engine also makes it easier to improve and expand the payment engine wi | Amendment ID | 3012E8230864E95A58C60FD61430D7E1B4D3353195F2981DC12B0C7C0950FFAC | | Status | Enabled | | Default Vote (Latest stable release) | Yes | -| Pre-amendment functionality retired? | No | +| Pre-amendment functionality retired? | Yes | Streamlines the offer crossing logic in the XRP Ledger's decentralized exchange. Uses the updated code from the [Flow](#flow) amendment to power offer crossing, so [OfferCreate transactions][] and [Payment transactions][] share more code. This has subtle differences in how offers are processed: From a44713a9030698422150fdfc5ce1d4d9d3913140 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 15:03:09 -0800 Subject: [PATCH 17/19] fix grammar --- resources/known-amendments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/known-amendments.md b/resources/known-amendments.md index 0519995396d..973b8fee855 100644 --- a/resources/known-amendments.md +++ b/resources/known-amendments.md @@ -677,7 +677,7 @@ Without this amendment, the minimum threshold for amendment activation is any va | Default Vote (Latest stable release) | No | | Pre-amendment functionality retired? | No | -Fixes an accounting error that can occur when performing an `AMMClawback` transaction on the last LP token holder. Due to rounding errors, the AMMs `LPTokenBalance` may not match the holder's trust line balance. This amendment adjusts the `LPTokenBalance` to match the trust line balance before the clawback, so invariant checks pass without errors. +Fixes an accounting error that can occur when performing an `AMMClawback` transaction on the last LP token holder. Due to rounding errors, the `LPTokenBalance` of the AMM may not match the holder's trust line balance. This amendment adjusts the `LPTokenBalance` to match the trust line balance before the clawback, so invariant checks pass without errors. ### fixAMMOverflowOffer From 5e02c839ea622a304b14f9d6f9158095119b9933 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 15:58:49 -0800 Subject: [PATCH 18/19] update hash links and commit --- blog/2025/rippled-3.0.0.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blog/2025/rippled-3.0.0.md b/blog/2025/rippled-3.0.0.md index 0510d285473..2074f5453e7 100644 --- a/blog/2025/rippled-3.0.0.md +++ b/blog/2025/rippled-3.0.0.md @@ -27,17 +27,17 @@ On supported platforms, see the [instructions on installing or updating `rippled | Package | SHA-256 | |:--------|:--------| -| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.6.1-1.el9.x86_64.rpm) | `0fbbff570e962fea4df4d604cb848976fc9af9ebc34512a1002eb4866549850d` | -| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.6.1-1_amd64.deb) | `de3bfdae5fb95d922a4b5bffa5bc9441f1bc4bac15bd7b83f77f14166c65bb7e` | +| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-3.0.0-1.el9.x86_64.rpm) | `2e181c8e966e043e10e32f3b0e30184014b88c2b5b9513d07c0e13c605edf050` | +| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_3.0.0-1_amd64.deb) | `efbce53f39e2d94d74c3cfdb049758f8826aa5e0a2a246cd9b19e9246e7b4172` | 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: ```text -commit 70d5c624e8cf732a362335642b2f5125ce4b43c1 +commit 7527e35379a78901320b17a9a26c618e4384b1f6 Author: Ed Hennis -Date: Tue Sep 30 16:09:11 2025 -0400 +Date: Tue Dec 9 12:11:16 2025 -0500 - Set version to 2.6.1 + Set version to 3.0.0 ``` From ddafea0fe02450e344d0aeb01e971528bacc5173 Mon Sep 17 00:00:00 2001 From: Oliver Eggert Date: Tue, 9 Dec 2025 16:32:14 -0800 Subject: [PATCH 19/19] update date --- blog/2025/rippled-3.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2025/rippled-3.0.0.md b/blog/2025/rippled-3.0.0.md index 2074f5453e7..8db0bae5538 100644 --- a/blog/2025/rippled-3.0.0.md +++ b/blog/2025/rippled-3.0.0.md @@ -1,6 +1,6 @@ --- category: 2025 -date: "2025-12-08" +date: "2025-12-09" template: '../../@theme/templates/blogpost' seo: title: Introducing XRP Ledger version 3.0.0