On Windows, there is no `/etc` fallback. If no explicit config is provided, Windows checks the current working directory and then the executable directory.
Windows accepts forward slashes in paths, and that is the clearest format for `settings.ini`:
```ini
BLOCK_PATH = "C:/Contractless/blocks"
TORRENT_PATH = "C:/Contractless/torrents"
DB_PATH = "C:/Contractless/state"
BALANCE_SHEET = "C:/Contractless/balance_sheet"
LOG_PATH = "C:/Contractless/logs"
WALLET_PATH = "C:/Contractless/wallets"
```
Backslashes can also be used, but avoid ending a quoted Windows path with a single trailing backslash because it can be confused with escaping the closing quote in some INI parsers or editors.
Good:
```ini
BLOCK_PATH = "C:\Contractless\blocks"
```
Avoid:
```ini
BLOCK_PATH = "C:\Contractless\blocks\"
```
If you want a trailing separator, use forward slashes:
```ini
BLOCK_PATH = "C:/Contractless/blocks/"
```
## `[Paths]`
### `BLOCK_PATH`
Base folder where block files are stored. The active network name is appended automatically.
Default:
```ini
BLOCK_PATH = "./blocks"
```
### `TORRENT_PATH`
Base folder where torrent metadata, staged torrents, and torrent-related files are stored. The active network name is appended automatically.
Default:
```ini
TORRENT_PATH = "./torrents"
```
### `DB_PATH`
Base folder for the internal sled database used for non-PostgreSQL node state. The active network name is appended automatically.
On Linux, the daemon PID file is also stored under the active network's `DB_PATH`.
Base folder where node log files are written. The active network name is appended automatically so testnet and mainnet nodes can run side by side without writing to the same rotating log files.
Logs are written to rotating `node` log files. The current logger rotates at about 10 MB per file and keeps up to 10 log files.
### `WALLET_PATH`
Base folder where wallet files are stored. The active network name and `WALLET_NAME` are appended automatically.
Default:
```ini
WALLET_PATH = "./wallets"
```
### `WALLET_NAME`
Name of the encrypted wallet file to load at startup. If the wallet file does not exist, the node creates it the first time it starts and asks for a wallet encryption key.
This value is local bind configuration and is not announced as the node identity. It may be private, loopback, or wildcard because it only controls where the local process listens.
If the limit is reached, new incoming peers are rejected during handshake. Public nodes usually want this higher than a private test node, as long as the machine has enough network and memory capacity.
Outgoing peers are the nodes your node actively connects to. Once a node joins the network, it can use the network map to fill outgoing connections up to this limit.
Contractless mining only searches one byte of nonce space per timestamp, so all workers split the fixed `0..255` nonce range. More threads do not increase the total nonce space; they only split the fixed search range across more tasks.
Fee charged by this node for paid storage lookups, in decimal CLTC/CLC per byte returned.
Default:
```ini
STORAGE_LOOKUP_FEE_PER_BYTE = "0.0001"
```
Data storage transactions let users store app data on chain. Public RPC nodes can serve lookups for that data. This setting lets a node operator charge for storage lookup bandwidth and processing.
Examples:
```ini
STORAGE_LOOKUP_FEE_PER_BYTE = "0.0001"
```
Charge `0.0001` CLTC/CLC per byte returned.
The lookup tool asks the node for the byte count and total lookup cost before payment. If the requester accepts, the lookup payment is made as a normal transfer transaction to the node's wallet, plus the normal transfer transaction fee.
When the requester is the same wallet as the node operator's wallet, the node verifies the signed lookup request and returns the data without broadcasting a payment transaction. Node operators do not need to set this value to `0` for their own local lookups to be free.
Node operators can set this to `0` during testing or raise it if they are serving dapp data to external users.
Piggyback entries may use a public IP endpoint or a hostname. If no port is included, the active network RPC port is used. Hostnames are resolved only for startup entries; nodes must still announce public IP endpoints in handshakes and network mapping.
These values are intentionally mostly self-explanatory. The configured database must already exist and the configured user must be able to create tables and indexes. The node creates or migrates its own tables on startup.
PostgreSQL should not be publicly exposed. In normal node setups, `host = 127.0.0.1` is the correct value.