#-------------------------------------------------------------------------------
#
# Rippled Server Instance Configuration Example
#
#-------------------------------------------------------------------------------
#
# Contents
#
#   1. Server
#
#   2. Peer Protocol
#
#   3. Ripple Protocol
#
#   4. HTTPS Client
#
#   5. Database
#
#   6. Diagnostics
#
#   7. Voting
#
#   8. 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:
#
#     https://ripple.com/wiki/Rippled#--conf.3Dpath
#
#   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=0.0.0.0
#       port = 443
#       protocol=peer,https
#
#       [port_private]
#       ip=127.0.0.1
#       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 0.0.0.0
#
#   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.
#
#   limit = <number>
#
#       Optional. An integer value that will limit the number of connected
#       clients that the port will accept. Once the limit is reached, new
#       connections will be refused until other clients disconnect.
#       Omit or set to 0 to allow unlimited numbers of clients.
#
#   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 = [ IP, IP, IP, ... ]
#
#       A comma-separated list of IP addresses.
#
#       When set, grants administrative command access to the specified IP
#       addresses. 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.
#
#       *SECURITY WARNING*
#       0.0.0.0 may be specified to allow access from any IP address. It must
#       be the only address specified and cannot be combined with other IPs.
#       Use of this address can compromise server security, please consider its
#       use carefully.
#
#   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.
#
#   secure_gateway = [ IP, IP, IP, ... ]
#
#       A comma-separated list of IP addresses.
#
#       When set, allows the specified IP addresses to pass HTTP headers
#       containing username and remote IP address for each session. If a
#       non-empty username is passed in this way, then resource controls
#       such as often resulting in "tooBusy" errors will be lifted. However,
#       administrative RPC commands such as "stop" will not be allowed.
#       The HTTP headers that secure_gateway hosts can set are X-User and
#       X-Forwarded-For. Only the X-User header affects resource controls.
#       However, both header values are logged to help identify user activity.
#       If no X-User header is passed, or if its value is empty, then
#       resource controls will default to those for non-administrative users.
#
#       The secure_gateway IP addresses are intended to represent
#       proxies. Since rippled trusts these hosts, they must be
#       responsible for properly authenticating the remote user.
#
#       The same IP address cannot be used in both "admin" and "secure_gateway"
#       lists for the same port. In this case, rippled will abort with an error
#       message to the console shortly after startup
#
#   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.
#
#   ssl_ciphers = <cipherlist>
#
#       Control the ciphers which the server will support over SSL on the port,
#       specified using the OpenSSL "cipher list format".
#
#       NOTE    If unspecified, rippled will automatically configure a modern
#               cipher suite. This default suite should be widely supported.
#
#               You should not modify this string unless you have a specific
#               reason and cryptographic expertise. Incorrect modification may
#               keep rippled from connecting to other instances of rippled or
#               prevent RPC and WebSocket clients from connecting.
#
#   send_queue_limit = = [1..65535]
#
#       A Websocket will disconnect when its send queue exceeds this limit.
#       The default is 100. A larger value may help with erratic disconnects but
#       may adversely affect server performance.
#
# WebSocket permessage-deflate extension options
#
#   These settings configure the optional permessage-deflate extension
#   options and may appear on any port configuration entry. They are meaningful
#   only to ports which have enabled a WebSocket protocol.
#
#   permessage_deflate = <flag>
#
#       Determines if permessage_deflate extension negotiations are enabled.
#       When enabled, clients may request the extension and the server will
#       offer the enabled extension in response.
#
#   client_max_window_bits = [9..15]
#   server_max_window_bits = [9..15]
#   client_no_context_takeover = <flag>
#   server_no_context_takeover = <flag>
#
#       These optional settings control options related to the permessage-deflate
#       extension negotiation. For precise definitions of these fields please see
#       the RFC 7692, "Compression Extensions for WebSocket":
#           https://tools.ietf.org/html/rfc7692
#
#   compress_level = [0..9]
#
#       When set, determines the amount of compression attempted, where 0 is
#       the least amount and 9 is the most amount. Higher levels require more
#       CPU resources. Levels 1 through 3 use a fast compression algorithm,
#       while levels 4 through 9 use a more compact algorithm which uses more
#       CPU resources. If unspecified, a default of 3 is used.
#
#   memory_level = [1..9]
#
#       When set, determines the relative amount of memory used to hold
#       intermediate compression data. Higher numbers can give better compression
#       ratios at the cost of higher memory and CPU resources.
#
# [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: https://ripple.com/ripple.txt or if
#   you prefer you can specify r.ripple.com 51235
#
#   One IPv4 address or domain names per line is allowed. A port may must be
#   specified after adding a space to the address.  By convention, if known,
#   IPs are listed in from most to least trusted.
#
#   Examples:
#    192.168.0.1
#    192.168.0.1 3939
#    r.ripple.com 51235
#
#   This will give you a good, up-to-date list of addresses:
#
#   [ips]
#   r.ripple.com 51235
#
#   The default is: [ips_fixed] addresses (if present) or r.ripple.com 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 must 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:
#      time.windows.com
#      time.apple.com
#      time.nist.gov
#      pool.ntp.org
#
#
#
# [overlay]
#
#   Controls settings related to the peer to peer overlay.
#
#   A set of key/value pair parameters to configure the overlay.
#
#   public_ip = <IP-address>
#
#       If the server has a known, fixed public IPv4 address,
#       specify that IP address here in dotted decimal notation.
#       Peers will use this information to reject attempt to proxy
#       connections to or from this server.
#
#   ip_limit = <number>
#
#       The maximum number of incoming peer connections allowed by a single
#       IP that isn't classified as "private" in RFC1918. The implementation
#       imposes some hard and soft upper limits on this value to prevent a
#       single host from consuming all inbound slots. If the value is not
#       present the server will autoconfigure an appropriate limit.
#
#
#
# [transaction_queue] EXPERIMENTAL
#
#   This section is EXPERIMENTAL, and should not be
#   present for production configuration settings.
#
#   A set of key/value pair parameters to tune the performance of the
#   transaction queue.
#
#   ledgers_in_queue = <number>
#
#       The queue will be limited to this <number> of average ledgers'
#       worth of transactions. If the queue fills up, the transactions
#       with the lowest fee levels will be dropped from the queue any
#       time a transaction with a higher fee level is added.
#       Default: 20.
#
#   minimum_queue_size = <number>
#
#       The queue will always be able to hold at least this <number> of
#       transactions, regardless of recent ledger sizes or the value of
#       ledgers_in_queue. Default: 2000.
#
#   retry_sequence_percent = <number>
#
#       If a client replaces a transaction in the queue (same sequence
#       number as a transaction already in the queue), the new
#       transaction's fee must be more than <number> percent higher
#       than the original transaction's fee, or meet the current open
#       ledger fee to be considered. Default: 25.
#
#   multi_txn_percent = <number>
#
#       If a client submits multiple transactions (different sequence
#       numbers), later transactions must pay a fee at least <number>
#       percent higher than the transaction with the previous sequence
#       number.
#       Default: -90.
#
#   minimum_escalation_multiplier = <number>
#
#       At ledger close time, the median fee level of the transactions
#       in that ledger is used as a multiplier in escalation
#       calculations of the next ledger. This minimum value ensures that
#       the escalation is significant. Default: 500.
#
#   minimum_txn_in_ledger = <number>
#
#       Minimum number of transactions that must be allowed into the
#       ledger at the minimum required fee before the required fee
#       escalates. Default: 5.
#
#   minimum_txn_in_ledger_standalone = <number>
#
#       Like minimum_txn_in_ledger when rippled is running in standalone
#       mode. Default: 1000.
#
#   target_txn_in_ledger = <number>
#
#       Number of transactions allowed into the ledger at the minimum
#       required fee that the queue will "work toward" as long as
#       consensus stays healthy. The limit will grow quickly until it
#       reaches or exceeds this number. After that the limit may still
#       change, but will stay above the target. If consensus is not
#       healthy, the limit will be clamped to this value or lower.
#       Default: 50.
#
#   maximum_txn_in_ledger = <number>
#
#       (Optional) Maximum number of transactions that will be allowed
#       into the ledger at the minimum required fee before the required
#       fee escalates. Default: no maximum.
#
#   normal_consensus_increase_percent = <number>
#
#       (Optional) When the ledger has more transactions than "expected",
#       and performance is humming along nicely, the expected ledger size
#       is updated to the previous ledger size plus this percentage.
#       Default: 20
#
#   slow_consensus_decrease_percent = <number>
#
#       (Optional) When consensus takes longer than appropriate, the
#       expected ledger size is updated to the minimum of the previous
#       ledger size or the "expected" ledger size minus this percentage.
#       Default: 50
#
#   maximum_txn_per_account = <number>
#
#       Maximum number of transactions that one account can have in the
#       queue at any given time. Default: 10.
#
#   minimum_last_ledger_buffer = <number>
#
#       If a transaction has a LastLedgerSequence, it must be at least
#       this much larger than the current open ledger sequence number.
#       Default: 2.
#
#   zero_basefee_transaction_feelevel = <number>
#
#       So we don't deal with infinite fee levels, treat any transaction
#       with a 0 base fee (ie. SetRegularKey password recovery) as
#       having this fee level.
#       Default: 256000.
#
#
#-------------------------------------------------------------------------------
#
# 3. 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 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".
#
#
#
# [ledger_history]
#
#   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".
#
#   This must be less than or equal to online_delete (if online_delete is used)
#
#   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
#
#
#
# [validator_token]
#
#   This is an alternative to [validation_seed] that allows rippled to perform
#   validation without having to store the validator keys on the network
#   connected server. The field should contain a single token in the form of a
#   base64-encoded blob.
#   An external tool is available for generating validator keys and tokens.
#
#
#
# [validator_key_revocation]
#
#   If a validator's secret key has been compromised, a revocation must be
#   generated and added to this field. The revocation notifies peers that it is
#   no longer safe to trust the revoked key. The field should contain a single
#   revocation in the form of a base64-encoded blob.
#   An external tool is available for generating and revoking validator keys.
#
#
#
# [validators_file]
#
#   Path or name of a file that determines the nodes to always accept as validators.
#
#   The contents of the file should include a [validators] and/or
#   [validator_list_sites] and [validator_list_keys] entries.
#   [validators] should be followed by a list of validation public keys of
#   nodes, one per line.
#   [validator_list_sites] should be followed by a list of URIs each serving a
#   list of recommended validators.
#   [validator_list_keys] should be followed by a list of keys belonging to
#   trusted validator list publishers. Validator lists fetched from configured
#   sites will only be considered if the list is accompanied by a valid
#   signature from a trusted publisher key.
#
#   Specify the file by its name or path.
#   Unless an absolute path is specified, it will be considered relative to
#   the folder in which the rippled.cfg file is located.
#
#   Examples:
#    /home/ripple/validators.txt
#    C:/home/ripple/validators.txt
#
#   Example content:
#    [validators]
#    n949f75evCHwgyP4fPVgaHqNHxUVN15PsJEZ3B3HnXPcPjcZAoy7
#    n9MD5h24qrQqiyBC8aeqqCWvpiBiYQ3jxSr91uiDvmrkyHRdYLUj
#    n9L81uNCaPgtUJfaHh89gmdvXKAmSt5Gdsw2g1iPWaPkAHW5Nm4C
#    n9KiYM9CgngLvtRCQHZwgC2gjpdaZcCcbt3VboxiNFcKuwFVujzS
#    n9LdgEtkmGB9E2h3K4Vp7iGUaKuq23Zr32ehxiU8FWY7xoxbWTSA
#
#
#
# [path_search]
#   When searching for paths, the default search aggressiveness. This can take
#   exponentially more resources as the size is increased.
#
#   The default is: 7
#
# [path_search_fast]
# [path_search_max]
#   When searching for paths, the minimum and maximum search aggressiveness.
#
#   If you do not need pathfinding, you can set path_search_max to zero to
#   disable it and avoid some expensive bookkeeping.
#
#   The default for 'path_search_fast' is 2. The default for 'path_search_max' is 10.
#
# [path_search_old]
#
#   For clients that use the legacy path finding interfaces, the search
#   aggressiveness to use. The default is 7.
#
#
#
# [fee_default]
#
#   Sets the base cost of a transaction in drops. Used when the server has
#   no other source of fee information, such as signing transactions offline.
#
#
#
# [workers]
#
#   Configures the number of threads for processing work submitted by peers
#   and clients. If not specified, then the value is automatically determined
#   by factors including the number of system processors and whether this
#   node is a validator.
#
#
#-------------------------------------------------------------------------------
#
# 4. HTTPS Client
#
#----------------
#
#   The rippled server instance uses HTTPS GET requests in a variety of
#   circumstances, including but not limited to contacting trusted domains to
#   fetch information such as mapping an email address to a Ripple Payment
#   Network address.
#
# [ssl_verify]
#
#   0 or 1.
#
#   0. HTTPS client connections will not verify certificates.
#   1. Certificates will be checked for HTTPS client connections.
#
#   If not specified, this parameter defaults to 1.
#
#
#
# [ssl_verify_file]
#
#   <pathname>
#
#   A file system path leading to the certificate verification file for
#   HTTPS client requests.
#
#
#
# [ssl_verify_dir]
#
#   <pathname>
#
#
#   A file system path leading to a file or directory containing the root
#   certificates that the server will accept for verifying HTTP servers.
#   Used only for outbound HTTPS client connections.
#
#
#
#-------------------------------------------------------------------------------
#
# 5. Database
#
#------------
#
#   rippled creates 4 SQLite database to hold bookkeeping information
#   about transactions, local credentials, and various other things.
#   It also creates the NodeDB, which holds all the objects that
#   make up the current and historical ledgers.
#
#   The size of the NodeDB grows in proportion to the amount of new data and the
#   amount of historical data (a configurable setting) so the performance of the
#   underlying storage media where the NodeDB is placed can significantly affect
#   the performance of the server.
#
#   Partial pathnames will be considered relative to the location of
#   the rippled.cfg file.
#
#   [node_db]               Settings for the Node Database (required)
#
#   Format (without spaces):
#       One or more lines of case-insensitive key / value pairs:
#       <key> '=' <value>
#       ...
#
#   Example:
#       type=nudb
#       path=db/nudb
#
#   The "type" field must be present and controls the choice of backend:
#
#   type = NuDB
#
#       NuDB is a high-performance database written by Ripple Labs and optimized
#       for rippled and solid-state drives.
#
#       NuDB maintains its high speed regardless of the amount of history
#       stored. Online delete may be selected, but is not required. NuDB is
#       available on all platforms that rippled runs on.
#
#   type = RocksDB
#
#       RocksDB is an open-source, general-purpose key/value store - see
#       http://rocksdb.org/ for more details.
#
#       RocksDB is an alternative backend for systems that don't use solid-state
#       drives.  Because RocksDB's performance degrades as it stores more data,
#       keeping full history is not advised, and using online delete is
#       recommended.  RocksDB is not available on Windows.
#
#       The RocksDB backend also provides these optional parameters:
#
#       compression         0 for none, 1 for Snappy compression
#
#
#
#   Required keys:
#       path                Location to store the database (all types)
#
#   Optional keys:
#
#       These keys are possible for any type of backend:
#
#       online_delete       Minimum value of 256. Enable automatic purging
#                           of older ledger information. Maintain at least this
#                           number of ledger records online. Must be greater
#                           than or equal to ledger_history.
#
#       advisory_delete     0 for disabled, 1 for enabled. If set, then
#                           require administrative RPC call "can_delete"
#                           to enable online deletion of ledger records.
#
#       earliest_seq        The default is 32570 to match the XRP ledger
#                           network's earliest allowed sequence. Alternate
#                           networks may set this value. Minimum value of 1. 
#
#   Notes:
#       The 'node_db' entry configures the primary, persistent storage.
#
#       The 'import_db' is used with the '--import' command line option to
#           migrate the specified database into the current database given
#           in the [node_db] section.
#
#   [import_db]     Settings for performing a one-time import (optional)
#   [database_path]   Path to the book-keeping databases.
#
#   [shard_db]      Settings for the Shard Database (optional)
#
#   Format (without spaces):
#       One or more lines of case-insensitive key / value pairs:
#       <key> '=' <value>
#       ...
#
#   Example:
#       type=nudb
#       path=db/shards/nudb
#
#   The "type" field must be present and controls the choice of backend:
#
#   type = NuDB
#       NuDB is recommended for shards.
#
#   type = RocksDB
#
#       The RocksDB backend also provides these optional parameters:
#
#       compression         0 for none, 1 for Snappy compression
#
#   Required keys:
#       path                Location to store the database (all types)
#
#       max_size_gb         Maximum disk space the database will utilize (in gigabytes)
#
#
#   There are 4 bookkeeping SQLite database that the server creates and
#   maintains. If you omit this configuration setting, it will default to
#   creating a directory called "db" located in the same place as your
#   rippled.cfg file. Partial pathnames will be considered relative to
#   the location of the rippled executable.
#
#
#
#
#-------------------------------------------------------------------------------
#
# 6. Diagnostics
#
#---------------
#
#   These settings are designed to help server administrators diagnose
#   problems, and obtain detailed information about the activities being
#   performed by the rippled process.
#
#
#
# [debug_logfile]
#
#   Specifies where a debug logfile is kept. By default, no debug log is kept.
#   Unless absolute, the path is relative the directory containing this file.
#
#   Example: debug.log
#
#
#
# [insight]
#
#   Configuration parameters for the Beast. Insight stats collection module.
#
#   Insight is a module that collects information from the areas of rippled
#   that have instrumentation. The configuration parameters control where the
#   collection metrics are sent. The parameters are expressed as key = value
#   pairs with no white space. The main parameter is the choice of server:
#
#     "server"
#
#       Choice of server to send metrics to. Currently the only choice is
#       "statsd" which sends UDP packets to a StatsD daemon, which must be
#       running while rippled is running. More information on StatsD is
#       available here:
#           https://github.com/b/statsd_spec
#
#       When server=statsd, these additional keys are used:
#
#       "address" The UDP address and port of the listening StatsD server,
#                 in the format, n.n.n.n:port.
#
#       "prefix"  A string prepended to each collected metric. This is used
#                 to distinguish between different running instances of rippled.
#
#     If this section is missing, or the server type is unspecified or unknown,
#     statistics are not collected or reported.
#
#   Example:
#
#     [insight]
#     server=statsd
#     address=192.168.0.95:4201
#     prefix=my_validator
#
# [perf]
#
#   Configuration of performance logging. If enabled, write Json-formatted
#   performance-oriented data periodically to a distinct log file.
#
#     "perf_log"      A string specifying the pathname of the performance log
#                     file. A relative pathname will log relative to the
#                     configuration directory. Required to enable
#                     performance logging.
#
#     "log_interval"  Integer value for number of seconds between writing
#                     to performance log. Default 1.
#
#   Example:
#     [perf]
#     perf_log=/var/log/rippled/perf.log
#     log_interval=2
#
#-------------------------------------------------------------------------------
#
# 7. Voting
#
#----------
#
#   The vote settings configure settings for the entire Ripple network.
#   While a single instance of rippled cannot unilaterally enforce network-wide
#   settings, these choices become part of the instance's vote during the
#   consensus process for each voting ledger.
#
# [voting]
#
#   A set of key/value pair parameters used during voting ledgers.
#
#   reference_fee = <drops>
#
#       The cost of the reference transaction fee, specified in drops.
#       The reference transaction is the simplest form of transaction.
#       It represents an XRP payment between two parties.
#
#       If this parameter is unspecified, rippled will use an internal
#       default. Don't change this without understanding the consequences.
#
#       Example:
#           reference_fee = 10           # 10 drops
#
#   account_reserve = <drops>
#
#       The account reserve requirement is specified in drops. The portion of an
#       account's XRP balance that is at or below the reserve may only be
#       spent on transaction fees, and not transferred out of the account.
#
#       If this parameter is unspecified, rippled will use an internal
#       default. Don't change this without understanding the consequences.
#
#       Example:
#           account_reserve = 20000000   # 20 XRP
#
#   owner_reserve = <drops>
#
#       The owner reserve is the amount of XRP reserved in the account for
#       each ledger item owned by the account. Ledger items an account may
#       own include trust lines, open orders, and tickets.
#
#       If this parameter is unspecified, rippled will use an internal
#       default. Don't change this without understanding the consequences.
#
#       Example:
#           owner_reserve = 5000000      # 5 XRP
#
#-------------------------------------------------------------------------------
#
# 8. Misc Settings
#
#----------
#
# [signing_support]
#
#   Specifies whether the server will accept "sign" and "sign_for" commands
#   from remote users. Even if the commands are sent over a secure protocol
#   like secure websocket, this should generally be discouraged, because it
#   requires sending the secret to use for signing to the server. In order
#   to sign transactions, users should prefer to use a standalone signing
#   tool instead.
#
#   This flag has no effect on the "sign" and "sign_for" command line options
#   that rippled makes available.
#
#   The default value of this field is "false"
#
#   Example:
#
#   [signing_support]
#   true
#
#-------------------------------------------------------------------------------
#
# 9. Example Settings
#
#--------------------
#
#   Administrators can use these values as a starting point for configuring
#   their instance of rippled, but each value should be checked to make sure
#   it meets the business requirements for the organization.
#
# Server
#
#   These example configuration settings create these ports:
#
#   "peer"
#
#       Peer protocol open to everyone. This is required to accept
#       incoming rippled connections. This does not affect automatic
#       or manual outgoing Peer protocol connections.
#
#   "rpc"
#
#       Administrative RPC commands over HTTPS, when originating from
#       the same machine (via the loopback adapter at 127.0.0.1).
#
#   "wss_admin"
#
#       Admin level API commands over Secure Websockets, when originating
#       from the same machine (via the loopback adapter at 127.0.0.1).
#
#   This port is commented out but can be enabled by removing
#   the '#' from each corresponding line including the entry under [server]
#
#   "wss_public"
#
#       Guest level API commands over Secure Websockets, open to everyone.
#
#   For HTTPS and Secure Websockets ports, if no certificate and key file
#   are specified then a self-signed certificate will be generated on startup.
#   If you have a certificate and key file, uncomment the corresponding lines
#   and ensure the paths to the files are correct.
#
#   NOTE
#
#       To accept connections on well known ports such as 80 (HTTP) or
#       443 (HTTPS), most operating systems will require rippled to
#       run with administrator privileges, or else rippled will not start.

[server]
port_rpc_admin_local
port_peer
port_ws_admin_local
#port_ws_public
#ssl_key = /etc/ssl/private/server.key
#ssl_cert = /etc/ssl/certs/server.crt

[port_rpc_admin_local]
port = 5005
ip = 127.0.0.1
admin = 127.0.0.1
protocol = http

[port_peer]
port = 51235
ip = 0.0.0.0
protocol = peer

[port_ws_admin_local]
port = 6006
ip = 127.0.0.1
admin = 127.0.0.1
protocol = ws

#[port_ws_public]
#port = 5005
#ip = 127.0.0.1
#protocol = wss

#-------------------------------------------------------------------------------

[node_size]
medium

# This is primary persistent datastore for rippled.  This includes transaction
# metadata, account states, and ledger headers.  Helpful information can be
# found here: https://ripple.com/wiki/NodeBackEnd
# delete old ledgers while maintaining at least 2000. Do not require an
# external administrative command to initiate deletion.
[node_db]
type=RocksDB
path=/var/lib/rippled/db/rocksdb
open_files=2000
filter_bits=12
cache_mb=256
file_size_mb=8
file_size_mult=2
online_delete=2000
advisory_delete=0

# This is the persistent datastore for shards. It is important for the health
# of the ripple network that rippled operators shard as much as practical.
# NuDB requires SSD storage. Helpful information can be found here
# https://ripple.com/build/history-sharding
#[shard_db]
#type=NuDB
#path=/var/lib/rippled/db/shards/nudb
#max_size_gb=500

[database_path]
/var/lib/rippled/db

# This needs to be an absolute directory reference, not a relative one.
# Modify this value as required.
[debug_logfile]
/var/log/rippled/debug.log

[sntp_servers]
time.windows.com
time.apple.com
time.nist.gov
pool.ntp.org

# Where to find some other servers speaking the Ripple protocol.
[ips]
r.ripple.com 51235

# To use the XRP test network (see https://ripple.com/build/xrp-test-net/),
# use the following [ips] section instead:
# [ips]
# r.altnet.rippletest.net 51235

# File containing trusted validator keys or validator list publishers.
# Unless an absolute path is specified, it will be considered relative to the
# folder in which the rippled.cfg file is located.
[validators_file]
validators.txt

# Turn down default logging to save disk space in the long run.
# Valid values here are trace, debug, info, warning, error, and fatal
[rpc_startup]
{ "command": "log_level", "severity": "warning" }

# If ssl_verify is 1, certificates will be validated.
# To allow the use of self-signed certificates for development or internal use,
# set to ssl_verify to 0.
[ssl_verify]
1
