Skip to content

IEP-Default Properties Configuration File

Peer Networking

xin.shareMyAddress=true/false 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.

xin.peerServerPort=7874 Port for incoming peer to peer networking requests, if enabled.

xin.enablePeerUPnP=true/false Enable UPnP for the peer port.

xin.upnpGatewayTimeout=7000 UPnP gateway http read timeout, milliseconds. Set to -1 to disable. Default 7000 if not set.

xin.upnpDiscoverTimeout=3000 UPnP gateway socket connection timeout, milliseconds. Set to -1 to disable. Default 3000 if not set.

xin.peerServerHost= Host interface on which to listen for peer networking requests, default all. Use to listen on all interfaces, including IPv6.

xin.myAddress=# 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 xin.peerServerPort (useful if you do port forwarding behind a router).

xin.myPlatform= My platform, to be announced to peers.

xin.myHallmark= My hallmark, if available. refer this link to generate hallmark.

xin.defaultPeers= Default initial peers. Only used if xin.usePeersDb=true. Do not modify. Add custom peers to xin.wellKnownPeers instead. Can more be entered here or how do you get on the list? No, we can not modify this list, add custom peers to nxt.wellKnownPeers instead , these are the Default initial peers. \ Only used if nxt.usePeersDb=true.

xin.wellKnownPeers= A list of well known peer addresses / host names, separated by ‘; ‘. These peers are always kept in connected state.

xin.knownBlacklistedPeers= Known bad peers to be blacklisted.

xin.defaultTestnetPeers= Default initial peers used for testnet only. Only used if xin.usePeersDb=true. Do not modify. Add custom testnet peers to xin.testnetPeers instead.

xin.testnetPeers= Well known testnet peers.

xin.maxNumberOfInboundConnections=250 Maximum number of inbound connections.

xin.maxNumberOfOutboundConnections=50 Maximum number of outbound connections.

xin.maxNumberOfConnectedPublicPeers=20 Maintain active connections with at least that many peers.

xin.maxNumberOfKnownPeers=2000 Stop adding new peers when number of known peers exceeds that many.

xin.minNumberOfKnownPeers=1000 Stop removing old peers when number of known peers drops below that many.

xin.connectTimeout=10000 Peer networking connect timeout for outgoing connections.

xin.readTimeout=20000 Peer networking read timeout for outgoing connections.

xin.peerServerIdleTimeout=30000 Peer networking server idle timeout, milliseconds.

xin.useWebSockets=true Use WebSocket connection if supported by the remote peer.

xin.webSocketIdleTimeout=900000 WebSocket connection idle timeout (milliseconds).

xin.enableHallmarkProtection=true Use the peer hallmark to only connect with peers above the defined push/pull hallmark thresholds. Disabling hallmark protection also disables weighting of peers by hallmark weight, so connecting to any of your peers becomes equally likely.

xin.pushThreshold=0 Hallmark threshold to use when sending data to peers.

xin.pullThreshold=0 Hallmark threshold to use when requesting data from peers.

xin.blacklistingPeriod=600000 Blacklist peers for 600000 milliseconds (i.e. 10 minutes by default).

xin.sendToPeersLimit=10 Consider a new transaction or block sent after 10 peers have received it.

xin.enablePeerServerDoSFilter=true Enable the Jetty Denial of Service Filter for the peer networking server.

xin.enablePeerServerGZIPFilter=true Compress Http responses for the peer networking server.

xin.isTestnet=false Use testnet, leave set to false unless you are really testing. Never unlock your real accounts on testnet! Use separate accounts for testing only. When using testnet, all custom port settings will be ignored,and hardcoded ports of 6874 (peer networking), 6875 (UI) and 6876 (API) will be used.

xin.savePeers=true/false Save known peers in the database.

xin.usePeersDb=false/true Set to false to disable use of the peers database and the default initial peers. This will not delete saved peers.

xin.getMorePeers=true/false 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 wellKnownPeers.

xin.isOffline=false/true Set to true to run offline – do not connect to peers and do not listen for incoming peer connections. This is equivalent to setting xin.shareMyAddress=false, xin.wellKnownPeers=, xin.testnetPeers= and xin.usePeersDb=false, and if set to true overrides those properties.

xin.ignorePeerAnnouncedAddress=false Ignore peer announced addresses. Do not change unless you understand what it does.

xin.cjdnsOnly=false Only allow peer addresses starting with “fc”. This is for users of cjdns only,do not set if you don’t know what that is.

xin.hideErrorDetails=false Do not include exception details when returning error response to peers.

API Server

xin.enableAPIServer=true/false Accept http/json API requests.

xin.allowedBotHosts=; localhost; [0:0:0:0:0:0:0:1]; Hosts from which to allow http/json API requests, if enabled. Set to * to allow all. Can also specify networks in CIDR notation, e.g.

xin.apiServerPort=23457 Port for http/json API requests. another port can be used.

xin.apiServerSSLPort=7876 Port for https/json API request. If same as xin.apiServerPort, the xin.apiSSL setting determines whether SSL is used or not.

xin.enableAPIUPnP=false Enable UPnP for the API ports.

xin.apiServerHost= Host interface on which to listen for http/json API request, default localhost only. Set to to allow the API server to accept requests from all network interfaces, including IPv6.

xin.apiServerIdleTimeout=30000 Idle timeout for http/json API request connections, milliseconds.

xin.apiResourceBase=./html/www Directory with html and javascript files for the new client UI, and admin tools utilizing the http/json API.

xin.apiWelcomeFile=index.html Default page for the API server.

xin.javadocResourceBase=./html/doc# Java API documentation directory, optional.

xin.apiServerCORS=true Enable Cross Origin Filter for the API server.

xin.apiFrameOptionsSameOrigin=true# Add X-Frame-Options SAMEORIGIN header to every response as a protection against clickjacking.

xin.apiSSL=false Enable SSL for the API server (also need to set xin.keyStorePath and xin.keyStorePassword). Non-SSL connections will be disabled if xin.apiServerSSLPort is equal to xin.apiServerPort. Otherwise, both SSL and non-SSL connections will be accepted.

xin.apiServerEnforcePOST=true Enforce requests that require POST to only be accepted when submitted as POST.

xin.enableAPIServerGZIPFilter=false Compress Http responses for the API server.

xin.adminPassword= Password that should be provided when executing protected (administrative) API requests. Please choose a decent password here. Preferably, use a password generator. Password protection is disabled and password is not needed when the API server only listens on the localhost interface, i.e. when xin.apiServerHost=

xin.disableAdminPassword=false Set to true to disable the password protection for admin API requests even when API server is publicly accessible. Not recommended.

xin.maxAPIRecords=100 The maximum number of records possible to retrieve with a single request. This restriction is not enforced if the admin password is provided, or is not needed (disabled or listening on localhost only).

xin.apiEventTimeout=300 API event registration timeout (seconds). The timeout is reset each time an event wait request is received from the application. The minimum value is 15 seconds.

xin.apiMaxEventUsers=32 Maximum number of applications with active event registrations.

xin.maxUploadFileSize=0 Maximum file size accepted for upload, in bytes. Default and minimum value accepted is 43008 (42 kbytes).

xin.correctInvalidFees=false If an unsigned transaction is submitted with insufficient fee, set the fee to the minimum fee calculated for this transaction instead, as if feeTQT=0 has been specified. Default is false.

xin.disabledAPIs= APIs to disable, as a semicolon separated list. you can enter the name of the APIs as a semicolon separated list. These are some possible entries : getAccount getAccountId getBalance searchAccounts sendMoney


xin.enableAPIProxy=true Enables the API proxy. Requests are forwarded to a randomly chosen peer providing openAPI service. Outgoing transactions are signed locally – the secret phrase is never sent to the remote peer. Used by light clients or when the blockchain is not yet downloaded. For openAPI nodes, the API proxy remains disabled, ignoring this setting. For light clients, the API proxy is always enabled, ignoring this setting.

xin.isLightClient=false Operate as light client. Blockchain is not downloaded and processed, instead the API proxy is used (see xin.enableAPIProxy). Light clients are not advertised as providing openAPI service even if they do have their API publicly accessible.

xin.forceAPIProxyServerURL= If set, all requests will be forwarded to the specified openAPI peer

xin.apiProxyBlacklistingPeriod= The period remote API servers are blacklisted when not functioning (in milliseconds). The API proxy blacklisting mechanism is in addition to the peers blacklisting – if a peer is blacklisted, it won’t be used by the proxy, but it is possible that a peer is online and correctly functioning, and only its open API is blocked (e.g. by firewall)


xin.dbUrl Database connection JDBC url, see the H2 documentation for possible customizations. Append ;AUTO_SERVER=TRUE to enable automatic mixed mode access. The db folder is expected to be in the current working directory, will be created if missing.

xin.testDbUrl= Database connection JDBC url to use with the test network, if isTestnet=true.

xin.dbType=h2 xin.testDbType=h2

xin.dbDir= xin.testDbDir=


xin.dbUsername=sa xin.testDbUsername=sa

xin.dbPassword=sa xin.testDbPassword=sa

xin.dbLoginTimeout=70 Database connection timeout in seconds.

xin.dbDefaultLockTimeout=60 Database default lock timeout in seconds.

xin.dbMaxMemoryRows=1000000 Database max memory rows limit.

xin.maxDbConnections=30 Maximum simultaneous database connections.

xin.dbCacheKB=0 The memory allocated to database cache, in kB. If set to 0, the cache size varies from a minimum of 16MB for heap sizes 160MB or less, to a maximum of 256MB for heap sizes 640MB or higher.

xin.trimDerivedTables=true Enable trimming of derived objects tables. Disabling this will significantly worsen performance.

xin.maxRollback=800 If trimming is enabled, maintain enough previous height records to allow rollback of at least that many blocks. Cannot be set to less than 720. After increasing this value, a full re-scan also needs to be done in order for the previously trimmed records to be re-created and preserved.

xin.trimFrequency=1000 When trimming is enabled, it is run every xin.trimFrequency blocks.

xin.maxPrunableLifetime=1209600 Override the lifetime of prunable data to keep them longer, value in seconds. Set to -1 to disable pruning. Has no effect if set to less then the minimum required lifetime of two weeks (1209600 seconds) on mainnet, or 24 hours(86400 seconds) on testnet. Default is 90 days.

xin.includeExpiredPrunable=true/false Include expired prunable parts if requested as long as it is still available. In order to provide the PRUNABLE peer service, xin.maxPrunableLifetime must be -1 and xin.includeExpiredPrunable must be true. The PRUNABLE service means the peer will provide expired prunable data to other peers when requested.

xin.statementLogThreshold=10000 Threshold for logging database statements(milliseconds).

xin.transactionLogThreshold=15000 Threshold for logging database transactions (milliseconds).

xin.transactionLogInterval=15 Log the average transaction time after this many minutes.

xin.enablePublicKeyCache=true Public keys are by default cached, which consumes 10-15 MB of memory.

Account Ledger

xin.ledgerAccounts=* Address of accounts (in RS format) to track balance changes in the ledger table, separated by ‘;’. Set to * to track changes for all accounts. Specify no accounts to disable the account ledger.

xin.ledgerLogUnconfirmed=2 Specify 0 to not log unconfirmed changes, 1 to log unconfirmed changes or 2 to log only unconfirmed changes.

xin.ledgerTrimKeep=30000 # Specify the number of blocks to keep when trimming the account ledger table. # A value of zero will cause all blocks to be kept.


xin.allowedToForge= SPECIFIC ACCOUNT or * for all, what if I take a special account? The entry xin.allowedToForge= takes three different types of settings. If empty no account is permitted to forge on this node, the wildcard () allows ANY account to forge and specifying an account like XIN-XXX-XXX-XXXX or a semicolon separated list allows only those accounts to forge on this node. For instance, if you like to forge with your private account just enter your account here.

xin.maxNumberOfForgers=100\ 100, what does this number say? What does it do if I adjust more or less? Maximum number of account monitors allowed on this node. If you set it 100 so 100 different accounts are allowed to forge. In case 100 accounts already forging and any new account try to forge will be rejected. Set this value to 1 in combination with your personal account mentioned above to allow just your single account to forge. Both values needs to set. If you set allowToForge to your account but maxNumberOfForgers to 0 or empty the node will deny forging.

xin.maxNumberOfMonitors=0 Maximum number of account monitors allowed on this node.

xin.lockedAccounts= we can pass public key of an account which means the associated account will not take part in forging. It will work when xin.allowedToForge is missing or if you don’t know account number.


xin.maxNumberOfShufflers=30 30, what does this number say? What does it do if I adjust more or less? – Maximum number of shufflers allowed to run at the same time on this node.