diff --git a/nano/lib/diagnosticsconfig.cpp b/nano/lib/diagnosticsconfig.cpp index 8f2684a7..e400c5f3 100644 --- a/nano/lib/diagnosticsconfig.cpp +++ b/nano/lib/diagnosticsconfig.cpp @@ -35,10 +35,10 @@ nano::error nano::diagnostics_config::deserialize_json (nano::jsonconfig & json) nano::error nano::diagnostics_config::serialize_toml (nano::tomlconfig & toml) const { nano::tomlconfig txn_tracking_l; - txn_tracking_l.put ("enable", txn_tracking.enable, "Enable or disable database transaction tracing\ntype:bool"); - txn_tracking_l.put ("min_read_txn_time", txn_tracking.min_read_txn_time.count (), "Log stacktrace when read transactions are held longer than this duration\ntype:milliseconds"); - txn_tracking_l.put ("min_write_txn_time", txn_tracking.min_write_txn_time.count (), "Log stacktrace when write transactions are held longer than this duration\ntype:milliseconds"); - txn_tracking_l.put ("ignore_writes_below_block_processor_max_time", txn_tracking.ignore_writes_below_block_processor_max_time, "Ignore any block processor writes less than block_processor_batch_max_time\ntype:bool"); + txn_tracking_l.put ("enable", txn_tracking.enable, "Enable or disable database transaction tracing.\ntype:bool"); + txn_tracking_l.put ("min_read_txn_time", txn_tracking.min_read_txn_time.count (), "Log stacktrace when read transactions are held longer than this duration.\ntype:milliseconds"); + txn_tracking_l.put ("min_write_txn_time", txn_tracking.min_write_txn_time.count (), "Log stacktrace when write transactions are held longer than this duration.\ntype:milliseconds"); + txn_tracking_l.put ("ignore_writes_below_block_processor_max_time", txn_tracking.ignore_writes_below_block_processor_max_time, "Ignore any block processor writes less than block_processor_batch_max_time.\ntype:bool"); toml.put_child ("txn_tracking", txn_tracking_l); return toml.get_error (); } diff --git a/nano/lib/rocksdbconfig.cpp b/nano/lib/rocksdbconfig.cpp index 4008f8af..c0f50955 100644 --- a/nano/lib/rocksdbconfig.cpp +++ b/nano/lib/rocksdbconfig.cpp @@ -3,15 +3,15 @@ nano::error nano::rocksdb_config::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("enable", enable, "Whether to use the RocksDB backend for the ledger database\ntype:bool"); + toml.put ("enable", enable, "Whether to use the RocksDB backend for the ledger database.\ntype:bool"); toml.put ("enable_pipelined_write", enable_pipelined_write, "Whether to use 2 separate write queues for memtable/WAL, true is recommended.\ntype:bool"); toml.put ("cache_index_and_filter_blocks", cache_index_and_filter_blocks, "Whether index and filter blocks are stored in block_cache, true is recommended.\ntype:bool"); - toml.put ("bloom_filter_bits", bloom_filter_bits, "Number of bits to use with a bloom filter. Helps with point reads but uses more memory. 0 disables the bloom filter, 10 is recommended\ntype:uint32"); + toml.put ("bloom_filter_bits", bloom_filter_bits, "Number of bits to use with a bloom filter. Helps with point reads but uses more memory. 0 disables the bloom filter, 10 is recommended.\ntype:uint32"); toml.put ("block_cache", block_cache, "Size (MB) of the block cache; A larger number will increase performance of read operations. At least 512MB is recommended.\ntype:uint64"); toml.put ("io_threads", io_threads, "Number of threads to use with the background compaction and flushing. Number of hardware threads is recommended.\ntype:uint32"); toml.put ("block_size", block_size, "Uncompressed data (KBs) per block. Increasing block size decreases memory usage and space amplification, but increases read amplification. 16 is recommended.\ntype:uint32"); toml.put ("num_memtables", num_memtables, "Number of memtables to keep in memory per column family. 2 is the minimum, 3 is recommended.\ntype:uint32"); - toml.put ("memtable_size", memtable_size, "Amount of memory (MB) to build up before flushing to disk for an individual column family. Large values increase performance. 64 or 128 is recommended\ntype:uint32"); + toml.put ("memtable_size", memtable_size, "Amount of memory (MB) to build up before flushing to disk for an individual column family. Large values increase performance. 64 or 128 is recommended.\ntype:uint32"); toml.put ("total_memtable_size", total_memtable_size, "Total memory (MB) which can be used across all memtables, set to 0 for unconstrained.\ntype:uint32"); return toml.get_error (); } diff --git a/nano/lib/rpcconfig.cpp b/nano/lib/rpcconfig.cpp index 832525ab..a5e18d11 100644 --- a/nano/lib/rpcconfig.cpp +++ b/nano/lib/rpcconfig.cpp @@ -31,13 +31,13 @@ nano::error nano::rpc_secure_config::deserialize_json (nano::jsonconfig & json) nano::error nano::rpc_secure_config::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("enable", enable, "Enable or disable TLS support\ntype:bool"); - toml.put ("verbose_logging", verbose_logging, "Enable or disable verbose logging\ntype:bool"); - toml.put ("server_key_passphrase", server_key_passphrase, "Server key passphrase\ntype:string"); - toml.put ("server_cert_path", server_cert_path, "Directory containing certificates\ntype:string,path"); - toml.put ("server_key_path", server_key_path, "Path to server key PEM file\ntype:string,path"); - toml.put ("server_dh_path", server_dh_path, "Path to Diffie-Hellman params file\ntype:string,path"); - toml.put ("client_certs_path", client_certs_path, "Directory containing client certificates\ntype:string"); + toml.put ("enable", enable, "Enable or disable TLS support.\ntype:bool"); + toml.put ("verbose_logging", verbose_logging, "Enable or disable verbose logging.\ntype:bool"); + toml.put ("server_key_passphrase", server_key_passphrase, "Server key passphrase.\ntype:string"); + toml.put ("server_cert_path", server_cert_path, "Directory containing certificates.\ntype:string,path"); + toml.put ("server_key_path", server_key_path, "Path to server key PEM file.\ntype:string,path"); + toml.put ("server_dh_path", server_dh_path, "Path to Diffie-Hellman params file.\ntype:string,path"); + toml.put ("client_certs_path", client_certs_path, "Directory containing client certificates.\ntype:string"); return toml.get_error (); } @@ -141,17 +141,17 @@ nano::error nano::rpc_config::deserialize_json (bool & upgraded_a, nano::jsoncon nano::error nano::rpc_config::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("address", address.to_string (), "Bind address for the RPC server\ntype:string,ip"); - toml.put ("port", port, "Listening port for the RPC server\ntype:uint16"); - toml.put ("enable_control", enable_control, "Enable or disable control-level requests\ntype:bool"); - toml.put ("max_json_depth", max_json_depth, "Maximum number of levels in JSON requests\ntype:uint8"); - toml.put ("max_request_size", max_request_size, "Maximum number of bytes allowed in request bodies\ntype:uint64"); + toml.put ("address", address.to_string (), "Bind address for the RPC server.\ntype:string,ip"); + toml.put ("port", port, "Listening port for the RPC server.\ntype:uint16"); + toml.put ("enable_control", enable_control, "Enable or disable control-level requests.\ntype:bool"); + toml.put ("max_json_depth", max_json_depth, "Maximum number of levels in JSON requests.\ntype:uint8"); + toml.put ("max_request_size", max_request_size, "Maximum number of bytes allowed in request bodies.\ntype:uint64"); nano::tomlconfig rpc_process_l; - rpc_process_l.put ("io_threads", rpc_process.io_threads, "Number of threads used to serve IO\ntype:uint32"); - rpc_process_l.put ("ipc_address", rpc_process.ipc_address.to_string (), "Address of IPC server\ntype:string,ip"); - rpc_process_l.put ("ipc_port", rpc_process.ipc_port, "Listening port of IPC server\ntype:uint16"); - rpc_process_l.put ("num_ipc_connections", rpc_process.num_ipc_connections, "Number of IPC connections to establish\ntype:uint32"); + rpc_process_l.put ("io_threads", rpc_process.io_threads, "Number of threads used to serve IO.\ntype:uint32"); + rpc_process_l.put ("ipc_address", rpc_process.ipc_address.to_string (), "Address of IPC server.\ntype:string,ip"); + rpc_process_l.put ("ipc_port", rpc_process.ipc_port, "Listening port of IPC server.\ntype:uint16"); + rpc_process_l.put ("num_ipc_connections", rpc_process.num_ipc_connections, "Number of IPC connections to establish.\ntype:uint32"); toml.put_child ("process", rpc_process_l); return toml.get_error (); } diff --git a/nano/lib/stats.cpp b/nano/lib/stats.cpp index fba556b4..dc5e28ba 100644 --- a/nano/lib/stats.cpp +++ b/nano/lib/stats.cpp @@ -74,7 +74,7 @@ nano::error nano::stat_config::deserialize_toml (nano::tomlconfig & toml) nano::error nano::stat_config::serialize_toml (nano::tomlconfig & toml) const { nano::tomlconfig sampling_l; - sampling_l.put ("enable", sampling_enabled, "Enable or disable samling.\ntype:bool"); + sampling_l.put ("enable", sampling_enabled, "Enable or disable sampling.\ntype:bool"); sampling_l.put ("capacity", capacity, "How many sample intervals to keep in the ring buffer.\ntype:uint64"); sampling_l.put ("interval", interval, "Sample interval.\ntype:milliseconds"); toml.put_child ("sampling", sampling_l); diff --git a/nano/node/cli.cpp b/nano/node/cli.cpp index b4951cc8..7a08d3b4 100644 --- a/nano/node/cli.cpp +++ b/nano/node/cli.cpp @@ -472,6 +472,13 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map if (valid_type) { + std::cout << "# This is an example configuration file for nano_node. Visit https://docs.nano.org/running-a-node/configuration/ for more information.\n#\n" + << "# Fields are defined in the context of the [category] above them.\n" + << "# The desired configuration changes should be placed in a config-node.toml in the node data path.\n" + << "# To change a value from its default, uncomment (erasing #) the corresponding field.\n" + << "# It is not recommended to uncomment every field, as the default value for important fields may change in the future. Only change what you need.\n" + << "# Additional information for notable configuration options is available in https://docs.nano.org/running-a-node/configuration/#notable-configuration-options\n"; + if (vm.count ("use_defaults")) { std::cout << toml.to_string () << std::endl; diff --git a/nano/node/ipcconfig.cpp b/nano/node/ipcconfig.cpp index 48c4e038..4180e40b 100644 --- a/nano/node/ipcconfig.cpp +++ b/nano/node/ipcconfig.cpp @@ -5,14 +5,14 @@ nano::error nano::ipc::ipc_config::serialize_toml (nano::tomlconfig & toml) const { nano::tomlconfig tcp_l; + tcp_l.put ("enable", transport_tcp.enabled, "Enable or disable IPC via TCP server.\ntype:bool"); + tcp_l.put ("port", transport_tcp.port, "Server listening port.\ntype:uint16"); + tcp_l.put ("io_timeout", transport_tcp.io_timeout, "Timeout for requests.\ntype:seconds"); // Only write out experimental config values if they're previously set explicitly in the config file if (transport_tcp.io_threads >= 0) { - tcp_l.put ("io_threads", transport_tcp.io_threads); + tcp_l.put ("io_threads", transport_tcp.io_threads, "Number of threads dedicated to TCP I/O. Experimental.\ntype:uint64_t"); } - tcp_l.put ("enable", transport_tcp.enabled); - tcp_l.put ("port", transport_tcp.port); - tcp_l.put ("io_timeout", transport_tcp.io_timeout); toml.put_child ("tcp", tcp_l); nano::tomlconfig domain_l; @@ -20,10 +20,10 @@ nano::error nano::ipc::ipc_config::serialize_toml (nano::tomlconfig & toml) cons { domain_l.put ("io_threads", transport_domain.io_threads); } - domain_l.put ("enable", transport_domain.enabled); - domain_l.put ("allow_unsafe", transport_domain.allow_unsafe); - domain_l.put ("path", transport_domain.path); - domain_l.put ("io_timeout", transport_domain.io_timeout); + domain_l.put ("enable", transport_domain.enabled, "Enable or disable IPC via local domain socket.\ntype:bool"); + domain_l.put ("allow_unsafe", transport_domain.allow_unsafe, "If enabled, certain unsafe RPCs can be used. Not recommended for production systems.\ntype:bool"); + domain_l.put ("path", transport_domain.path, "Path to the local domain socket.\ntype:string"); + domain_l.put ("io_timeout", transport_domain.io_timeout, "Timeout for requests.\ntype:seconds"); toml.put_child ("local", domain_l); return toml.get_error (); } diff --git a/nano/node/logging.cpp b/nano/node/logging.cpp index 2e82b785..b296203d 100644 --- a/nano/node/logging.cpp +++ b/nano/node/logging.cpp @@ -84,30 +84,30 @@ void nano::logging::release_file_sink () nano::error nano::logging::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("ledger", ledger_logging_value, "Log ledger related messages\ntype:bool"); - toml.put ("ledger_duplicate", ledger_duplicate_logging_value, "Log when a duplicate block is attempted inserted into the ledger\ntype:bool"); - toml.put ("vote", vote_logging_value, "Vote logging. Enabling this option leads to a high volume\nof log messages which may affect node performance\ntype:bool"); - toml.put ("network", network_logging_value, "Log network related messages\ntype:bool"); - toml.put ("network_timeout", network_timeout_logging_value, "Log TCP timeouts\ntype:bool"); - toml.put ("network_message", network_message_logging_value, "Log network errors and message details\ntype:bool"); - toml.put ("network_publish", network_publish_logging_value, "Log publish related network messages\ntype:bool"); - toml.put ("network_packet", network_packet_logging_value, "Log network packet activity\ntype:bool"); - toml.put ("network_keepalive", network_keepalive_logging_value, "Log keepalive related messages\ntype:bool"); - toml.put ("network_node_id_handshake", network_node_id_handshake_logging_value, "Log node-id handshake related messages\ntype:bool"); - toml.put ("node_lifetime_tracing", node_lifetime_tracing_value, "Log node startup and shutdown messages\ntype:bool"); - toml.put ("insufficient_work", insufficient_work_logging_value, "Log if insufficient work is detected\ntype:bool"); - toml.put ("log_ipc", log_ipc_value, "Log IPC related activity\ntype:bool"); - toml.put ("bulk_pull", bulk_pull_logging_value, "Log bulk pull errors and messages\ntype:bool"); - toml.put ("work_generation_time", work_generation_time_value, "Log work generation timing information\ntype:bool"); - toml.put ("upnp_details", upnp_details_logging_value, "Log UPNP discovery details. WARNING: this may include information\nabout discovered devices, such as product identification. Please review before sharing logs.\ntype:bool"); - toml.put ("timing", timing_logging_value, "Log detailed timing information for various node operations\ntype:bool"); - toml.put ("active_update", active_update_value, "Log when a block is updated while in active transactions\ntype:bool"); - toml.put ("log_to_cerr", log_to_cerr_value, "Log to standard error in addition to the log file\ntype:bool"); - toml.put ("max_size", max_size, "Maximum log file size in bytes\ntype:uint64"); - toml.put ("rotation_size", rotation_size, "Log file rotation size in character count\ntype:uint64"); - toml.put ("flush", flush, "If enabled, immediately flush new entries to log file. This may negatively affect logging performance.\ntype:bool"); - toml.put ("min_time_between_output", min_time_between_log_output.count (), "Minimum time that must pass for low priority entries to be logged\ntype:milliseconds"); - toml.put ("single_line_record", single_line_record_value, "Keep log entries on single lines\ntype:bool"); + toml.put ("ledger", ledger_logging_value, "Log ledger related messages.\ntype:bool"); + toml.put ("ledger_duplicate", ledger_duplicate_logging_value, "Log when a duplicate block is attempted inserted into the ledger.\ntype:bool"); + toml.put ("vote", vote_logging_value, "Vote logging. Enabling this option leads to a high volume.\nof log messages which may affect node performance.\ntype:bool"); + toml.put ("network", network_logging_value, "Log network related messages.\ntype:bool"); + toml.put ("network_timeout", network_timeout_logging_value, "Log TCP timeouts.\ntype:bool"); + toml.put ("network_message", network_message_logging_value, "Log network errors and message details.\ntype:bool"); + toml.put ("network_publish", network_publish_logging_value, "Log publish related network messages.\ntype:bool"); + toml.put ("network_packet", network_packet_logging_value, "Log network packet activity.\ntype:bool"); + toml.put ("network_keepalive", network_keepalive_logging_value, "Log keepalive related messages.\ntype:bool"); + toml.put ("network_node_id_handshake", network_node_id_handshake_logging_value, "Log node-id handshake related messages.\ntype:bool"); + toml.put ("node_lifetime_tracing", node_lifetime_tracing_value, "Log node startup and shutdown messages.\ntype:bool"); + toml.put ("insufficient_work", insufficient_work_logging_value, "Log if insufficient work is detected.\ntype:bool"); + toml.put ("log_ipc", log_ipc_value, "Log IPC related activity.\ntype:bool"); + toml.put ("bulk_pull", bulk_pull_logging_value, "Log bulk pull errors and messages.\ntype:bool"); + toml.put ("work_generation_time", work_generation_time_value, "Log work generation timing information.\ntype:bool"); + toml.put ("upnp_details", upnp_details_logging_value, "Log UPNP discovery details..\nWarning: this may include information.\nabout discovered devices, such as product identification. Please review before sharing logs.\ntype:bool"); + toml.put ("timing", timing_logging_value, "Log detailed timing information for various node operations.\ntype:bool"); + toml.put ("active_update", active_update_value, "Log when a block is updated while in active transactions.\ntype:bool"); + toml.put ("log_to_cerr", log_to_cerr_value, "Log to standard error in addition to the log file. Not recommended for production systems.\ntype:bool"); + toml.put ("max_size", max_size, "Maximum log file size in bytes.\ntype:uint64"); + toml.put ("rotation_size", rotation_size, "Log file rotation size in character count.\ntype:uint64"); + toml.put ("flush", flush, "If enabled, immediately flush new entries to log file.\nWarning: this may negatively affect logging performance.\ntype:bool"); + toml.put ("min_time_between_output", min_time_between_log_output.count (), "Minimum time that must pass for low priority entries to be logged.\nWarning: decreasing this value may result in a very large amount of logs.\ntype:milliseconds"); + toml.put ("single_line_record", single_line_record_value, "Keep log entries on single lines.\ntype:bool"); return toml.get_error (); } diff --git a/nano/node/node_rpc_config.cpp b/nano/node/node_rpc_config.cpp index b9b1e8ef..75e7cbb5 100644 --- a/nano/node/node_rpc_config.cpp +++ b/nano/node/node_rpc_config.cpp @@ -19,7 +19,7 @@ nano::error nano::node_rpc_config::serialize_json (nano::jsonconfig & json) cons nano::error nano::node_rpc_config::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("enable_sign_hash", enable_sign_hash, "Allow or disallow signing of hashes\ntype:bool"); + toml.put ("enable_sign_hash", enable_sign_hash, "Allow or disallow signing of hashes.\ntype:bool"); nano::tomlconfig child_process_l; child_process_l.put ("enable", child_process.enable, "Enable or disable RPC child process. If false, an in-process RPC server is used.\ntype:bool"); diff --git a/nano/node/nodeconfig.cpp b/nano/node/nodeconfig.cpp index dbbb5e5b..cce5a840 100644 --- a/nano/node/nodeconfig.cpp +++ b/nano/node/nodeconfig.cpp @@ -64,54 +64,54 @@ logging (logging_a) nano::error nano::node_config::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("peering_port", peering_port, "Node peering port\ntype:uint16"); - toml.put ("bootstrap_fraction_numerator", bootstrap_fraction_numerator, "Change bootstrap threshold (online stake / 256 * bootstrap_fraction_numerator)\ntype:uint32"); - toml.put ("receive_minimum", receive_minimum.to_string_dec (), "Minimum receive amount\ntype:string,amount,raw"); - toml.put ("online_weight_minimum", online_weight_minimum.to_string_dec (), "Online weight minimum required to confirm block\ntype:string,amount,raw"); - toml.put ("online_weight_quorum", online_weight_quorum, "Percentage of votes required to rollback blocks\ntype:uint64"); - toml.put ("password_fanout", password_fanout, "Password fanout factor\ntype:uint64"); - toml.put ("io_threads", io_threads, "Number of threads dedicated to I/O opeations\ntype:uint64"); - toml.put ("network_threads", network_threads, "Number of threads dedicated to processing network messages\ntype:uint64"); + toml.put ("peering_port", peering_port, "Node peering port.\ntype:uint16"); + toml.put ("bootstrap_fraction_numerator", bootstrap_fraction_numerator, "Change bootstrap threshold (online stake / 256 * bootstrap_fraction_numerator).\ntype:uint32"); + toml.put ("receive_minimum", receive_minimum.to_string_dec (), "Minimum receive amount. Only affects node wallets. A large amount is recommended to avoid automatic work generation for tiny transactions.\ntype:string,amount,raw"); + toml.put ("online_weight_minimum", online_weight_minimum.to_string_dec (), "Online weight minimum required to confirm a block.\ntype:string,amount,raw"); + toml.put ("online_weight_quorum", online_weight_quorum, "Percentage of votes required to confirm blocks. A value below 50 is not recommended.\ntype:uint64"); + toml.put ("password_fanout", password_fanout, "Password fanout factor.\ntype:uint64"); + toml.put ("io_threads", io_threads, "Number of threads dedicated to I/O opeations. Defaults to the number of CPU threads, and at least 4.\ntype:uint64"); + toml.put ("network_threads", network_threads, "Number of threads dedicated to processing network messages. Defaults to the number of CPU threads, and at least 4.\ntype:uint64"); toml.put ("work_threads", work_threads, "Number of threads dedicated to CPU generated work. Defaults to all available CPU threads.\ntype:uint64"); - toml.put ("signature_checker_threads", signature_checker_threads, "Number of additional threads dedicated to signature verification\ntype:uint64"); - toml.put ("enable_voting", enable_voting, "Enable or disable voting. Enabling voting requires additional system resources.\ntype:bool"); - toml.put ("bootstrap_connections", bootstrap_connections, "Number of outbound bootstrap connections. Must be a power of 2.\ntype:uint64"); - toml.put ("bootstrap_connections_max", bootstrap_connections_max, "Maximum number of inbound bootstrap connections\ntype:uint64"); - toml.put ("lmdb_max_dbs", lmdb_max_dbs, "Maximum open lmdb databases. Increase default if more than 100 wallets is required.\ntype:uint64"); - toml.put ("block_processor_batch_max_time", block_processor_batch_max_time.count (), "The maximum time the block processor can process blocks at a time\ntype:milliseconds"); - toml.put ("allow_local_peers", allow_local_peers, "Enable or disable local host peering\ntype:bool"); - toml.put ("vote_minimum", vote_minimum.to_string_dec (), "Do not vote if delegated weight is under this threshold\ntype:string,amount,raw"); - toml.put ("vote_generator_delay", vote_generator_delay.count (), "Delay before votes are sent to allow for better bundling of hashes in votes.\nHigh performance nodes may need slightly higher values to optimize vote bandwidth.\ntype:milliseconds"); - toml.put ("vote_generator_threshold", vote_generator_threshold, "Number of bundled hashes required for an additional generator delay\ntype:uint64,[1..11]"); - toml.put ("unchecked_cutoff_time", unchecked_cutoff_time.count (), "Number of seconds unchecked entry survives before being cleaned\ntype:seconds"); - toml.put ("tcp_io_timeout", tcp_io_timeout.count (), "Timeout for TCP connect-, read- and write operations\ntype:seconds"); - toml.put ("pow_sleep_interval", pow_sleep_interval.count (), "The amount to sleep after each batch of POW calculations. Reduces max CPU usage at the expensive of a longer.\ntype:nanoseconds"); + toml.put ("signature_checker_threads", signature_checker_threads, "Number of additional threads dedicated to signature verification. Defaults to the number of CPU threads minus 1.\ntype:uint64"); + toml.put ("enable_voting", enable_voting, "Enable or disable voting. Enabling this option requires additional system resources, namely increased CPU, bandwidth and disk usage.\ntype:bool"); + toml.put ("bootstrap_connections", bootstrap_connections, "Number of outbound bootstrap connections. Must be a power of 2. Defaults to 4.\nWarning: a larger amount of connections may use substantially more system memory.\ntype:uint64"); + toml.put ("bootstrap_connections_max", bootstrap_connections_max, "Maximum number of inbound bootstrap connections. Defaults to 64.\nWarning: a larger amount of connections may use additional system memory.\ntype:uint64"); + toml.put ("lmdb_max_dbs", lmdb_max_dbs, "Maximum open lmdb databases. Increase default if more than 100 wallets is required.\nNote: external management is recommended when a large amounts of wallets are required (see https://docs.nano.org/integration-guides/key-management/).\ntype:uint64"); + toml.put ("block_processor_batch_max_time", block_processor_batch_max_time.count (), "The maximum time the block processor can continously process blocks for.\ntype:milliseconds"); + toml.put ("allow_local_peers", allow_local_peers, "Enable or disable local host peering.\ntype:bool"); + toml.put ("vote_minimum", vote_minimum.to_string_dec (), "Local representatives do not vote if the delegated weight is under this threshold. Saves on system resources.\ntype:string,amount,raw"); + toml.put ("vote_generator_delay", vote_generator_delay.count (), "Delay before votes are sent to allow for efficient bundling of hashes in votes.\ntype:milliseconds"); + toml.put ("vote_generator_threshold", vote_generator_threshold, "Number of bundled hashes required for an additional generator delay.\ntype:uint64,[1..11]"); + toml.put ("unchecked_cutoff_time", unchecked_cutoff_time.count (), "Number of seconds before deleting an unchecked entry.\nWarning: lower values (e.g., 3600 seconds, or 1 hour) may result in unsuccessful bootstraps, especially a bootstrap from scratch.\ntype:seconds"); + toml.put ("tcp_io_timeout", tcp_io_timeout.count (), "Timeout for TCP connect-, read- and write operations.\nWarning: a low value (e.g., below 5 seconds) may result in TCP connections failing.\ntype:seconds"); + toml.put ("pow_sleep_interval", pow_sleep_interval.count (), "Time to sleep between batch work generation attempts. Reduces max CPU usage at the expense of a longer generation time.\ntype:nanoseconds"); toml.put ("external_address", external_address.to_string (), "The external address of this node (NAT). If not set, the node will request this information via UPnP.\ntype:string,ip"); - toml.put ("external_port", external_port, "The external port number of this node (NAT). If not set, the node will request this information via UPnP.\ntype:uint16"); - toml.put ("tcp_incoming_connections_max", tcp_incoming_connections_max, "Maximum number of incoming TCP connections\ntype:uint64"); + toml.put ("external_port", external_port, "The external port number of this node (NAT). Only used if external_address is set.\ntype:uint16"); + toml.put ("tcp_incoming_connections_max", tcp_incoming_connections_max, "Maximum number of incoming TCP connections.\ntype:uint64"); toml.put ("use_memory_pools", use_memory_pools, "If true, allocate memory from memory pools. Enabling this may improve performance. Memory is never released to the OS.\ntype:bool"); - toml.put ("confirmation_history_size", confirmation_history_size, "Maximum confirmation history size\ntype:uint64"); - toml.put ("active_elections_size", active_elections_size, "Limits number of active elections before dropping will be considered (other conditions must also be satisfied)\ntype:uint64,[250..]"); - toml.put ("bandwidth_limit", bandwidth_limit, "Outbound traffic limit in bytes/sec after which messages will be dropped\ntype:uint64"); - toml.put ("conf_height_processor_batch_min_time", conf_height_processor_batch_min_time.count (), "Minimum write batching time when there are blocks pending confirmation height\ntype:milliseconds"); - toml.put ("backup_before_upgrade", backup_before_upgrade, "Backup the ledger database before performing upgrades\ntype:bool"); + toml.put ("confirmation_history_size", confirmation_history_size, "Maximum confirmation history size. If tracking the rate of block confirmations, the websocket feature is recommended instead.\ntype:uint64"); + toml.put ("active_elections_size", active_elections_size, "Number of active elections. Elections beyond this limit have limited survival time.\nWarning: modifying this value may result in a lower confirmation rate.\ntype:uint64,[250..]"); + toml.put ("bandwidth_limit", bandwidth_limit, "Outbound traffic limit in bytes/sec after which messages will be dropped.\nNote: changing to unlimited bandwidth is not recommended for limited connections.\ntype:uint64"); + toml.put ("conf_height_processor_batch_min_time", conf_height_processor_batch_min_time.count (), "Minimum write batching time when there are blocks pending confirmation height.\ntype:milliseconds"); + toml.put ("backup_before_upgrade", backup_before_upgrade, "Backup the ledger database before performing upgrades.\nWarning: uses more disk storage and increases startup time when upgrading.\ntype:bool"); toml.put ("work_watcher_period", work_watcher_period.count (), "Time between checks for confirmation and re-generating higher difficulty work if unconfirmed, for blocks in the work watcher.\ntype:seconds"); - toml.put ("max_work_generate_multiplier", max_work_generate_multiplier, "Maximum allowed difficulty multiplier for work generation\ntype:double,[1..]"); - toml.put ("frontiers_confirmation", serialize_frontiers_confirmation (frontiers_confirmation), "Mode for force frontiers confirmation\ntype:string"); + toml.put ("max_work_generate_multiplier", max_work_generate_multiplier, "Maximum allowed difficulty multiplier for work generation.\ntype:double,[1..]"); + toml.put ("frontiers_confirmation", serialize_frontiers_confirmation (frontiers_confirmation), "Mode controlling frontier confirmation rate.\ntype:string,{auto,always,disabled}"); - auto work_peers_l (toml.create_array ("work_peers", "A list of \"address:port\" entries to identify work peers")); + auto work_peers_l (toml.create_array ("work_peers", "A list of \"address:port\" entries to identify work peers.")); for (auto i (work_peers.begin ()), n (work_peers.end ()); i != n; ++i) { work_peers_l->push_back (boost::str (boost::format ("%1%:%2%") % i->first % i->second)); } - auto preconfigured_peers_l (toml.create_array ("preconfigured_peers", "A list of \"address:port\" entries to identify preconfigured peers")); + auto preconfigured_peers_l (toml.create_array ("preconfigured_peers", "A list of \"address:port\" entries to identify preconfigured peers.")); for (auto i (preconfigured_peers.begin ()), n (preconfigured_peers.end ()); i != n; ++i) { preconfigured_peers_l->push_back (*i); } - auto preconfigured_representatives_l (toml.create_array ("preconfigured_representatives", "A list of representative account addresses")); + auto preconfigured_representatives_l (toml.create_array ("preconfigured_representatives", "A list of representative account addresses used when creating new accounts in internal wallets.")); for (auto i (preconfigured_representatives.begin ()), n (preconfigured_representatives.end ()); i != n; ++i) { preconfigured_representatives_l->push_back (i->to_account ()); @@ -119,7 +119,7 @@ nano::error nano::node_config::serialize_toml (nano::tomlconfig & toml) const /** Experimental node entries */ nano::tomlconfig experimental_l; - auto secondary_work_peers_l (experimental_l.create_array ("secondary_work_peers", "A list of \"address:port\" entries to identify work peers for secondary work generation")); + auto secondary_work_peers_l (experimental_l.create_array ("secondary_work_peers", "A list of \"address:port\" entries to identify work peers for secondary work generation.")); for (auto i (secondary_work_peers.begin ()), n (secondary_work_peers.end ()); i != n; ++i) { secondary_work_peers_l->push_back (boost::str (boost::format ("%1%:%2%") % i->first % i->second)); @@ -127,9 +127,9 @@ nano::error nano::node_config::serialize_toml (nano::tomlconfig & toml) const toml.put_child ("experimental", experimental_l); nano::tomlconfig callback_l; - callback_l.put ("address", callback_address, "Callback address\ntype:string,ip"); - callback_l.put ("port", callback_port, "Callback port number\ntype:uint16"); - callback_l.put ("target", callback_target, "Callback target path\ntype:string,uri"); + callback_l.put ("address", callback_address, "Callback address.\ntype:string,ip"); + callback_l.put ("port", callback_port, "Callback port number.\ntype:uint16"); + callback_l.put ("target", callback_target, "Callback target path.\ntype:string,uri"); toml.put_child ("httpcallback", callback_l); nano::tomlconfig logging_l; diff --git a/nano/node/websocketconfig.cpp b/nano/node/websocketconfig.cpp index 14a5ce9a..7ce933a5 100644 --- a/nano/node/websocketconfig.cpp +++ b/nano/node/websocketconfig.cpp @@ -9,9 +9,9 @@ port (network_constants.default_websocket_port) nano::error nano::websocket::config::serialize_toml (nano::tomlconfig & toml) const { - toml.put ("enable", enabled, "Enable or disable WebSocket server\ntype:bool"); - toml.put ("address", address.to_string (), "WebSocket server bind address\ntype:string,ip"); - toml.put ("port", port, "WebSocket server listening port\ntype:uint16"); + toml.put ("enable", enabled, "Enable or disable WebSocket server.\ntype:bool"); + toml.put ("address", address.to_string (), "WebSocket server bind address.\ntype:string,ip"); + toml.put ("port", port, "WebSocket server listening port.\ntype:uint16"); return toml.get_error (); }