-
-
Save keefertaylor/1c36e5d8c85eb524658c3d672fa45997 to your computer and use it in GitHub Desktop.
| # Install some prerequisites. | |
| # Assume you have homebrew installed, see: homebrew.sh | |
| brew install protobuf grpc [email protected] | |
| # Pull rippled on the gRPC branch | |
| $ git clone https://github.com/ripple/rippled | |
| $ cd rippled | |
| $ git fetch origin pull/3159/head:grpc | |
| $ git checkout grpc | |
| # Build rippled on OSX | |
| # Follow: https://github.com/ripple/rippled/blob/develop/Builds/macos/README.md | |
| # Create a config file | |
| $ touch rippled.cfg | |
| # Add contents of rippled.cfg (in this gist) to rippled.cfg on disk. | |
| # Run rippled | |
| $ sudo ./rippled --conf ./rippled.cfg | |
| # gRPC is now listening on 127.0.0.1:500051 |
| #------------------------------------------------------------------------------- | |
| # | |
| # | |
| #------------------------------------------------------------------------------- | |
| # | |
| # Contents | |
| # | |
| # 1. Server | |
| # | |
| # 2. Peer Protocol | |
| # | |
| # 3. Ripple Protocol | |
| # | |
| # 4. HTTPS Client | |
| # | |
| # 5. Database | |
| # | |
| # 6. Diagnostics | |
| # | |
| # 7. Voting | |
| # | |
| # 8. Misc Settings | |
| # | |
| # 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, visit: | |
| # | |
| # https://developers.ripple.com/commandline-usage.html#generic-options | |
| # | |
| # 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. | |
| # Parentheses 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 IPv4 interfaces, use 0.0.0.0 | |
| # To binding to all IPv4 and IPv6 interfaces, use :: | |
| # | |
| # NOTE if the ip value is ::, then any incoming IPv4 connections will | |
| # be made as mapped IPv4 addresses. | |
| # | |
| # 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 not provided, the default is to not allow | |
| # administrative commands. | |
| # | |
| # NOTE A common configuration value for the admin field is "localhost". | |
| # If you are listening on all IPv4/IPv6 addresses by specifing | |
| # ip = :: then you can use admin = ::ffff:127.0.0.1,::1 to allow | |
| # administrative access from both IPv4 and IPv6 localhost | |
| # connections. | |
| # | |
| # *SECURITY WARNING* | |
| # 0.0.0.0 or :: may be used 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. A default | |
| # starter list is included in the code and used if no other hostnames are | |
| # available. | |
| # | |
| # One address or domain name per line is allowed. A port may must be | |
| # specified after adding a space to the address. The ordering of entries | |
| # does not generally matter. | |
| # | |
| # The default list of entries is: | |
| # - r.ripple.com 51235 | |
| # - zaphod.alloy.ee 51235 | |
| # - sahyadri.isrdc.in 51235 | |
| # | |
| # Examples: | |
| # | |
| # [ips] | |
| # 192.168.0.1 | |
| # 192.168.0.1 2459 | |
| # 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 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. | |
| # | |
| # | |
| # | |
| # [network_id] | |
| # | |
| # Specify the network which this server is configured to connect to and | |
| # track. If set, the server will not establish connections with servers | |
| # that are explicitly configured to track another network. | |
| # | |
| # Network identifiers are usually unsigned integers in the range 0 to | |
| # 4294967295 inclusive. The server also maps the following well-known | |
| # names to the corresponding numerical identifier: | |
| # | |
| # main -> 0 | |
| # testnet -> 1 | |
| # | |
| # If this value is not specified the server is not explicitly configured | |
| # to track a particular network. | |
| # | |
| # | |
| #------------------------------------------------------------------------------- | |
| # | |
| # 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. | |
| # | |
| # 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: | |
| # path=db/shards/nudb | |
| # | |
| # Required keys: | |
| # path Location to store the database | |
| # | |
| # 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 | |
| # | |
| # [crawl] | |
| # | |
| # List of options to control what data is reported through the /crawl endpoint | |
| # See https://developers.ripple.com/peer-protocol.html#peer-crawler | |
| # | |
| # <flag> | |
| # | |
| # Enable or disable access to /crawl requests. Default is '1' which | |
| # enables access. | |
| # | |
| # overlay = <flag> | |
| # | |
| # Report information about peers this server is connected to, similar | |
| # to the "peers" RPC API. Default is '1' which means to report peer | |
| # overlay info. | |
| # | |
| # server = <flag> | |
| # | |
| # Report information about the local server, similar to the "server_state" | |
| # RPC API. Default is '1' which means to report local server info. | |
| # | |
| # counts = <flag> | |
| # | |
| # Report information about the local server health counters, similar to | |
| # the "get_counts" RPC API. Default is '0' which means not to report | |
| # server counts. | |
| # | |
| # unl = <flag> | |
| # | |
| # Report information about the local server's validator lists, similar to | |
| # the "validators" and "validator_list_sites" RPC APIs. Default is '1' | |
| # which means to report server validator lists. | |
| # | |
| # Examples: | |
| # | |
| # [crawl] | |
| # 0 | |
| # | |
| # [crawl] | |
| # overlay = 1 | |
| # server = 1 | |
| # counts = 0 | |
| # unl = 1 | |
| # | |
| #------------------------------------------------------------------------------- | |
| # | |
| # 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 | |
| # alternatively, to accept connections on IPv4 + IPv6, use: | |
| #ip = :: | |
| protocol = peer | |
| [port_ws_admin_local] | |
| port = 6006 | |
| ip = 127.0.0.1 | |
| admin = 127.0.0.1 | |
| protocol = ws | |
| [port_grpc] | |
| port = 50051 | |
| ip = 127.0.0.1 | |
| #[port_ws_public] | |
| #port = 6005 | |
| #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=./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] | |
| #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] | |
| ./log/rippled/debug.log | |
| [sntp_servers] | |
| time.windows.com | |
| time.apple.com | |
| time.nist.gov | |
| pool.ntp.org | |
| # To use the XRP test network (see https://ripple.com/build/xrp-test-net/), | |
| # use the following [ips] section: | |
| # [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] |
You'll need one more command to copy the validators.txt into the build folder.
Also, this is a local rippled? So to test let client = XpringClient(grpcURL: "127.0.0.1:500051")?
Also, I want this on the test net. I need to uncomment the?
[ips]
r.altnet.rippletest.net 51235
Xpring Client will use the protocol buffers that are wired into it from xpring-common-protocol-buffers, which are different from the protocol buffers that rippled uses. We'll wire XpringClient for these protocol buffers shortly (and you've started the work in PR #65 on XpringKit).
You should look at XpringKit/generated/rpc/v1/xrp_ledger.grpc.swift . The class Rpc_V1_XRPLedgerAPIServiceService (Awkward generated naming, I pinged cjcobb23@ to see if we can fix this) gives a client that can talk to the rippled gRPC interface directly.
Also, I want this on the test net. I need to uncomment the?
[ips] r.altnet.rippletest.net 51235
Yes, as the comment says in the config, uncomment those lines. There is a lot of documentation at https://xrpl.org/configure-rippled.html in regards to running the rippled server.
I got this even when I uncommented the ips:
2020-Jan-09 01:08:47.225623 ValidatorSite:DBG Starting request for https://vl.ripple.com
2020-Jan-09 01:08:47.225620 NetworkOPs:NFO Consensus time for #3 with LCL FA6AA2F03132FE05E8D33BEA30A788BBC7A407345216EE7E279781FE9F6A97D6
2020-Jan-09 01:08:47.225786 ValidatorList:DBG 0 of 0 listed validators eligible for inclusion in the trusted set
2020-Jan-09 01:08:47.225829 ValidatorList:DBG Using quorum of 18446744073709551615 for new set of 0 trusted validators (0 added, 0 removed)
2020-Jan-09 01:08:47.225867 ValidatorList:WRN New quorum of 18446744073709551615 exceeds the number of trusted validators (0)
2020-Jan-09 01:08:47.225915 LedgerConsensus:NFO Entering consensus process, watching, synced=no
2020-Jan-09 01:08:47.225975 LedgerConsensus:NFO Consensus mode change before=observing, after=observing
2020-Jan-09 01:08:47.226077 NetworkOPs:DBG Initiating consensus engine
2020-Jan-09 01:08:47.269038 Server:NFO Opened 'port_rpc_admin_local' (ip=127.0.0.1:5005, admin IPs:127.0.0.1, http)
2020-Jan-09 01:08:47.269323 Server:NFO Opened 'port_peer' (ip=0.0.0.0:51235, peer)
2020-Jan-09 01:08:47.269685 Server:NFO Opened 'port_ws_admin_local' (ip=127.0.0.1:6006, admin IPs:127.0.0.1, ws)
2020-Jan-09 01:08:47.270039 Application:FTL Startup RPC:
{
"command" : "log_level",
"severity" : "warning"
}
So I was unsure.
Please follow the directions at https://xrpl.org/connect-your-rippled-to-the-xrp-test-net.html to connect to the devnet or testnet. There is a section at the bottom that describes how to verify that you are connected to the devnet or testnet.
@keefertaylor the url is 127.0.0.1:50051 not 127.0.0.1:500051 just fyi
Ubuntu 18.04 x64 https://gist.github.com/dangell7/a1837accd87118042117e9c6d2550c3f