Guides
...
Starting a Signum-Node
Running on mainnet
Configuration file
1min
The standard mainnet configuration file without any adjustments using the H2 database, and ready to go looks like this:
node-default
#######################################################################
# Either edit this file to suit your needs or make a copy and name it #
# 'node.properties'. #
# #
# Lines starting with '#' are ignored, remove this character to #
# activate the command. #
# #
# Settings on a 'node.properties' file overwrite the values on the #
# 'node-default.properties'. #
#######################################################################
#
# Integer parameters can be
# decimal 123
# binary 0b100101
# hexadecimal 0xAF1D
#
# Boolean parameters can be
# 1, true, yes, on
# 0, false, no, off
# (case insensitive)
#
#### CASHBACK FOR TRANSACTION FEES ####
## Set an account ID and get a 25% cashback on every transaction fee that is
## created by this node.
# node.cashBackId = 8952122635653861124
#### DATABASE BACKEND SELECTION ####
## We are using the H2 file based as default with no username/password.
# DB.Url=jdbc:h2:file:./db/signum;DB_CLOSE_ON_EXIT=FALSE
# DB.Username=
# DB.Password=
## If you want to use MariaDB:
# DB.Url=jdbc:mariadb://localhost:3306/signum
# DB.Username=root
# DB.Password=YOUR_PASSWORD
#### PEER 2 PEER NETWORKING ####
## Announce my IP address/hostname to peers and allow them to share it with other peers.
## If disabled, peer networking servlet will not be started at all.
# P2P.shareMyAddress = yes
## My externally visible IP address or host name, to be announced to peers.
## It can optionally include a port number, which will also be announced to peers,
## and may be different from P2P.Port (useful if you do port forwarding behind a router).
# P2P.myAddress =
## Host interface on which to listen for peer networking requests, default all.
## Use 0.0.0.0 to listen on all IPv4 and IPv6 interfaces
# P2P.Listen = 0.0.0.0
## Port for incoming peer to peer networking requests, if enabled.
# P2P.Port = 8123
## Use UPnP-Portforwarding
# P2P.UPnP = yes
## My platform, to be announced to peers.
## Enter your Signum address here for SNR rewards, see here: https://signum.community/signum-snr-awards/
# P2P.myPlatform = PC
## A list of peer addresses / host names, separated by '; ' used for faster P2P networking bootstrap.
# P2P.BootstrapPeers = 157.90.168.219; 162.55.177.176; 162.55.177.197; 177.153.50.43; 77.68.79.251; 51.79.166.253; 158.69.63.213; 139.99.196.163; 45.77.94.168; 188.34.159.176; 5.161.75.89
## These peers will always be sent rebroadcast transactions. They are also automatically added to P2P.BootstrapPeers, so no need for duplicates.
# P2P.rebroadcastTo = 212.98.92.236; 108.61.251.202; 190.15.195.118; 24.96.113.8; 88.64.234.237; 137.135.203.145; 70.108.6.237; 144.91.84.164; 213.32.102.141; 5.196.65.184; 89.163.239.219; 165.227.36.71
## Connect to this many bootstrap connection peers before using the peer database to get connected faster. Please be aware, that higher != better (3-5 are usually good values) Set to 0 or comment out to disable.
# P2P.NumBootstrapConnections = 3
## Known bad peers to be blacklisted
# P2P.BlacklistedPeers =
## Maintain active connections with at least that many peers. Also more != better (you want good peers, not just many)
# P2P.MaxConnections = 20
## Maximum number of blocks sent to other peers in a single request
# P2P.MaxBlocks = 720
## Use Peers Database? (Only if not in Offline mode)
# P2P.usePeersDb = yes
## Save known peers in the PeersDB? (only if P2P.usePeersDB is true)
# P2P.savePeers = yes
## Set to false to disable getting more peers from the currently connected peers. Only useful
## when debugging and want to limit the peers to those in peersDb or P2P.BootstrapPeers.
# P2P.getMorePeers = yes
## If database of peers exceed this value more peers will not be downloaded.
## This value will never be below MaxConnections. To high value will slowdown connections.
# P2P.getMorePeersThreshold = 400
## Peer networking connect timeout for outgoing connections.
# P2P.TimeoutConnect_ms = 4000
## Peer networking read timeout for outgoing connections.
# P2P.TimeoutRead_ms = 8000
## Peer networking server idle timeout, milliseconds.
# P2P.TimeoutIdle_ms = 30000
## Blacklist peers for 600000 milliseconds (i.e. 10 minutes by default).
# P2P.BlacklistingTime_ms = 600000
## Enable priority (re-)broadcasting of transactions. When enabled incoming transactions
## will be priority resent to the rebroadcast targets
# P2P.enableTxRebroadcast = yes
## Amount of extra peers to send a transaction to after sending to all rebroadcast targets
# P2P.sendToLimit=10
## Max number of unconfirmed transactions that will be kept in cache.
# P2P.maxUnconfirmedTransactions = 8192
## Max percentage of unconfirmed transactions that have a full hash reference to another transaction kept in cache
# P2P.maxUnconfirmedTransactionsFullHashReferencePercentage = 5
## Max amount of raw UT bytes we will send to someone through both push and pull. Keep in mind that the resulting JSON size will always be bigger.
# P2P.maxUTRawSizeBytesToSend = 175000
## JETTY pass-through options. See documentation at
## https://www.eclipse.org/jetty/documentation/9.2.22.v20170531/dos-filter.html
## P2P section:
# JETTY.P2P.DoSFilter = on
# JETTY.P2P.DoSFilter.maxRequestsPerSec = 30
# JETTY.P2P.DoSFilter.delayMs = 500
# JETTY.P2P.DoSFilter.maxRequestMs = 300000
# JETTY.P2P.DoSFilter.throttleMs = 30000
# JETTY.P2P.DoSFilter.maxIdleTrackerMs = 30000
# JETTY.P2P.DoSFilter.maxWaitMs = 50
# JETTY.P2P.DoSFilter.throttledRequests = 5
# JETTY.P2P.DoSFilter.insertHeaders = true
# JETTY.P2P.DoSFilter.trackSessions = false
# JETTY.P2P.DoSFilter.remotePort = false
# JETTY.P2P.DoSFilter.ipWhitelist = 127.0.0.1,localhost
# JETTY.P2P.DoSFilter.managedAttr = true
## see https://www.eclipse.org/jetty/documentation/9.2.22.v20170531/gzip-filter.html
## deflate compression and others ommitted on purpose (pending update to GzipHandler anyway)
# JETTY.P2P.GZIPFilter = on
# JETTY.P2P.GZIPFilter.minGzipSize = 1024
## Size of the download cache for blocks
# node.blockCacheMB = 40
## Add this to check the deadline of every block since Genesis, otherwise only past the checkpoint.
# node.checkPointHeight = -1
#### API SERVER ####
## Accept http/json API requests.
# API.Server = on
## JETTY pass-through options. See documentation at
## https://www.eclipse.org/jetty/documentation/9.2.22.v20170531/dos-filter.html
## API section:
# JETTY.API.DoSFilter = on
# JETTY.API.DoSFilter.maxRequestsPerSec = 30
# JETTY.API.DoSFilter.delayMs = 500
# JETTY.API.DoSFilter.maxRequestMs = 30000
# JETTY.API.DoSFilter.throttleMs = 30000
# JETTY.API.DoSFilter.maxIdleTrackerMs = 30000
# JETTY.API.DoSFilter.maxWaitMs = 50
# JETTY.API.DoSFilter.throttledRequests = 5
# JETTY.API.DoSFilter.insertHeaders = true
# JETTY.API.DoSFilter.trackSessions = false
# JETTY.API.DoSFilter.remotePort = false
# JETTY.API.DoSFilter.ipWhitelist = 127.0.0.1,localhost
# JETTY.API.DoSFilter.managedAttr = true
## Jetty-passthrough parameters for API responses GZIP compression. See JETTY.P2P.GZIPFilter
# JETTY.API.GZIPFilter = on
# JETTY.API.GZIPFilter.minGzipSize = 1024
## Hosts or subnets from which to allow http/json API requests, if enabled.
## List delimited by ';', IPv4/IPv6 possible, default: localhost
# API.allowed = 127.0.0.1;localhost;[0:0:0:0:0:0:0:1];
## Key list to access the admin API requests, uncomment and replace with your own keys
## delimited by ';' if more than one key should be available
# API.adminKeyList = e673529588638d2129af1e0528a1642cf2e0c180
## Does the API accept additional/redundant parameters in an API call?
## default is no (Wallet accepts only params specified for given call)
## enable this if you have a sloppy client interacting, but please be aware that this
## can be a security risk.
# API.AcceptSurplusParams = no
## Host interface on which to listen for http/json API request, default localhost only.
## Set to 0.0.0.0 to allow the API server to accept requests from all network interfaces.
# API.Listen = 127.0.0.1
## List of CORS allowed origins.
# API.AllowedOrigins=*
## Port for http/json API requests.
# API.Port = 8125
## Idle timeout for http/json API request connections, milliseconds.
# API.ServerIdleTimeout = 30000
## Directory with html and javascript files for the new client UI, and admin tools utilizing
## the http/json API.
# API.UI_Dir = html/ui
## Enable SSL for the API server (also need to set API.SSL_keyStorePath and API.SSL_keyStorePassword).
# API.SSL = off
## Enforce requests that require POST to only be accepted when submitted as POST.
# API.ServerEnforcePOST = yes
## Your keystore file and password, required if uiSSL or apiSSL are enabled.
# API.SSL_keyStorePath = keystore
# API.SSL_keyStorePassword = password
## If you use https://certbot.eff.org/ to issue your certificate, provide below the path for your keys.
## BRS will automatically create the keystore file using the password above and will reload it weekly.
## Make sure you configure certbot to renew your certificate automatically so you don't need to worry about it.
## Note, you need 'openssl' on your path for this to work, most Linux distributions have it already.
# API.SSL_letsencryptPath = /etc/letsencrypt/live/yourdomain.com
#### DATABASE ####
## Number of concurrent connections to the Database
# DB.Connections = 30
## Make H2 database defrag and compact when shutting down.
## This is "off" by default as it can take 2 minutes
## but you really want this to be on after you are aware of this option
# Db.H2.DefragOnShutdown = off
## Enable trimming of derived objects tables.
# DB.trimDerivedTables = on
## If trimming enabled, maintain enough previous height records to allow rollback of at least
## that many blocks. Must be at least 1440 to allow normal fork resolution. After increasing
## this value, a full re-scan needs to be done in order for previously trimmed records to be
## re-created and preserved.
# DB.maxRollback = 1440
## Database default lock timeout in seconds.
# DB.LockTimeout = 60
### GPU Acceleration
## enable GPU acceleration
# GPU.Acceleration = off
# GPU.AutoDetect = on
## If GPU auto-detection is off (GPU.AutoDetect = off), you must specify manually which one to use
# GPU.PlatformIdx = 0
# GPU.DeviceIdx = 0
## GPU memory usage in percent and how many hashes to process in one batch
# GPU.MemPercent = 50
# GPU.HashesPerBatch = 1000
## number of unverified transactions in cache before GPU verification starts.
# GPU.UnverifiedQueue = 1000
## Uncomment this to limit the number of cpu cores the wallet sees. Default is half available.
# CPU.NumCores = 4
#### MINING ####
## List of semicolon-separated passphrases to use when solo mining. When mining solo, if you enter your passphrase here,
## you can set your miner to pool mining mode and avoid sending your passphrase over the wire constantly.
## Do not use on public facing nodes or nodes that are accessible (filesystem or API server) by others, as it could
## cause your passphrase to become compromised or allow others to mine on your behalf without your knowledge
# SoloMiningPassphrases=passphrase1;passphrase2;passphrase3;
## Allow anyone to use the "submitNonce" API call. This call can be abused to force your node to perform lots
## of work in order to effectively mine for others. Enabling this option will only allow accounts whose passphrases
## are in SoloMiningPassphrases to mine through this node.
# AllowOtherSoloMiners=false
#### DEVELOPMENT ####
## (proceed with extreme caution beyond this point)
## Run with a different network
# Testnet network
# node.network = signum.net.TestnetNetwork
# Mock mining (offline and accepting any nonce as valid)
# node.network = signum.net.MockNetwork
## Enter a version. Upon exit, print a list of peers having this version.
# DEV.dumpPeersVersion =
## Force re-build of derived objects tables at start.
# DEV.forceScan = off
### Debugging (part of Development - isn't it)
## Used for debugging peer to peer communications.
# brs.communicationLoggingMask = 0
## Track balances of the following accounts and related events for debugging purposes.
# brs.debugTraceAccounts=
## File name for logging tracked account balances.
# brs.debugTraceLog = LOG_AccountBalances_trace.csv
## Separator character for trace log. (default '\t' - TAB)
# brs.debugTraceSeparator =
## Quote character for trace log. (default " - double quote)
# brs.debugTraceQuote =
## Log changes to unconfirmed balances.
# brs.debugLogUnconfirmed = false
## Timeout in Seconds to wait for a graceful shutdown
# node.shutdownTimeout = 180
## Enable the indirect incoming tracker service. This allows you to see transactions where you are paid
## but are not the direct recipient eg. Multi-Outs.
# node.indirectIncomingService.enable = true
## Auto Pop Off means that the node will, when failing to push a block received whilst syncing (from another
## peer), pop off n-1 blocks, where n is the number of failures to push a block at this height.
## This, combined with blacklisting, should significantly lower the chance of your node becoming stuck,
## whilst syncing or when operating normally.
# node.autoPopOff.enable = true
Updated 25 Mar 2024
Did this page help you?