Beam Node User Guide

General

Beam Node is an essential part of the Beam blockchain and is responsible for validating transactions and blocks. It runs on all platforms: Linux, Windows and Mac (for detalied list of supported and tested platforms please see user_supported_platforms)

Beam Node can be run in either Mining or Validating mode.

Mining mode

Beam Node supports External Miner via Statum Server API for mining Beam:

Beam Node provides built in support for Startum API allowing to connect multiple external mining clients to a single node. (see :ref: user_beam_stratum_server for more details). To start the node with stratum server use stratum_port and stratum_secrets_path parameters. Stratum clients can be run together with the Internal Miner

Mining keys management

In order for the mining node to be able to attribute mining rewards to your wallet, it needs a special secret mining key. The mining key is derived from the primary secret key by running export_miner_key command with –subkey=<node id> parameter in the Beam CLI Wallet (See user_cli_wallet_guide for more details). You can generate a multiple separate mining keys for different mining nodes.

Optionally, in order to allow each mining node to be able to see all rewards mined by all your mining nodes Beam provides an additional option called owner_key. Owner key is a secret view key, it can not be used to spend coins, just to identify your mining rewards regardless of which node was used to mine it. Owner key is derived from primary secret key as well using the same key_export command, but without additional parameters.

Both keys are protected using Wallet Password, which should also be provided

Validating mode

By default (without –miner_type flag) Beam Node is run in validating mode, meaning that mining is disabled. Validating nodes are still very important for the overall health and safety of the network since they:

  1. Help in propagating transactions and blocks through the network
  2. Relay SBBS messages to enable Wallet to Wallet communication.
  3. Serve as Dandelion Stem relays to improve P2P level security

If possible, always prefer running a local node either with or without mining!

Node Settings

Beam Node allows to provide the settings via command line or using a configuration file called beam-node.cfg and located in the same folder as Beam Node binary.

Command line parameters override configuration file settings

The configuration file is loaded automatically and sets all parameters that were not provided via command line. To reload configuration file after a change you should manually restart Beam Node

Parameter Description & Example
–port (or -p)

Port to start the server on

port=10000
–log_level

Log level [info|debug|verbose]

log_level=info
–file_log_level

File log level [info|debug|verbose]

file_log_level=info
–log_cleanup_days

Old logfiles cleanup period(days)

log_cleanup_days=5

There are some node options which can setup using the configuration file. You can also run this options in command line.

Parameter Description & Example
–storage

Path to node database file (defaults to node.db in the same folder)

storage=node.db
–miner_key Secret key to attribute mining rewards mined by the node to your wallet Created using CLI walelt export_miner_key command with –subkey=<miner id> parameter See user_cli_wallet_guide for more details
–owner_key Secret key allowing the node to monitor mining rewards mined by all mining nodes marked by this key. Created using CLI walelt export_owner_key command See user_cli_wallet_guide for more details
–pass Wallet password. It is required since both Miner Key and Owner Key are protected by walelt password
–stratum_port

Port on which stratum server will listen to incoming connections. 0 if stratum server is disabled.

stratum_port=0
–stratum_secrets_path

Path to folder containing stratum certificates

stratum_secrets_path=.
–peer

nodes to connect to

--peer=eu-nodes.mainnet.beam.mw:8100
Parameter Description & Example
-h (or –help) list all available options and commands
-v (or –version) print project versio
–git_commit_hash

print git commit hash value

git_commit_hash
–fast_sync

Fast sync on/off (override horizons)

fast_sync=on
–print_txo

Print TXO movements (create/spend) recognized by the owner key.

print_txo=1
–peers_persistent

Keep persistent connection to the specified peers, regardless to ratings

peers_persistent=1
–mining_threads

number of mining threads(there is no mining if 0). It works if FakePoW is enabled

--mining_threads=1
–pow_solve_time

pow solve time. It works if FakePoW is enabled

--pow_solve_time=15000
–verification_threads

number of threads for cryptographic verifications (0 = single thread, -1 = auto)

--verification_threads=-1
–history_dir

Path to folder where compressed (cut-through) history files are stored. Defaults to same folder.

history_dir=.
–temp_dir

Path to temp folder for compressed history files. Must be on the same volume as history_dir

temp_dir=.
–stratum_use_tls

Enable TLS on startum server

--stratum_use_tls=
–nonceprefix_digits

number of hex digits for nonce prefix for stratum client (0..6)

--nonceprefix_digits=
–generate_recovery Recovery file to generate immediately after start
–recovery_auto_path Path and file prefix for recovery auto-generation
–recovery_auto_period Period (in blocks) for recovery auto-generation

To make it easier to run local node in fast sync mode you need to run the following command:

./beam-node --port=10000 --peer=eu-nodes.mainnet.beam.mw:8100,us-nodes.mainnet.beam.mw:8100,ap-nodes.mainnet.beam.mw:8100,ap-hk-nodes.mainnet.beam.mw:8100 --fast_sync=on
../_images/fast_sync.jpg

Operations with Node Database

Parameter Description & Example
–check_db DB integrity check
–vacuum DB vacuum (compact)
–reset_id Reset self Node ID (used for network authentication). Must do if the node is cloned
–erase_id Reset self Node ID (used for network authentication) and stop before re-creating the new one.