# Node configuration

## Data structure#

By default, the database and configuration files for the Iron Fish node are created in the ~/.ironfish directory.

The file structure is composed of the following:

[Iron Fish Node]
├── config.json
├── internal.json
└── databases
...└── chain
...└── wallet

Configuration files can be edited by the commands described here. Accounts can be edited by the commands described here

You can change the working directory by passing the flag --datadir when running a command. Doing so will require you to sync the node again with the network.

## List of configuration options#

ElementDescription
blockGraffitiWhen mining, value to set on the graffiti field of new blocks. Truncated to 32 bytes
bootstrapNodesList of addresses to connect to when launching the node
confirmationsThe minimum number of block confirmations needed when computing account balance
customNetworkPath to a JSON file containing the network definition of a custom network
databaseMigrateEnabled database migration
editorPath for the default code editor for the config file
enableListenP2PEnable the WebSocket listen server
enableLogFileEnable logging to a file
enableMetricsEnable internal metrics collection (required for status command)
enableRpcEnable the RPC server
enableRpcIpcEnable the RPC to be served on IPC
enableRpcTcpEnable the RPC to be served on TCP
enableRpcTlsEnable the RPC to be served on TLS
enableSyncingEnable syncing of the Iron Fish blockchain
enableTelemetryEnable anonymous telemetry collection
explorerBlocksUrlURL for viewing block information in a block explorer
explorerTransactionsUrlURL for viewing transaction information in a block explorer
feeEstimatorMaxBlockHistoryMax blocks to calculate transaction fee estimator
feeEstimatorPercentileHighHigh percentile for transaction fee estimator
feeEstimatorPercentileLowLow percentile for transaction fee estimator
feeEstimatorPercentileMediumMedium percentile for transaction fee estimator
generateNewIdentityGenerate a new identity at start-up
getFundsApiHTTP URL for the Faucet API
ipcPathPath for the RPC IPC directory
jsonLogsEnable logs to the console to be in JSON format
logLevelLog level of the node. Log levels can be applied to tagged logs, e.g. *:warn,tag:info
logPrefixString to be prefixed to all logs. If any of the following strings are included, will replace them with the corresponding value: %time%, %level%, %tag%
maxPeersThe maximum number of peers to which the node can be connected at a time
maxSyncedAgeBlocksThe oldest the tip should be before we consider the chain synced
minPeersThe minimum number of peers to which the node should be connected at any time
minerBatchSizeThe number of hashes processed by miner per worker request
miningForceForce mining
networkDefinitionPathFile path for network definition
networkIdNetwork ID of an official Iron Fish network
nodeNameName of the node to be broadcasted to peers (optional)
nodeWorkersThe number of threads to use for workers. A value of -1 will use the maximum possible amount of threads.
p2pSimulateLatencyRandomly delay outbound messages up to this value
peerPortPort on which to host the WebSocket listen server
poolAccountNameThe name of the account that the pool will use to payout from
poolAttemptPayoutIntervalThe length of time in seconds that the pool will wait between checking if it is time to make a payout
poolBalancePercentPayoutThe percent of the confirmed balance of the pool's account that it will payout
poolBanningShould pool clients be banned for perceived bad behavior
poolDifficultyThe pool difficulty, which determines how often miners submit shares
poolDiscordWebhookThe discord webhook URL to post pool critical pool information to
poolHostThe host that the pool is listening for miner connections on
poolMaxConnectionsPerIpThe maximum number of concurrent open connections per remote address
poolLarkWebhookThe lark webhook URL to post pool critical pool information to
poolNameName to use for mining pool (optional)
poolPortThe port that the pool is listening for miner connections on
poolRecentShareCutoffThe length of time in seconds that will be used to calculate hashrate for the pool
poolStatusNotificationIntervalThe length of time in seconds that the pool will wait between status messages
poolSuccessfulPayoutIntervalThe length of time in seconds that the pool will wait between successful payouts
rpcTcpHostAddress to connect to when establishing an RPC connection
rpcTcpPortPort to connect to when establishing an RPC connection
tlsKeyPathPrivate key path for TLS over TCP
tlsCertPathNode certificate path for authorizing TLS over TCP
targetPeersThe ideal number of peers we'd like to be connected to. The node will attempt to establish new connections when below this number.
telemetryApiHTTP URL for the Telemetry API
transactionExpirationDeltaThe default delta of block sequence for which to expire transactions from the mempool