Guides
...
Starting a Signum-Node
Running on mainnet
Configuration file
1min
The standard mainnet configuration file without any adjustments using the SQLite database, and ready to go looks like this:
node-default
1#######################################################################
2# Either edit this file to suit your needs or make a copy and name it #
3# 'node.properties'. #
4# #
5# Lines starting with '#' are ignored, remove this character to #
6# activate the command. #
7# #
8# Settings on a 'node.properties' file overwrite the values on the #
9# 'node-default.properties'. #
10#######################################################################
11#
12# Integer parameters can be
13# decimal 123
14# binary 0b100101
15# hexadecimal 0xAF1D
16#
17# Boolean parameters can be
18# 1, true, yes, on
19# 0, false, no, off
20# (case insensitive)
21#
22
23#### CASHBACK FOR TRANSACTION FEES ####
24
25## Set an account ID and get a 25% cashback on every transaction fee that is
26## created by this node.
27
28# node.cashBackId = 8952122635653861124
29
30#### DATABASE SECTION ####
31
32## Maximum allowed connections by Database connection pool
33# DB.Connections = 30
34
35## If a database, i.e. SQLITE, supports optimization features, like SHUTDOWN DEFRAG, VACUUM etc. This might require some additional shutdown or startup time (depending on the database).
36## This can help improve performance and reduce the size of the database file on disk.
37## This is "on" by default but can cost some time while starting/shutting down.
38# DB.Optimize = off
39
40## If you want to use Sqlite (recommended for local/non-public nodes):
41# DB.Url=jdbc:sqlite:file:./db/signum.sqlite.db
42
43## Sqlite Journaling Mode
44## https://www.sqlite.org/pragma.html#pragma_journal_mode
45## Possible Values are: DELETE,TRUNCATE,PERSIST,WAL (default, recommended)
46## WAL may occupy up to twice more disc space than others while running the node, but allows read concurrency and usually better performance (see more here: https://www.sqlite.org/wal.html)
47## It's highly recommended to use WAL mode during syncing, to dramatically reduce I/O operations and though faster sync times.
48## Info: MEMORY journal mode is not supported
49# DB.SqliteJournalMode = WAL
50
51## If you want to use MariaDB (recommended for public nodes):
52# DB.Url=jdbc:mariadb://localhost:3306/signum
53# DB.Username=signumnode
54# DB.Password=s1gn00m_n0d3
55
56## If you want to use Postgres (Experimental - considered alternative for MariaDB):
57# DB.Url=jdbc:postgresql://localhost:5432/signum?sslMode=disabled
58# DB.Username=signumnode
59# DB.Password=s1gn00m_n0d3
60
61#### PEER 2 PEER NETWORKING ####
62
63## Announce my IP address/hostname to peers and allow them to share it with other peers.
64## If disabled, peer networking servlet will not be started at all.
65
66# P2P.shareMyAddress = yes
67
68## My externally visible IP address or host name, to be announced to peers.
69## It can optionally include a port number, which will also be announced to peers,
70## and may be different from P2P.Port (useful if you do port forwarding behind a router).
71
72# P2P.myAddress =
73
74## Host interface on which to listen for peer networking requests, default all.
75## Use 0.0.0.0 to listen on all IPv4 and IPv6 interfaces
76
77# P2P.Listen = 0.0.0.0
78
79## Port for incoming peer to peer networking requests, if enabled.
80
81# P2P.Port = 8123
82
83## Use UPnP-Portforwarding
84## Set to no on a server setup
85
86# P2P.UPnP = yes
87
88## My platform, to be announced to peers.
89## Enter your Signum address here for SNR rewards, see here: https://wiki.signum.network/signum-snr-awards/
90
91# P2P.myPlatform = PC
92
93## A list of peer addresses / host names, separated by '; ' used for faster P2P networking bootstrap.
94
95# P2P.BootstrapPeers = australia.signum.network:8123; brazil.signum.network:8123; canada.signum.network:8123; europe.signum.network:8123; europe1.signum.network:8123; europe2.signum.network:8123; europe3.signum.network:8123; latam.signum.network:8123; singapore.signum.network:8123; ru.signum.network:8123; us-central.signum.network:8123; us-east.signum.network:8123
96
97## These peers will always be sent rebroadcast transactions. They are also automatically added to P2P.BootstrapPeers, so no need for duplicates.
98
99# P2P.rebroadcastTo = 216.114.232.67:8123; 51.235.143.229:8123; signode.ddns.net:8123; 188.34.159.176:8123;signum.mega-bit.ru:8123; storjserver2.cryptomass.de:8123; 89.58.10.207:8123; 84.54.46.176:8123; signumwallet.ddns.net:8123; taylorforce.synology.me:8123; zwurg.feste-ip.net:51940; zmail.cloudns.ph:8123; wallet.signa-coin.eu:8123; wekuz-signa-node.duckdns.org:8123; austria-sn.albatros.cc:8123; signumwallet.lucentinian.com:8123; 85.238.97.205:8123; 124.246.79.194:8123
100
101## 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 to disable.
102
103# P2P.NumBootstrapConnections = 3
104
105## Known bad peers to be blacklisted
106
107# P2P.BlacklistedPeers =
108
109## Maintain active connections with at least that many peers. Also more != better (you want good peers, not just many)
110
111# P2P.MaxConnections = 20
112
113## Maximum number of blocks sent to other peers in a single request
114
115# P2P.MaxBlocks = 720
116
117## Use Peers Database? (Only if not in Offline mode)
118
119# P2P.usePeersDb = yes
120
121## Save known peers in the PeersDB? (only if P2P.usePeersDB is true)
122
123# P2P.savePeers = yes
124
125## Set to false to disable getting more peers from the currently connected peers. Only useful
126## when debugging and want to limit the peers to those in peersDb or P2P.BootstrapPeers.
127
128# P2P.getMorePeers = yes
129
130## If database of peers exceed this value more peers will not be downloaded.
131## This value will never be below MaxConnections. To high value will slowdown connections.
132
133# P2P.getMorePeersThreshold = 400
134
135## Peer networking connect timeout for outgoing connections.
136
137# P2P.TimeoutConnect_ms = 4000
138
139## Peer networking read timeout for outgoing connections.
140
141# P2P.TimeoutRead_ms = 8000
142
143## Peer networking server idle timeout, milliseconds.
144
145# P2P.TimeoutIdle_ms = 30000
146
147## Blacklist peers for 600000 milliseconds (i.e. 10 minutes by default).
148
149# P2P.BlacklistingTime_ms = 600000
150
151## Enable priority (re-)broadcasting of transactions. When enabled incoming transactions
152## will be priority resent to the rebroadcast targets
153
154# P2P.enableTxRebroadcast = yes
155
156## Amount of extra peers to send a transaction to after sending to all rebroadcast targets
157
158# P2P.sendToLimit=10
159
160## Max number of unconfirmed transactions that will be kept in cache.
161
162# P2P.maxUnconfirmedTransactions = 8192
163
164## Max percentage of unconfirmed transactions that have a full hash reference to another transaction kept in cache
165
166# P2P.maxUnconfirmedTransactionsFullHashReferencePercentage = 5
167
168## 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.
169
170# P2P.maxUTRawSizeBytesToSend = 175000
171
172## JETTY pass-through options.
173## P2P section:
174
175# JETTY.P2P.DoSFilter = on
176# JETTY.P2P.DoSFilter.maxRequestsPerSec = 30
177# JETTY.P2P.DoSFilter.delayMs = 500
178# JETTY.P2P.DoSFilter.maxRequestMs = 300000
179# JETTY.P2P.DoSFilter.throttleMs = 30000
180# JETTY.P2P.DoSFilter.maxIdleTrackerMs = 30000
181# JETTY.P2P.DoSFilter.maxWaitMs = 50
182# JETTY.P2P.DoSFilter.throttledRequests = 5
183# JETTY.P2P.DoSFilter.insertHeaders = true
184# JETTY.P2P.DoSFilter.trackSessions = false
185# JETTY.P2P.DoSFilter.remotePort = false
186# JETTY.P2P.DoSFilter.ipWhitelist = 127.0.0.1,localhost
187# JETTY.P2P.DoSFilter.managedAttr = true
188
189## Jetty-passthrough parameters for P2P responses GZIP compression.
190
191# JETTY.P2P.GZIPFilter = on
192# JETTY.P2P.GZIPFilter.minGzipSize = 1024
193
194## Size of the download cache for blocks
195
196# node.blockCacheMB = 40
197
198## Add this to check the deadline of every block since Genesis, otherwise only past the checkpoint.
199
200# node.checkPointHeight = -1
201
202## Number of past blocks for AT processor to load into memory/cache
203## Put -1, if you want to disable the cache, which may slow down AT/smart contract processing significantly
204## Do not put too high values as this may cause significant memory occupation and cause even negative impact on processing times.
205# node.atProcessorCacheBlockCount = 1000
206
207
208#### API SERVER ####
209
210## Accept http/json API requests.
211
212# API.Server = on
213
214## JETTY pass-through options.
215## API section:
216
217# JETTY.API.DoSFilter = on
218# JETTY.API.DoSFilter.maxRequestsPerSec = 30
219# JETTY.API.DoSFilter.delayMs = 500
220# JETTY.API.DoSFilter.maxRequestMs = 30000
221# JETTY.API.DoSFilter.throttleMs = 30000
222# JETTY.API.DoSFilter.maxIdleTrackerMs = 30000
223# JETTY.API.DoSFilter.maxWaitMs = 50
224# JETTY.API.DoSFilter.throttledRequests = 5
225# JETTY.API.DoSFilter.insertHeaders = true
226# JETTY.API.DoSFilter.trackSessions = false
227# JETTY.API.DoSFilter.remotePort = false
228# JETTY.API.DoSFilter.ipWhitelist = 127.0.0.1,localhost
229# JETTY.API.DoSFilter.managedAttr = true
230
231## Jetty-passthrough parameters for API responses GZIP compression.
232
233# JETTY.API.GZIPFilter = on
234# JETTY.API.GZIPFilter.minGzipSize = 1024
235
236## Hosts or subnets from which to allow http/json API requests, if enabled.
237## List delimited by ';', IPv4/IPv6 possible, default: localhost
238
239# API.allowed = 127.0.0.1;localhost;[0:0:0:0:0:0:0:1];
240
241## Key list to access the admin API requests, uncomment and replace with your own keys
242## delimited by ';' if more than one key should be available
243
244# API.adminKeyList = e673529588638d2129af1e0528a1642cf2e0c180
245
246## Does the API accept additional/redundant parameters in an API call?
247## default is no (Wallet accepts only params specified for given call)
248## enable this if you have a sloppy client interacting, but please be aware that this
249## can be a security risk.
250
251# API.AcceptSurplusParams = no
252
253## Host interface on which to listen for http/json API request, default localhost only.
254## Set to 0.0.0.0 to allow the API server to accept requests from all network interfaces.
255
256# API.Listen = 127.0.0.1
257
258## List of CORS allowed origins.
259
260# API.AllowedOrigins=*
261
262## Port for http/json API requests.
263
264# API.Port = 8125
265
266## Websocket JSON Event Emission
267# available under ws://localhost:8126/events (or configured port)
268
269# API.WebSocketEnable = true
270
271## Port for websocket/json API events
272
273# API.WebSocketPort = 8126
274
275## The heartbeat interval in seconds that indicates a working connection
276# API.WebSocketHeartbeatInterval = 30
277
278## Idle timeout for http/json API request connections, milliseconds.
279
280# API.ServerIdleTimeout = 60000
281
282## Directory with html and javascript files for the new client UI, and admin tools utilizing
283## the http/json API.
284# API.UI_Dir = html/ui
285
286## Set the documentation mode. Use one of [ modern, legacy, off ] to enable or even disable the API Doc UI
287# API.DocMode = modern
288
289## Enable SSL for the API server (also need to set API.SSL_keyStorePath and API.SSL_keyStorePassword).
290
291# API.SSL = off
292
293## Enforce requests that require POST to only be accepted when submitted as POST.
294
295# API.ServerEnforcePOST = yes
296
297## Your keystore file and password, required if uiSSL or apiSSL are enabled.
298# API.SSL_keyStorePath = keystore
299# API.SSL_keyStorePassword = password
300
301## If you use https://certbot.eff.org/ to issue your certificate, provide below the path for your keys.
302## BRS will automatically create the keystore file using the password above and will reload it weekly.
303## Make sure you configure certbot to renew your certificate automatically so you don't need to worry about it.
304# API.SSL_letsencryptPath = /etc/letsencrypt/live/yourdomain.com
305
306#### DATABASE ####
307
308
309
310## Enable trimming of derived objects tables.
311
312# DB.trimDerivedTables = on
313
314## If trimming enabled, maintain enough previous height records to allow rollback of at least
315## that many blocks. Must be at least 1440 to allow normal fork resolution. After increasing
316## this value, a full re-scan needs to be done in order for previously trimmed records to be
317## re-created and preserved.
318
319# DB.maxRollback = 1440
320
321## Database default lock timeout in seconds.
322
323# DB.LockTimeout = 60
324
325## Maximum number of rows to be inserted in a single SQL statement.
326## Defaults to 10000, should be ok in most situations.
327## May be fine tuned according to your DBMS or to your machine performances.
328## Warning: a high value (> 15000 rows) is known to generate queries too big for an SQLite backend
329
330# DB.InsertBatchMaxSize = 10000
331
332### GPU Acceleration
333
334## enable GPU acceleration
335
336# GPU.Acceleration = off
337# GPU.AutoDetect = on
338
339## If GPU auto-detection is off (GPU.AutoDetect = off), you must specify manually which one to use
340
341# GPU.PlatformIdx = 0
342# GPU.DeviceIdx = 0
343
344## GPU memory usage in percent and how many hashes to process in one batch
345
346# GPU.MemPercent = 50
347# GPU.HashesPerBatch = 1000
348
349## number of unverified transactions in cache before GPU verification starts.
350
351# GPU.UnverifiedQueue = 1000
352
353## Uncomment this to limit the number of cpu cores the wallet sees. Default is half available.
354
355# CPU.NumCores = 4
356
357
358#### MINING ####
359
360## List of semicolon-separated passphrases to use when solo mining. When mining solo, if you enter your passphrase here,
361## you can set your miner to pool mining mode and avoid sending your passphrase over the wire constantly.
362## Do not use on public facing nodes or nodes that are accessible (filesystem or API server) by others, as it could
363## cause your passphrase to become compromised or allow others to mine on your behalf without your knowledge
364
365# SoloMiningPassphrases=passphrase1;passphrase2;passphrase3;
366
367## List of semicolon-separated passphrases to use when solo mining but with a reward recipient set.
368## Your miner account is the one you provide only the id, while the account which you set
369## your reward recipient is the one you provide the passphrase here.
370
371# RewardRecipientPassphrases=id1:passphrase1;id2:passphrase2;id3:passphrase3;
372
373## Allow anyone to use the "submitNonce" API call. This call can be abused to force your node to perform lots
374## of work in order to effectively mine for others. Enabling this option will only allow accounts whose passphrases
375## are in SoloMiningPassphrases to mine through this node.
376
377# AllowOtherSoloMiners=false
378
379
380#### DEVELOPMENT ####
381
382## (proceed with extreme caution beyond this point)
383
384## Run with a different network
385
386# Testnet network
387# node.network = signum.net.TestnetNetwork
388
389# Mock mining (offline and accepting any nonce as valid)
390# node.network = signum.net.MockNetwork
391
392## Enter a version. Upon exit, print a list of peers having this version.
393
394# DEV.dumpPeersVersion =
395
396## Force re-build of derived objects tables at start.
397
398# DEV.forceScan = off
399
400
401### Debugging (part of Development - isn't it)
402
403## Used for debugging peer to peer communications.
404
405# brs.communicationLoggingMask = 0
406
407## Track balances of the following accounts and related events for debugging purposes.
408
409# brs.debugTraceAccounts=
410
411## File name for logging tracked account balances.
412
413# brs.debugTraceLog = LOG_AccountBalances_trace.csv
414
415## Separator character for trace log. (default '\t' - TAB)
416
417# brs.debugTraceSeparator =
418
419## Quote character for trace log. (default " - double quote)
420
421# brs.debugTraceQuote =
422
423## Log changes to unconfirmed balances.
424
425# brs.debugLogUnconfirmed = false
426
427## Timeout in Seconds to wait for a graceful shutdown
428
429# node.shutdownTimeout = 180
430
431## Enable the indirect incoming tracker service. This allows you to see transactions where you are paid
432## but are not the direct recipient eg. Multi-Outs.
433
434# node.indirectIncomingService.enable = true
435
436## Auto Pop Off means that the node will, when failing to push a block received whilst syncing (from another
437## peer), pop off n-1 blocks, where n is the number of failures to push a block at this height.
438## This, combined with blacklisting, should significantly lower the chance of your node becoming stuck,
439## whilst syncing or when operating normally.
440
441# node.autoPopOff.enable = true
442


Updated 13 Apr 2025
Did this page help you?