Introducing XRP Ledger version 1.6.0
XRP Ledger (rippled
server) version 1.6.0 has been released. This release introduces several new features including changes to the XRP Ledger's consensus mechanism to make it even more robust in adverse conditions, as well as numerous bug fixes and optimizations. (This post has been updated with recommendations for upgrading.)
Action Required
This release introduces three new amendments to the XRP Ledger protocol: fixAmendmentMajorityCalc, HardenedValidations, and fix1781. These 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, then you should upgrade to version 1.6.0 by 2020-09-02, to ensure service continuity. The exact time that protocol changes take effect could be on that date or later, depending on the voting decisions of the decentralized network.
If you operate an XRP Ledger validator, please learn more about these amendments so you can make informed decisions about if and when your validator should support them. If you take no action, your validator begins voting in favor of the new amendments as soon as it has been upgraded.
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 |
---|---|
RPM for Red Hat / CentOS (x86-64) | 894d1a7a4713bfbf16264dbef9e0958a25572e0f1fce588d5a8c00452fb68115 |
DEB for Ubuntu / Debian (x86-64) | 1d29124623bd81ba6eaf8a74bf7e14a18c511312d29213bfa6dc3351d30eedba |
For other platforms, please compile version 1.6.0 from source.
The first log entry should be the change setting the version:
commit 01bd5a2646cda78ee09d2067c287c8f89872736d Author: manojsdoshi <[email protected]> Date: Tue Aug 18 15:32:50 2020 -0700 Set version to 1.6.0
Change Summary
New and Improved Features
Initial implementation of Negative UNL functionality: This change can improve the liveness of the network during periods of network instability, by allowing servers to track which validators are temporarily offline and to adjust quorum calculations to match. This change requires an amendment, but the amendment is not in the 1.6.0 release. Ripple expects to run extensive public testing for Negative UNL functionality on the Devnet in the coming weeks. If public testing satisfies all requirements across security, reliability, stability, and performance, then the amendment could be included in a version 2.0 release. [#3380]
Validation Hardening: This change allows servers to detect accidental misconfiguration of validators, as well as potentially Byzantine behavior by malicious validators. Servers can now log a message to notify operators if they detect a single validator issuing validations for multiple, incompatible ledger versions, or validations from multiple servers sharing a key. As part of this update, validators report the version of
rippled
they are using, as well as the hash of the last ledger they consider to be fully validated, in validation messages. [#3291]Software Upgrade Monitoring & Notification: After the
HardenedValidations
amendment is enabled and the validators begin reporting the versions ofrippled
they are running, a server can check how many of the validators on its UNL run a newer version of the software than itself. If more than 60% of a server's validators are running a newer version, the server writes a message to notify the operator to consider upgrading their software. [#3447]Link Compression: Beginning with 1.6.0, server operators can enable support for compressing peer-to-peer messages. This can save bandwidth at a cost of higher CPU usage, which should prove useful for servers with a large number of peers. This support is disabled by default and can be enabled in your server's config file. [#3287]
Unconditionalize Amendments that were enabled in 2017: This change removes legacy code which the network has not used since 2017. This change limits the ability to replay ledgers that rely on the pre-2017 behavior. [#3292]
New Health Check Method: Perform a simple HTTP request to get a summary of the health of the server: Healthy, Warning, or Critical. [#3365]
Start work on API version 2. Version 2 of the API will be part of a future release. The first breaking change will be to consolidate several closely related error messages that can occur when the server is not synced into a single "notSynced" error message. [#3269]
Improved shard concurrency: Improvements to the shard engine have helped reduce the lock scope on all public functions, increasing the concurrency of the code. [#3251]
Default Port: In the config file, the
[ips_fixed]
and[ips]
stanzas now use the IANA-assigned port for the XRP Ledger protocol (2459) when no port is specified. Theconnect
API method also uses the same port by default. [#2861].Improve proposal and validation relaying. The peer-to-peer protocol always relays trusted proposals and validations (as part of the consensus process), but only relays untrusted proposals and validations in certain circumstances. This update adds configuration options so server operators can fine-tune how their server handles untrusted proposals and validations, and changes the default behavior to prioritize untrusted validations higher than untrusted proposals. [#3391]
Various Build and CI Improvements including updates to RocksDB 6.7.3 [#3356], NuDB 2.0.3 [#3437], adjusting CMake settings so that rippled can be built as a submodule [#3449], and adding Travis CI settings for Ubuntu Bionic Beaver [#3319].
Better documentation in the config file for online deletion and database tuning. [#3429]
Bug Fixes
- Fix the 14 day timer to enable amendment to start at the correct quorum size [#3396]
- Improve online delete backend lock which addresses a possibility in the online delete process where one or more backend shared pointer references may become invalid during rotation. [#3342]
- Address an issue that can occur during the loading of validator tokens, where a deliberately malformed token could cause the server to crash during startup. [#3326]
- Add delivered amount to GetAccountTransactionHistory. The delivered_amount field was not being populated when calling GetAccountTransactionHistory. In contrast, the delivered_amount field was being populated when calling GetTransaction. This change populates delivered_amount in the response to GetAccountTransactionHistory, and adds a unit test to make sure the results delivered by GetTransaction and GetAccountTransactionHistory match each other. [#3370]
- Fix build issues for GCC 10 [#3393]
- Fix historical ledger acquisition - this fixes an issue where historical ledgers were acquired only since the last online deletion interval instead of the configured value to allow deletion.[#3369]
- Fix build issue with Docker #3416]
- Add Shard family. The App Family utilizes a single shared Tree Node and Full Below cache for all history shards. This can create a problem when acquiring a shard that shares an account state node that was recently cached from another shard operation. The new Shard Family class solves this issue by managing separate Tree Node and Full Below caches for each shard. #3448]
- Amendment table clean up which fixes a calculation issue with majority. #3428]
- Add the
ledger_cleaner
command to rippled command line help [#3305] - Various typo and comments fixes.
New Commits in This Release
2b4486837
Set version to 1.6.0-rc3f79a4a8cd
Revert "Remove CryptoConditionsSuite stub amendment:"7bb6b75f3
Use the correct root hash for the tx treee5d17a945
Set version to 1.6.0-rc2dbd5f0073
Revert support for deterministic shards:12c0e8148
Improve naming of fields associated with the NegativeUNL72a9a2bdb
Reorder the Travis build:80860fa8f
Add preliminary support for Boost 1.748cf542abb
Fix memory management issues with checkpointers:a931b020b
Switch to updated date library exception handling:d317060ae
Fix a race condition with TrustedPublisherServer:eee07a4f9
Add missing cstdint include7b048b423
Set version to 1.6.0-rc1a45920684
Set version to 1.6.0-b93a3b0b4c1
Modify health check APIde0c52738
Set version to 1.6.0-b8b54453d1a
Fix a build issue caused by pip3 being unavailable706ca874b
Implement negative UNL functionality:51bd4626b
Implement version upgrade warning:cf6f40ea8
Deprecate unused/obsolete error codes:d3798f629
Remove CryptoConditionsSuite stub amendment:4e33a1abf
crawl_shards comment fix86e8f2e23
Add Shard Family91e857874
Improve LedgerMaster shard acquisition8f50fd051
Use NuDB version 2.0.394e8e9475
Add support for deterministic database shards (#2688):54ece72b6
Update cmake so that rippled can build as a submodule4702c8b59
Improve online_delete configuration and DB tuning:00702f28c
Improve reporting of ledger age in server_infodf29e98ea
Improve amendment processing and activation logic:fe9922d65
Improve compression support:362a017ee
Cleanup SHAMap and simplify interfaces:e8f352522
Improve Slice:1067086f7
Consolidate "Not Synced" error messages:0214d83aa
Improve handling of empty buffer in varint parsing (RIPD-1683)d69a90287
Add comments to protobuf filesf43aeda49
Set version to 1.6.0-b727484f78a
Use libarchive version 3.4.393bf77bde
Unit tests for database shards728651b5d
Use LZ4_decompress_safefb74eefa9
Update LZ4 library to 1.9.2853c96419
Fix a build issue caused by the latest Docker version: * The latest docker version is not supported by artifactory causing the package build to fail. Setting the docker version to 19.03.8 to fix the build.645c06764
Update the default port for [ips] and [ips_fixed]:2d23e7bd1
Use std::size in place of std::extent0290d0b82
Create health_check rpc3d86b49da
Set version to 1.6.0-b60b9e93580
Find date::date in CMake package configuration file17412d17e
Fix historical ledger acquisition when using online deletion:99f519369
Disable formatting operator&:328e42ad4
Minor cleanups:6d28f2a8d
Cleanup code using move semantics421417ab0
Fixes for gcc 1068494a308
AmendmentTable improvements16f79d160
Add delivered amount to GetAccountTransactionHistory responses8f984042f
Try to fix usage of pkg-config for static linkingeb1a699c5
Fix typo in error messageac766ec0e
Introduce ShardArchiveHandler improvements:21340a1c1
Validate LastLedgerHash for downloaded shards:c594f3b0c
Reduce visibility of retired amendment identifiers:268e28a27
Tune relaying of untrusted proposals & validations:ca664b17d
Improve handling of sfLedgerSequence field:3936110c8
Use boost::circular_buffer:9f91870b1
Adjust frequency of mtENDPOINTS messages97712107b
Set version to 1.6.0-b5d9fa14868
Revert "Add PR automation for project boards"d88a7c73b
Improve online delete backend locking894d3463c
Extend unit testing of account_tx with deleted account:5b5226d51
Cleanup the 'PeerSet' hierarchy:d025f3fb2
Add descriptive comments to 'getRippledInfo.sh':11be30dd4
Correct typo in comment4fad421c8
Correct typos in SECURITY.md57b3543e7
Support boost 1.73a00543b6b
Fix docs about misconfigured neighbor portdbd25f0e3
Remove excessive redirect call on PeerManager62a3f33d7
Remove the built-in "sustain" watchdog:74f9edef0
Prefer keylets instead of naked hashes:dbee3f01b
Clean up and modernize code:6c72d5cf7
Improve loading of validator tokens (RIPD-1687):2827de4d6
Report the server version in published validations:381606aba
Harden validations:567e42e07
Deprecate 'Time to Live' fields2bf3b194f
Set version to 1.6.0-b4444ea5618
Adding support to build rippled packages for ubuntu 20.04d79758916
Add README for gRPC protobuf folder1577c775b
Close download socket before result is passed to the callback:3bf0b724a
Adjust timeouts in Validator Site tests:bd8dbb87b
Update to RocksBD 6.7.3cd78ce311
Add PR automation for project boards023f5704d
Set version to 1.6.0-b3123e94c60
Fix a build issue involving Ubuntu Docker containers:156dc2ec4
Add GitHub Action for checking w/ clang-format-10b7b7e098b
Add .git-blame-ignore-revs (requires Git >= 2.24)50760c693
Format first-party source according to .clang-format65dfc5d19
Prepare code for formatting020b28580
Set version to 1.6.0-b2bdd22e4d5
Improve reporting of missing node exceptionsb7631d2a2
Correct a typo that could result in a nullptr dereference284ed3847
Reduce calls to std::random_device:b96ef6adb
Add SECURITY.md to the repositoryce6b42720
Fix a build issue involving Ubuntu Docker containers:858e93c7f
Improve the Doxygen Workflow6477bdf3e
Fix division by zero with shards file statsce5f24055
Fix invalid shard removal1c3c69f8b
Update Travis to bionicbe2652544
Add ledger_cleaner command to rippled cmd line helpf155eaff4
Unit test for memo67981f002
Reduce strand re-execute log message severity to warning:0d8322344
Remove conditionals for fix1201 enabled 14Nov20179f8d64851
Remove conditionals for fix1512 enabled 14Nov20173d3b6d85c
Remove conditionals for fix1523 enabled 14Nov20178cf7c9548
Remove conditionals for fix1528 enabled 14Nov2017323dbc796
Remove conditionals for featureSortedDirectories enabled 14Nov201746a76fb31
Remove conditionals for featureEnforceInvariants enabled 07Jul2017a6246b0ba
Remove conditionals for fix1373 enabled 07Jul2017c8282795e
Remove conditionals for featureEscrow enabled 31Mar2017e93a44fe9
Remove conditionals for fix1368 enabled 31Mar20173e870866e
Remove conditionals for featurePayChan enabled 31Mar201778d771af3
Remove conditionals for featureTickSize enabled 21Feb20176bb9dd22e
Remove conditionals for featureCryptoConditions enabled 03Jan20171661c84af
Remove unused featureCompareFlowV1V24f422f6f3
Setting version to 1.6.0-b1393ca8757
Change the location for the project signer public keys:f4c56cbd5
Update SHAMap Documentation9470558ec
Remove all uses of the name scoped_lockf22fcb3b2
Rename canonicalize into two functions:e257a226f
Maintain history back to the earliest persisted ledger:a4e987879
Document the 'devnet' network identifier setting:25b13978e
Fix unity build3e9cff928
Fix Doxygen build758a3792e
Add protocol message compression support:ade5eb71c
Fix unneeded copies in range some range for loops:d097819c5
Check XRP endpoints for circular paths (RIPD-1781):905a97e0a
Make ShardArchiveHandler downloads more resilient:cc452dfa9
Improve shard concurrency:
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 [email protected]
- Carl Hua [email protected]
- CJ Cobb [email protected]
- Devon White [email protected]
- Edward Hennis [email protected]
- Elliot Lee [email protected]
- Gábor Lipták [email protected]
- Gregory Tsipenyuk [email protected]
- Howard Hinnant [email protected]
- John Freeman [email protected]
- Kirill Fomichev [email protected]
- Manoj Doshi [email protected]
- Mark Travis [email protected]
- Markus Alvila
- Miguel Portilla [email protected]
- Mo Morsi [email protected]
- Nik Bougalis [email protected]
- p2peer [email protected]
- Peng Wang [email protected]
- rabbit (Rabbit Kick Club)
- Rome Reginelli [email protected]
- Scott Schurr [email protected]
- Scott Determan [email protected]
- Yusuf Sahin HAMZA [email protected]
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.6.0:
Aishraj Dahal, Alex Chung, Alex Dupre, Alloy Networks, Andrey Fedorov, Arthur Britto, Bharath Chari, Bob Way, Brad Chase, Brandon Wilson, Bryce Lynch, Carl Hua, Casey Bodley, Christian Ramseier, CJ Cobb, 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, Gábor Lipták, Gregory Tsipenyuk, Howard Hinnant, Ian Roskam, invalidator, Jack Bond-Preston, James Fryman, jatchili, Jcar, Jed McCaleb, Jeff Trull, Jeroen Meulemeester, Jesper Wallin, Joe Loser, Johanna Griffin, John Freeman, John Northrup, Joseph Busch, Josh Juran, Justin Lynn, Keaton Okkonen, Kirill Fomichev, Lazaridis, Lieefu Way, Luke Cyca, Manoj Doshi, Mark Travis, Markus Alvila, Markus Teufelberger, Mayur Bhandary, Miguel Portilla, Mike Ellery, MJK, Mo Morsi, Nicholas Dudfield, Nikolaos D. Bougalis, Niraj Pant, p2peer, Patrick Dehne, Peng Wang, Roberto Catini, Rome Reginelli, Scott Determan, Scott Schurr, S. Matthew English, Stefan Thomas, ShangyanLi, 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.