Skip to content

rippled (XRP Ledger server) Version 1.10.0

Compare
Choose a tag to compare
@intelliot intelliot released this 14 Mar 18:20
· 398 commits to master since this release
07f047b

Version 1.10.0 of rippled, the reference server implementation of the XRP Ledger protocol, is now available. This release introduces six new amendments, detailed below, and cleans up code to improve performance.

Sign Up for Future Release Announcements

Action Required

Six new amendments are now open for voting according to the XRP Ledger's amendment process, which enables protocol changes following two weeks of >80% support from trusted validators.

If you operate an XRP Ledger server, upgrade to version 1.10.0 by March 21 to ensure service continuity. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network.

Install / Upgrade

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

New Amendments

  • featureImmediateOfferKilled: Changes the response code of an OfferCreate transaction with the tfImmediateOrCancel flag to return tecKILLED when no funds are moved. The previous return code of tecSUCCESS was unintuitive. #4157

  • featureDisallowIncoming: Enables an account to block incoming checks, payment channels, NFToken offers, and trust lines. #4336

  • featureXRPFees: Simplifies transaction cost calculations to use XRP directly, rather than calculating indirectly in "fee units" and translating the results to XRP. Updates all instances of "fee units" in the protocol and ledger data to be drops of XRP instead. #4247

    • BREAKING CHANGE: If this amendment is enabled, the fee_ref field will be removed from the Ledger subscription stream, as it will no longer be relevant.
  • fixUniversalNumber: Simplifies and unifies the code for decimal floating point math. In some cases, this provides slightly better accuracy than the previous code, resulting in calculations whose least significant digits are different than when calculated with the previous code. The different results may cause other edge case differences where precise calculations are used, such as ranking of offers or processing of payments that use several different paths. #4192

  • fixNonFungibleTokensV1_2: This amendment is a combination of NFToken fixes. #4417

    • Fixes unburnable NFTokens when it has over 500 offers. #4346
    • Fixes 3 NFToken offer acceptance issues. #4380
    • Prevents brokered sales of NFTokens to owners. #4403
    • Only allows the destination to settle NFToken offers through brokerage. #4399
  • fixTrustLinesToSelf: Trust lines must be between two different accounts, but two exceptions exist because of a bug that briefly existed. This amendment removes those trust lines. 69bb2be

Changelog

New Features and Improvements

  • Improve Handshake in the peer protocol: Switched to using a cryptographically secure PRNG for the Instance Cookie. rippled now uses hex encoding for the Closed-Ledger and Previous-Ledger fields in the Handshake. Also added --newnodeid and --nodeid command line options. 5a15229

  • RPC tooBusy response now has 503 HTTP status code: Added ripplerpc 3.0, enabling RPC tooBusy responses to return relevant HTTP status codes. This is a non-breaking change that only applies to JSON-RPC when you include "ripplerpc": "3.0" in the request. #4143

  • Use the Conan package manager: Added a conanfile.py and Conan recipe for Snappy. Removed the RocksDB recipe from the repo; you can now get it from Conan Center. #4367, c2b03fe

  • Update Build Instructions: Updated the build instructions to build with the Conan package manager and restructured info for easier comprehension. #4376, #4383

  • Revise CONTRIBUTING: Updated code contribution guidelines. rippled is an open source project and contributions are very welcome. #4382

  • Update documented pathfinding configuration defaults: 417cfc2 changed the default Path Finding configuration values, but missed updating the values documented in rippled-example.cfg. Updated those defaults and added recommended values for nodes that want to support advanced pathfinding. #4409

  • Remove gRPC code previously used for the Xpring SDK: Removed gRPC code used for the Xpring SDK. The gRPC API is also enabled locally by default in rippled-example.cfg. This API is used for Reporting Mode and Clio. 28f4cc7

  • Switch from C++17 to C++20: Updated rippled to use C++20. 92d35e5

  • Support for Boost 1.80.0:: 04ef885

  • Reduce default reserves to 10/2: Updated the hard-coded default reserves to match the current settings on Mainnet. #4329

  • Improve self-signed certificate generation: Improved speed and security of TLS certificate generation on fresh startup. 0ecfc7c

Bug Fixes

  • Update command-line usage help message: Added manifest and validator_info to the rippled CLI usage statement. b88ed5a

  • Work around gdb bug by changing a template parameter: Added a workaround for a bug in gdb, where unsigned template parameters caused issues with RTTI. #4332

  • Fix clang 15 warnings: #4325

  • Catch transaction deserialization error in doLedgerGrpc: Fixed an issue in the gRPC API, so Clio can extract ledger headers and state objects from specific transactions that can't be deserialized by rippled code. #4323

  • Update dependency: gRPC: New Conan recipes broke the old version of gRPC, so the dependency was updated. #4407

  • Fix Doxygen workflow: Added options to build documentation that don't depend on the library dependencies of rippled. #4372

  • Don't try to read SLE with key 0 from the ledger: Fixed the preclaim function to check for 0 in NFTokenSellOffer and NFTokenBuyOffer before calling Ledger::read. This issue only affected debug builds. #4351

  • Update broken link to hosted Doxygen content: 5e1cb09

Code Cleanup

  • Prevent unnecessary shared_ptr copies by accepting a value in SHAMapInnerNode::setChild: #4266

  • Release TaggedCache object memory outside the lock: 3726f8b

  • Rename SHAMapStoreImp::stopping() to healthWait(): 7e9e910

  • Improve wrapper around OpenSSL RAND: 7b3507b

  • Improve AccountID string conversion caching: Improved memory cache usage. e2eed96

  • Build the command map at compile time: 9aaa0df

  • Avoid unnecessary copying and dynamic memory allocations: d318ab6

  • Use constexpr to check memo validity: e67f905

  • Remove charUnHex: 83ac141

  • Remove deprecated AccountTxOld.cpp: ce64f7a

  • Remove const_cast usage: 23ce431

  • Remove inaccessible code paths and outdated data format wchar_t: 95fabd5

  • Improve move semantics in Expected: #4326

GitHub

The public source code repository for rippled is hosted on GitHub at https://github.com/XRPLF/rippled.

We welcome all contributions and invite everyone to join the community of XRP Ledger developers to help build the Internet of Value.

Credits

The following people contributed directly to this release:

Security Bug Bounty Acknowledgements:

  • Aaron Hook
  • Levin Winter

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: