Rippled github

Rippled github DEFAULT

Build and Run rippled on macOS

The macOS platform is not recommended for production use. For production, consider using the Ubuntu platform, which has received the highest level of quality assurance and testing.

That said, macOS is suitable for many development and testing tasks. has been tested for use with macOS up to 10.15.7 Catalina.

For development purposes, run as a non-admin user, not using .

  1. Install Xcode .

  2. Install Xcode command line tools.

  3. Install Homebrew .

  4. Update Homebrew.

  5. Use Homebrew to install dependencies.

  6. Install a compatible version of Boost. 1.7.2 is compatible with Boost 1.75.0. To compile Boost yourself, complete the following steps:

    1. Download version 1.75.0 of Boost .

    2. Extract it to a folder. Be sure to note the location.

    3. In a terminal, run:

  7. Ensure that your environment points to the directory created by the Boost installation:

    1. To find your Boost directory, use if you installed the Boost manually or use if you installed the Boost with Homebrew.

    2. Edit the code below with your Boost directory location and run it to add Boost environment variable to your or file so it's automatically set when you log in.

  8. If you updated your file in the previous step, be sure to source it in a new Terminal window. For example:

  9. Clone the source code into your desired location and access the directory. To do this, you'll need to set up Git (installed earlier using Homebrew) and GitHub. For example, you'll need to create a GitHub account and set up your SSH key. For more information, see Set up git .

  10. Switch to the appropriate branch for the software version you want:

    For the latest stable release, use the branch.

    For the latest release candidate, use the branch:

    For the latest in-progress version, use the branch:

    Or, you can checkout one of the tagged releases listed on GitHub .

  11. Check the commit log to be sure you're compiling the right code. The most recent commit should be signed by a well-known Ripple developer and should set the version number to the latest released version. The release announcements for generally show the exact commit to expect for that release.

  12. In the directory you cloned, create your build directory and access it. For example:

  13. Build . This could take about 5 minutes, depending on your hardware specs.

    You can set to the or build type. All four standard values are supported.

  14. Run the build using CMake. This could take about 10 minutes, depending on your hardware specs.

    Tip: This example uses a parameter set to , which uses four processes to build in parallel. The best number of processes to use depends on how many CPU cores your hardware has available. Use to get your CPU core count.

  15. Run unit tests built into the server executable. This could take about 5 minutes, depending on your hardware specs. (optional, but recommended)

  16. requires the config file to run. You can find an example config file, in . Make a copy and save it as in a location that enables you to run as a non-root user. Access the directory and run:

  17. Edit to set necessary file paths. The user you plan to run as must have write permissions to all of the paths you specify here.

    • Set the path to the location where you want to store the ledger database.

    • Set the to the location where you want to store other database data. (This includes an SQLite database with configuration data, and is typically one level above the path field.)

    • Set the to a path where can write logging information.

    These are the only configurations required for to start up successfully. All other configuration is optional and can be tweaked after you have a working server. For more information, see Additional Configurations.

  18. requires the file to run. You can find an example validators file, , in . Make a copy and save it as in the same folder as your file. Access the directory and run:

    Warning: The file contains settings that determine how your server declares a ledger to be validated. If you are not careful, changes to this file could cause your server to diverge from the rest of the network and report out of date, incomplete, or inaccurate data. Acting on such data can cause you to lose money.

  19. Access your build directory, for example, and start the service.

    Here's an excerpt of what you can expect to see in your terminal:

For information about log messages, see Understanding Log Messages.

Next Steps

It can take several minutes for to sync with the rest of the network, during which time it outputs warnings about missing ledgers.

For information about log messages, see Understanding Log Messages.

After your has synchronized with the rest of the network, you have a fully functional stock server that you can use for local signing and API access to the XRP Ledger. Use server states to tell whether your server has synchronized with the network. You can use the commandline interface to test this quickly:

For more information about communicating with your server using the rippled APIs, see the rippled API reference.

Once you have your stock server running, you may want to consider running it as a validating server. For information about validating servers and why you might want to run one, see Run rippled as a Validator.

Having trouble getting your server started? See rippled Server Won't Start.

Additional Configuration

should connect to the XRP Ledger with the default configuration. However, you can change your settings by editing the file. For recommendations about configuration settings, see Capacity Planning.

The recommended installation uses the config file by default. Other places you can put a config file include (where is the home directory of the user running ), , or the current working directory from where you start .

See the GitHub repository for a description of all configuration options.

You must restart for any configuration changes to take effect:

  • Use Ctrl-C to stop , then start it again:

If you change the or sections, you may need to grant ownership of the new configured path to the user you run as.


You must update regularly to remain synced with the rest of the XRP Ledger network. You can subscribe to the rippled Google Group to receive notifications of new releases.

The package includes a script you can use to enable automatic updates on Linux. On other platforms, you must update manually.

See Also


The XRP Ledger

The XRP Ledger is a decentralized cryptographic ledger powered by a network of peer-to-peer servers. The XRP Ledger uses a novel Byzantine Fault Tolerant consensus algorithm to settle and record transactions in a secure distributed database without a central operator.


XRP is a public, counterparty-free asset native to the XRP Ledger, and is designed to bridge the many different currencies in use worldwide. XRP is traded on the open-market and is available for anyone to access. The XRP Ledger was created in 2012 with a finite supply of 100 billion units of XRP. Its creators gifted 80 billion XRP to a company, now called Ripple, to develop the XRP Ledger and its ecosystem. Ripple uses XRP to help build the Internet of Value, ushering in a world in which money moves as fast and efficiently as information does today.


The server software that powers the XRP Ledger is called and is available in this repository under the permissive ISC open-source license. The server is written primarily in C++ and runs on a variety of platforms.

Build from Source

Key Features of the XRP Ledger

  • Censorship-Resistant Transaction Processing: No single party decides which transactions succeed or fail, and no one can "roll back" a transaction after it completes. As long as those who choose to participate in the network keep it healthy, they can settle transactions in seconds.
  • Fast, Efficient Consensus Algorithm: The XRP Ledger's consensus algorithm settles transactions in 4 to 5 seconds, processing at a throughput of up to 1500 transactions per second. These properties put XRP at least an order of magnitude ahead of other top digital assets.
  • Finite XRP Supply: When the XRP Ledger began, 100 billion XRP were created, and no more XRP will ever be created. The available supply of XRP decreases slowly over time as small amounts are destroyed to pay transaction costs.
  • Responsible Software Governance: A team of full-time, world-class developers at Ripple maintain and continually improve the XRP Ledger's underlying software with contributions from the open-source community. Ripple acts as a steward for the technology and an advocate for its interests, and builds constructive relationships with governments and financial institutions worldwide.
  • Secure, Adaptable Cryptography: The XRP Ledger relies on industry standard digital signature systems like ECDSA (the same scheme used by Bitcoin) but also supports modern, efficient algorithms like Ed25519. The extensible nature of the XRP Ledger's software makes it possible to add and disable algorithms as the state of the art in cryptography advances.
  • Modern Features for Smart Contracts: Features like Escrow, Checks, and Payment Channels support cutting-edge financial applications including the Interledger Protocol. This toolbox of advanced features comes with safety features like a process for amending the network and separate checks against invariant constraints.
  • On-Ledger Decentralized Exchange: In addition to all the features that make XRP useful on its own, the XRP Ledger also has a fully-functional accounting system for tracking and trading obligations denominated in any way users want, and an exchange built into the protocol. The XRP Ledger can settle long, cross-currency payment paths and exchanges of multiple currencies in atomic transactions, bridging gaps of trust with XRP.

Source Code Build Code Coverage

Repository Contents

Scripts and data files for Ripple integrators.
Platform-specific guides for building .
Source documentation files and doxygen config.
Example configuration files.
Source code.

Some of the directories under are external repositories included using git-subtree. See those directories' README files for more details.

See Also

  1. Nc concealed carry test
  2. American flag plus size
  3. Synonyms for shortage


#-------------------------------------------------------------------------------## Rippled Server Instance Configuration Example##-------------------------------------------------------------------------------## Contents## 1. Server## 2. Peer Protocol## 3. SMS Gateway## 4. Ripple Protocol## 5. HTTPS Client## 6. Database## 7. Diagnostics## 8. Voting## 9. Example Settings##-------------------------------------------------------------------------------## Purpose## This file documents and provides examples of all rippled server process# configuration options. When the rippled server instance is launched, it# looks for a file with the following name:## rippled.cfg## For more information on where the rippled server instance searches for# the file please visit the Ripple wiki. Specifically, the section explaining# the --conf command line option:## This file should be named rippled.cfg. This file is UTF-8 with Dos, UNIX,# or Mac style end of lines. Blank lines and lines beginning with '#' are# ignored. Undefined sections are reserved. No escapes are currently defined.## Notation## In this document a simple BNF notation is used. Angle brackets denote# required elements, square brackets denote optional elements, and single# quotes indicate string literals. A vertical bar separating 1 or more# elements is a logical "or"; Any one of the elements may be chosen.# Parenthesis are notational only, and used to group elements, they are not# part of the syntax unless they appear in quotes. White space may always# appear between elements, it has no effect on values.## <key> A required identifier# '=' The equals sign character# | Logical "or"# ( ) Used for grouping### An identifier is a string of upper or lower case letters, digits, or# underscores subject to the requirement that the first character of an# identifier must be a letter. Identifiers are not case sensitive (but# values may be).## Some configuration sections contain key/value pairs. A line containing# a key/value pair has this syntax:## <identifier> '=' <value>## Depending on the section and key, different value types are possible:## <integer> A signed integer# <unsigned> An unsigned integer# <flag> A boolean. 1 = true/yes/on, 0 = false/no/off.## Consult the documentation on the key in question to determine the possible# value types.####-------------------------------------------------------------------------------## 1. Server##----------#### rippled offers various server protocols to clients making inbound# connections. The listening ports rippled uses are "universal" ports# which may be configured to handshake in one or more of the available# supported protocols. These universal ports simplify administration:# A single open port can be used for multiple protocols.## NOTE At least one server port must be defined in order# to accept incoming network connections.### [server]## 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. The# name is informational only; the choice of name does not affect the function# of the listening port.## Key/value pairs specified in this section are optional, and apply to all# listening ports unless the port overrides the value in its section. They# may be considered default values.## Suggestion:## To avoid a conflict with port names and future configuration sections,# we recommend prepending "port_" to the port name. This prefix is not# required, but suggested.## This example defines two ports with different port numbers and settings:## [server]# port_public# port_private# port = 80## [port_public]# ip= port = 443# protocol=peer,https## [port_private]# ip= protocol=http## When rippled is used as a command line client (for example, issuing a# server stop command), the first port advertising the http or https # protocol will be used to make the connection.#### [<name>]## A series of key/value pairs that define the settings for the port with# the corresponding name. These keys are possible:## ip = <IP-address>## Required. Determines the IP address of the network interface to bind# to. To bind to all available interfaces, uses port = <number>## Required. Sets the port number to use for this port.## protocol = [ http, https, peer ]## Required. A comma-separated list of protocols to support:## http JSON-RPC over HTTP# https JSON-RPC over HTTPS# ws Websockets# wss Secure Websockets# peer Peer Protocol## Restrictions:## Only one port may be configured to support the peer protocol.# A port cannot have websocket and non websocket protocols at the# same time. It is possible have both Websockets and Secure Websockets# together in one port.## NOTE If no ports support the peer protocol, rippled cannot# receive incoming peer connections or become a superpeer.## user = <text># password = <text>## When set, these credentials will be required on HTTP/S requests.# The credentials must be provided using HTTP's Basic Authentication# headers. If either or both fields are empty, then no credentials are# required. IP address restrictions, if any, will be checked in addition# to the credentials specified here.## When acting in the client role, rippled will supply these credentials# using HTTP's Basic Authentication headers when making outbound HTTP/S# requests.## admin = no | allow## Controls whether or not administrative commands are allowed. These# commands may be issued over http, https, ws, or wss if configured# on the port. If unspecified, the default is to not allow# administrative commands.## admin_user = <text># admin_password = <text>## When set, clients must provide these credentials in the submitted# JSON for any administrative command requests submitted to the HTTP/S,# WS, or WSS protocol interfaces. If administrative commands are# disabled for a port, these credentials have no effect.## When acting in the client role, rippled will supply these credentials# in the submitted JSON for any administrative command requests when# invoking JSON-RPC commands on remote servers.## ssl_key = <filename># ssl_cert = <filename># ssl_chain = <filename>## Use the specified files when configuring SSL on the port.## NOTE If no files are specified and secure protocols are selected,# rippled will generate an internal self-signed certificate.## The files have these meanings:## ssl_key## Specifies the filename holding the SSL key in PEM format.## ssl_cert## Specifies the path to the SSL certificate file in PEM format.# This is not needed if the chain includes it.## ssl_chain## If you need a certificate chain, specify the path to the# certificate chain here. The chain may include the end certificate.#### [rpc_admin_allow]## Specify a list of IP addresses allowed to have admin access. One per line.# If you want to test the output of non-admin commands add this section and# just put an ip address not under your control.# Defaults to [rpc_startup]## Specify a list of RPC commands to run at startup.## Examples:# { "command" : "server_info" }# { "command" : "log_level", "partition" : "ripplecalc", "severity" : "trace" }#### [websocket_ping_frequency]## <number>## The amount of time to wait in seconds, before sending a websocket 'ping'# message. Ping messages are used to determine if the remote end of the# connection is no longer available.####-------------------------------------------------------------------------------## 2. Peer Protocol##-----------------## These settings control security and access attributes of the Peer to Peer# server section of the rippled process. Peer Protocol implements the# Ripple Payment protocol. It is over peer connections that transactions# and validations are passed from to machine to machine, to determine the# contents of validated ledgers.#### [ips]## List of hostnames or ips where the Ripple protocol is served. For a starter# list, you can either copy entries from: or if# you prefer you can specify 51235## One IPv4 address or domain names per line is allowed. A port may optionally# be specified after adding a space to the address. By convention, if known,# IPs are listed in from most to least trusted.## Examples:# 3939# 51235## This will give you a good, up-to-date list of addresses:## [ips]# 51235#### [ips_fixed]## List of IP addresses or hostnames to which rippled should always attempt to# maintain peer connections with. This is useful for manually forming private# networks, for example to configure a validation server that connects to the# Ripple network through a public-facing server, or for building a set# of cluster peers.## One IPv4 address or domain names per line is allowed. A port may optionally# be specified after adding a space to the address.#### [peer_private]## 0 or 1.## 0: Request peers to broadcast your address. Normal outbound peer connections [default]# 1: Request peers not broadcast your address. Only connect to configured peers.#### [peers_max]## The largest number of desired peer connections (incoming or outgoing).# Cluster and fixed peers do not count towards this total. There are# implementation-defined lower limits imposed on this value for security# purposes.#### [node_seed]## This is used for clustering. To force a particular node seed or key, the# key can be set here. The format is the same as the validation_seed field.# To obtain a validation seed, use the validation_create command.## Examples: RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE# shfArahZT9Q9ckTf3s1psJ7C7qzVN#### [cluster_nodes]## To extend full trust to other nodes, place their node public keys here.# Generally, you should only do this for nodes under common administration.# Node public keys start with an 'n'. To give a node a name for identification# place a space after the public key and then the name.#### [sntp_servers]## IP address or domain of NTP servers to use for time synchronization.## These NTP servers are suitable for rippled servers located in the United# States:# [overlay] EXPERIMENTAL## This section is EXPERIMENTAL, and should not be# present for production configuration settings.## A set of key/value pair parameters to configure the overlay.## auto_connect = 0 | 1## When set, activates the autoconnect feature. This maintains outgoing# connections using PeerFinder's "Outgoing Connection Strategy."## http_handshake = 0 | 1## When set, outgoing peer connections will handshaking using a HTTP# request instead of the legacy TMHello protocol buffers message.# Incoming peer connections have their handshakes detected automatically.## become_superpeer = 'never' | 'always' | 'auto'## Controls the selection of peer roles:## 'never' Always handshake in the leaf role.# 'always' Always handshake in the superpeer role.# 'auto' Start as a leaf, promote to superpeer after# passing capability check (default).## In the leaf role, a peer does not advertise its IP and port for# the purpose of receiving incoming connections. The peer also does# not forward transactions and validations received from other peers.## In the superpeer role, a peer advertises its IP and port for# receiving incoming connections after passing an incoming connection# test. Superpeers forward transactions and protocol messages to all# other peers. Superpeers do not forward validations to other superpeers.# Instead, a validation received by a superpeer from a leaf is forwarded# only to other leaf connections.####-------------------------------------------------------------------------------## 3. SMS Gateway##---------------## If you have a certain SMS messaging provider you can configure these# settings to allow the rippled server instance to send an SMS text to the# configured gateway in response to an admin-level RPC command "sms" with# one parameter, 'text' containing the message to send. This allows backend# applications to use the rippled instance to securely notify administrators# of custom events or information via SMS gateway.## When the 'sms' RPC command is issued, the configured SMS gateway will be# contacted via HTTPS GET at the URL indicated by sms_url. The URI formed# will be in this format:## [sms_url]?from=[sms_from]&to=[sms_to]&api_key=[sms_key]&api_secret=[sms_secret]&text=['text']## Where [...] are the corresponding values from the configuration file, and# ['test'] is the value of the JSON field with name 'text'.## [sms_url]## The URL to contact via HTTPS when sending SMS messages## [sms_from]# [sms_to]# [sms_key]# [sms_secret]## These are all strings passed directly in the URI as query parameters# to the provider of the SMS gateway.####-------------------------------------------------------------------------------## 4. Ripple Protocol##-------------------## These settings affect the behavior of the server instance with respect# to Ripple payment protocol level activities such as validating and# closing ledgers, establishing a quorum, or adjusting fees in response# to server overloads.#### [node_size]## Tunes the servers based on the expected load and available memory. Legal# sizes are "tiny", "small", "medium", "large", and "huge". We recommend# you start at the default and raise the setting if you have extra memory.# The default is "tiny".#### [validation_quorum]## Sets the minimum number of trusted validations a ledger must have before# the server considers it fully validated. Note that if you are validating,# your validation counts.###[ledger_history]full## The number of past ledgers to acquire on server startup and the minimum to# maintain while running.## To serve clients, servers need historical ledger data. Servers that don't# need to serve clients can set this to "none". Servers that want complete# history can set this to "full".## The default is: 256### [fetch_depth]## The number of past ledgers to serve to other peers that request historical# ledger data (or "full" for no limit).## Servers that require low latency and high local performance may wish to# restrict the historical ledgers they are willing to serve. Setting this# below 32 can harm network stability as servers require easy access to# recent history to stay in sync. Values below 128 are not recommended.## The default is: full#### [validation_seed]## To perform validation, this section should contain either a validation seed# or key. The validation seed is used to generate the validation# public/private key pair. To obtain a validation seed, use the# validation_create command.## Examples: RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE# shfArahZT9Q9ckTf3s1psJ7C7qzVN#### [validators]## List of nodes to always accept as validators. Nodes are specified by domain# or public key.## For domains, rippled will probe for https web servers at the specified# domain in the following order: ripple.DOMAIN, www.DOMAIN, DOMAIN## For public key entries, a comment may optionally be specified after adding# a space to the public key.## Examples:# n9KorY8QtTdRx7TVDpwnG9NvyxsDwHUKUEeDLY3AkiGncVaSXZi5# n9MqiExBcoG19UXwoLjBJnhsxEhAZMuWwJDRdkyDz1EkEkwzQTNt John Doe#### [validators_file]## Path to file contain a list of nodes to always accept as validators. Use# this to specify a file other than this file to manage your validators list.## If this entry is not present or empty and no nodes from previous runs were# found in the database, rippled will look for a validators.txt in the config# directory. If not found there, it will attempt to retrieve the file from# the [validators_site] web site.## After specifying a different [validators_file] or changing the contents of# the validators file, issue a RPC unl_load command to have rippled load the# file.## Specify the file by specifying its full path.## Examples:# C:/home/johndoe/ripple/validators.txt# /home/johndoe/ripple/validators.txt#### [validators_site]## Specifies where to find validators.txt for UNL boostrapping and RPC# unl_network command.## Example: [path_search]# When searching for paths, the default search aggressiveness. This can take# exponentially more resources as the size is increased.
github REST API v3 Crash Course with Vanilla Javascript (No dependencies)


Keep an eye on your rippled server with this drop-in monitoring solution.

rippled is equipped to export metrics via statsd when "insights" are enabled. This monitoring tool consumes and presents those metrics via statsd-graphite and Grafana docker containers. New versions of rippled will export more metrics and new dashboards will be added to this repository.


Docker and docker-compose must be installed on your system. For more details on this see here for docker and here for docker-compose.

  1. Clone this repo and start the docker containers with docker-compose

Note: you can use the -d flag in the docker-compose command to run it in the background.

  1. Add the [insight] stanza to your rippled.cfg file, and restart your rippled server.

This will enable insights on your rippled server and send metrics via UDP to a statsd server listening on port 8125 of your localhost. The metrics will be prefixed with 'my_rippled'. NOTE: If you are using this tool to monitor a production grade validator, you should run it on a separate machine and change the address above

  1. Login to Grafana and view dashboards


The default username and password are 'admin'. Dashboard 1 is an example displaying a few of the metrics exported from rippled. It can take a few minutes for these metrics to populate so be patient.

  1. Make new dashboards

You can make new dashboards with the specific metrics that you want by selecting the plus icon and choosing "Add Query" in the New Panel.

Add Dashboard

Choose the appropriate tags to query the metric you want and adjust the graphing parameters.

New Query

For more information on how to use Grafana see here.

Metrics will be added to rippled over time and new dashboards will be added to this repo. These are the metrics that are currently visible:

Timer Metric Tags

Timers with the jobq tag report the amount of time it took to execute the job in ms. You will also see the metrics above with an "_q" suffix. The corresponding "_q" metrics report the amount of time it took to dequeue the job.

Counter Metric TagsDescription
ledger_fetchesNumber of ledger fetches in the last collection interval
jobq.job_countNumber of jobs in the job queue
full_below.sizeSize of the FullBelowCache
full_below.hit_rateHit Rate of the FullBelowCache

Age Gauges

Age Gauge Metric TagsDescription
LedgerMaster.Validated_Ledger_AgeThe age of the last validated ledger in seconds
LedgerMaster.Published_Ledger_AgeThe age of the last published ledger in seconds

State Accounting Gauges

State Accounting Gauge Metric TagsDescription
State_Accounting.Disconnected_durationThe total amount of time spent in the 'Disconnected' state as displayed by server_info in microseconds
State_Accounting.Connected_durationThe total amount of time spent in the 'Connected' state as displayed by server_info in microseconds
State_Accounting.Syncing_durationThe total amount of time spent in the 'Syncing' state as displayed by server_info in microseconds
State_Accounting.Tracking_durationThe total amount of time spent in the 'Tracking' state as displayed by server_info in microseconds
State_Accounting.Full_durationThe total amount of time spent in the 'Full' state as output by server_info in microseconds
State_Accounting.Disconnected_transitionsThe number of transitions into the 'Disconnected' state as displayed by server_info
State_Accounting.Connected_transitionsThe number of transitions into the 'Connected' state as displayed by server_info
State_Accounting.Syncing_transitionsThe number of transitions into the 'Syncing' state as displayed by server_info
State_Accounting.Tracking_transitionsThe number of transitions into the 'Tracking' state as displayed by server_info
State_Accounting.Full_transitionsThe number of transitions into the 'Full' state as displayed by server_info

Peer Metric Gauges

Gauge Metric TagsDescription
Peer_Finder.Active_Inbound_PeersThe number of active inbound peer connections
Peer_Finder.Active_Outbound_PeersThe number of active outbound peer connections
Overlay.Peer_DisconnectsThe total number of peer disconnects

Traffic Counts Gauges Traffic count metrics are exported for each of the traffic categories below. There are 4 different metrics tracked for each category: BytesIn, BytesOut, MessagesIn, and MessagesOut.

Traffic Count Gauge Metric TagsDescription
category.BytesInTotal number of bytes received from traffic of this category
category.BytesOutTotal number of bytes transmitted from traffic of this category
category.MessagesInTotal number of messages recieved from traffic of this category
category.MessageOutTotal number of messages transmitted from traffic of this category
Traffic Categories
getobject_Fetch Pack_get

Please note that all gauge type metrics are only sent when their value changes in rippled at least once. If you do not see any particular metric it means that it has not changed since startup.


Inspired by lndmon
Uses graphite-project and Grafana


Github rippled


// Before running the code: // npm install rippled-ws-client rippled-ws-client-sign websocketconstRippledWsClient=require('rippled-ws-client')constRippledWsClientSign=require('rippled-ws-client-sign')// Your secretconstSeedOrKeypair='sXXXXXXXXXXX'// Your wallet (sending the funds)constSendingWallet='rSENDINGWALLETXXXXXX'// The destination walletconstDestinationWallet='rRECEIVINGWALLETxxxxxx'// The amount of XRP to sendconstAmountXRP=1// The noteconstNote='Some more text over here'constTransaction={TransactionType: 'Payment',Account: SendingWallet,Destination: DestinationWallet,Amount: AmountXRP*1000000,// Amount in drops, so multiply (6 decimal positions)LastLedgerSequence: null,Fee: 12,Memos: [{Memo: {MemoType: Buffer.from('Note','utf8').toString('hex').toUpperCase(),MemoData: Buffer.from(Note,'utf8').toString('hex').toUpperCase()}}]}newRippledWsClient('wss://').then((Connection)=>{newRippledWsClientSign(Transaction,SeedOrKeypair,Connection).then((TransactionSuccess)=>{console.log('TransactionSuccess',TransactionSuccess)Connection.close()}).catch((SignError)=>{console.log('SignError',SignError.details)Connection.close()})}).catch((ConnectionError)=>{console.log('ConnectionError',ConnectionError)})
The EASIEST Way to Lint Your Code: GitHub Super Linter DEEP DIVE

github ripple/rippled 1.6.0

rippled (XRP Ledger server) Version 1.6.0

on GitHub

This 1.6.0 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.

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] Amendment: Required
  • Software Upgrade Monitoring & Notification: After the HardenedValidations amendment is enabled and the validators begin reporting the versions of rippled 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. This support is disabled by default and should prove useful for servers with a large number of peers. [#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. The connect 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.

You will also like:



Open Source from Ripple, Inc.


  1. rippledPublic

    Decentralized cryptocurrency blockchain daemon implementing the XRP Ledger in C++

    C++ 4k 1.3k


  • ripple-binary-codec Public

    Convert between json and hex representations of transactions and ledger entries on the XRP Ledger

    TypeScript 16 ISC 45 3 3 Updated

  • xrp-batch-payout Public

    A library and command-line tool for batched, reliable payouts with XRP.

    TypeScript 6 Apache-2.0 4 1 5 Updated

  • vl Public

    Archived versions of validator lists published on

    6 7 2 0 Updated

  • validator-history-service Public

    Service for ingesting, aggregating, storing, and disbursing XRP Ledger validation related data.

    TypeScript 5 ISC 2 0 6 Updated

  • tx-reporter Public

    reports XRP Ledger transactions to Slack

    JavaScript 2 4 0 7 Updated

  • explorer Public

    Open Source XRP Ledger Explorer

    JavaScript 14 MIT 5 7 0 Updated

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.


22 23 24 25 26