Skip to main content

Frequently Asked Questions

General questions

What are the hardware requirements?

The philosophy of Massa is to be as decentralized as possible. To fulfill this goal, we aim to have low hardware requirements so that many people can run nodes. On the other hand, some minimal hardware is required to be able to process enough operations per second as per our scalability goals. We plan that the mainnet fits on a desktop computer with 8 cores, 16 GB RAM, 1TB disk and a decent home internet connection.

Can it run on a VPS?

You can use a VPS to run a node. The pros of VPS are that they have high availability and are easy to configure. Cons are that nodes running on a VPS can lead to centralization if a lot of nodes running on the same provider (e.g. AWS).

How to keep the node running when I close the terminal?

You can run the following command in the terminal:

nohup cargo run --release &

the output will go to the nohup.out file. You will be able to close the terminal safely then. To kill the app you'll have to use pkill -f massa-node. You can also use screen or tmux for example.

What ports does Massa use?

By default, Massa uses TCP port 31244 for protocol communication with other nodes, and 31245 to bootstrap other nodes. Massa also uses TCP port 33034 for the new private API, 33035 for the new public API (API v2), 33037 for public GRPC and 33038 for private GRPC access.

How to restart the Node?

  • Ubuntu cargo run --release |& tee logs.txt
  • Windows: ctrl + c for killing the process and cargo run --release
  • Mac Os cargo run --release > logs.txt 2>&1

How secure are the keypairs?

The staking wallet in the node folder and the wallet file in the client are encrypted.

Note that nodes don't know or trust each other, and they never exchange sensitive information, therefore cryptography is not required at that level. A handshake is performed at the connection with another peer. We sign random bytes that the peer sent us with our keypair, and same on the other side. And data that is sent after that is signed by its creator, not the node that is sending it to us. During the bootstrap, the handshake is asymmetric. We know the public key of the bootstrap node and we expect signed messages from it, but we do not communicate our public key, nor we sign the only message we send (just random bytes).

Balance and wallet

How to migrate from one server to another without losing staked amounts and tokens?

You need to back up the folder massa-client/wallets and migrate it to the massa-client folder on your new server. You also need to backup and migrate the node_privkey.key file in massa-node/config to keep your connectivity stats.

If you have rolls, you also need to register the key used to buy rolls to start staking again.

Note: You should never stake with the same address on two different nodes, don't forget to stop the node on the old server before staking on your new server.

Why are the balances in the client and the explorer different?

It may mean that your node is desynchronized. Check that your node is running, that the computer meets hardware requirements, and try restarting your node.

Where are the wallet files located?

By default, in the massa-client/wallets directory.

Rolls and staking

My rolls disappeared/were sold automatically

The most likely reason is that you did not produce some blocks when selected to do so. Most frequent reasons:

  • Node not running 100% of the time during which you had active_rolls > 0
  • Node not being properly connected to the network 100% of the time during which you had active_rolls > 0
  • Node being desynchronized (which can be caused by temporary overload if the specs are insufficient or if other programs are using resources on the computer or because of internet connection problems) at some point while you had active_rolls > 0
  • The node does not have the right registered staking keys (type node_get_staking_addresses in the client to verify that they match the addresses in your wallet_info that have active rolls) 100% of the time during which you had active_rolls > 0
  • Some hosting providers have Half-duplex connection setting. Contact hosting support and ask to switch you to full-duplex.

Diagnostic process:

  • make sure the node is running on a computer that matches hardware requirements and that no other software is hogging resources
  • type wallet_info and make sure that at least one address has active rolls > 0
    • if there are no addresses listed, create a new one by calling wallet_generate_private_key and try the diagnostic process again
    • if none of the listed addresses has non-zero active rolls, perform a new roll buy (see tutorials) and try the diagnostic process again
  • type node_get_staking_addresses in the client:
    • if the list is empty or if none of the addresses listed matches addresses that have active rolls in wallet_info:
      • call node_start_staking with the secret key matching an address that has non-zero active rolls in wallet_get_secret_key <Address1> <Address2>
  • check your address with the online explorer: if there is a mismatch between the number of active rolls displayed in the online interface and what is returned by wallet_info, it might be that your node is desynchronized. Try restarting it.

Why are rolls automatically sold? Is it some kind of penalty/slashing?

It is not slashing because the funds are reimbursed fully. It's more like an implicit roll sell.

The point is the following: for the network to be healthy, everyone with active rolls needs to produce blocks whenever they are selected to do so. If an address misses more than 70% of its block creation opportunities during cycle C, all its rolls are implicitly sold at the end of cycle C+3.

Do I need to register the keys after subsequent purchases of ROLLs, or do they get staked automatically?

For now, they don't stake automatically. In the future, we will add a feature allowing auto compounding. That being said, some people appear to have done that very early in the project. Feel free to ask on the Discord server :).

I can buy, send, sell ROLLs and coins without fees. When should I increase the fee >0?

For the moment, there are only a few transactions at the same time and so most created blocks are empty. This means that your operation will be added to a block even if the fee is zero. We will communicate if you need to increase the fee.

I am staking ROLLs but my wallet info doesn't change. When do I get my first staking rewards?

You need to wait for your rolls to become active (around 1h45), then depending on the number of rolls you have, you might want to wait for more to be selected for block/endorsement production.

Common issues

Ping too high issue

Check the quality of your internet connection. Try increasing the "max_ping" setting in your config file:

  • edit file massa-node/config/config.toml (create if it is absent) with the following content:
[bootstrap]
max_ping = 10000 # try 10000 for example

API can't start

  • If your API can't start, e.g. with could not start API controller: ServerError(hyper::Error(Listen, Os { code: 98, kind: AddrInUse, message: "Address already in use" })), it's probably because the default API ports 33034/33035 are already in use on your computer. You should change the port in the config files, both in the API and Client:
  • create/edit file massa-node/config/config.toml to change the port used by the API:
[api]
bind_private = "127.0.0.1:33034" # change port here from 33034 to something else
bind_public = "0.0.0.0:33035" # change port here from 33035 to something else
  • create/edit file massa-client/config/config.toml and put the same port:
[default_node]
ip = "127.0.0.1"
private_port = 33034 # change port here from 33034 to the port chosen in node's bind_private
public_port = 33035 # change port here from 33035 to the port chosen in node's bind_public

Raspberry Pi problem "Thread 'main' panicked"

If you encountered an error message such as: Thread 'main' panicked at 'called Option::unwrap() on a None value', models/src/hasher.rs:35:46, this is a known problem on older Raspberry Pi, especially with Raspbian. Try installing Debian.

Please note, running a Massa node on a Raspberry Pi is ambitious and will probably not work that well. We don't expect raspberry to be enough powerful to run on the mainnet.

Disable IPV6 support

If your OS, virtual machine or provider does not support IPV6, try disabling IPV6 support on your Massa node.

To do this, edit (or create if absent) the file massa-node/config/config.toml with the following contents:

[network]
bind = "0.0.0.0:31244"

[bootstrap]
bind = "0.0.0.0:31245"

then restart your node.

Bootstrapping and error message "client & server clocks differ too much"

The clock of your server is not synchronized.

On linux system using systemd, this can be checked using:

timedatectl

Check the line starting with 'System clock synchronized':

Local time: Wed 2018-06-13 12:38:51 UTC Universal time: Wed 2018-06-13 12:38:51 UTC RTC time: Wed 2018-06-13 12:38:51 Time zone: ETC/UTC (UTC, +0000) System clock synchronized: no systemd-timesyncd.service active: yes RTC in local TZ: no

To fix this, edit the following file:

sudo nano /etc/systemd/timesyncd.conf

Edit the NTP Server detail (from https://www.ntppool.org/zone/@):

[Time] NTP=0.ch.pool.ntp.org 1.ch.pool.ntp.org FallbackNTP=0.north-america.pool.ntp.org 1.north-america.pool.ntp.org

Then:

sudo systemctl daemon-reload sudo timedatectl set-ntp off sudo timedatectl set-ntp on

and you can check it with:

timedatectl status