Skip to main content

Core Configuration

INX-Coordinator uses a JSON standard format as a config file. If you are unsure about JSON syntax, you can find more information in the official JSON specs.

You can change the path of the config file by using the -c or --config argument while executing inx-coordinator executable.

For example:

inx-coordinator -c config_defaults.json

You can always get the most up-to-date description of the config parameters by running:

inx-coordinator -h --full

1. Application

NameDescriptionTypeDefault value
checkForUpdatesWhether to check for updates of the application or notbooleantrue
shutdownConfiguration for shutdownobject

Shutdown

NameDescriptionTypeDefault value
stopGracePeriodThe maximum time to wait for background processes to finish during shutdown before terminating the appstring"5m"
logConfiguration for logobject

Log

NameDescriptionTypeDefault value
enabledWhether to store self-shutdown events to a log filebooleantrue
filePathThe file path to the self-shutdown logstring"shutdown.log"

Example:

{
"app": {
"checkForUpdates": true,
"shutdown": {
"stopGracePeriod": "5m",
"log": {
"enabled": true,
"filePath": "shutdown.log"
}
}
}
}

2. Logger

NameDescriptionTypeDefault value
levelThe minimum enabled logging levelstring"info"
disableCallerStops annotating logs with the calling function's file name and line numberbooleantrue
disableStacktraceDisables automatic stacktrace capturingbooleanfalse
stacktraceLevelThe level stacktraces are captured and abovestring"panic"
encodingThe logger's encoding (options: "json", "console")string"console"
outputPathsA list of URLs, file paths or stdout/stderr to write logging output toarraystdout
disableEventsPrevents log messages from being raced as eventsbooleantrue

Example:

{
"logger": {
"level": "info",
"disableCaller": true,
"disableStacktrace": false,
"stacktraceLevel": "panic",
"encoding": "console",
"outputPaths": ["stdout"],
"disableEvents": true
}
}

3. INX

NameDescriptionTypeDefault value
addressThe INX address to which to connect tostring"localhost:9029"
maxConnectionAttemptsThe amount of times the connection to INX will be attempted before it fails (1 attempt per second)uint30
targetNetworkNameThe network name on which the node should operate on (optional)string""

Example:

{
"inx": {
"address": "localhost:9029",
"maxConnectionAttempts": 30,
"targetNetworkName": ""
}
}

4. Coordinator

NameDescriptionTypeDefault value
stateFilePathThe path to the state file of the coordinatorstring"coordinator.state"
intervalThe interval milestones are issuedstring"5s"
milestoneTimeoutThe duration after which an event is triggered if no new milestones are receivedstring"30s"
signingConfiguration for signingobject
quorumConfiguration for quorumobject
checkpointsConfiguration for checkpointsobject
tipselConfiguration for Tipselectionobject
blockBackupsConfiguration for blockBackupsobject
debugFakeMilestoneTimestampsWhether the coordinator will fake timestamps of milestones if the interval is below 1s (use for tests only!)booleanfalse

Signing

NameDescriptionTypeDefault value
providerThe signing provider the coordinator uses to sign a milestone (local/remote)string"local"
remoteAddressThe address of the remote signing provider (insecure connection!)string"localhost:12345"
retryTimeoutDefines the timeout between signing retriesstring"2s"
retryAmountDefines the number of signing retries to perform before shutting down the nodeint10

Quorum

NameDescriptionTypeDefault value
enabledWhether the coordinator quorum is enabledbooleanfalse
timeoutThe timeout until a node in the quorum must have answeredstring"2s"
groupsDefines the quorum groups used to ask other nodes for correct ledger state of the coordinator.objectsee example below

Checkpoints

NameDescriptionTypeDefault value
maxTrackedBlocksMaximum amount of known blocks for milestone tipselection. If this limit is exceeded, a new checkpoint is issued.int10000

Tipselection

NameDescriptionTypeDefault value
minHeaviestBranchUnreferencedBlocksThresholdMinimum threshold of unreferenced blocks in the heaviest branchint20
maxHeaviestBranchTipsPerCheckpointMaximum amount of checkpoint blocks with heaviest branch tips that are picked if the heaviest branch is not below 'MinHeaviestBranchUnreferencedBlocksThreshold' beforeint10
randomTipsPerCheckpointAmount of checkpoint blocks with random tips that are picked if a checkpoint is issued and at least one heaviest branch tip was found, otherwise no random tips will be pickedint3
heaviestBranchSelectionTimeoutThe maximum duration to select the heaviest branch tipsstring"100ms"

BlockBackups

NameDescriptionTypeDefault value
enabledWhether all blocks that are issued by the coordinator should be stored to disk before being submitted to the networkbooleantrue
folderPathThe path to the folder where block backups are storedstring"block_backups"

Example:

{
"coordinator": {
"stateFilePath": "coordinator.state",
"interval": "5s",
"milestoneTimeout": "30s",
"signing": {
"provider": "local",
"remoteAddress": "localhost:12345",
"retryTimeout": "2s",
"retryAmount": 10
},
"quorum": {
"enabled": false,
"timeout": "2s",
"groups": {}
},
"checkpoints": {
"maxTrackedBlocks": 10000
},
"tipsel": {
"minHeaviestBranchUnreferencedBlocksThreshold": 20,
"maxHeaviestBranchTipsPerCheckpoint": 10,
"randomTipsPerCheckpoint": 3,
"heaviestBranchSelectionTimeout": "100ms"
},
"blockBackups": {
"enabled": true,
"folderPath": "block_backups"
},
"debugFakeMilestoneTimestamps": false
}
}

5. Migrator

NameDescriptionTypeDefault value
enabledWhether the migrator plugin is enabledbooleanfalse
stateFilePathPath to the state file of the migratorstring"migrator.state"
receiptMaxEntriesThe max amount of entries to embed within a receiptint110
queryCooldownPeriodThe cooldown period for the service to ask for new data from the legacy node in case the migrator encounters an errorstring"5s"

Example:

{
"migrator": {
"enabled": false,
"stateFilePath": "migrator.state",
"receiptMaxEntries": 110,
"queryCooldownPeriod": "5s"
}
}

6. Receipts

NameDescriptionTypeDefault value
validatorConfiguration for validatorobject

Validator

NameDescriptionTypeDefault value
apiConfiguration for APIobject
coordinatorConfiguration for coordinatorobject

API

NameDescriptionTypeDefault value
addressAddress of the legacy node API to query for white-flag confirmation datastring"http://localhost:14266"
timeoutTimeout of API callsstring"5s"

Coordinator

NameDescriptionTypeDefault value
addressAddress of the legacy coordinatorstring"UDYXTZBE9GZGPM9SSQV9LTZNDLJIZMPUVVXYXFYVBLIEUHLSEWFTKZZLXYRHHWVQV9MNNX9KZC9D9UZWZ"
merkleTreeDepthDepth of the Merkle tree of the coordinatorint24

Example:

{
"receipts": {
"validator": {
"api": {
"address": "http://localhost:14266",
"timeout": "5s"
},
"coordinator": {
"address": "UDYXTZBE9GZGPM9SSQV9LTZNDLJIZMPUVVXYXFYVBLIEUHLSEWFTKZZLXYRHHWVQV9MNNX9KZC9D9UZWZ",
"merkleTreeDepth": 24
}
}
}
}

7. Profiling

NameDescriptionTypeDefault value
enabledWhether the profiling plugin is enabledbooleanfalse
bindAddressThe bind address on which the profiler listens onstring"localhost:6060"

Example:

{
"profiling": {
"enabled": false,
"bindAddress": "localhost:6060"
}
}
  • 1. Application
    • Shutdown
    • Log
  • 2. Logger
  • 3. INX
  • 4. Coordinator
    • Signing
    • Quorum
    • Checkpoints
    • Tipselection
    • BlockBackups
  • 5. Migrator
  • 6. Receipts
    • Validator
    • API
    • Coordinator
  • 7. Profiling