Skip to content

Overview of Node Configuration Files#

Welcome to the node configuration files documentation. This section provides a comprehensive guide to various configuration files crucial for setting up and managing an Ergo node. These files include essential parameters for controlling and fine tuning different aspects of the Ergo protocol, ranging from node operation and blockchain management to wallet functionality and voting mechanisms.

Included in this section is the application.conf file, which is the main configuration file, and a host of others that each serve specific purposes in the overall functioning of the node.

  • application.conf: The principal configuration file which contains the primary settings for the Ergo protocol.

    • node: Configures node-specific parameters.
    • cache: Handles cache-related settings.
    • chain: Manages blockchain related settings.
    • wallet: Sets up wallet parameters.
    • voting: Oversees voting-related configurations.
  • bounded-mailbox: Controls mailbox settings.

  • akka: Manages Akka settings for the actor system.
  • scorex: Handles settings related to Scorex framework.
  • critical-dispatcher: Manages settings for critical dispatchers.
  • api-dispatcher: Sets up settings for API dispatchers.

This section also details the testnet.conf file, which is specifically designed for operating in the Ergo testnet environment.

Feel free to navigate through each file documentation for a deeper understanding of the node configuration process. Remember, properly managing these settings is crucial for the smooth operation of your Ergo node.

Ergo Configuration Sections#

The root configuration section ergo encompasses essential application parameters and various other configuration subsections. There's also another root section scorex that contains parameters inherited from the Scorex project.

The parameter directory allows you to define a path to the base application directory. You can use environment variables to override configuration parameters. For instance, the base directory is built relative to the user's HOME environment variable by default. Refrain from enclosing references to environment variables in quotation marks, as they'll be treated as strings and not resolved.

Network Settings#

The scorex.network section allows you to configure settings related to the P2P network.

By using the declaredAddress parameter, you can establish the external IP address and port number of the node. This is necessary for operating behind NAT in most cloud hosting scenarios where the machine doesn't directly interface with the external address. If left unspecified, your node will connect to the P2P network but won't accept incoming connections, meaning other nodes can't connect. Other nodes connect to your node using these settings. The format for this parameter is "[ip-address]:[port]".

You can use the bindAddress parameter to set the IP address of the local network interface where the Ergo Node will accept incoming connections. By default, the node binds to "0.0.0.0", indicating it will listen on all available network adapters.

About Internet Address Settings

Internet Address settings follow the ":" format. Note that the "" component after the colon is crucial.

For the bindAddress setting, the port component is used to establish the network port number to which other Ergo nodes will connect. Please ensure that this port is externally accessible; otherwise, your node will only establish outgoing connections to the P2P network. If the specified port is already occupied by another application, your node won't start.

You can use the nodeName parameter to assign a visible name to your node for other participants of the P2P network. This name is transmitted during the initial handshake. In the default configuration, this parameter is commented out, resulting in a randomly generated name.

The knownPeers parameter stores a list of bootstrap nodes that your node will connect to upon initialization.

About Time Settings

All time span parameters are set in milliseconds. However, you can use duration units to shorten their values. The supported units include: * s, second, seconds * m, minute, minutes * h, hour, hours * d, day, days

For examples of usage, refer to the default configuration file above.

Use the maxConnections parameter to define the maximum number of concurrent connections that the node can handle.

The connectionTimeout parameter allows you to adjust the network communication timeout.

The handshakeTimeout parameter can be used to set the time period to wait for a response during a handshake. If no response is received, the peer will be blacklisted.

You can configure the UPnP settings using parameters that begin with upnp. These settings are typically useful only if you're running your Ergo node on a home network where the node can request your router to establish a tunnel. By default, this functionality is disabled. Use the upnpEnabled parameter to enable it.

Wallet Settings

In the wallet section, you can configure the built-in wallet of the Ergo node.

Use the dlogSecretsNumber parameter to specify the number of Schorr secret keys (w for the g^w public key) to generate.

The scanningInterval parameter allows you to set a re-sc

anning interval for uncertain boxes.

You can use the seed parameter to recreate an existing wallet on a new node. If you don't have an existing wallet, comment out this parameter and start the node. During the first run, the application will generate a new wallet with a random seed for you. In this case, the seed will be displayed in the application log.

Warning!

The wallet is a crucial part of your node. Ensure to store the wallet's file in a safe and protected location, and remember to back it up.

It's advised to remove the seed from the configuration file as soon as the node starts. If an attacker obtains access to this seed string, they can access all your funds across all your addresses!

Blockchain Settings

In the ergo.chain section, you can select or customize the blockchain parameters.

Use the blockInterval parameter to set the desired time interval between blocks.

The epochLength parameter is used to set the length of an epoch in difficulty recalculation. A value of 1 means difficulty recalculation every block.

The useLastEpochs parameter stores the number of most recent epochs that will be used for difficulty recalculation.

You can modify the PoW algorithm or related parameters using the powScheme section.

Node Settings

In the ergo.node section, you can configure parameters related to the node regime.

Use the enable parameter to enable or disable block generation on the node. By default, it's disabled.

A node with the offlineGeneration parameter disabled will begin mining as soon as it connects to the first peer in the P2P network. Setting this parameter to true enables off-line generation.

You can adjust your node's mining delay after discovering a new block using the miningDelay parameter.

REST API Settings

In the scorex.rest-api section, you can set the node's REST API parameters.

You can use the bindAddress parameter to select the network interface where the REST API will accept incoming connections. The :<port> component can be used to change the port number that the REST API will listen to for connections.

Warning! For increased security, refrain from changing bindAddress from "127.0.0.1" unless you're sure of what you're doing! For external access, you should use Nginx's proxy_pass module or SSH port-forwarding instead.

Use the api-key-hash parameter to set the hash of your API key. The API key is used to protect the invocation of critical API methods. Note that you should provide the hash of the API key in this parameter, but during REST calls, you should provide the API key itself. You can use blake2b to generate the hash of your API key.

Warning! The API key is transmitted as plain text in the HTTP header and can be intercepted by an attacker during network transit! This could allow the attacker to transfer your funds to any address! Hence, protect the transmission using HTTPS or SSH port forwarding.

The corsAllowedOrigin parameter can be used to enable or disable CORS support in the REST API. CORS enables the safe resolution of queries to other domains outside the one running the node. It's necessary for Swagger and the Lite client. You can read more about it here.