Skip to main content

Configuration properties

This topic outlines the key configuration options available in the BaseBlockChainConfiguration, providing descriptions, types, and default values for each parameter.

Core configuration properties

NameDescriptionTypeRequiredDefault
signersList of blockchain signers.array
syncSpecifies the synchronization infrastructure implementation.string""
sync_extExtensions for the synchronization infrastructure.

For mainnet, these are the default allowed synchronization extensions:

net.postchain.d1.icmf.IcmfReceiverSynchronizationInfrastructureExtension,
net.postchain.eif.EifSynchronizationInfrastructureExtension
array[]
configurationfactoryDefines the configuration factory implementation.string
txqueuecapacityMaximum number of transactions that can be queued before processing.int2500
historic_bridSets the historical Blockchain RID when forking a blockchain.bytea
dependenciesSpecifies blockchain dependencies in raw format (GTV format).gtv
config_consensus_strategyDefines the consensus strategy for configuration settings.string
query_cache_ttl_secondsThe maximum duration (in seconds) for caching query responses. 0 disables caching entirely.int0
max_block_future_timeDefines the maximum allowable time difference between a block’s timestamp and the current time (in milliseconds). This ensures that blocks cannot be excessively post-dated, maintaining blockchain integrity. A value of -1 disables this check entirely.int60000
add_primary_key_to_headerWhen enabled, the primary node includes its public key in the block header. However, this value is not verified and should only be trusted for features where nodes are incentivized to honestly include their own key.booleanfalse

Block strategy configuration (under the key blockstrategy)

NameDescriptionTypeDefault
nameThe block strategy class implementing net.postchain.core.block.BlockBuildingStrategy.string
maxblocksizeMaximum block size in bytes.

For mainnet, the maximum allowed block size is 27262976 (26 MiB).
int26 * 1024 * 1024
maxblocktransactionsMaximum number of transactions per block.int100
mininterblockintervalMinimum time (in milliseconds) between two consecutive blocks.

For mainnet, the minimum value allowed for inter block interval is 1000 (1 second).
int25
maxblocktimeMaximum time (in milliseconds) to wait before starting to build a block. If the queue is empty, an empty block will be built.int30000
maxtxdelayMaximum time (in milliseconds) to wait after the first transaction is received before building a block.int1000
minbackofftimeMinimum time (in milliseconds) to wait before retrying a failed block build.int20
maxbackofftimeMaximum time (in milliseconds) to wait before retrying a failed block build.int2000
maxspecialendtransactionsizeMaximum size (in bytes) for a special end transaction in a block.int1024
preemptiveblockbuildingEnables or disables preemptive block building.booleantrue

GTX configuration (under the key gtx)

NameDescriptionTypeDefault
max_transaction_sizeMaximum allowable size (in bytes) for individual transactions.int25 * 1024 * 1024
modulesSpecifies the GTX modules to be included.

For mainnet, these are the default allowed GTX modules:

net.postchain.rell.module.RellPostchainModuleFactory,
net.postchain.gtx.StandardOpsGTXModule,
net.postchain.d1.icmf.IcmfSenderGTXModule,
net.postchain.d1.icmf.IcmfReceiverGTXModule,
net.postchain.d1.iccf.IccfGTXModule,
net.postchain.eif.EifGTXModule,
net.postchain.web.WebStaticGTXModuleFactory.
array
sqlmodulesSpecifies the SQL modules to be included for GTX.array
allowoverridesDetermines whether operations and queries with the same name can be overridden by other GTX modules.booleanfalse

Revolt configuration (under the key revolt)

NameDescriptionTypeDefault
timeoutDefault revolt timeout period (in milliseconds).int10000
exponential_delay_initialInitial delay (in milliseconds) before increasing the revolt timeout.int1000
exponential_delay_power_baseThe power base used to exponentially increase the revolt timeout per round.string1.2
exponential_delay_maxMaximum allowable revolt timeout (in milliseconds).int600000
fast_revolt_status_timeoutTime (in milliseconds) since the last status message before a node is considered disconnected.int-1
revolt_when_should_build_blockBegins counting the revolt timeout when it’s considered possible to build a block.booleanfalse