config.json documentation¶
XmssThreadMode¶
How much CPU to dedicate to XMSS operations.
Type¶
Enums.ThreadMode (How much of the available processor’s cores should we use? )
Possible Values¶
- Single (Use only 1 core )
- Quarter (Use 25% of the available processor’s cores )
- Half (Use 50% or the available processor’s cores )
- ThreeQuarter (Use 75% of the available processor’s cores )
- Full (Use all available processor cores )
Default value¶
‘XmssThreadMode’: ‘Half’
THSMemoryType¶
Configures the type of memory to be used when performing a Time Hard Signature (THS).
Type¶
Enums.THSMemoryTypes (Enum class Describing how memory used by Time Hard Signature is handled. )
Possible Values¶
- RAM (Use RAM memory )
- HDD (Use hard disk for memory. )
- HDD_DB (Write data to database or if not possible write to hard disk. )
Default value¶
‘THSMemoryType’: ‘RAM’
THSThreadCount¶
Configures how many threads to use when performing the Time Hard Signature (THS). Remember you will need RAM to match the thread count.
Type¶
int
Default value¶
‘THSThreadCount’: 1
IPProtocol¶
Configures which Internet Protocol to use for networking.
Type¶
IPMode
Default value¶
‘IPProtocol’: Both
ForceIpv4Socket¶
If connecting to server as ipv4, we can use an ipv6 socket that can do ipv4, or
Type¶
bool
Default value¶
‘ForceIpv4Socket’: false
EnableDoubleSocketConnections¶
if true, two socket connections will be attempted
Type¶
bool
Default value¶
‘EnableDoubleSocketConnections’: true
SocketType¶
Configures what type of TCP socket to use.
Type¶
SocketTypes (How are you going to use the socket to send and receive data? )
Possible Values¶
- Duplex (Full Duplex socket connection. Data can be both transmitted and received through the socket. )
- Stream (Connection-oriented sockets, which use Transmission Control Protocol (TCP), A stream socket provides a sequenced and unique flow of error-free data without record boundaries, with well-defined mechanisms for creating and destroying connections and reporting errors. A stream socket transmits data reliably, in order, and with out-of-band capabilities )
Default value¶
‘SocketType’: ‘Duplex’
UseArrayPools¶
Configures weather to use Array Pools.
Type¶
bool
Default value¶
‘UseArrayPools’: true
MobileMode¶
Configures weather special behaviors for mobiles is enabled.
Type¶
bool
Default value¶
‘MobileMode’: false
SynclessMode¶
Configures weather special behaviors for syncless is enabled.
Type¶
bool
Default value¶
‘SynclessMode’: false
ValidatorPort¶
Configures the port on which the validator will listen on.
Type¶
int
Default value¶
‘ValidatorPort’: 32888
ValidatorHttpPort¶
Configures the backup (http) port on which the validator will listen on.
Type¶
int
Default value¶
‘ValidatorHttpPort’: 80
RpcPort¶
Configures the port used to communicate with the node via RPC calls (used by CLI and Wallet)
Type¶
int
Default value¶
‘RpcPort’: 12033
EnableAppointmentValidatorBackupProtocol¶
If true, the HTTP backup protocol will be started and used (using port defined by
Type¶
bool
Default value¶
‘EnableAppointmentValidatorBackupProtocol’: true
EnableAppointmentValidatorIPMarshall¶
Should the IPMarshall be enabled during appointments. Some may wish to disable it due to proxies
Type¶
bool
Default value¶
‘EnableAppointmentValidatorIPMarshall’: true
SlowValidatorPort¶
Sometimes with certain setups and port triggering, connections can be too fast and trigger fails. Setting this options enables a heavier socket mode that may help traverse the router
Type¶
bool
UseUPnP¶
Defines whether to enable automatic port mapping (forwarding) using the Universal Plug and Play protocol (UPnP)
Type¶
bool
Default value¶
‘UseUPnP’: true
UsePmP¶
Defines whether to enable automatic port mapping (forwarding) using the Port mapping Protocol (PmP, used by most Apple routers)
Type¶
bool
Default value¶
‘UsePmP’: false
ReplaceConflictingPortMappings¶
When using UPnP or PmP, we check for existing port mappings. If we find a mapping that routes traffic from one of required ports toward a local ip other than ours, we try to delete the conflicting mapping and enforce ours.
Type¶
bool
Default value¶
‘ReplaceConflictingPortMappings’: true
Nodes¶
The list of nodes we try to connect to at startup (without any need for discovery). These nodes
Type¶
List [FullNode]
Default value¶
‘Nodes’: []
LocalNodes¶
List of nodes deemed “local” to us. Connections to local nodes will be maintained aggressively, and won’t count in totals, meant to be used with each-others under a LAN
Type¶
List [FullNode]
Default value¶
‘LocalNodes’: []
LocalNodesDiscoveryPorts¶
The list of port to try while discovering local nodes. Use an empty list to deactivate local nodes discovery.
Type¶
List< int >
Default value¶
‘LocalNodesDiscoveryPorts’: []
LocalNodesDiscoveryMode¶
The list of port to try while discovering local nodes. Use an empty list to deactivate local nodes discovery.
Type¶
LocalNodesDiscoveryModes (How are you going to use the socket to send and receive data? )
Possible Values¶
- Auto (Automatically discover our mode (need to connect with peers) )
- Slave (Force mode to slave, only local peers will be accepted )
- Master (Force mode to master, local and remote peers will be accepted )
Default value¶
‘LocalNodesDiscoveryMode’: ‘Auto’
LocalNodesDiscoveryTimeout¶
To try to discover nodes on your local network, we try to open a socket at each ports listed in LocalNodesDiscoveryPorts. This property controls how long (in seconds) we wait for an answer before giving up.
Type¶
double
Default value¶
‘LocalNodesDiscoveryTimeout’: 0.1
Whitelist¶
List of nodes we IPMarshall and IPCrawler will treat differently. Whitelisting can be configured according to
Type¶
List [WhitelistedNode]
Default value¶
‘Whitelist’: []
Blacklist¶
List of nodes we IPMarshall will blacklist on startup, permanently.
Type¶
List [Node]
Default value¶
‘Blacklist’: []
EnabledLoggers¶
Gets of sets the logger types to be enabled in the application, see
Type¶
List< NLog.LoggerTypes >
Default value¶
‘EnabledLoggers’: newList<NLog.LoggerTypes>{NLog.LoggerTypes.Standard}
SerializationType¶
Configures what type of serialization to use.
Type¶
SerializationTypes (Describes how Serialization is to be performed. )
Possible Values¶
- Main (Perform serialization of the full blockchain files and the database. )
- Secondary (Only observe the files and databases that are updated by master. )
Default value¶
‘SerializationType’: ‘Main’
EnableHubs¶
Should we contact the hubs if we need to get more peers?
Type¶
bool
Default value¶
‘EnableHubs’: true
HubContactMethod¶
Configure how we should contact hubs
Type¶
ContactMethods (Describes how the blockchain nodes in the peer-to-peer network are going to communicate. )
Possible Values¶
- Web (Use Web Registration(WebReg). Initially created to accommodate the more limited mobile devices, it has been expanded to the entire network as an option to transaction dispatch. WebReg consists in a series of HTTPS web services that are available to post transactions directly to the pool, bypassing the gossip protocol entirely. )
- Gossip (Use a custom Gossip protocol as the backbone of the p2p network to propagate message between nodes. It ensures that messages are propagated to all participating nodes in a viral manner. The protocol is built in such a way that it will batch messages together for optimization and provide an opportunity for a node to determine which messages it wants to receive, and which ones it wants to ignore. By maintaining a message registry, a node is in measure to accept or reject messages efficiently which results in immediate echo attenuation. )
- WebOrGossip (Use first Web registration first and the if possible Gossip. )
Default value¶
‘HubContactMethod’: ‘WebOrGossip’
ChainScopedLogging¶
Configures the way that scoped logging is done for the blockchains.
Type¶
ChainScopedLoggingTypes (Describes how the Blockchain logging will be scoped. )
Possible Values¶
- Never (Never perform scoped logging. )
- WhenMany (Only perform scoped logging when more than one chains are available …TODO )
- Always (Always perform scoped logging. )
Default value¶
‘ChainScopedLogging’: ‘WhenMany’
HubsGossipDNS¶
Hubs dns (gossip mode)
Type¶
string
Default value¶
‘HubsGossipDNS’: “hubs.neuralium.com”
PortTestDns¶
Port testing tool dns
Type¶
string
Default value¶
‘PortTestDns’: “port-test.neuralium.com”
HubsWebAddress¶
Hubs dns (webapi mode)
Type¶
string
Default value¶
‘HubsWebAddress’: “https://web-hubs.neuralium.com”
PortTestIpOverride¶
If set, it will use this IP instead of the one associated with
Type¶
string
Default value¶
‘PortTestIpOverride’: “”
MaximumIpCacheCount¶
The maximum amount of IPs to keep in our cache
Type¶
int
Default value¶
‘MaximumIpCacheCount’: 1000
MaxPeerCount¶
IPCrawler’s maximum number of simultaneous connections to fully-connectable peers
Type¶
int
Default value¶
‘MaxPeerCount’: 10
MaxNonConnectablePeerCount¶
IPCrawler’s maximum number of simultaneous connections to non-connectable peers
Type¶
int
Default value¶
‘MaxNonConnectablePeerCount’: 3
AveragePeerCount¶
IPCrawler’s target number of simultaneous connections to fully-connectable peers
Type¶
int
Default value¶
‘AveragePeerCount’: 5
MaxMobilePeerCount¶
IPCrawler’s maximum number of simultaneous connections to mobile peers
Type¶
int
Default value¶
‘MaxMobilePeerCount’: 30
MaxConnectionRequestPerCrawl¶
IPCrawler’s maximum number of new connection request per crawling iteration
Type¶
int
Default value¶
‘MaxConnectionRequestPerCrawl’: 20
HubIPsRequestPeriod¶
IPCrawler will contact the hups for new ips every
Type¶
double
Default value¶
‘HubIPsRequestPeriod’: 10*60
PeerIPsRequestPeriod¶
IPCrawler will ask its peers for their list of ips every
Type¶
double
Default value¶
‘PeerIPsRequestPeriod’: 10*60
PeerReconnectionPeriod¶
IPCrawler wait at least
Type¶
double
Default value¶
‘PeerReconnectionPeriod’: 60
IPCrawlerCrawlPeriod¶
Wait time between ip crawling calls (FIXME too functionaly similar to
Type¶
double
Default value¶
‘IPCrawlerCrawlPeriod’: 3.0
IPCrawlerProcessLoopPeriod¶
Wait time to loop the process in seconds (FIXME too functionaly similar to
Type¶
int
Default value¶
‘IPCrawlerProcessLoopPeriod’: 10
MaxPeerLatency¶
Maximum round trip latency tolerated with a connected peer (in seconds).
Type¶
double
Default value¶
‘MaxPeerLatency’: 2.0
WalletTransactionDeletionMode¶
Gets or sets the mode of how to delete the files when doing wallet transctions.
Type¶
WalletTransactionDeletionModes (Describes how to handle wallet transaction deletion. )
Possible Values¶
- Safe (Perform safe wallet transaction deletion. This mode emphasis on serious memory clearing. It is slower. )
- Fast (Perform fast transaction deletion. In this mode regular deletes are performed, therefore faster. )
Default value¶
‘WalletTransactionDeletionMode’: ‘Fast’
ProxySettings¶
Allows to configure proxies. TODO: improve me
Type¶
ProxySettings
Default value¶
‘ProxySettings’: null
TransactionPoolHandlingMode¶
Configures the way to handle the transaction pool. TODO: improve me
Type¶
TransactionPoolHandling (How we handle the transaction pool. Metadata is only the transaction id connection. full, we also save the full envelope. )
Possible Values¶
- Disabled
- MiningMetadata
- MiningFull
- AlwaysMetadata
- AlwaysFull
Default value¶
‘TransactionPoolHandlingMode’: ‘MiningMetadata’
UndocumentedDebugConfigurations¶
Various configurations only useful for debugging. We dont document them as regular users should have no use for them.
Type¶
UndocumentedDebugConfigurations
Default value¶
‘UndocumentedDebugConfigurations’: ‘UndocumentedDebugConfigurations’
UseStunServer¶
A STUN server (Session Traversal Utilities for NAT) helps to discover your actual public IP. (From
Type¶
bool
Default value¶
‘UseStunServer’: false
SyncDelay¶
The amount of time in seconds before we attempt to sync blockchain again
Type¶
int
Default value¶
‘SyncDelay’: 60
WalletSyncDelay¶
The amount of time in seconds before we attempt to sync the wallet again
Type¶
int
Default value¶
‘WalletSyncDelay’: 60
DeleteBlocksAfterDays¶
Do we delete blocks saved after X many days? its not very nice, so by default, we store them all. //TODO unused
Type¶
int?
Default value¶
‘DeleteBlocksAfterDays’: null
RpcMode¶
Configure which RPC mode to enable.
Type¶
RpcModes (Describes the method by which Remote Procedure calls (RPC) are made. )
Possible Values¶
- None (RPC is not used )
- Signal (Using SignalIR to resolve RPC calls. )
- Rest (Using REST API to resolve RPC calls. )
- Both (Using both SignalIR and Rest to resolve RPC calls. )
Default value¶
‘RpcMode’: ‘Signal’
RpcTransport¶
Configures the type of remote Procedure call transport.
Type¶
RpcTransports (Describes the way Remote Procedure calls(RPC) transport is done. )
Possible Values¶
- Unsecured (No extra security added. )
- Secured (Using X509Certificate2 rpc certificate and http redirection. )
Default value¶
‘RpcTransport’: ‘Unsecured’
RpcBindMode¶
Configures the RPC bidning mode. Do we allow the Rpc to listen only to localhost, or any address
Type¶
RpcBindModes (Configures the way one can communicate with the node from CLI or wallet )
Possible Values¶
- Localhost (Only allows to bind locally )
- Any (Allows to bind from another computer (make sure your rpc port is enabled by your firewall) )
Default value¶
‘RpcBindMode’: ‘Localhost’
TlsCertificate¶
The TLS certificate to use. can be a path too, otherwise app root. if null, a dynamic certificate will be generated.
Type¶
string
Default value¶
‘TlsCertificate’: “neuralium.com.rpc.crt”
MemoryLimitCheckMode¶
Should we use memory limits
Type¶
MemoryCheckModes (Configure Out-Of-Memory checking mode )
Possible Values¶
- Disabled (No memory checks TODO )
- Virtual (Virtual memory checks TODO appears unused )
- CGroup (CGroup memory checks TODO )
Default value¶
‘MemoryLimitCheckMode’: ‘Disabled’
TotalUsableMemory¶
if 0, we use virtual memory. If set, we use this limit in BYTES
Type¶
long
Default value¶
‘TotalUsableMemory’: 0
MemoryLimitWarning¶
Threshold to tart warning that we are using a lot of memory (value between 0.0 and 1.0, where 1.0 means 100%)
Type¶
double
Default value¶
‘MemoryLimitWarning’: 0.7
MemoryLimit¶
Threshold to stop the app, if this limit is reached and limits are enabled (value between
Type¶
double
Default value¶
‘MemoryLimit’: 0.9