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
Name | Description | Type | Default value |
---|---|---|---|
checkForUpdates | Whether to check for updates of the application or not | boolean | true |
shutdown | Configuration for shutdown | object |
Shutdown
Name | Description | Type | Default value |
---|---|---|---|
stopGracePeriod | The maximum time to wait for background processes to finish during shutdown before terminating the app | string | "5m" |
log | Configuration for log | object |
Log
Name | Description | Type | Default value |
---|---|---|---|
enabled | Whether to store self-shutdown events to a log file | boolean | true |
filePath | The file path to the self-shutdown log | string | "shutdown.log" |
Example:
{
"app": {
"checkForUpdates": true,
"shutdown": {
"stopGracePeriod": "5m",
"log": {
"enabled": true,
"filePath": "shutdown.log"
}
}
}
}
2. Logger
Name | Description | Type | Default value |
---|---|---|---|
level | The minimum enabled logging level | string | "info" |
disableCaller | Stops annotating logs with the calling function's file name and line number | boolean | true |
disableStacktrace | Disables automatic stacktrace capturing | boolean | false |
stacktraceLevel | The level stacktraces are captured and above | string | "panic" |
encoding | The logger's encoding (options: "json", "console") | string | "console" |
outputPaths | A list of URLs, file paths or stdout/stderr to write logging output to | array | stdout |
disableEvents | Prevents log messages from being raced as events | boolean | true |
Example:
{
"logger": {
"level": "info",
"disableCaller": true,
"disableStacktrace": false,
"stacktraceLevel": "panic",
"encoding": "console",
"outputPaths": ["stdout"],
"disableEvents": true
}
}
3. INX
Name | Description | Type | Default value |
---|---|---|---|
address | The INX address to which to connect to | string | "localhost:9029" |
maxConnectionAttempts | The amount of times the connection to INX will be attempted before it fails (1 attempt per second) | uint | 30 |
targetNetworkName | The network name on which the node should operate on (optional) | string | "" |
Example:
{
"inx": {
"address": "localhost:9029",
"maxConnectionAttempts": 30,
"targetNetworkName": ""
}
}
4. Coordinator
Name | Description | Type | Default value |
---|---|---|---|
stateFilePath | The path to the state file of the coordinator | string | "coordinator.state" |
interval | The interval milestones are issued | string | "5s" |
milestoneTimeout | The duration after which an event is triggered if no new milestones are received | string | "30s" |
signing | Configuration for signing | object | |
quorum | Configuration for quorum | object | |
checkpoints | Configuration for checkpoints | object | |
tipsel | Configuration for Tipselection | object | |
blockBackups | Configuration for blockBackups | object | |
debugFakeMilestoneTimestamps | Whether the coordinator will fake timestamps of milestones if the interval is below 1s (use for tests only!) | boolean | false |
Signing
Name | Description | Type | Default value |
---|---|---|---|
provider | The signing provider the coordinator uses to sign a milestone (local/remote) | string | "local" |
remoteAddress | The address of the remote signing provider (insecure connection!) | string | "localhost:12345" |
retryTimeout | Defines the timeout between signing retries | string | "2s" |
retryAmount | Defines the number of signing retries to perform before shutting down the node | int | 10 |
Quorum
Name | Description | Type | Default value |
---|---|---|---|
enabled | Whether the coordinator quorum is enabled | boolean | false |
timeout | The timeout until a node in the quorum must have answered | string | "2s" |
groups | Defines the quorum groups used to ask other nodes for correct ledger state of the coordinator. | object | see example below |
Checkpoints
Name | Description | Type | Default value |
---|---|---|---|
maxTrackedBlocks | Maximum amount of known blocks for milestone tipselection. If this limit is exceeded, a new checkpoint is issued. | int | 10000 |
Tipselection
Name | Description | Type | Default value |
---|---|---|---|
minHeaviestBranchUnreferencedBlocksThreshold | Minimum threshold of unreferenced blocks in the heaviest branch | int | 20 |
maxHeaviestBranchTipsPerCheckpoint | Maximum amount of checkpoint blocks with heaviest branch tips that are picked if the heaviest branch is not below 'MinHeaviestBranchUnreferencedBlocksThreshold' before | int | 10 |
randomTipsPerCheckpoint | Amount 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 picked | int | 3 |
heaviestBranchSelectionTimeout | The maximum duration to select the heaviest branch tips | string | "100ms" |
BlockBackups
Name | Description | Type | Default value |
---|---|---|---|
enabled | Whether all blocks that are issued by the coordinator should be stored to disk before being submitted to the network | boolean | true |
folderPath | The path to the folder where block backups are stored | string | "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
Name | Description | Type | Default value |
---|---|---|---|
enabled | Whether the migrator plugin is enabled | boolean | false |
stateFilePath | Path to the state file of the migrator | string | "migrator.state" |
receiptMaxEntries | The max amount of entries to embed within a receipt | int | 110 |
queryCooldownPeriod | The cooldown period for the service to ask for new data from the legacy node in case the migrator encounters an error | string | "5s" |
Example:
{
"migrator": {
"enabled": false,
"stateFilePath": "migrator.state",
"receiptMaxEntries": 110,
"queryCooldownPeriod": "5s"
}
}
6. Receipts
Name | Description | Type | Default value |
---|---|---|---|
validator | Configuration for validator | object |
Validator
Name | Description | Type | Default value |
---|---|---|---|
api | Configuration for API | object | |
coordinator | Configuration for coordinator | object |
API
Name | Description | Type | Default value |
---|---|---|---|
address | Address of the legacy node API to query for white-flag confirmation data | string | "http://localhost:14266" |
timeout | Timeout of API calls | string | "5s" |
Coordinator
Name | Description | Type | Default value |
---|---|---|---|
address | Address of the legacy coordinator | string | "UDYXTZBE9GZGPM9SSQV9LTZNDLJIZMPUVVXYXFYVBLIEUHLSEWFTKZZLXYRHHWVQV9MNNX9KZC9D9UZWZ" |
merkleTreeDepth | Depth of the Merkle tree of the coordinator | int | 24 |
Example:
{
"receipts": {
"validator": {
"api": {
"address": "http://localhost:14266",
"timeout": "5s"
},
"coordinator": {
"address": "UDYXTZBE9GZGPM9SSQV9LTZNDLJIZMPUVVXYXFYVBLIEUHLSEWFTKZZLXYRHHWVQV9MNNX9KZC9D9UZWZ",
"merkleTreeDepth": 24
}
}
}
}
7. Profiling
Name | Description | Type | Default value |
---|---|---|---|
enabled | Whether the profiling plugin is enabled | boolean | false |
bindAddress | The bind address on which the profiler listens on | string | "localhost:6060" |
Example:
{
"profiling": {
"enabled": false,
"bindAddress": "localhost:6060"
}
}