Skip to main content

Node configuration

This topic outlines node properties that can be configured via properties files or environment variables. For blockchain-specific configuration properties, refer to the Blockchain configuration page.

Node properties

Below is a comprehensive list of node properties:

Property NameDescriptionTypeDefault ValueEnvironment Variable
cryptosystemCryptosystem class nameString"net.postchain.crypto.Secp256K1CryptoSystem"POSTCHAIN_CRYPTO_SYSTEM
configuration.provider.nodeNode configuration provider (properties/manual/managed)String"properties"POSTCHAIN_NODE_CONFIG_PROVIDER
database.driverclassDatabase driver classString"org.postgresql.Driver"POSTCHAIN_DB_DRIVER
database.urlDatabase URLString""POSTCHAIN_DB_URL
database.schemaDatabase schemaString""POSTCHAIN_DB_SCHEMA
database.usernameDatabase usernameString""POSTCHAIN_DB_USERNAME
database.passwordDatabase passwordString""POSTCHAIN_DB_PASSWORD
database.readConcurrencyDatabase read concurrencyInt10POSTCHAIN_DB_READ_CONCURRENCY
database.blockBuilderWriteConcurrencyDatabase block builder connection pool write concurrencyInt8POSTCHAIN_DB_BLOCK_BUILDER_WRITE_CONCURRENCY
database.sharedWriteConcurrencyDatabase shared connection pool write concurrencyInt2POSTCHAIN_DB_SHARED_WRITE_CONCURRENCY
database.blockBuilderMaxWaitWriteMaximum wait time for a connection on the block builder connection pool (ms)Int100POSTCHAIN_DB_BLOCK_BUILDER_MAX_WAIT_WRITE
database.sharedMaxWaitWriteMaximum wait time for a connection on the shared connection pool (ms)Int10000POSTCHAIN_DB_SHARED_MAX_WAIT_WRITE
database.suppressCollationCheckIgnore incorrect database collation configurationBooleanfalsePOSTCHAIN_DB_SUPPRESS_COLLATION_CHECK
exit-on-fatal-errorExit on fatal database errorBooleanfalsePOSTCHAIN_EXIT_ON_FATAL_ERROR
infrastructureInfrastructure implementation to useString"base/ebft"POSTCHAIN_INFRASTRUCTURE
genesis.pubkeyPublic key of the genesis nodeStringPOSTCHAIN_GENESIS_PUBKEY
genesis.hostHost address of the genesis nodeStringPOSTCHAIN_GENESIS_HOST
genesis.portGenesis node peer-to-peer portStringPOSTCHAIN_GENESIS_PORT
messaging.privkeyNode private keyString""POSTCHAIN_PRIVKEY
messaging.pubkeyNode public keyString""POSTCHAIN_PUBKEY
messaging.portPeer-to-peer portInt9870POSTCHAIN_PORT
metrics.prometheus.portPrometheus metrics port (or -1 to disable)Int-1POSTCHAIN_PROMETHEUS_PORT
fastsync.resurrect_drained_timeTime (ms) until a DRAINED node is set to SYNCABLE againLong10000POSTCHAIN_FASTSYNC_RESURRECT_DRAINED_TIME
fastsync.resurrect_unresponsive_timeTime (ms) until an UNRESPONSIVE node is set to SYNCABLE againLong20000POSTCHAIN_FASTSYNC_RESURRECT_UNRESPONSIVE_TIME
fastsync.parallelismNumber of parallel sync jobsInt10POSTCHAIN_FASTSYNC_PARALLELISM
fastsync.exit_delayMinimum time (ms) to remain in sync modeLong60000POSTCHAIN_FASTSYNC_EXIT_DELAY
fastsync.job_timeoutSync job timeout (ms)Long10000POSTCHAIN_FASTSYNC_JOB_TIMEOUT
fastsync.loop_intervalSleep time between sync job iterationsLong100POSTCHAIN_FASTSYNC_LOOP_INTERVAL
fastsync.must_sync_until_heightMinimum sync height (or -1 to disable)Long-1POSTCHAIN_FASTSYNC_MUST_SYNC_UNTIL_HEIGHT
fastsync.max_errors_before_blacklistingMax errors before blacklisting a peerInt10POSTCHAIN_FASTSYNC_MAX_ERRORS_BEFORE_BLACKLISTING
fastsync.disconnect_timeoutTime (ms) before a peer is considered disconnectedLong10000POSTCHAIN_FASTSYNC_DISCONNECT_TIMEOUT
fastsync.blacklisting_timeoutMaximum time a node is blacklisted if no errors occur (ms)Long60000POSTCHAIN_FASTSYNC_BLACKLISTING_TIMEOUT
fastsync.blacklisting_error_timeoutMaximum time an error is considered when deciding if a node should be blacklisted (ms)Long3600000POSTCHAIN_FASTSYNC_BLACKLISTING_ERROR_TIMEOUT
slowsync.enabledIs slowsync enabled.BooleantruePOSTCHAIN_SLOWSYNC_ENABLED
slowsync.max_sleep_timeMaximum sleep time for slowsync (ms).Long600000POSTCHAIN_SLOWSYNC_MAX_SLEEP_TIME
slowsync.min_sleep_timeMinimum sleep time for slowsync (ms).Long20POSTCHAIN_SLOWSYNC_MIN_SLEEP_TIME
slowsync.max_peer_wait_timeA peer must answer before this, or we will give up (ms).Long2000POSTCHAIN_SLOWSYNC_MAX_PEER_WAIT_TIME
applied-config-send-interval-msInterval for signers to broadcast info about their currently applied config (ms)Long1000POSTCHAIN_CONFIG_SEND_INTERVAL_MS
blockchain_ancestors.<brid_X>List of blockchain ancestors [<node_id_Y>:<brid_Z>]String

Peer configuration

You can configure peers using these properties in the node configuration:

Property NameDescriptionType
node.<index>.pubkeyPeer's public keyString
node.<index>.hostPeer's host addressString
node.<index>.portPeer's peer-to-peer portInt

REST API configuration

Property NameDescriptionTypeDefault ValueEnvironment Variable
api.basepathBase path for the REST API (leave empty for root). Don't append a trailing slash to the base path.String""POSTCHAIN_API_BASEPATH
api.portREST API port (-1 to disable, 0 for a random free port)Int7740POSTCHAIN_API_PORT
api.request-concurrencyNumber of concurrent HTTP requests to handle. The default value 0 means the number of available processors * 2.Int0POSTCHAIN_API_REQUEST_CONCURRENCY
api.chain-request-concurrencyConcurrent HTTP requests per blockchain. Unlimited by default. If exceeded, 503 Service Unavailable is returned.Int-1POSTCHAIN_API_CHAIN_REQUEST_CONCURRENCY
debug.portDebug API portInt7750POSTCHAIN_DEBUG_PORT

Container (subnode) configuration

For subnodes within containers, use the following configuration properties:

Property NameDescriptionTypeRequiredDefault ValueEnvironment Variable
container.docker-imageDocker image name to use for subnodesStringRequiredPOSTCHAIN_SUBNODE_DOCKER_IMAGE
container.master-hostHost address of the master node from the subnode perspectiveStringRequiredPOSTCHAIN_MASTER_HOST
container.master-portMaster node port for Netty communicationInt9860POSTCHAIN_MASTER_PORT
container.networkCustom Docker network to use for subnodesStringPOSTCHAIN_SUBNODE_NETWORK
container.subnode-hostSubnode host address from the master node perspectiveStringRequiredPOSTCHAIN_SUBNODE_HOST
container.rest-api-portSubnode REST API portInt7740POSTCHAIN_SUBNODE_REST_API_PORT
container.debug-api-portSubnode debug API portInt7750POSTCHAIN_SUBNODE_DEBUG_API_PORT
container.admin-rpc-portSubnode gRPC API portInt50051POSTCHAIN_SUBNODE_ADMIN_RPC_PORT
container.subnode-userCustom user to run Docker containersStringPOSTCHAIN_SUBNODE_USER
container.send-master-connected-peers-periodInterval for the master node to send the list of connected peers to subnodes (milliseconds)Int60000POSTCHAIN_SEND_MASTER_CONNECTED_PEERS_PERIOD
container.healthcheck.running-containers-check-periodInterval for the master node to check subnode health (milliseconds)Int60000POSTCHAIN_HEALTHCHECK_RUNNING_CONTAINERS_CHECK_PERIOD
container.filesystemFilesystem to use for subnodes (LOCAL, ZFS, EXT4)String"LOCAL"POSTCHAIN_SUBNODE_FILESYSTEM
container.host-mount-dirDirectory in the host filesystem where subnode mount directories will be createdStringRequiredPOSTCHAIN_HOST_MOUNT_DIR
container.host-mount-deviceHost device that container.host-mount-dir is mounted onStringRequiredPOSTCHAIN_HOST_MOUNT_DEVICE
container.master-mount-dirDirectory in the master container filesystem used for subnode mount directoriesStringcontainer.host-mount-dirPOSTCHAIN_MASTER_MOUNT_DIR
container.bind-pgdata-volumeBind PostgreSQL data directory to the host file system (persistence)BooleantruePOSTCHAIN_BIND_PGDATA_VOLUME
container.docker-log-driverCustom Docker log driverStringPOSTCHAIN_DOCKER_LOG_DRIVER
container.docker-log-optsCustom Docker log optionsStringPOSTCHAIN_DOCKER_LOG_OPTS
container.remote-debug-enabledEnable remote debugging for subnodes (attach to port mapped to 8000)BooleanfalsePOSTCHAIN_SUBNODE_REMOTE_DEBUG_ENABLED
container.remote-debug-suspendEnable remote debugging with suspend flagBooleanfalsePOSTCHAIN_SUBNODE_REMOTE_DEBUG_SUSPEND
container.metrics.prometheus.portEnable Prometheus metrics on subnodes using this port (not mapped to host)Int-1POSTCHAIN_SUBNODE_PROMETHEUS_PORT
container.jmx-base-portEnable JMX on subnodes with JMX port mapped to this base value + container idInt-1POSTCHAIN_SUBNODE_JMX_BASE_PORT
container.label.key1=value1Set Docker label key1=value1 on the subnode container (multiple allowed)String
min-space-quota-buffer-mbDisk space margin to quota limit, subnode switches to read-only mode if this limit is reachedInt100POSTCHAIN_SUBNODE_MIN_SPACE_QUOTA_BUFFER_MB
container.log4j-configuration-filePath to the log4j configuration file for subnodesStringPOSTCHAIN_SUBNODE_LOG4J_CONFIGURATION_FILE

ZFS configuration

Relevant when container.filesystem is configured as ZFS. These properties apply:

Property NameDescriptionTypeDefault ValueEnvironment Variable
container.zfs.pool-nameName of the ZFS poolString"psvol"POSTCHAIN_ZFS_POOL_NAME
container.zfs.pool-init-scriptScript for ZFS pool setupStringPOSTCHAIN_ZFS_POOL_INIT_SCRIPT