Configuration reference

let config = {
  // Required. Default: ~/.lisk
  // rootPath defines the root path for all data to be stored
  rootPath: string,
  // Required. Default: alpha-sdk-app
  // label defines the process name and folder within the root path
  label: string,
  // Required. Default: 0.0.0
  // version must follow semver format
  version: string,
  // Required. Default: 2.0
  // network version defines a P2P network version
  networkVersion: string,
  // Required.
  // ipc defines IPC communication behavior
  rpc: {
    // Default: false
    // enabled creates IPC socket if true
    enabled: boolean,
    // Default: ipc
    // enabled communication through 'ipc' or 'ws'
    mode:'ipc',
    // Default: 8080
    // In case of WS, this port used
    port: 8080
  },
  // Required.
  // forging holds delegate information for forging
  forging: {
    // Optional. Default: 2
    // waitThreshold defines the maximum waiting time for the last block before forging on top
    waitThreshold: number,
    // Optional.
    // delegates holds the delegate information for forging
    delegates: {
      // Required.
      // address defines the address of the delegate
      address: string,
      // Required.
      // encryptedPassphrase defines the encrypted passphrase
      encryptedPassphrase: string,
      // Required.
      // hashOnion holds the seed reveal to put in block header
      hashOnion: {
        // Required.
        // count holds the total number of hash onions
        count: number,
        // Required.
        // distance holds a distance between each hash onion
        distance: number,
        // Required.
        // hashes holds the seed reveal for every distance
        hashes: string[]
      }
    }[],
    // Optional. Default: false
    // force defines wether to use a default password and enable forging by default
    force?: boolean,
    // Optional.
    // defaultPassword defines a password to use to decrypt the encrypted Passphrase
    defaultPassword?: string
  },
  // Required.
  // network holds the network information of the node
  network: {
    // Required. Default: 5000
    // port defines an open port for P2P incoming connections
    port: number,
    // Required.
    // seedPeers defines an entry point of the network
    seedPeers: { ip: string, port: number }[],
    // Optional.
    // blacklistedIPs defines IP address which the node will reject the connection for both outbound and inbound connections
    blacklistedIPs?: string[],
    // Optional.
    // fixedPeers defines peers which will always try to connect by outbound connections
    fixedPeers?: { ip: string, port: number }[],
    // Optional.
    // whitelistedPeers defines peers which will always allow to connect to the node on inbound connections
    whitelistedPeers?: { ip: string, port: number }[],
    // Optional. Default: 86400000 (24h)
    // peerBanTime defines the length of banning in millisecond
    peerBanTime?: number,
    // Optional.
    // connectTimeout defines a timeout for a connection
    connectTimeout?: number,
    // Optional.
    // actTimeout defines a timeout for response from a peer
    ackTimeout?: number,
    // Optional. Default: 20
    // maxOutboundConnections defines a maximum number of outbound connection allowed
    maxOutboundConnections?: number,
    // Optional. Default: 100
    // maxInboundConnections defines a maximum number of inbound connection allowed
    maxInboundConnections?: number,
    // Optional. Default: 16
    // sendPeerLimit defines a maximum peer to send information when “send” is called
    sendPeerLimit?: number,
    // Optional. Default: 200
    // maxPeerDiscoveryResponseLength defines a maximum peer information allowed for response of peer discovery
    maxPeerDiscoveryResponseLength?: number,
    // Optional. Default: 3048576
    // wsMaxPayload defines maximum size of the payload allowed per communication
    wsMaxPayload?: number,
    // Optional. Default: true
    // advertiseAddress defines whether to announce the IP/Port other peers
    advertiseAddress?: boolean
  },
  // Optional.
  // logger holds information for the logging
  logger: {
    // Optional. Default: lisk.log
    // logFileName defines a name for the log file
    logFileName: string,
    // Optional. Default: info
    // fileLogLevel defines the log level output for the file logging
    fileLogLevel: string,
    // Optional. Default: none
    // consoleLogLevel defines the log level output for the console logging
    consoleLogLevel: string
  },
  // Required.
  // genesisConfig holds the blockchain protocol configuration
  // it is also passed to the module constructor
  genesisConfig: {
    // Since all genesis config options will be passed, developer can add extra config specific for a module
    myCustomProperty: unknown,
    // Optional. Default: 68
    // bftThreshold defines a threshold for pre-vote and pre-commit
    bftThreshold: number,
    // Optional. Default: Lisk
    // communityIdentifier defines a community identifier used to create the network identifier
    communityIdentifier: string,
    // Optional. Default: 10
    // blockTime defines the frequency of blocks to be created
    blockTime: number,
    // Optional. Default: 15360
    // maxPayloadLength defines a maximum payload size allowed in a block in bytes
    maxPayloadLength: number,
    // Optional.
    // rewards defines a block reward schedule
    rewards: {
      // Optional. Default: [‘500000000’, ‘400000000’, ‘300000000’, ‘200000000’, ‘100000000’]
      // milestones defines the block reward for every distance
      milestones: string[],
      // Optional. Default: 2160
      // offset defines at which height the block reward is given
      offset: number,
      // Optional. Default: 3000000
      // distance defines the duration of the each milestone
      distance: number
    },
    // Optional. Default: 1000
    // minFeePerByte defines a minimum fee per byte for a transaction
    minFeePerByte: number,
    // Optional.
    // baseFees defines a additional base fee to be included in the calculation of the minimum fee for a transaction
    baseFees: {
      moduleID: number,
      assetID: number,
      baseFee: string,
    }[]
  },
  // Optional.
  // transactionPool defines custom properties of the transaction pool
  transactionPool: {
    // Optional. Default: 4096
    // maxTransactions defines a maximum number of transactions in the pool
    maxTransactions?: number,
    // Optional. Default: 64
    // maxTransactionsPerAccount defines a maximum number of transactions in the pool per sender account
    maxTransactionsPerAccount?: number,
    // Optional. Default: 10800000
    // transactionExpiryTime defines timeout of the transaction in the pool in millisecond
    transactionExpiryTime?: number,
    // Optional. Default: 0
    // minEntranceFeePriority defines a minimum fee priority required to be added to the transaction pool
    minEntranceFeePriority?: string,
    // Optional. Default: 10
    // minReplacementFeeDifference defines a minimum fee difference to replace a transaction with the same nonce
    minReplacementFeeDifference?: string,
  },
  // Optional.
  // plugins holds a config which is passed to a particular plugin.
  // pluginAlias is a variable name which is depending on the installed plugin
  plugins: {
    httpApi: {
      port: number, //default: 4000,
      whiteList: string[], //default: ['127.0.0.1'],
      cors: {
        origin: string, //default: '*',
        methods?: string[], //default: ['GET', 'POST', 'PUT'],
      },
      limits: {
        max: number, //default: 0,
        delayMs: number, //default: 0,
        delayAfter: number, //default: 0,
        windowMs: number, //default: 60000,
        headersTimeout: number, //default: 5000,
        serverSetTimeout: number, //default: 20000,
      },
    },
  }
}