I got my Witnet node running. What's next?¶
The first minutes and hours in your node's life¶
As soon as the
witnet_node container is up, it will do the following things in order:
- Try to open connections to other nodes in the network. It needs 8 "outbound" connections. This should take from several seconds to a few minutes.
- Discover what is the tip of the block chain, and download all the blocks from that chain. This can take from several minutes to several hours. The synchronization time depends heavily on how long the block chain is, but also on your Internet bandwidth, CPU speed, memory size and speed, and storage drive write throughput.
- Go into Synced status. In Synced status, your node will validate transactions and blocks in real time, and it will try itself to propose block candidates and participate in resolving data requests.
What to expect from your node's balance and reputation¶
- Getting your first block proposal accepted by the network and minting your first wit tokens is not easy, and can take from a few minutes up to 48 hours (or more!) due to the probabilistic nature of the cryptographic sortition algorithm that rules the system.
- As with minting blocks, being assigned a request for the first time can take some time: from several minutes up to 48 hours (or more!). Once you have resolved at least one request, your node will earn reputation and it will start getting assignments more often.
Note that it is perfectly normal for a node to show 0 "balance", "reputation", "blocks included" or "accepted commits" for the first days of it being up. Please be patient, new identities in the system are subject to a slow start for critical security reasons.
Monitoring your node's progress¶
Here are some useful commands that you can use to keep track of how your node is performing in the network. A complete documentation of all the CLI methods is available in the node operator docs.
Among other information, this shows the synchronization state of your node, as well as counters for proposed and accepted blocks and participations in resolving data requests ("commitments").
docker exec witnet_node witnet node nodeStats
cargo run --release -- node nodeStats
witnet node nodeStats
balance command will print your node's current balance.
docker exec witnet_node witnet node balance
cargo run --release -- node balance
witnet node balance
reputation command will print your node's current reputation score.
docker exec witnet_node witnet node reputation
cargo run --release -- node reputation
witnet node reputation
Reputation is tricky
Despite its name, the reputation metric that exists in the Witnet protocol is not as vital as reputation is in real life. The reputation score of a node gives a rough idea about its performance, but it is heavily influenced by randomness and luck. It is perfectly normal that the reputation score goes up and down over time, sometimes smoothly, sometimes more abruptly. Do not get too obsessed about it!
Check ports and incoming connections¶
To check if the listening port is correctly opened to the Internet, you can use a port forwarding testing tool or try to open a connection to your public IP from a device that is not in the same network as your node:
# If you get stuck when running this command, it is indeed a good sign that # the connection was stablished. To exist a Telnet session, press "Ctrl + ]", # then write "quit" and press Enter. telnet your_public_ip 21337
nc -vz your_public_ip:21337
The final check to verify that your port is correctly forwarded is using the
peers method to look if any of the peer connections is tagged as "inbound":
docker exec witnet_node witnet node peers
cargo run --release -- node peers
witnet node peers
Multiple nodes in the same device or network
Multiple Witnet nodes can run in the same device or network and still get
incoming connections. This is possible by forwarding a different external
22337) to the port of your second node.
However, your second node may require setting an additional parameter in
its configuration file so that it is aware of the new port. Please read
below how to customize the configuration file. The parameter you need to
Back up your private master key¶
Doing a backup of the private master key of your node is a great way to keep your wit tokens safe.
This command will print your master key into your console terminal:
docker exec witnet_node witnet node masterKeyExport
cargo run --release -- node masterKeyExport
witnet node masterKeyExport
You can add the
--write flag to write a backup of your master key into a file
in the configuration directory of your node (
~/.witnet/config by default):
docker exec witnet_node witnet node masterKeyExport --write
cargo run --release -- node masterKeyExport --write
witnet node masterKeyExport --write
It is recommended to move or copy the resulting file into a safe place. Writing it into a piece of paper and keeping it somewhere safe from light, water, fire (and eyes) is the best option.
Please keep this totally secret. Anyone with knowledge of this key has full access to all your wit tokens.
Importing master keys is only allowed when creating a new node, as overwriting a existing key could be dangerous. The process is quite simple:
mkdir -p ~/.witnet/config nano ~/.witnet/config/master.key # Now enter your master key into the file editor, save with Ctrl+O and exit with Ctrl+X docker run -d \ --name witnet_node \ --volume ~/.witnet:/.witnet \ --publish 21337:21337 \ --restart always \ witnet/witnet-rust node server --master-key-import /.witnet/config/master.key
mkdir -p ~/.witnet/config vim ~/.witnet/config/master.key # Now enter your master key into the file editor, save and exit by typing Escape, then ":wq" and Enter docker run -d \ --name witnet_node \ --volume ~/.witnet:/.witnet \ --publish 21337:21337 \ --restart always \ witnet/witnet-rust node server --master-key-import /.witnet/config/master.key
witnet node server --master-key-import ~/.witnet/config/master.key
Never use the same master key on multiple nodes at once
Operating multiple nodes with the same master key is a terrible idea. You may find your nodes exposed to double-spend issues and severe slashing.
Customize configuration if needed¶
witnet.toml configuration file can be used to adjust some parameters
of the node. The configuration file itself contains detailed explanations for each
If you created your node following this guide, your
witnet.toml file will
be found in the
~/.witnet/config folder, right in your user's directory.
You can easily edit the configuration file like this:
Long term maintenance of your node¶
There are some operations that are recommended from time to time to make sure your node is in perfect order:
- Give a look to the result of the
- Check that you are getting incoming connections as explained above.
- Keep an eye on announcements for software and networks upgrades through the Witnet Community Discord and Telegram to make sure that you are running the latest release, which should give your node the best performance, liveness and security.
- Restart your node once in a while (e.g.
docker restart witnet_node) so that the node can perform some housekeeping operations. This helps reducing memory footprint and optimize disk space.