> For the complete documentation index, see [llms.txt](https://docs.onefinity.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.onefinity.network/technology/run-a-onefinity-node/nodes/configuration-files.md).

# Configuration files

### Configuration Constraints

While operators have the flexibility to customize certain settings, such as adjusting the size of a cache or specifying an Elasticsearch instance, not all configuration values are open for modification. Critical parameters, like the genesis total supply, must remain unchanged to ensure consistency across the network.

#### Locating Configuration Files

By default, configuration files are situated in the `config` directory, typically found near the node's executable. To alter these paths, operators can utilize CLI flags available with the node's binary.

Below, you can find an example of what the configuration files look like for the `v0.1.0` node.

```
├── api.toml
├── config.toml
├── economics.toml
├── enableEpochs.toml
├── enableRounds.toml
├── external.toml
├── gasSchedules
│ ├── gasScheduleV1.toml
│ ├── gasScheduleV2.toml
│ ├── gasScheduleV3.toml
│ ├── gasScheduleV4.toml
│ ├── gasScheduleV5.toml
│ ├── gasScheduleV6.toml
│ └── gasScheduleV7.toml
├── genesisContracts
│ ├── delegation.wasm
│ └── dns.wasm
├── genesis.json
├── genesisSmartContracts.json
├── nodesSetup.json
├── p2p.toml
├── prefs.toml
├── ratings.toml
├── systemSmartContractsConfig.toml
├── testKeys
│ ├── delegationWalletKey.pem
│ ├── dnsWalletKey.pem
│ ├── esdtWalletKey.pem
│ └── protocolSustainabilityWalletKey.pem
└── upgradeContracts
    └── dns
        └── v3.0
            ├── deploy.json
            └── dns.wasm

```

### Blockchain Configuration Files Overview

This document provides an overview of various configuration files used in a blockchain setup. Each file serves a specific purpose, ranging from system smart contracts settings to peer-to-peer network configurations.

#### `systemSmartContractsConfig.toml`

Contains configurable values for System Smart Contracts, including parameters for Staking, ESDT, and Governance.

#### `ratings.toml`

Holds the parameters used for the nodes' rating mechanism, such as the starting rating and decrease steps.

#### `prefs.toml`

Stores a set of custom configuration values that should not be replaced from one upgrade to another.

#### `p2p.toml`

Includes peer-to-peer configurable values, such as the number of peers to connect to.

#### `nodesSetup.json`

Maintains all the Genesis nodes' public keys, alongside their wallet addresses.

#### `genesisSmartContracts.json`

Specifies the Smart Contracts to be deployed at Genesis time, alongside additional parameters.

#### `genesis.json`

Contains all the addresses and their balance/active delegation at the genesis.

#### `genesisContracts`

Is the directory that contains the WASM contracts deployed at the genesis.

#### `gasSchedules`

The directory holding the gas consumption configuration to be used for Smart Contract execution, depending on activation epochs specified in `enableEpochs.toml` under `GasSchedule -> GasScheduleByEpochs`.

#### `external.toml`

Contains external drivers' configurations, such as Elasticsearch or event notifier.

#### `enableRounds.toml`

Lists new features or bug fixes and their activation epoch. (Note: Duplicate with `enableEpochs.toml`; verify the actual usage in the system.)

#### `enableEpochs.toml`

Lists new features or bug fixes and their activation epoch.

#### `economics.toml`

Contains the economics configuration, such as genesis total supply, inflation per year, developer fees, etc.

#### `config.toml`

Contains the main configuration of the node, including storers & cachers type and size, type of hasher, type of marshaller, etc.

#### `api.toml`

Contains the Rest API endpoints configuration, detailing open or closed endpoints, logging, and so on.

### Overriding config.toml values[​](https://docs.multiversx.com/validators/node-configuration#overriding-configtoml-values) <a href="#overriding-configtoml-values" id="overriding-configtoml-values"></a>

As mentioned in the above descriptions, `prefs.toml` is not overwritten by the installation scripts when performing an upgrade.

However, there are some more custom values that nodes operators use (antiflood disabled or with fewer constraints, db lookup extension, and so on) and they don't want these values to be changed during an upgrade.

For this use-case, release `v1.4.x` introduces the `OverridableConfigTomlValues` setting inside `prefs.toml` that is able to override certain configuration values from `config.toml`.

Here's how to use it:

```
   OverridableConfigTomlValues = [
     { Path = "StoragePruning.NumEpochsToKeep", Value = "4" },
     { Path = "MiniBlocksStorage.Cache.Name", Value = "MiniBlocksStorage" }
   ]
```

Therefore, after each upgrade, the node will override these values to the newly provided values. The path points to an entry in `config.toml` file before setting a new overridable value.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.onefinity.network/technology/run-a-onefinity-node/nodes/configuration-files.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
