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 (Use a double buffering hard disk for memory. )

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

IPProtocolServer

Configures which Internet Protocol to use for server networking.

Type

IPMode

Default value

‘IPProtocolServer’: Both

IPProtocolClient

Configures which Internet Protocol to use for client connections.

Type

IPMode

Default value

‘IPProtocolClient’: Both

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

SystemFilesPath

Type

string

Default value

‘SystemFilesPath’: “”

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

Port

Configures the port on which the server is running.

Type

int

Default value

‘Port’: 33888

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”

AnnouncementsWebAddress

Type

string

Default value

‘AnnouncementsWebAddress’: “https://announcements.neuralium.com”

EnableAnnouncements

if enabled, public announcements will be fetched and displayed.

Type

bool

Default value

‘EnableAnnouncements’: true

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’: 5000

MaxPeerCount

IPCrawler’s maximum number of simultaneous connections to fully-connectable peers

Type

int

Default value

‘MaxPeerCount’: 100

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

MaxPendingConnectionRequests

IPCrawler’s maximum number of pending connection requests

Type

int

Default value

‘MaxPendingConnectionRequests’: 100

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

IPCrawlerStartupDelay

IPCrawler will wait

Type

double

Default value

‘IPCrawlerStartupDelay’: 5.0

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

double

Default value

‘IPCrawlerProcessLoopPeriod’: 1.0

IPCrawlerPrintNConnections

Prints the current number of connections to the Default logger every X second

Type

double

Default value

‘IPCrawlerPrintNConnections’: 0.0

MaxPeerLatency

Maximum round trip latency tolerated with a connected peer (in seconds).

Type

double

Default value

‘MaxPeerLatency’: 2.0

OnlyAcceptLocalAndWhitelistPeers

Restrict crawling to local peers, only accept connections from whitelisted peers.

Type

bool

Default value

‘OnlyAcceptLocalAndWhitelistPeers’: false

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’

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’

RpcAuthentication

should security be set for the RpcProtocol

Type

RpcSecurityModes

Possible Values

  • None (no security required )
  • Basic (Request a user and password )

Default value

‘RpcAuthentication’: ‘None’

RpcUserPasswords

List of users and passwords for RPC authentication

Type

BasicAuthenticationEntry

Default value

‘RpcUserPasswords’: ‘BasicAuthenticationEntry’

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) )
  • Custom

Default value

‘RpcBindMode’: ‘Localhost’

RpcBindingAddress

if RpcBindMode is Custom, set any address pattern to listen to here

Type

string

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”

TlsCertificateStrength

the strength og the TLS certificate if it is auto generated

Type

int

Default value

‘TlsCertificateStrength’: 2048

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

TargetAppointmentRequesterCount

How many requesters do we expect to get in any appointment validation

Type

int

Default value

‘TargetAppointmentRequesterCount’: 30

DisableTimeServer

Type

bool

Default value

‘DisableTimeServer’: false

DisableP2P

Type

bool

Default value

‘DisableP2P’: false