Skip to main content

Configuration

The IOTA core node 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 iota-core executable.

For example:

iota-core -c config_example.json

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

iota-core -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
nameThe optional name of the logger instance. All log messages are prefixed with that name.string""
levelThe minimum enabled logging levelstring"info"
timeFormatSets the logger's timestamp format. (options: "rfc3339", "rfc3339nano", "datetime", "timeonly", and "iso8601")string"rfc3339"
outputPathsA list of file paths or stdout/stderr to write logging output toarraystdout

Example:

  {
"logger": {
"name": "",
"level": "info",
"timeFormat": "rfc3339",
"outputPaths": [
"stdout"
]
}
}

3. Peer to Peer

NameDescriptionTypeDefault value
bindMultiAddressesThe bind multi addresses for p2p connectionsarray/ip4/0.0.0.0/tcp/15600
/ip6/::/tcp/15600
connectionManagerConfiguration for connectionManagerobject
identityPrivateKeyPrivate key used to derive the node identity (optional)string""
identityPrivateKeyFilePathThe file path to the private key used to derive the node identitystring"testnet/p2p/identity.key"
autopeeringConfiguration for autopeeringobject

ConnectionManager

NameDescriptionTypeDefault value
highWatermarkThe threshold up on which connections count truncates to the lower watermarkint10
lowWatermarkThe minimum connections count to hold after the high watermark was reachedint5

Autopeering

NameDescriptionTypeDefault value
maxPeersThe max number of auto-peer connections. Set to 0 to disable auto-peering.int5
bootstrapPeersPeers to be used as discovery for other peersarray
allowLocalIPsAllow local IPs to be used for autopeeringbooleanfalse
externalMultiAddressesExternal reacheable multi addresses advertised to the networkarray

Example:

  {
"p2p": {
"bindMultiAddresses": [
"/ip4/0.0.0.0/tcp/15600",
"/ip6/::/tcp/15600"
],
"connectionManager": {
"highWatermark": 10,
"lowWatermark": 5
},
"identityPrivateKey": "",
"identityPrivateKeyFilePath": "testnet/p2p/identity.key",
"autopeering": {
"maxPeers": 5,
"bootstrapPeers": [],
"allowLocalIPs": false,
"externalMultiAddresses": []
}
}
}

4. Profiling

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

Example:

  {
"profiling": {
"enabled": false,
"bindAddress": "localhost:6060"
}
}

5. RestAPI

NameDescriptionTypeDefault value
bindAddressThe bind address on which the REST API listens onstring"0.0.0.0:14265"
publicRoutesThe HTTP REST routes which can be called without authorization. Wildcards using * are allowedarray/health
/api/routes
/api/core/v3/info
/api/core/v3/network*
/api/core/v3/blocks*
/api/core/v3/transactions*
/api/core/v3/commitments*
/api/core/v3/outputs*
/api/core/v3/accounts*
/api/core/v3/validators*
/api/core/v3/rewards*
/api/core/v3/committee*
/api/debug/v2/*
/api/indexer/v2/*
/api/mqtt/v2
/api/blockissuer/v1/*
protectedRoutesThe HTTP REST routes which need to be called with authorization. Wildcards using * are allowedarray/api/*
debugRequestLoggerEnabledWhether the debug logging for requests should be enabledbooleanfalse
maxPageSizeThe maximum number of results per pageuint100
maxCacheSizeThe maximum size of cache for resultsstring"50MB"
jwtAuthConfiguration for JWT Authobject
limitsConfiguration for limitsobject

JWT Auth

NameDescriptionTypeDefault value
saltSalt used inside the JWT tokens for the REST API. Change this to a different value to invalidate JWT tokens not matching this new valuestring"IOTA"

Limits

NameDescriptionTypeDefault value
maxBodyLengthThe maximum number of characters that the body of an API call may containstring"1M"
maxResultsThe maximum number of results that may be returned by an endpointint1000

Example:

  {
"restAPI": {
"bindAddress": "0.0.0.0:14265",
"publicRoutes": [
"/health",
"/api/routes",
"/api/core/v3/info",
"/api/core/v3/network*",
"/api/core/v3/blocks*",
"/api/core/v3/transactions*",
"/api/core/v3/commitments*",
"/api/core/v3/outputs*",
"/api/core/v3/accounts*",
"/api/core/v3/validators*",
"/api/core/v3/rewards*",
"/api/core/v3/committee*",
"/api/debug/v2/*",
"/api/indexer/v2/*",
"/api/mqtt/v2",
"/api/blockissuer/v1/*"
],
"protectedRoutes": [
"/api/*"
],
"debugRequestLoggerEnabled": false,
"maxPageSize": 100,
"maxCacheSize": "50MB",
"jwtAuth": {
"salt": "IOTA"
},
"limits": {
"maxBodyLength": "1M",
"maxResults": 1000
}
}
}

6. DebugAPI

NameDescriptionTypeDefault value
enabledWhether the DebugAPI component is enabledbooleanfalse
dbConfiguration for Databaseobject

Database

NameDescriptionTypeDefault value
pathThe path to the database folderstring"testnet/debug"
maxOpenDBsMaximum number of open database instancesint2
granularityHow many slots should be contained in a single DB instanceint100
pruningConfiguration for pruningobject

Pruning

NameDescriptionTypeDefault value
thresholdHow many epochs should be retaineduint1

Example:

  {
"debugAPI": {
"enabled": false,
"db": {
"path": "testnet/debug",
"maxOpenDBs": 2,
"granularity": 100,
"pruning": {
"threshold": 1
}
}
}
}

7. MetricsTracker

NameDescriptionTypeDefault value
enabledWhether the Metrics Tracker plugin is enabledbooleantrue

Example:

  {
"metricsTracker": {
"enabled": true
}
}

8. Database

NameDescriptionTypeDefault value
engineThe used database engine (rocksdb/mapdb)string"rocksdb"
pathThe path to the database folderstring"testnet/database"
maxOpenDBsMaximum number of open database instancesint5
pruningConfiguration for pruningobject

Pruning

NameDescriptionTypeDefault value
thresholdHow many finalized epochs should be retaineduint30
sizeConfiguration for sizeobject

Size

NameDescriptionTypeDefault value
enabledWhether to delete old block data from the database based on maximum database sizebooleantrue
targetSizeTarget size of the databasestring"30GB"
reductionPercentageThe percentage the database size gets reduced if the target size is reachedfloat10.0
cooldownTimeCooldown time between two pruning by database size eventsstring"5m"

Example:

  {
"db": {
"engine": "rocksdb",
"path": "testnet/database",
"maxOpenDBs": 5,
"pruning": {
"threshold": 30,
"size": {
"enabled": true,
"targetSize": "30GB",
"reductionPercentage": 10,
"cooldownTime": "5m"
}
}
}
}

9. Protocol

NameDescriptionTypeDefault value
snapshotConfiguration for snapshotobject
commitmentCheckSpecifies whether commitment and ledger checks should be enabledbooleantrue
filterConfiguration for filterobject
protocolParametersPathThe path of the protocol parameters filestring"testnet/protocol_parameters.json"
baseTokenConfiguration for baseTokenobject

Snapshot

NameDescriptionTypeDefault value
pathThe path of the snapshot filestring"testnet/snapshot.bin"
depthDefines how many slot diffs are stored in the snapshot, starting from the full ledgerstateint5

Filter

NameDescriptionTypeDefault value
maxAllowedClockDriftThe maximum drift our wall clock can have to future blocks being received from the networkstring"5s"

BaseToken

NameDescriptionTypeDefault value
nameThe base token namestring"Shimmer"
tickerSymbolThe base token ticker symbolstring"SMR"
unitThe base token unitstring"SMR"
subunitThe base token subunitstring"glow"
decimalsThe base token amount of decimalsuint6

Example:

  {
"protocol": {
"snapshot": {
"path": "testnet/snapshot.bin",
"depth": 5
},
"commitmentCheck": true,
"filter": {
"maxAllowedClockDrift": "5s"
},
"protocolParametersPath": "testnet/protocol_parameters.json",
"baseToken": {
"name": "Shimmer",
"tickerSymbol": "SMR",
"unit": "SMR",
"subunit": "glow",
"decimals": 6
}
}
}

10. Retainer

NameDescriptionTypeDefault value
debugStoreErrorMessagesWhether to store debug error messages in the databasebooleanfalse

Example:

  {
"retainer": {
"debugStoreErrorMessages": false
}
}

11. Node

NameDescriptionTypeDefault value
aliasSet an alias to identify a nodestring"IOTA-Core node"

Example:

  {
"node": {
"alias": "IOTA-Core node"
}
}

12. Prometheus

NameDescriptionTypeDefault value
enabledWhether the Metrics component is enabledbooleantrue
bindAddressBind address on which the Prometheus exporter serverstring"0.0.0.0:9311"
goMetricsInclude go metricsbooleanfalse
processMetricsInclude process metricsbooleanfalse
promhttpMetricsInclude promhttp metricsbooleanfalse

Example:

  {
"prometheus": {
"enabled": true,
"bindAddress": "0.0.0.0:9311",
"goMetrics": false,
"processMetrics": false,
"promhttpMetrics": false
}
}

13. INX

NameDescriptionTypeDefault value
enabledWhether the INX plugin is enabledbooleanfalse
bindAddressThe bind address on which the INX can be accessed fromstring"localhost:9029"

Example:

  {
"inx": {
"enabled": false,
"bindAddress": "localhost:9029"
}
}
  • 1. Application
    • Shutdown
    • Log
  • 2. Logger
  • 3. Peer to Peer
    • ConnectionManager
    • Autopeering
  • 4. Profiling
  • 5. RestAPI
    • JWT Auth
    • Limits
  • 6. DebugAPI
    • Database
    • Pruning
  • 7. MetricsTracker
  • 8. Database
    • Pruning
    • Size
  • 9. Protocol
    • Snapshot
    • Filter
    • BaseToken
  • 10. Retainer
  • 11. Node
  • 12. Prometheus
  • 13. INX