Posted 2019-12-02 to

Introducing XRP Ledger version 1.4.0

XRP Ledger (rippled server) version 1.4.0 has been released. The XRP Ledger version 1.4.0 introduces several new features and overall improvements to the codebase, including the DeletableAccounts Amendment, which allows users to delete XRP Ledger accounts and recover some of their account base reserve in the process.

The 1.4.0 release also includes improved peer slot management, improved CI integration and package building and support for C++17 and Boost 1.71.

Finally, the 1.4.0 release removes the code for the SHAMapV2 Amendment, which failed to gain majority support and has been made obsolete by other improvements.

Action Required

If you operate an XRP Ledger server, then you should upgrade to XRP Ledger version 1.4.0 by Monday, 2019-12-16, to ensure service continuity.

Impact of Not Upgrading

Ripple expects the DeletableAccounts Amendment to become enabled no earlier than Monday, 2019-12-16. When this happens, if you are not running release 1.4.0 or greater, your server will become amendment blocked, meaning that it:

  • Cannot determine the validity of a ledger;
  • Cannot submit or process transactions;
  • Cannot participate in the consensus process;
  • Cannot vote on future amendments; and
  • Could rely on potentially invalid data.

If the DeletableAccounts Amendment does not become enabled, then your XRP Ledger server will not become Amendment blocked and should continue to operate.

Upgrading

For instructions on updating XRP Ledger on supported platforms, see here:

The SHA-256 hashes for the official packages are as follows:

Package SHA-256
Red Hat RPM (x86-64) 0a06914cca3b24ace8ab893fbf3af003df9e308501376f86b043e672024f044b
Ubuntu DEB (x86-64) 0ed0f6e80610ccf786cd35132a32a891cd648d37daab113bebda8c004fd9e881

For other platforms, please compile version 1.4.0 from source.

The first log entry should be the change setting the version:

commit 06c371544acc3b488b9d9c057cee4e51f6bef7a2
Author: Nik Bougalis <nikb@bougalis.net>
Date:   Mon Nov 25 22:58:03 2019 -0800
    Set version to 1.4.0

Network Update

The Ripple technical operations team plans to deploy version 1.4.0 to all XRP Ledger servers under its operational control, including private clusters, starting on Monday, 2019-12-02. At that time, Ripple plans to start voting in favor of the DeletableAccounts amendment. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.

Learn, ask questions, and discuss

Related documentation is available in the XRP Ledger Dev Portal, including detailed example API calls and web tools for API testing: https://xrpl.org

Other resources:

Other Information

Bug Bounties and Responsible Disclosures

As always, Ripple welcomes reviews of the XRP Ledger open source codebase and urges reviewers to responsibly disclose any issues that they may find. For more on Ripple's Bug Bounty program, please visit https://ripple.com/bug-bounty/.

Compilation Requirements & Compatibility

Starting with version 1.4.0, compiling the codebase from source on any platform requires a compiler that supports the C++17 ISO standard and version 1.70.0 of the Boost C++ libraries.

1.4.0 Change Log

New and Updated Features

  • The DeletableAccounts amendment which, if enabled, allow users to delete their XRP Ledger accounts and recover some of their base reserve.

  • Support for improved management of peer slots and the ability to add and remove reserved connections without requiring a restart of the server.

  • Tracking and reporting of cumulative and instantaneous peer bandwidth usage.

  • Preliminary support for post-processing historical shards after downloading to index their contents.

  • Reporting the master public key alongside the ephemeral public key in the validation stream subscriptions.

  • Reporting consensus phase changes in the server stream subscription.

Bug Fixes

  • The fixPayChanRecipientOwnerDir Amendment which corrects a minor technical flaw that would cause a payment channel to not appear in the recipient's owner directory, which made it unnecessarily difficult for users to enumerate all their payment channels.

  • The fixCheckThreading Amendment which corrects a minor technical flaw that caused checks to not be properly threaded against the account of the check's recipient.

  • Respect the ssl_verify configuration option in the SSLHTTPDownloader and HTTPClient classes.

  • Properly update the server_state when a server detects a disagreement between itself and the network.

  • Allow Ed25519 keys to be used with the channel_authorize command.

List of Commits:

  • Use signed artifacts in pkg pipeline (22ca0041b)

  • Document the minimum GCC version as 7 (4e8486874)

  • GPG Sign DEB and RPM packages generated by build pipeline (9e1ccb900)

  • Ensure permissions for initial config (e720a6607)

  • Make the HTTP response size const (7be7343e0)

  • Reject overlong encodings earlier (e26dd7bdf)

  • Don't use set in AccountObjects test (906b9ae00)

  • Report consensus phase changes in the server subscription stream (15c5f9c11)

  • Make Env::AppBundle constructor exception safe (726dd69ab)

  • Relax STTx test failure criterion (cd01502d1)

  • Omit downloader resolve test when it won't fail (b2317f8b4)

  • Allow channel_authorize to use Ed25519 keys (113167acf)

  • Introduce support for deletable accounts (a3a9dc26b)

  • Add deletion_blockers_only param to account_objects RPC command (7e7664c29)

  • Switch deadlock detector to steady_clock (3f45b8c3b)

  • Support for boost 1.71 (ca6d5798e)

  • Add omitted unit tests, cleanup old files (2110b2409)

  • Add option to enable -Wextra for gcc/clang. (82484e26f)

  • Small bug fixes in BuildLedger.cpp (ca47583a3)

  • Add metrics for PeerImp to track bandwidth usage (f4d6b0e1c)

  • Include validator's master public key in validation stream (9196d954)

  • CI: remove boost from MacOS / Hombrew (9a5911f94)

  • Fix startup error with --import (80acc85e5)

  • Fix VS2019 debug build (8ce1c189f)

  • Remove SHAMap V2 (7228b2e06)

  • Automatically update NodeDB path if changed (33ab0cd7b)

  • Add PayChan to recipient's owner directory (e33ac1d45)

  • Clarify Linux build instructions for configuring (826cbbc3b)

  • Cleanup usage of ScopedUnlock (d9bb78c8b)

  • Modularize cmake build config (905f631b7)

  • Honor SSL config settings for ValidatorSites (9213c49ca)

  • Clarify online delete data error message (a6944be5c)

  • Update operating mode upon network disagreement (e5b61c9ac)

  • Add Destination to Check threading (a9a4e2c8f)

  • Fix rand_int assert in shard store (56eac5c9a)

  • Log database connection error (4b1970afa)

  • Add shard thread safety (22c9de487)

  • Implement Shard SQLite support (66fad62e6)

  • Improve CI and packaging (008fc515)

  • Disable shadow warning (06219f115)

  • Simplify code using if constexpr (c2d2ba9f4)

  • Replace from_string_checked pair return type with optional (1eb3753f2)

  • Replace strUnHex pair return type with optional (0a256247a)

  • Use structured bindings in some places (7912ee6f7)

  • Replace unordered_map::emplace with insert_or_assign (9c58f23cf)

  • Use std::gcd to implement lowestTerms (9245b0b66)

  • Use [[fallthrough]] in some switch statements (92925a0af)

  • remove make_Amounts (70c2e1b41)

  • Use class template argument deduction for locks (5d1728cc9)

  • Replace for_each_arg trick with fold expressions (4076b6d92)

  • Fix shadowing variables (b9e73b485)

  • Remove unused member variable (014df67fe)

  • Build packages with gcc-8 (014ec021b)

  • Fix jenkins/travis CI (7fa9b91d2)

  • Add "sahyadri.isrdc.in" to list of bootstrap nodes (c04c00d27)

  • Update README.md (ef139e8b3)

  • Warn if the update script is not executed as root (45c1c3899)

  • Modernize code and clean up out-of-date or obsolete comments (1942fee58)

  • Remove unused TER code from StrandResult (b3c85e270)

  • Use enums for some parameters in payments (561942da2)

  • Enable C++17 (c217baa36)

  • Fix incorrect snapShot unsharing (c699864c8)

  • Remove unneeded and unused base classes in insight (4ff0f482c)

  • Enhance AccountTx unit test (28b942b18)

  • Update appveyor dependencies for boost 1.70 (4900e3081)

  • Add policy check to FindBoost (145326c00)

  • Update to current SOCI HEAD (c7d90bfdd)

  • Fix io_latency_probe test on CI environments (bfa84cfca)

  • Set minimum versions for gcc/clang (cbc6e500b)

  • Travis CI improvements (13a4fefe3)

  • Add support for reserved peer slots (87e9ee5ce)

  • Fix GitLab CI (20cc5df5f)

  • Fix shard path detection (9e117b7b3)

  • Move shard store init to Application (a02d91409)

  • Remove SQLite Validations table (c5a95f1eb)

Contributions

GitHub

The public git repository for rippled is hosted on GitHub: https://github.com/ripple/rippled

We welcome contributions, big and small, and invite everyone to join the community of XRP Ledger developers and help us build the Internet of Value.

Credits

The following people contributed directly to this release:

  • Alloy Networks 45832257+alloyxrp@users.noreply.github.com

  • Devon White devon@prometheanlabs.io

  • Edward Hennis ed@ripple.com

  • Elliot Lee github.public@intelliot.com

  • Howard Hinnant howard.hinnant@gmail.com

  • John Freeman jfreeman08@gmail.com

  • John Northrup jnorthrup@ripple.com

  • Joseph Busch jbusch@ripple.com

  • Manoj Doshi mdoshi@ripple.com

  • Mark Travis mtravis@ripple.com

  • Miguel Portilla miguelportilla@pobros.com

  • Mike Ellery mellery451@gmail.com

  • Mo Morsi mo@morsi.org

  • Nik Bougalis nikb@bougalis.net

  • Rome Reginelli rome@ripple.com

  • Scott Schurr scott@ripple.com

  • seelabs scott.determan@yahoo.com

  • Vishwas Patil ivishwas@gmail.com

  • Yusuf Sahin HAMZA yusufsahinhamza@gmail.com

Lifetime Contributors

The following is the list of people who made code contributions, large and small, to XRP Ledger prior to the release of 1.4.0:

Aishraj Dahal, Alex Chung, Alex Dupre, Alloy Networks, Andrey Fedorov, Arthur Britto, Bharath Chari, Bob Way, Brad Chase, Brandon Wilson, Bryce Lynch, Casey Bodley, Christian Ramseier, crazyquark, Crypto Brad Garlinghouse, David Grogan, David 'JoelKatz' Schwartz, Devon White, Donovan Hide, Edward Hennis, Elliot Lee, Eric Lombrozo, Ethan MacBrough, Evan Hubinger, Frank Cash, Howard Hinnant, Ian Roskam, invalidator, Jack Bond-Preston, James Fryman, jatchili, Jcar, Jed McCaleb, Jeff Trull, Jesper Wallin, Joe Loser, Johanna Griffin, John Freeman, John Northrup, Joseph Busch, Josh Juran, Justin Lynn, Keaton Okkonen, Lazaridis, Lieefu Way, Luke Cyca, Manoj Doshi, Mark Travis, Markus Teufelberger, Miguel Portilla, Mike Ellery, MJK, Mo Morsi, Nicholas Dudfield, Nikolaos D. Bougalis, Niraj Pant, Patrick Dehne, Roberto Catini, Rome Reginelli, Scott Determan, Scott Schurr, S. Matthew English, Stefan Thomas, The Gitter Badger, Ties Jan Hefting, Tim Lewkow, Tom 'Swirly' Ritchford, Torrie Fischer, Vahe Hovhannisyan, Vinnie Falco, Vishwas Patil, Warren Paul Anderson, Will, wltsmrz, Wolfgang Spraul, Yana Novikova and Yusuf Sahin HAMZA.

For a real-time view of all contributors, including links to the commits made by each, please visit the "Contributors" section of the GitHub repository: https://github.com/ripple/rippled/graphs/contributors.

As XRP Ledger continues to move through the 1.0 series, we look forward to more external contributions and are excited to see the broader XRP Ledger community grow and thrive.