Introducing XRP Ledger version 1.5.0

XRP Ledger ( rippled server) version 1.5.0 has been released. The rippled 1.5.0 release introduces several improvements and new features, including support for gRPC API, API versioning, UNL propagation via the peer network, new RPC methods validator_info and manifest , augmented submit method, improved tx method, improved CLI parsing, improved protocol-level handshaking protocol, improved package building and various other minor bug fixes and improvements.

Action Required

This release introduces two new amendments: fixQualityUpperBound and RequireFullyCanonicalSig . 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.5.0 by 2020-04-13, 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.

Impact of Not Upgrading

When one or both of the new amendments become enabled, any server on a version earlier than 1.5.0 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 amendments do 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:

For other platforms, please compile version 1.5.0 from source.

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

commit f00f263852c472938bf8e993e26c7f96f435935c Author: Carl Hua <carlhua@gmail.com> Date: Mon Mar 30 13:59:28 2020 -0400 Set version to 1.5.0

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, at 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

Compiling rippled 1.5.0 from source on any platform requires a compiler that supports the C++17 ISO standard and a compatible edition of the Boost C++ libraries. Version 1.5.0 of rippled is compatible with Boost versions 1.70.0 through 1.72.0.

1.5.0 Change Log

The RequireFullyCanonicalSig amendment which changes the signature requirements for the XRP Ledger protocol so that non-fully-canonical signatures are no longer valid. This protects against transaction malleability on all transactions, instead of just transactions with the tfFullyCanonicalSig flag enabled. Without this amendment, a transaction is malleable if it uses a secp256k1 signature and does not have tfFullyCanonicalSig enabled. Most signing utilities enable tfFullyCanonicalSig by default, but there are exceptions. With this amendment, no single-signed transactions are malleable. (Multi-signed transactions may still be malleable if signers provide more signatures than are necessary.) All transactions must use the fully canonical form of the signature, regardless of the tfFullyCanonicalSig flag. Signing utilities that do not create fully canonical signatures are not supported. All of Ripple's signing utilities have been providing fully-canonical signatures exclusively since at least 2014. For more information. ec137044a

amendment which changes the signature requirements for the XRP Ledger protocol so that non-fully-canonical signatures are no longer valid. This protects against transaction malleability on all transactions, instead of just transactions with the tfFullyCanonicalSig flag enabled. Without this amendment, a transaction is malleable if it uses a secp256k1 signature and does not have tfFullyCanonicalSig enabled. Most signing utilities enable tfFullyCanonicalSig by default, but there are exceptions. With this amendment, no single-signed transactions are malleable. (Multi-signed transactions may still be malleable if signers provide more signatures than are necessary.) All transactions must use the fully canonical form of the signature, regardless of the tfFullyCanonicalSig flag. Signing utilities that do not create fully canonical signatures are not supported. All of Ripple's signing utilities have been providing fully-canonical signatures exclusively since at least 2014. For more information. Native gRPC API support. Currently, this API provides a subset of the full rippled API. You can enable the gRPC API on your server with a new configuration stanza. 7d867b806

API. You can enable the gRPC API on your server with a new configuration stanza. API Versioning which allows for future breaking change of RPC methods to co-exist with existing versions. 2aa11fa41

Nodes now receive and broadcast UNLs over the peer network under various conditions. 2c71802e3

Augmented submit method to include additional details on the status of the command. 79e9085dd

method to include additional details on the status of the command. Improved tx method response with additional details on ledgers searched. 47501b7f9

method response with additional details on ledgers searched. New validator_info method which returns information pertaining to the current validator's keys, manifest sequence, and domain. 3578acaf0

method which returns information pertaining to the current validator's keys, manifest sequence, and domain. New manifest method which looks up manifest information for the specified key (either master or ephemeral). 3578acaf0

method which looks up manifest information for the specified key (either master or ephemeral). Introduce handshake protocol for compression negotiation (compression is not implemented at this point) and other minor improvements. f6916bfd4

Remove various old conditionals introduced by amendments. (51ed7db00 , 6e4945c56)

, Add getRippledInfo info gathering script to rippled Linux packages. acf4b7889

Bug Fixes

The fixQualityUpperBound amendment which fixes a bug in unused code for estimating the ratio of input to output of individual steps in cross-currency payments. 9d3626fec

amendment which fixes a bug in unused code for estimating the ratio of input to output of individual steps in cross-currency payments. tx method now properly fetches all historical tx if they are incorporated into a validated ledger under rules that applied at the time. 11cf27e00

method now properly fetches all historical tx if they are incorporated into a validated ledger under rules that applied at the time. Fix to how fail_hard flag is handled with the submit method - transactions that are submitted with the fail_hard flag that result in any TER code besides tesSUCCESS are neither queued nor held. cd9732b47

flag is handled with the method - transactions that are submitted with the flag that result in any TER code besides tesSUCCESS are neither queued nor held. Remove unused Beast code. 172ead822

code. Lag ratchet code fix to use proper ephemeral public keys instead of the long-term master public keys. 6529d3e6f

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:

Carl Hua carlhua@gmail.com

CJ Cobb ccobb@ripple.com

Devon White dwhite@ripple.com

Edward Hennis ed@ripple.com

Elliot Lee github.public@intelliot.com

Howard Hinnant howard.hinnant@gmail.com

Jeroen Meulemeester jeroen.meulemeester@gmail.com

John Freeman jfreeman08@gmail.com

John Northrup jnorthrup@ripple.com

Manoj doshi mdoshi@ripple.com

Mark Travis mtravis@ripple.com

mbhandary mayurbhandary96@gmail.com

Miguel Portilla miguelportilla@pobros.com

Mike Ellery mellery451@gmail.com

Mo Morsi mo@morsi.org

Nik Bougalis nikb@bougalis.net

p2peer dmitry@prometheanlabs.io

Peng Wang pwang200@gmail.com

Scott Schurr scott@ripple.com

seelabs scott.determan@yahoo.com

ShangyanLi shangyanli42@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.5.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.