@mDuo13 mDuo13 released this May 23, 2016 · 2987 commits to develop since this release

rippled 0.27.0 has been released. The commit can be found on GitHub at: https://github.com/ripple/rippled/tree/0.27.0

Prior to building, please confirm you have the correct source tree with the git log command. The first log entry should be the change setting the version:

 commit c6c8e5d70c6fbde02cd946135a061aa77744396f
 Author: Vinnie Falco <vinnie.falco@gmail.com>
 Date:   Mon Jan 26 10:56:11 2015 -0800

     Set version to 0.27.0

This release incorporates a number of important bugfixes and functional improvements. Please refer to the Git commit history for more detailed information.

Release Overview

The rippled team is proud to release rippled 0.27.0. This new version includes many exciting features that will appeal to our users. The team continues to work on stability, scalability, and performance.

The first feature is Online Delete. This feature allows rippled to maintain it’s database of previous ledgers within a fixed amount of disk space. It does this while allowing rippled to stay online and maintain an administrator specify minimum number of ledgers. This means administrators with limited disk space will no longer need to manage disk space by periodically manually removing the database. Also, with the previously existing backend databases performance would gradually degrade as the database grew in size. In particular, rippled would perform poorly whenever the backend database performed ever growing compaction operations. By limiting rippled to less history, compaction is less resource intensive and systems with less disk performance can now run rippled.

Additionally, we are very excited to include Universal Port. This feature allows rippled's listening port to handshake in multiple protocols. For example, a single listening port can be configured to receive incoming peer connections, incoming RPC commands over HTTP, and incoming RPC commands over HTTPS at the same time. Or, a single port can receive both Websockets and Secure Websockets clients at the same.

Finally, a new, experimental backend database, NuDB, has been added. This database was developed by Ripple Labs to take advantage of rippled’s specific data usage profile and performs much better than previous databases. Significantly, this database does not degrade in performance as the database grows. Very excitingly, this database works on OS X and Windows. This allows rippled to use these platforms for the first time.

Toolchain support

The minimum supported version of GCC used to compile rippled is v4.8. Please follow these instructions if you have not upgraded already.

While it may be possible to compile rippled on (virtual) machines with 4GB of RAM, we recommend compiling on (virtual) machines with 8GB of RAM or more. If your build machine has more than one CPU (grep '^processor' /proc/cpuinfo | wc -l), you can use them to assist in the build process by compiling with the command scons -j[number of CPUs - 1].

The minimum supported version of Boost is v1.57.0. You must upgrade to this release or later to successfully compile this release of rippled. Please follow these instructions if you have not upgraded already.

Important rippled.cfg Update

The format of the configuration file has changed. If upgrading from a previous version of rippled, please see the migration instructions below.

New Features

  • SHAMapStore Online Delete (RIPD-415): Makes rippled configurable to support deletion of all data in its key-value store (nodestore) and ledger and transaction SQLite databases based on validated ledger sequence numbers. See doc/rippled-example.cfg for configuration setup.
  • Universal Port. See necessary config changes below.
  • Config "ledger_history_index" option (RIPD-559)

Bug Fixes

  • Fix pathfinding with multiple issuers for one currency (RIPD-618)
  • Fix account_lines, account_offers and book_offers result (RIPD-682)
  • Fix pathfinding bugs (RIPD-735)
  • Fix RPC subscribe with multiple books (RIPD-77)
  • Fix account_tx API


  • Improve the human-readable description of the tesSUCCESS code
  • Add 'delivered_amount' to Transaction JSON (RIPD-643): The synthetic field 'delivered_amount' can be used to determine the exact amount delivered by a Payment without having to check the DeliveredAmount field, if present, or the Amount field otherwise.

Development-Related Updates

  • HTTP Handshaking for Peers on Universal Port (RIPD-446)
  • Use asio signal handling in Application (RIPD-140)
  • Build dependency on Boost 1.57.0
  • Support a "no_server" flag in test config
  • API for improved Unit Testing (RIPD-432)
  • Option to specify rippled path on command line (--rippled=)


  • NuDB backend option: high performance key/value database optimized for rippled (set “type=nudb” in .cfg)

Migration Instructions

With rippled version 0.27.0, the rippled.cfg file must be changed according to these instructions:

  • Add new stanza - [server]. This section will contain a list of port names and key/value pairs. A port name must start with a letter and contain only letters and numbers. The name is not case-sensitive. For each name in this list, rippled will look for a configuration file section with the same name and use it to create a listening port. To simplify migration, you can use port names from your previous version of rippled.cfg (see Section 1. Server for detailed explanation in doc/rippled-example.cfg). For example:
 ssl_key = <set value to your current [rpc_ssl_key] or [websocket_ssl_key] setting>
 ssl_cert = <set value to your current [rpc_ssl_cert] or [websocket_ssl_cert] setting>
 ssl_chain = <set value to your current [rpc_ssl_chain] or [websocket_ssl_chain] setting>
  • For each port name in [server] stanza, add separate stanzas. For example:
 port = <set value to your current [rpc_port] setting, usually 5005>
 ip = <set value to your current [rpc_ip] setting, usually>
 admin = allow
 protocol = https

 port = <set value to your current [peer_port], usually 51235>
 ip = <set value to your current [peer_ip], usually>
 protocol = peer

 port = <your current [websocket_port], usually 6006>
 ip = <your current [websocket_ip], usually>
 admin = allow
 protocol = wss
  • Remove current [rpc_port], [rpc_ip], [rpc_allow_remote], [rpc_ssl_key], [rpc_ssl_cert], and [rpc_ssl_chain], [peer_port], [peer_ip], [websocket_port], [websocket_ip] settings from rippled.cfg
  • If you allow untrusted websocket connections to your rippled, add [websocket_public_port] stanza under [server] section and replace websocket public settings with [websocket_public_port] section:
 port = <your current [websocket_public_port], usually 5005>
 ip = <your current [websocket_public_ip], usually>
 protocol = ws ← make sure this is ws, not wss`
  • Remove [websocket_public_port], [websocket_public_ip], [websocket_ssl_key], [websocket_ssl_cert], [websocket_ssl_chain] settings from rippled.cfg
  • Disable [ssl_verify] section by setting it to 0
  • Migrate the remaining configurations without changes. To enable online delete feature, check Section 6. Database in doc/rippled-example.cfg

Integration Notes

With this release, integrators should deprecate the "DeliveredAmount" field in favor of "delivered_amount."

For Transactions That Occurred Before January 20, 2014:

  • If amount actually delivered is different than the transactions “Amount” field
  • "delivered_amount" will show as unavailable indicating a developer should use caution when processing this payment.
  • Example: A partial payment transaction (tfPartialPayment).
  • Otherwise
  • "delivered_amount" will show the correct destination balance change.

For Transactions That Occur After January 20, 2014:

  • If amount actually delivered is different than the transactions “Amount” field
  • A "delivered_amount" field will determine the destination amount change
  • Example: A partial payment transaction (tfPartialPayment).
  • Otherwise
  • "delivered_amount" will show the correct destination balance change.


For assistance, please contact integration@ripple.com

More information

For more information or assistance, the following resources will be of use:

Assets 2