# Node Config

This configuration mainly takes care of the local node settings and need not be consistent with other nodes. An example is shown below:

{
  "_comment": "Config for 3 / 5 generated by gen-node-config cli command",
  "adminWebApiConfig": {
    "serverKeyStorePath": "c:/miyabi/_configs/node_002/certs/webapi/server.p12",
    "serverKeyStorePasswordPath": "adminServerKeyStorePasswordPath",
    "webApiEndPoint": "https://+:8002/",
  },
  "bindings": [
    "0.0.0.0:3822"
  ],
  "busyWaitTransactions": false,
  "consensus": {
    "interval": "00:00:4",
    "timeout": "00:00:10"
  },
  "consensusKeyStorePath": "c:/miyabi/_configs/node_002/certs/consensus/02.p12",
  "consensusKeyStorePasswordPath": "c:/miyabi/_configs/node_002/certs/consensus/password.pwd",
  "dbConfig": {
    "baseLocation": "c:/miyabi/_configs/node_002/data",
    "dbCompression": "Lz4",
    "dbWalConfig": {
      "walArchivedSizeLimitMB": 0,
      "walArchivedTtlDays": 7,
      "walDir": "",
      "walTotalSizeMb": 256
    }
  },
  "debugWebApiConfig": {
    "serverKeyStorePath": "c:/miyabi/_configs/node_002/certs/debugapi/server.p12",
    "serverKeyStorePasswordPath": "debugServerKeyStorePasswordPath",
    "webApiEndPoint": "https://+:5000/",
  },
  "extensions":[
    {
      "name": "Miyabi.BLS"
    },
    {
      "name": "Miyabi.Binary"
    },
    {
      "name": "Miyabi.Asset"
    },
    {
      "name": "Miyabi.Entity"
    },
    {
      "name": "Miyabi.Contract"
    },
    {
      "name": "Miyabi.NFT"
    },
    {
      "name": "Miyabi.PrivateData"
    }
  ],
  "externalObserverEndpoint": "127.0.0.1:8182",
  "externalObserverKeyStorePath": "c:/miyabi/_configs/node_002/certs/observer/02.p12",
  "externalObserverKeyStorePasswordPath": "c:/miyabi/_configs/node_002/certs/observer/02.pwd",
  "generalWebApiConfig": {
    "serverKeyStorePath": "c:/miyabi/_configs/node_002/certs/webapi/server.p12",
    "serverKeyStorePasswordPath": "generalServerKeyStorePasswordPath",
    "webApiEndPoint": "https://+:9012/",
  },
  "initialNodes": [
    "127.0.0.1:3820",
    "127.0.0.1:3821",
    "127.0.0.1:3823",
    "127.0.0.1:3824"
  ],
  "maxBlockDepth": 100,
  "maxGetBlockSize": 5,
  "maxTransactionCount": 1000,
  "memoryPoolCapacity": 1000,
  "name": "NodeAdmin",
  "nodeAdmin": "03046bf1185537b4fc97fd8eab74c5e08cbe306aa7c394de812a8c1b6abcc2e5a4",
  "privateWebApiConfig": {
    "serverKeyStorePath": "c:/miyabi/_configs/node_002/certs/webapi/server.p12",
    "serverKeyStorePasswordPath": "privateServerKeyStorePasswordPath",
    "webApiEndPoint": "https://+:7002/"
  },
  "prometheusConfig": {
    "pullPort": 9077,
    "pushHost": "",
    "usePushMode": false
  },
  "snapshotConfig": {
    "blockBackupLocation": "c:/miyabi/_configs/node_002/data/_snapshots",
    "stateBackupLocation": "c:/miyabi/_configs/node_002/data/_snapshots"
  },
  "sslKeyStorePath": "c:/miyabi/_configs/node_002/certs/ssl/02.p12",
  "sslKeyStorePasswordPath": "c:/miyabi/_configs/node_002/certs/ssl/sslpassword.pwd",
  "txPerBlockRateEstimate": 0.5,
  "waitForTx": "00:00:00"
}

The following table describes each configuration field:

Field Description
AdminWebApiConfig Admin web API config. (Endpoints, server certificate path, server certificate password path).
Bindings IP endpoint binding for this node.
BusyWaitTransactions (Optional, default to false) Enable/Disable waiting for transactions to populate in the TransactionMemoryPool.
Consensus (Optional) Pacemaker config (round timeout and block interval).
ConsensusKeyStorePath The path of the key store of this node's consensus credential.
ConsensusKeyStorePasswordPath The path of the password file for consensus key store.
DebugWebApiConfig Debug web API config (Endpoints, server certificate path, server certificate password path).
DbConfig Database configuration. (Base location, cache size, encryption etc.).
Extensions (Optional) Module Extension configs.
ExternalObserverEndpoint (Optional) Endpoint of external observer.
ExternalObserverKeyStorePath (Optional) Path of the key store for communicating with Observer.
ExternalObserverKeyStorePasswordPath (Optional) Path of the password file of the key store for communicating with Observer.
GeneralWebApiConfig General web API config. (Endpoints, server certificate path, server certificate password path).
InitialNodes Endpoints for the initial nodes that this node will actively connect to.
MaxBlockDepth (Optional, default to 100) Max depth of the block range set which a client can request.
MaxGetBlockSize (Optional, default to 5) Maximum number of blocks to request from inventory layer.
MaxTransactionCount (Optional, default to 1000) Maximum number of transactions can be queried through API.
MemoryPoolCapacity (Optional, default to 1000) Max number of transactions the TransactionMemoryPool can store.
Name (Optional, default to NodeAdmin) Nickname of the node, used by web api getinfo.
NodeAdmin Credential for the node admin that can manage resources in this node.
PrivateWebApiConfig Private data web API config (Endpoints, server certificate path, server certificate password path).
PrometheusConfig (Optional) Prometheus Configuration (Push Mode, Push Host, Pull port, etc.).
SnapshotConfig (Optional) Path of block backup and state snapshot, will be used by archiving.
SslKeyStorePath The path of the key store used for SSL.
SslKeyStorePasswordPath The path of the password file for SSL key store.
TxPerBlockRateEstimate (Optional, default to 0.5) Expected Tx per Block / Max Tx per Block; used by inventory layer.
WaitForTx (Optional, default to 0) Max wait time for new transactions.