Skip to main content

Top-level fields

log_config_name

Path to the loggers YAML configuration file. Relative paths are resolved from the directory containing config.json. In the Helm chart, set this field to "/main/logs.config.yml".

ton_global_config_name

Path to the global network config. Determines which network the node joins. In the Helm chart, always set to "/main/global.config.json".

internal_db_path

Path to the node’s internal database directory. Stores blocks, states, indexes, and other persistent data. Requires substantial disk space; on mainnet, storage requirements are typically hundreds of gigabytes. In the Helm chart, always set to "/db", where the database PVC is mounted.

restore_db

Enable database integrity check and repair on startup.

boot_from_zerostate

If true, the node starts synchronization from the zero state, which is the genesis block, instead of the init_block specified in the global config. This increases sync time but verifies the entire blockchain history from genesis.

sync_by_archives

If true, the node syncs by downloading block archives. Faster than block-by-block sync but requires peers that serve archives.

skip_saving_persistent_states

If true, the node skips saving periodic shard state snapshots. Saves disk space but makes recovery after failures harder.

states_cache_mode

Shards state caching strategy.

accelerated_consensus_disabled

If true, uses the standard consensus procedure instead of the accelerated one.

validation_countdown_mode

Controls the countdown behavior for block validation.

default_rldp_roundtrip_ms

Initial round-trip time or RTT estimates for the Reliable Large Datagram Protocol (RLDP) in milliseconds. RLDP is a transport layer on top of ADNL that provides ordered, retransmitted delivery for large data transfers.

unsafe_catchain_patches_path

Path to a directory with catchain JSON patch files. Used for emergency intervention in the catchain protocol for resync and rotation. Only for emergency situations.

adnl_node

ADNL (Abstract Datagram Network Layer) is the core networking protocol of TON. This section defines how the node participates in the ADNL network.

adnl_node.ip_address

The node’s external IP address and UDP port. Must be reachable from the internet. Other nodes connect to this address.

adnl_node.keys

Cryptographic keys for different node functions. Each key has a tag that determines its purpose. Key tags:

Additional adnl_node fields

These optional fields are not commonly needed:

gc

Garbage collector settings for cleaning up stale data.

gc.enable_for_archives

Enables automatic cleanup of old block archives. If false, archives accumulate indefinitely.

gc.archives_life_time_hours

Archive retention period in hours. Archives older than the specified number of hours are pruned by gc. Example: 48 keeps archives for the last 2 days.

gc.enable_for_shard_state_persistent

Enable cleanup of old persistent shard state snapshots.

gc.cells_gc_config

gc settings for cells – the basic data storage units in TON. This setting only affects cells required for serving external queries (e.g., account state requests from a lite-client). Cells required for the node’s own operation are retained regardless of this configuration. For validators or nodes without a liteserver, a lower value, such as 1800 = 30 min, can be used to reduce disk usage and improve performance.

cells_db_config

Cell database tuning. If omitted entirely, the node uses built-in defaults for all fields. If the section is present, all fields must be specified — partial configs fail to deserialize.

cells_db_config.states_db_queue_len

Maximum queue length for state write operations. Controls backpressure during async saves.

cells_db_config.prefill_cells_counters

If true, pre-fills the cell counter cache during startup. Improves performance after start but increases startup time.

cells_db_config.cells_cache_size_bytes

Size of the cell cache in bytes. Larger values reduce disk I/O at the cost of increased memory usage.

cells_db_config.counters_cache_size_bytes

Size of the cell reference counter cache in bytes. Used for reference counting during gc.

collator_config

Configuration of the collator component responsible for assembling new blocks. Only relevant for validators.

collator_config.cutoff_timeout_ms

Soft collation timeout in milliseconds. After this interval, the collator stops accepting new transactions and begins block finalization.

collator_config.stop_timeout_ms

Hard collation timeout in milliseconds. Collation is forcibly terminated after this interval. Must be greater than or equal to cutoff_timeout_ms.

collator_config.clean_timeout_percentage_points

Cleanup timeout as a fraction of cutoff_timeout. Measured in per-mille; out of 1000. For example, 150 corresponds to 15% of cutoff_timeout and defines the time allocated for removing processed messages during collation.

collator_config.optimistic_clean_percentage_points

Fraction of clean_timeout used for the first cleanup attempt. 1000 corresponds to 100%.

collator_config.max_secondary_clean_timeout_percentage_points

Maximum secondary cleanup timeout as a fraction of cutoff_timeout. 350 corresponds to 35%.

collator_config.max_collate_threads

Maximum number of parallel collation threads.

collator_config.retry_if_empty

If true, retries collation when the resulting block contains no transactions. For TON consensus, false is recommended. Setting true may be useful in experimental networks to reduce block frequency during periods of low activity.

collator_config.finalize_empty_after_ms

Time in milliseconds to wait for transactions before finalizing an empty block. If no transactions are received within this interval, the block is finalized as empty.

collator_config.empty_collation_sleep_ms

Pause in milliseconds between collation attempts when there are no transactions. Reduces CPU usage during low activity.

collator_config.external_messages_timeout_percentage_points

Fraction of cutoff_timeout allocated for processing external messages. 100 corresponds to 10%.

collator_config.external_messages_maximum_queue_length

Maximum external message queue length. Limits memory usage during external message spam.

collator_config_mc

Separate collator config for the masterchain. Same format as collator_config. If not set, collator_config is used for all chains.

control_server

Administrative interface for managing the node — validator key rotation, monitoring, etc. Required for validators; optional for full nodes.

control_server.address

Address and port to listen on. Use "0.0.0.0:<port>" to listen on all interfaces. For security, consider "127.0.0.1:<port>" if management is local only. The port must match ports.control in Helm values.

control_server.server_key

Server private key for ADNL encryption.

control_server.clients

Authorized clients allowed to connect. If clients is omitted or empty, any client can connect.

lite_server

Allows lite clients, such as tonlib, etc., to connect to the node for queries. The corresponding public key is published in the global config’s liteservers section for clients to discover it.

lite_server.address

Address and port for liteclient connections. The port must match ports.liteserver in Helm values.

lite_server.server_key

Server private key. Same format as control_server.server_key.

lite_server.max_parallel_fast_queries

Maximum number of concurrent “fast” queries, which read from cache or perform simple lookups. Limits concurrency to prevent resource exhaustion under high load.

lite_server.max_parallel_slow_queries

Maximum number of concurrent “slow” queries, which require disk reads, state traversal, or proof generation. These are more resource-intensive, so the default is lower.

lite_server.account_state_cache_size_mb

Size of the in-memory cache for account states in megabytes. Caches recently queried account states to avoid repeated disk lookups.

json_rpc_server

HTTP JSON-RPC server for API requests.

json_rpc_server.address

Address and port for the HTTP API. The port must match ports.jsonRpc in Helm values.

metrics

Prometheus metrics and Kubernetes health probe HTTP server. When present, the node starts an HTTP server with three endpoints: If the metrics section is absent from the config, the metrics server is not started, meaning no metrics and no probes.

metrics.address

Address and port for the metrics and probes HTTP server. The port must match ports.metrics in Helm values. Recommended: "0.0.0.0:9100".

metrics.histogram_buckets

Custom histogram bucket boundaries, keyed by metric name suffix. If a key matches the end of a histogram metric name, those buckets are used. When empty or absent, the following default buckets are applied to all histograms whose name ends with seconds:
Example of overriding buckets for all *_seconds histograms and adding custom ones for gas_used:

metrics.global_labels

Key-value pairs added to every metric. Useful for distinguishing nodes when multiple instances report to the same Prometheus. Example:

Full example

extensions

Optional network extensions.

secrets_vault_config

External secrets vault for storing private keys outside of config.json.

Auto-managed fields

The following fields are written by the node itself through the control server and must not be edited manually: These fields are primarily relevant in testing environments. During validator elections, the node rotates keys and writes updated values to config.json. In a Kubernetes environment, this has no persistent effect because the configuration is stored in a Secret and is overwritten on pod restart or Helm upgrade. These fields should be treated as initialization-only or system-managed. The node regenerates them as required through the control server.

Validator-specific sections

The collator_config section defines block collation parameters, including timeouts, threading, and message queue limits. Use the validator node config example for typical values.

Advanced fields

The following fields are present in the configuration but are not required for standard node operation. They should be left unchanged unless explicitly instructed otherwise.