Getting Started
Configuration

Configuration

You will have to open your operating system's command-line interface (CLI) in the folder where the executable is located.

Daemon

Run ./xelis_daemon --help to see all available options.

Network

Network selected by default is mainnet.
Available values are mainnet, testnet and dev.

Example: ./xelis_daemon --network testnet.

Boost Sync Mode

Boost sync mode syncs the full blockchain faster by requesting blocks in parallel during synchronization. It is not enabled by default as it requires more system resources.

To enable it, use: ./xelis_daemon --allow-boost-sync.

Fast Sync Mode

Fast sync mode downloads the last chain state from any peer.
It allows having a light node with very light disk usage as it will use only the latest available data.

To enable it, use: ./xelis_daemon --allow-fast-sync.

Auto Pruning

Enable the auto prune mode and prune the chain at each new block by keeping at least N blocks before the top block. This is useful to keep a light node and to reduce the disk usage.

To keep only 1000 latest blocks: ./xelis_daemon --auto-prune-keep-n-blocks 1000.

Cache Size

The cache size determines how many elements to keep in memory. Higher cache size will require more memory but can be useful for chain operations.

Default is set to 1024 elements. If you set it to 0, it will disable the cache and will not keep any.

To set the cache size to 1000: ./xelis_daemon --cache-size 1000.

Disable P2P Server

Disable the P2P server, this will prevent the node from connecting to other nodes. With P2P disabled, the node will not be able to sync the chain or broadcast mined blocks.

To disable the P2P Server, use: ./xelis_daemon --disable-p2p-server.

Disable RPC Server

Disable RPC Server, this will also disable the GetWork Server as it is loaded on RPC server

To disable the RPC Server, use: ./xelis_daemon --disable-rpc-server.

P2p Bind Address

Set the bind address to use for the P2P server. By default, the bind address is set to 0.0.0.0:2125.

To set the bind address to 0.0.0.0:2126, use: ./xelis_daemon --p2p-bind-address 0.0.0.0:2126.

Max Peers

Set the maximum number of P2P peers to connect to.
By default, the maximum number of peers is set to 32.

To set the maximum number of peers to 64, use: ./xelis_daemon --max-peers 64.

Exclusive Nodes

Set exclusive nodes to connect to. This will only connect to the given nodes and will not connect to any other nodes.
Each Socket Address must be separated by a comma.

Example to connect to two nodes: ./xelis_daemon --exclusive-nodes 0.0.0.0:2125,0.0.0.0:2126.

Priority Nodes

Gives certain nodes a higher connection priority. Connections will be made with priority nodes first, and then connections will be made with regular nodes.
Connections to priority nodes will be also maintained in case of disconnection.
Each Socket Address must be separated by a comma.

Other nodes will still be connected to as long as the maximum number of peers is not reached.

Example to connect to two nodes: ./xelis_daemon --priority-nodes 0.0.0.0:2125,0.0.0.0:2126

Tag

Set the tag to use for the node. This is useful to identify the node in the network. Maximum length is 16 characters.

To set the tag to mytag: ./xelis_daemon --tag mytag.

Maximum Chain Response Size

Configure the maximum chain response size. This is useful for low end devices who want to reduce resources usage and also for high-end devices who want to (or help others to) sync faster.

By default, the maximum chain response size is set to 4096.
Minimum value is 512 and maximum value is 16384.

This is used to notify others nodes about the maximum size of the chain response that you accept to receive / send per request. It can speedup the synchronization process by allowing to send more data at once.

The lowest value available between two node will be used.

To set the maximum chain response size to 8192: ./xelis_daemon --max-chain-response-size 8192.

Disable IP Sharing

Ask peers to not share your IP to others and/or through API.
This is useful for people that don't want their IP to be revealed in RPC API and/or shared to others nodes as a potential new peer to connect to.

By default, your IP is allowed to be shared across the network to others nodes.
To enable it, use: ./xelis_daemon --disable-ip-sharing.

Please note that it may prevent to have new incoming peers as your IP will not be shared to others.

Disable P2P Outgoing Connections

Disable P2P outgoing connections from peers. This is useful for seed nodes under heavy load or for nodes that don't want to connect to others.

To disable, use: ./xelis_daemon --disable-p2p-outgoing-connections.

P2P Concurrency Task Count Limit

Limit of concurrent tasks accepting new incoming connections. Default to 4.

To set limit, use: ./xelis_daemon --p2p-concurrency-task-count-limit 4.

Disable File Logging

By default, the daemon logs to a file. To disable logging, use: ./xelis_daemon --disable-file-logging.

Disable Date-Based File Log Naming

Disable date-based file naming for logs. If disabled, the log file will be named xelis-daemon.log instead of YYYY-MM-DD.xelis-daemon.log

To disable, use: ./xelis_daemon --disable-file-log-date-based.

Disable Log Colors

Disable the usage of colors in the log.

To disable, use: ./xelis_daemon --disable-log-color.

Disable Interactive Mode

Disable terminal interactive mode. You will not be able to write CLI commands in it or have an updated prompt.

To disable, use: ./xelis_daemon --disable-interactive-mode.

Log Filename

Set a custom log file name. By default, the filename is set to xelis-daemon.log.
Log file are stored in the logs folder and are named with the date of the day.

To set the filename to mylog.log, use: ./xelis_daemon --filename-log mylog.log.

Logs Dir Path

Set a custom directory path to store the logs files.
By default it will be logs/ of the current directory.

To set the path to mylogs/, use: ./xelis_daemon --logs-path mylogs/.

NOTE: The directory will be created using the provided path if it does not exist. The path must end with a /.

Logs Modules

Module configuration for logs.

To set, use: ./xelis_daemon --logs-modules module_name=off.

Log Level

Set the log level to use. Available values are trace, debug, info, warn, error.

By default, the log level is set to info.

To set the log level to debug: ./xelis_daemon --log-level debug.

File Log Level

Set the file log level to use. Available values are trace, debug, info, warn, error.

This is useful to have a different log level for the file log than the console log.

By default, the file log level is set to value passed to --log-level (which is also info by default).

To set the file log level to debug: ./xelis_daemon --file-log-level debug.

Disable GetWork Server

Disable the GetWork server, this will disable the HTTP server running above the RPC Server and will prevent miners from connecting and receive new jobs.

To disable the GetWork server, use: ./xelis_daemon --disable-getwork-server.

RPC Bind Address

Set the bind address to use for the RPC server. By default, the bind address is set to 0.0.0.0:8080.

To set the bind address to 0.0.0.0:8081, use: ./xelis_daemon --rpc-bind-address 0.0.0.0:8081.

Dir Path

Set the directory path to use for the database and the blockchain. By default, the directory path is set to the name of the network at the same location of the executable.

To set the directory path to mydir, use: ./xelis_daemon --dir-path mydir.

Simulator

Enable the simulator mode. This will disable the P2P server and will simulate the blockchain based on its variant. This will generate new blocks when necessary and will not connect to any other nodes.

Available values are:

  • blockchain: to simulate the blockchain with a new block every 15 seconds and up to 15 random transactions.
  • blockdag: to simulate the blockdag with up to 3 new block every 15 seconds and up to 15 random transactions.
  • stress: to simulate a blockDAG under attacks with heavy blocks and a lot of transactions.

To enable the stress simulator mode, use: ./xelis_daemon --simulator stress.

Skip POW Verification

Skip PoW verification. Warning: This is dangerous and should not be used in production.

To skip verification, use: ./xelis_daemon --skip-pow-verification.

Version

Print the daemon version.

To print the version, use: ./xelis_daemon --version.

Internal DB cache size

Set the internal DB cache size to use for the daemon. By default, the cache size is set to 16 MB.

This is useful to speed up the I/O database operations.

To set the cache size to 32 MB, you must provide the bytes count to use: ./xelis_daemon --internal-cache-size 33554432.

Internal DB mode

Set the internal DB mode to use for the daemon. By default, the mode is set to slow-space.

Availale values are:

  • slow-space: to use the slowest mode with the smallest space usage by rewriting (if needed) few times the data to defragment the database.
  • high-throughput: to use the fastest mode to have the best performance but may provide bigger space usage.

To set the mode to high-throughput, use: ./xelis_daemon --internal-db-mode high-throughput.

Skip block template TXs verification

Disable the (double) verification of the transactions while building a block template. This is useful to speed up the block template creation for miners node.

This will rely entirely on the transaction verification done by the mempool and will not verify the transactions again.

To skip verification, use: ./xelis_daemon --skip-block-template-txs-verification.

NOTE: In case of a TX not deleted correctly from the mempool, it may be included in a block template and will make your block rejected by the network.

Wallet

Run ./xelis_wallet --help to see all available options.

Daemon Address

Set the daemon address to use for the wallet. This is the address of the daemon to connect to.

By default, the daemon address is set to 127.0.0.1:8080 to connect to your local node.

To set the daemon address to http://127.0.0.1:8081, use: ./xelis_wallet --daemon-address http://127.0.0.1:8081.

Enable XSWD

Enable the XSWD mode. This will enable the wallet to use the XSWD protocol to communicate with applications securely.

By default, the XSWD mode is disabled.

To enable the XSWD mode, use: ./xelis_wallet --enable-xswd.

Wallet Path

Set the wallet path to use for the wallet.

To use the wallet file mywallet, use: ./xelis_wallet --wallet-path mywallet.

If not specified, wallet is created in wallets/ folder of the current directory with its name.

Password

Set the password to use for the wallet file.

To use the password mypassword, use: ./xelis_wallet --password mypassword.

Seed

Set the seed to use for the wallet file.

This is useful to recover a wallet from a seed.

To use the seed myseed myseed, use: ./xelis_wallet --seed "myseed myseed".

Offline Mode

Enable offline mode. This will disable the wallet to connect to the daemon and will not be able to send transactions.

By default, the wallet open in online mode and try to connect to the daemon.

To enable the offline mode, use: ./xelis_wallet --offline-mode.

RPC Bind Address

Set the bind address to use for the RPC server. By default, the bind address is set to 127.0.0.1:8080.

To set the bind address to 127.0.0.1:8081, use: ./xelis_wallet --rpc-bind-address 127.0.0.1:8081.

RPC Password

Set the password to use for the RPC server. By default, no password is set.

A password is required if a username is provided.

To set the password to mypassword, use: ./xelis_wallet --rpc-password mypassword.

RPC Username

Set the username to use for the RPC server.

A username is required if a password is provided.

To set the username to myusername, use: ./xelis_wallet --rpc-username myusername.

Disable File Logging

By default, the wallet logs to a file. To disable logging, use: ./xelis_wallet --disable-file-logging.

Disable Date-Based File Log Naming

Disable date-based file naming for logs. If disabled, the log file will be named xelis-daemon.log instead of YYYY-MM-DD.xelis-daemon.log

To disable, use: ./xelis_wallet --disable-file-log-date-based.

Disable Log Colors

Disable the usage of colors in the log.

To disable, use: ./xelis_wallet --disable-log-color.

Disable Interactive Mode

Disable terminal interactive mode. You will not be able to write CLI commands in it or have an updated prompt.

To disable, use: ./xelis_wallet --disable-interactive-mode.

Log Filename

Set a custom log file name. By default, the filename is set to xelis-daemon.log.
Log file are stored in the logs folder and are named with the date of the day.

To set the filename to mylog.log, use: ./xelis_wallet --filename-log mylog.log.

Logs Modules

Module configuration for logs.

To set, use: ./xelis_wallet --logs-modules module_name=off.

Logs Dir Path

Set a custom directory path to store the logs files.
By default it will be logs/ of the current directory.

To set the path to mylogs/, use: ./xelis_wallet --logs-path mylogs/.

NOTE: The directory will be created using the provided path if it does not exist. The path must end with a /.

Log Level

Set the log level to use. Available values are trace, debug, info, warn, error.

By default, the log level is set to info.

To set the log level to debug: ./xelis_wallet --log-level debug.

File Log Level

Set the file log level to use. Available values are trace, debug, info, warn, error.

This is useful to have a different log level for the file log than the console log.

By default, the file log level is set to value passed to --log-level (which is also info by default).

To set the file log level to debug: ./xelis_wallet --file-log-level debug.

Disable History Scan

Disable the history scan. This will prevent syncing old TXs/blocks. Only blocks / transactions caught by the network handler will be stored, not the old ones

To set, use: ./xelis_wallet --disable-history-scan.

Force Stable Balance

Force the wallet to use a stable balance only during transactions creation. This will prevent the wallet to use unstable balance and prevent any orphaned transaction due to DAG reorg. This is only working if the wallet is in online mode.

To set, use: ./xelis_wallet --force-stable-balance.

Precomputed Tables Path

Set the path to the precomputed tables to use for the wallet.

By default, it will be from current directory.

To set the path to mytables, use: ./xelis_wallet --precomputed-tables-path mytables.

Version

Print the version of the miner.

To print the version, use: ./xelis_wallet --version.

Miner

Run ./xelis_miner --help to see all available options.

Miner Address

Set the miner address. This address is used to and earn mining rewards.

This is a mandatory option.

Example: ./xelis_miner --miner-address <YOUR_ADDRESS>.

Daemon Address

Set the daemon address to which you want to connect. By default, the miner connects to the a local node at 127.0.0.1:8080.

To connect to another node (domain or ip:port format), use: ./xelis_miner --daemon-address testnet-node.xelis.io.

Benchmark

Enable the benchmark mode. This will run the miner without submitting any block and will print the hashrate of the miner.

To enable the benchmark mode, use: ./xelis_miner --benchmark.

In case you want to changes the number of iterations to use for the benchmark, use: ./xelis_miner --benchmark --iterations 100.

Numbers of Threads

Set the number of threads to use for the miner. By default, the numbers of threads is set to the number of logical cores of the CPU.

Minimum is 1 and maximum is 255.

Example to set the numbers of threads to 4: ./xelis_miner --num-threads 4.

Worker

Set the worker name to use for the miner. This is useful to identify the miner in the daemon.
Default is set to default.

Example to set the worker name to myworker: ./xelis_miner --worker myworker.

Disable File Logging

By default, the daemon is logging to a file. To disable it, use: ./xelis_miner --disable-file-logging.

Disable Date-Based File Log Naming

Disable date-based file naming for logs. If disabled, the log file will be named xelis-daemon.log instead of YYYY-MM-DD.xelis-daemon.log

To disable, use: ./xelis_miner --disable-file-log-date-based.

Disable Log Colors

Disable the usage of colors in the log.

To disable, use: ./xelis_miner --disable-log-color.

Disable Interactive Mode

Disable terminal interactive mode. You will not be able to write CLI commands in it or have an updated prompt.

To disable, use: ./xelis_miner --disable-interactive-mode.

Filename Log

Set a custom log file name. By default, the filename is set to xelis-miner.log.
Log file are stored in the logs folder and are named with the date of the day.

To set the filename to mylog.log, use: ./xelis_miner --filename-log mylog.log.

Logs Modules

Module configuration for logs.

To set, use: ./xelis_miner --logs-modules module_name=off.

Logs Dir Path

Set a custom directory path to store the logs files.
By default it will be logs/ of the current directory.

To set the directory path to mylogs/, use: ./xelis_miner --logs-path mylogs/.

NOTE: The directory will be created using the provided path if it does not exist. The path must end with a /.

Log Level

Set the log level to use. Available values are trace, debug, info, warn, error.

By default, the log level is set to info.

Example to set the log level to debug: ./xelis_miner --log-level debug.

File Log Level

Set the file log level to use. Available values are trace, debug, info, warn, error.

This is useful to have a different log level for the file log than the console log.

By default, the file log level is set to value passed to --log-level (which is also info by default).

To set the file log level to debug: ./xelis_miner --file-log-level debug.

Version

Print the version of the miner.

To print the version, use: ./xelis_miner --version.