Skip to content

rippled Version 0.20.1

Compare
Choose a tag to compare
@mDuo13 mDuo13 released this 23 May 23:50
· 5167 commits to develop since this release

rippled version 0.20.1 has been released. This release is currently the tip of the develop branch and the tag is 0.20.1.

This is a critical release. All partners should update immediately.

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 95a573b755219d7e1e078d53b8e11a8f0d7cade1
Author: Vinnie Falco <vinnie.falco@gmail.com>
Date:   Wed Jan 8 17:08:27 2014 -0800

   Set version to 0.20.1

Major Partner Issues Fixed

  • rippled will crash randomly.
  • Entries in the three parts of the order book are missing or do not match. In such a case, rippled will crash.
  • Server loses sync randomly.
  • This is due to rippled restarting after it crashes. That the server restarted is not obvious and appears to be something else.
  • Server goes 'offline' randomly.
  • This is due to rippled restarting after it crashes. That the server restarted is not obvious and appears to be something else.
  • complete_ledgers part of server_info output says "None".
  • This is due to rippled restarting and reconstructing the ledger after it crashes.
  • If the node back end is corrupted or has been moved without being renamed in rippled.cfg, this can cause rippled to crash and restart.

Toolchain support

Starting with this release, the minimum supported version of GCC used to compile rippled is v4.8.

Significant Changes

  • Don't log StatsD messages to the console by default.
  • Fixed missing jtACCEPT job limit.
  • Removed dead code to clean up the codebase.
  • Reset liquidity before retrying rippleCalc.
  • Made improvements becuase items in SHAMaps are immutable.
  • Multiple pathfinding bugfixes:
  • Make each path request track whether it needs updating.
  • Improve new request handling, reverse order for processing requests.
  • Break to handle new requests immediately.
  • Make mPathFindThread an integer rather than a bool. Allow two threads.
  • Suspend processing requests if server is backed up.
  • Multiple performance improvements and enhancements.
  • Fixed locking.
  • Refactored codebase to make it C++11 compliant.
  • Multiple fixes to ledger acquisition, cleanup, and logging.
  • Made multiple improvements to WebSockets server.
  • Added Debian-style initscript (doc/rippled.init).
  • Updated default config file (doc/rippled-example.cfg) to reflect best practices.
  • Made changes to SHAMapTreeNode and visitLeavesInternal to conserve memory.
  • Implemented new fee schedule:
  • Transaction fee: 10 drops
  • Base reserve: 20 XRP
  • Incremental reserve: 5 XRP
  • Fixed bug #211 (getTxsAccountB in NetworkOPs).
  • Fixed a store/fetch race condition in ther node back end.
  • Fixed multiple comparison operations.
  • Removed Sophia and Lightning databases.

Notice

If you are upgrading from version 0.12 or earlier of rippled, these next sections apply to you because the format of the rippled.cfg file changed around that time. If you have upgraded since that time and you have applied the configuration file fixes, you can safely ignore them.

Validators

Ripple Labs is now running five validators. You can use this template for your validators.txt file (or place this in your config file):

[validators]
n9KPnVLn7ewVzHvn218DcEYsnWLzKerTDwhpofhk4Ym1RUq4TeGw    RIP1
n9LFzWuhKNvXStHAuemfRKFVECLApowncMAM5chSCL9R5ECHGN4V    RIP2
n94rSdgTyBNGvYg8pZXGuNt59Y5bGAZGxbxyvjDaqD9ceRAgD85P    RIP3
n9LeQeDcLDMZKjx1TZtrXoLBLo5q1bR1sUQrWG7tEADFU6R27UBp    RIP4
n9KF6RpvktjNs2MDBkmxpJbup4BKrKeMKDXPhaXkq7cKTwLmWkFr    RIP5

You should also raise your quorum to at least three by putting the following in your rippled.cfg file:

[validation_quorum]
3

If you are a validator, you should set your quorum to at least four.

IPs

A list of Ripple Labs server IP addresses can be found by resolving r.ripple.com. You can also add this to your rippled.cfg file to ensure you always have several peer connections to Ripple Labs servers:

[ips]
54.225.112.220 51235
54.225.123.13  51235
54.227.239.106 51235
107.21.251.218 51235
184.73.226.101 51235
23.23.201.55   51235

New RocksDB back end

RocksDB is based on LevelDB with improvements from Facebook and the community. Preliminary tests show that it stalls less often than HyperLevelDB for our use cases.

If you are switching over from an existing back end, you have two options. You can remove your old database and let rippled recreate it as it re-syncs, or you can import your old database into the new one.

To remove your old database, make sure the server is shut down (rippled stop). Remove the db/ledger.db and db/transaction.db files. Remove all the files in your back end store directory (db/hashnode by default). Then change your configuration file to use the RocksDB back end and restart.

To import your old database, start by shutting the server down. Then modify the configuration file by renaming your [node_db] stanza to [import_db]. Create a new [node_db] stanza and specify a RocksDB back end with a different directory. Start the server with the command rippled --import. When the import finishes gracefully stop the server (rippled stop). Please wait for rippled to stop on its own because it can take several minutes for it to shut down after an import. Remove the old database, put the new database into place, remove the [import_db] section, change the [node_db] section to refer to the final location, and restart the server.

The recommended RocksDB configuration is:

[node_db]
type=RocksDB
path=db/hashnode
open_files=1200
filter_bits=12
cache_mb=256
file_size_mb=8
file_size_mult=2

Configuring your Node DB

You need to configure the NodeBackEnd that you want the server to use. See above for an example RocksDB configuration.

  • Note: HyperLevelDB and RocksDB are not available on Windows platform.