# App.toml parameters description
## Main Configuration:
```minimum-gas-prices:``` To set minimum gas price for a transaction.
```pruning:``` It can have 4 values,
1. default, only last 100,000 states will be saved, others will be pruned.
2. nothing, all states will be kept, as a archive node.
3. everything, 10 last states will be kept.
4. custom, we can customize the prunning using other parameters like 'pruning-keep-recent' and 'pruning-interval'
```pruning-keep-recent:``` this value will set the no. of last states to be kept.
```pruning-interval:``` this value will set the time to delete blocks after the specific interval.
```halt-height:``` it will set the block height at which a node will shutdown gracefully. (For testing purpose)
```halt-time:``` it can be used to set minimum block-time for a node to shutdown gracefully (for testing purposes)
```inter-block-cache:``` used to enable inter-block caching
```index-events:``` it is used to set events indexing, if empty then it will index all events.
```iavl-cache-size:``` to set the size of ival chache tree, default is 50mb
## Telemetry Configuration:
```service-name:``` to set a service name
```enabled:``` If its true then the telemetry functionality will be enabled.
```enable-hostname:``` It will enable hostname with the values obtined using telemetry
```enable-hostname-label:``` It will enable hostname to labels
```enable-service-label:``` it will add service to the labels.
```prometheus-retention-time:``` It wil enable a prometheus matric sink, when set to a positive value.
```global-labels:``` It will add global names/values to all metrics coming out.
## API Configuration:
```enable:``` if true the API server will be enabled.
```swagger:``` It defines if swagger documentation should be registered automatically.
```address:``` defines the API server ip/port to listen on.
```max-open-connections:``` to set the maximum open connections.
```rpc-read-timeout:``` It defines RPC read timeout
```rpc-write-timeout:``` It defines RPC write timeout
```rpc-max-body-bytes:``` It defines the maximum response size/body in bytes.
```enabled-unsafe-cors:``` Defines if CORS should be enabled.
## Rosetta Configuration:
```enable:``` Used to enable rosetta API server
```address:``` It defines the rosetta API server port to listen on.
```blockchain:``` It is used to set the blockchain name.
```network:``` It will return the name of the network.
```cretries:``` We can set the no. of retries to connect to a node before failing.
```offline:``` It can be used to define that rosetta should run in offline node.
## gRPC Configuration
```enable:``` to enable the gRPC server.
```address:``` to set the gRPC address/port
```max-recv-msg-size:``` to set the maximum message size that the server can receive
```max-send-msg-size:``` to sset the maximum message size that the server can send
## gRPC Web Configuration:
```enable:``` to enable the gRPC web
```address:``` to set the gRPC web address/port
```enable-unsafe-cors:``` To enable unsafe CORS
## State Sync Configuration
```snapshot-interval:``` It specifies the block interval at which state sysnc snapshots are taken
```snapshot-keep-recent:``` It specifies the no. of snapshots to keep.
## Osmosis Mempool Configuration
```max-gas-wanted-per-tx:``` It is the maximum allowed gas
```arbitrage-min-gas-fee:``` minimum gas fee for any arbitrage transaction
```min-gas-price-for-high-gas-tx:``` the minimum gas fee for a transaction which demands high gas.
# Config.toml parameters description
## Main Base Config Options:
```proxy_app:``` address/port of the ABCI application
```moniker:``` Name of the node (visible for the public)
```fast_sync:``` is this is treu then the node will download the blocks in parallel, and will also validate the transactions
```db_backend:``` backend of the database can be set using this parameter
```db_dir:``` to set the location of database directory
```log_level:``` logging level can be set for output logs
```log_format:``` Output format can be defined either plain or json
```genesis_file:``` Location of the initial genesis file containing the inofrmation
```priv_validator_key_file:``` Location of the file which contains the private validator key
```priv_validator_state_file:``` path to the file, containing last validator state information
```priv_validator_laddr:``` Address of an external privatevalidator
```node_key_file:``` path to the file containing private key for node authentication in p2p
```abci:``` mechanism to connect to the ABCI "socket" or "grpc".
filter_peers: If true, query the ABCI app on connecting to a new peer so the app can decide if we should keep the connection or not
## RPC Server Configuration Options:
```laddr:``` TCP or UNIX socket address for the RPC server to listen on
A list of origins a cross-domain request can be executed from
Default value '[]' disables cors support
Use '["*"]' to allow any origin
```cors_allowed_origins = []```
A list of methods the client is allowed to use with cross-domain requests
```cors_allowed_methods = ["HEAD", "GET", "POST", ]```
A list of non simple headers the client is allowed to use with cross-domain requests
```cors_allowed_headers = ["Origin", "Accept", "Content-Type", "X-Requested-With", "X-Server-Time", ]```
```grpc_laddr:``` TCP or UNIX socket address for the gRPC server to listen on
```grpc_max_open_connections:``` Maximum number of simultaneous connections.
```unsafe:``` When set to true, activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool
```max_open_connections:``` Maximum number of simultaneous connections (including WebSocket).
```max_subscription_clients:``` Maximum number of unique clientIDs that can /subscribe
```max_subscriptions_per_client:``` Maximum number of unique queries a given client can /subscribe to
```experimental_subscription_buffer_size:``` Experimental parameter to specify the maximum number of events a node will buffer, per subscription, before returning an error and closing the subscription. Must be set to at least 100, but higher values will accommodate higher event throughput rates (and will use more memory).
```experimental_websocket_write_buffer_size:``` If a WebSocket client cannot read fast enough, at present we may
silently drop events instead of generating an error or disconnecting the
client.
```experimental_close_on_slow_client:``` Enabling this experimental parameter will cause the WebSocket connection to be closed instead if it cannot read fast enough, allowing for greater predictability in subscription behaviour.
```timeout_broadcast_tx_commit:``` How long to wait for a tx to be committed during /broadcast_tx_commit.
WARNING: Using a value larger than 10s will result in increasing the global HTTP write timeout, which applies to all connections and endpoints.
```max_body_bytes:``` Maximum size of request body, in bytes
```max_header_bytes:``` Maximum size of request header, in bytes
```tls_cert_file:``` The path to a file containing certificate that is used to create the HTTPS server.
```tls_key_file:``` The path to a file containing matching private key that is used to create the HTTPS server.
Might be either absolute path or path related to Tendermint's config directory.
NOTE: both tls-cert-file and tls-key-file must be present for Tendermint to create HTTPS server.
Otherwise, HTTP server is run.
```pprof_laddr:``` pprof listen address (https://golang.org/pkg/net/http/pprof)
## P2P Configuration Options:
```laddr:``` Address to listen for incoming connections
```external_address:``` Address to advertise to peers for them to dial. If empty, will use the same port as the laddr, and will introspect on the listener or use UPnP to figure out the address. ip and port are required
```seeds:``` Comma separated list of seed nodes to connect to.
```persistent_peers:``` Comma separated list of nodes to keep persistent connections to
```upnp:``` UPNP port forwarding enabled, when true.
```addr_book_file:``` Path to address book
```addr_book_strict:``` Set true for strict address routability rules, Set false for private or local networks
```max_num_inbound_peers:``` Maximum number of inbound peers
```max_num_outbound_peers:``` Maximum number of outbound peers to connect to, excluding persistent peers
`unconditional_peer_ids:` List of node IDs, to which a connection will be (re)established ignoring any existing limits
`persistent_peers_max_dial_period:` Maximum pause when redialing a persistent peer (if zero, exponential backoff is used)
`flush_throttle_timeout:` Time to wait before flushing messages out on the connection
`max_packet_msg_payload_size:` Maximum size of a message packet payload, in bytes
`send_rate:` Rate at which packets can be sent, in bytes/second
`recv_rate:` Rate at which packets can be received, in bytes/second
`pex:` Set true to enable the peer-exchange reactor
`seed_mode:` Seed mode, in which node constantly crawls the network and looks for peers. If another node asks it for addresses, it responds and disconnects.
`private_peer_ids:` Comma separated list of peer IDs to keep private (will not be gossiped to other peers)
`allow_duplicate_ip:` Toggle to disable guard against peers connecting from the same ip.
Peer connection configuration.
```
handshake_timeout = "20s"
dial_timeout = "3s"
```
## Mempool Configuration Option:
`version:` Mempool version to use.
1) `"v0"` - (default) FIFO mempool.
2) `"v1"` - prioritized mempool.
recheck: recheck, if true then recheck else leave it.
broadcast: If true broadcast the version.
`wal_dir:` COntains path to the wal file.
`size:` Maximum number of transactions in the mempool
`max_txs_bytes:` Limit the total size of all txs in the mempool. (in bytes)
`cache_size:` Size of the cache (used to filter transactions we saw earlier) in transactions
`keep-invalid-txs-in-cache:` Do not remove invalid transactions from the cache (default: false)
Set to true if it's not possible for any invalid transaction to become valid again in the future.
`max_tx_bytes:` Maximum size of a single transaction.
`max_batch_bytes:` Maximum size of a batch of transactions to send to a peer
`ttl-duration:` ttl-duration, if non-zero, defines the maximum amount of time a transaction can exist for in the mempool.
`ttl-num-blocks:` if non-zero, defines the maximum number of blocks a transaction can exist for in the mempool.
## State Sync Configuration Options:
`enable:` When set to true, state-sync will be enabled.
`rpc_servers:` A list of RPC servers for the state-sync, separated by a comma.
`trust_height:` The block height from which it is trusting.
`trust_hash:` Hash of the trust.
`trust_period:` Time for which it will trust.
`discovery_time:` Time to spend discovering snapshots before initiating a restore.
`temp_dir:` Temporary directory for state sync snapshot chunks
`chunk_request_timeout:` The timeout duration before re-requesting a chunk, possibly from a different peer
`chunk_fetchers:` The number of concurrent chunk fetchers to run (default: 1).
## Fast Sync Configuration Connections:
Fast Sync version to use:
1) `"v0"` (default) - the legacy fast sync implementation
2) `"v1"` - refactor of v0 version for better testability
3) `"v2"` - complete redesign of v0, optimized for testability & readability
`version = "v0"`
## Consensus Configuration Options:
```
wal_file = "data/cs.wal/wal"
```
`timeout_propose:` How long we wait for a proposal block before prevoting nil
`timeout_propose_delta:` How much timeout_propose increases with each round
`timeout_prevote:` How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil)
`timeout_prevote_delta:` How much the timeout_prevote increases with each round
`timeout_precommit:` How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil)
`timeout_precommit_delta:` How much the timeout_precommit increases with each round
`timeout_commit:` How long we wait after committing a block, before starting on the new height (this gives us a chance to receive some more precommits, even though we already have +2/3).
`double_sign_check_height:` How many blocks to look back to check existence of the node's consensus votes before joining consensus
When non-zero, the node will panic upon restart
if the same consensus key was used to sign {double_sign_check_height} last blocks.
So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic.
`skip_timeout_commit:` Make progress as soon as we have all the precommits
`create_empty_blocks:` When true EmptyBlocks mode will be enabled.
`create_empty_blocks_interval:` The time interval between empth blocks.
`peer_gossip_sleep_duration:` These are the reactor sleep duration parameters
peer_query_maj23_sleep_duration:
## Storage Configuration Options:
`discard_abci_responses:` Set to true to discard ABCI responses from the state store, which can save a considerable amount of disk space. Set to false to ensure ABCI responses are persisted. ABCI responses are required for /block_results RPC queries, and to reindex events in the command-line tool.
## Transaction Indexer Configuration Options:
Type of indexer to use for transactions
Options:
1) `"null"`
2) `"kv"` (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend).
- When `"kv"` is chosen "tx.height" and `"tx.hash"` will always be indexed.
3) `"psql"` - the indexer services backed by PostgreSQL.
When `"kv"` or "psql" is chosen "tx.height" and `"tx.hash"` will always be indexed.
`indexer = "kv"`
`psql-conn:` PostgreSQL connection configuration, the connection format:
`postgresql://<user>:<password>@<host>:<port>/<db>?<opts>`
## Instrumentation Configuration Options:
`prometheus:` When true, Prometheus metrics are served under /metrics on PrometheusListenAddr.
list of available metricscan be found in the documentation.
`prometheus_listen_addr:` Address to listen for Prometheus collector(s) connections
`max_open_connections:` Maximum number of simultaneous connections.
Instrumentation namespace
`namespace = "tendermint"`