FAQ + Hilfe zur Massa Node

Dirk
9 min readAug 7, 2022

Bitte beachten, dass die FAQ und Hilfe auf eine Node installation wie in dem Tutorial “Tutorial: Der einfache Weg zur Massa Node | by Dirk | Aug, 2022 | Medium” angepasst ist. Den entsprechenden Link findet ihr unten im Anhang.

Update der Nodesoftware wegen Fehlerbeseitigung

Bitte diesen Punkt erst durchführen, wenn eine neue Version im Telegram Channel “MASSA D-A-CH” oder im offiziellen Massa Announcement Channel bekannt gegeben wurde !!!!

Dieser Punkt ist jetzt fuer Mainnet !

  1. Einloggen auf dem VPS mittels Putty. Benutzt dabei den Benutzer “massa” und das dazugehörige Passwort.

2. Nachdem ihr eingeloggt seid, gebt ihr die folgenden Befehle ein:

bash
rustup default nightly
rustup update
cd /opt/massa/massa-client
cargo run --release -- -p <PASSWORD> node_stop
cd /opt/massa
git stash
git remote set-url origin https://github.com/massalabs/massa.git
git checkout MAIN.2.1
git pull
cd /opt/massa/massa-node
RUST_BACKTRACE=full nohup cargo run --release -- -p <PASSWORD> &

Die neue Software wird dann wieder compiliert und die neue Nodesoftware anschließend automatisch starten. Es könnte sein, dass eure Node anfangs ein Problem mit dem Bootstrapping bekommt, wenn sehr viele gleichzeitig ihre Node neu starten. Dann versucht bitte den Punkt “Bootstrapping” im uebernächsten Abschnitt durchzuführen.

Node anhalten

In manchen Faellen ist es notwendig die Node anzuhalten. Um dieses zu erreichen geht ihr wie im Folgenden beschrieben vor:

Ihr loggt euch mittels Putty auf euren VPS server mit dem Benutzer “massa” und dem selbstvergebenen Passwort ein.

Dann gebt ihr die folgenden Befehle ein:

bash
cd /opt/massa/massa-client/
cargo run --release -- -p <PASSWORT>

Durch den letzten Befehl habt ihr den Massa Client gestartet und gebt dann im Client den folgenden Befehl ein:

node_stop

Wenn die Fehlermeldung “Error: check if your node is running: ..” dann läuft er nicht und alles ist ok. Mit exit verlasst ihr den Client und könnt die Verbindung zum VPS trennen. Der Node ist jetzt gestoppt worden.

Die folgenden Punkte sind hauptsaechlich fuer die verschiedenen Testnets gewesen. Aber ggfs koennen hier noch Tipps oder Hinweise fuer verschiedene Konfigurationen gefunden werden!

Aufsetzen der neuen Node für Episode 22

Voraussetzung ist, dass der Node selbst nicht mehr läuft.

Ihr loggt euch mittels Putty auf euren VPS server mit dem Benutzer “massa” und dem selbstvergebenen Passwort ein.

Dann gebt ihr die folgenden Befehle ein:

bash
cd /opt/massa/massa-client/
cargo run --release -- -p <PASSWORT>

Durch den letzten Befehl habt ihr den Massa Client gestartet und gebt dann im Client den folgenden Befehl ein:

node_stop

Mit dem Befehl exit verlasst ihr wieder den Massa Client. Danach wechselt ihr in das Verzeichnis “opt” und nennt das Verzeichnis “massa” in “Backup-Episode21” um.

cd /opt
sudo mv massa Backup-Episode21

Jetzt einige Software-Pakete, Rust aktualisieren und wieder die letzte nightly Rust version als Standard setzen.

sudo apt update
sudo apt upgrade
source $HOME/.cargo/env
rustup toolchain install nightly
rustup default nightly
sudo mkdir massa
sudo chown massa massa
sudo chgrp massa massa
sudo apt install cmake

Jetzt die Massa Software für Episode 22 holen:

git clone --branch testnet https://github.com/massalabs/massa.git (MASSA software runterladen und ins Verzeichnis „/opt/massa“ ablegen.

Wenn könnt ihr eure alten Konfigurationsdateien und Node-Key sowie Wallet rüberkopieren.

cd /opt/massa/massa-node/config
cp /opt/Backup-Episode21/massa-node/config/config.toml .
cd /opt/massa/massa-client
cp /opt/Backup-Episode21/massa-client/wallet.dat .

cd /opt/massa/massa-node (Ins Verzeichnis /opt/massa/massa-node wechseln)

Mit dem folgenden Befehl wird die Node Software erstellt und danach sofort gestartet. Der Befehl „nohup“ mittendrin und das „&“ am Ende sorgen dafür, dass alles weitere im Hintergrund passiert und man in der Kommandozeile weiterarbeiten kann. Die Log Information befinden sich in der Datei /opt/massa/massa-node/nohup.out

RUST_BACKTRACE=full nohup cargo run --release -- -p <PASSWORD> & (Password ersetzt ihr bitte mit einem Passwort eurer Wahl)

Das compilieren dauert einige Minuten (im Test 12 Minuten). Mit dem Befehl cat nohup.out kann man sich die anschauen wie weit die Software ist.

Danach kann man den Befehl des Öfteren wiederholen bis man die folgenden Einträge in den Logfiles findet:

Finished release [optimized] target(s) in 11m 52s
Running `/opt/massa/target/release/massa-node -p <passwd>`

Hoffentlich auch sofort ein Bootstrap erfolgreich durchgeführt und schon begonnen sich mit anderen Nodes zu verbinden. Das bedeutet euer MASSA-Node läuft !!!!!

Am Anfang kann es dauern bis es “Incoming connections” gibt. Es kann bis zu mehreren Stunden dauern! Da hilft nur warten.

Danach können wir wieder den Client erstellen. Es macht noch nicht so viel Sinn den Node und den Client parallel zu machen, weil der Client recht schnell erstellt sein wird und auch nur vernünftig funktioniert, wenn die Node-Software im Hintergrund läuft.

cd /opt/massa/massa-client

cargo run --release -- -p <PASSWORD>(Password ersetzt ihr bitte mit einem Passwort eurer Wahl)

Nach dem compilieren wird der client auch automatisch gestartet.

Der Node sollte jetzt laufen und ihr seid im Massa Client. Dann aktiviert ihr jetzt das staking mit:

wallet_info
node_start_staking <wallet_address>

Ihr könnt jetzt aus den Client mit exit rausgehen und dann den Punkt 15 aus dem Tutorial “Der einfache Weg zur Massa Node” ausführen. Link habt ihr am Ende dieses Artikels.

Bitte beachtet, dass wenn der Faucet unter der URL http://mfaucet.paranorm.pro/ nicht erreichbar ist, dass ihr die Staking Adresse einfach bei Discord im Channel “testnet-faucet” eingebt.

Jetzt sollte die Node-Software laufen und fangt schon mal an zu staken.

Für die Episode 21müsst ihr euch neu registrieren und die Registrierung ist auch schon geöffnet. Dafür müsst ihr euch mittels des “Tutorial: Teilnahme am Massa Testnet Reward Program” wieder für das Scoring anmelden.

Bootstrapping

Wenn ein Massa Node gestartet wird, dann muss er sich bei den sogenannten Bootstrap Servern authentifizieren und registrieren. Wenn eine neue Episode gestartet wird, dann können diese offiziellen Bootstrap Server überlastet sein und ihr erhaltet die Fehlermeldung “Bootstrapping error”. Für Hinweise zu den Bootstrapping-Fehlern könnt ihr hier schauen: https://github.com/JeromeSi/TraductionsFrMassaDoc/blob/main/myDocs/bootstrapErrorsAndExplanations.md .

Bitte beachtet, dass die Anpassung der Konfiguration zwecks Hinzufügen von weiteren Bootstrap Servern seit Episode erschwert wurde. Es geht nur noch, dass ein anderer Node euch whitelistet (geht mit dem massa-client) und ihr den anderen Node in eure Konfigurationsdatei /opt/massa/massa-node/base_config/config.toml unter [bootstrap] einfügt. Die Datei mit dem nano editor öffnen:

· nano /opt/massa/massa-node/base_config/config.toml

Massa Node als System-Daemon installieren

Manche finden es hilfreich, den Massa Node als System-Daemon laufen zu lassen. Einer der Vorteile ist, dass der Node Server sich automatisch neu startet, wenn er mal abgestürzt ist.

Zuvor müsst ihr die Binary-Datei “massa-node” ins massa-node Verzeichnis kopieren.

· cd /opt/massa/massa-node
· cp /opt/massa/target/release/massa-node .

Dafür müsst ihr die Datei /etc/systemd/system/massad.service mit folgendem Inhalt erstellen:

[Unit]
Description=Massa Node
Requires=network-online.target
After=network-online.target
[Service]
User=massa
Environment=RUST_BACKTRACE=full
WorkingDirectory=/opt/massa/massa-node
ExecStart=/opt/massa/target/release/massa-node -p <YOUR_PASSWORD>
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target

Anschließend gebt ihr die drei folgenden Befehle ein:

· sudo systemctl daemon-reload
· sudo systemctl enable massad
· sudo systemctl restart massad

Die Logging Informationen könnt ihr euch dann mit dem Befehl journalctl ausgeben lassen, z.B. sudo journalctl -f -n 100 -u massad

Ubuntu 22.04 LTS

Manche haben bei der Installation des Linux Images die Version 22.04 LTS ausgewählt. Normalerweise ist das nicht schlimm, aber in diesem Fall fehlt dem Betriebssystem eine Programm-Bibliothek, so dass Massa nicht läuft. Abhilfe schafft hier der manuelle Download und manuelle Installation der Bibliothek.

· wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb
·
sudo dpkg -i libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb

Es könnte sein, dass die Datei irgendwann nicht mehr unter dem oben genannten Link downloadbar ist. Dann müsst ihr versuchen eine andere Seite zu finden.

Backup wichtiger Dateien

Die beiden wichtigsten Dateien einer Massa Node Installation sind
/opt/massa/massa-node/config/node_privkey.key und
/opt/massa/massa-client/wallet.dat

Diese beiden Dateien solltet ihr euch von jeder Episode aufbewahren. Damit kann man eure Ergebnisse immer wieder rekonstruieren.

Wir empfehlen diese auch bei euch zu Hause zu speichern. Dazu kopiert ihr die beiden Dateien ins /tmp Verzeichnis und packt sie in eine ZIP Datei:

· cp /opt/massa/massa-node/config/node_privkey.key /tmp
· cp /opt/massa/massa-massa-client/wallet.dat /tmp
· cd /tmp
· zip massa-episode13.zip node_privkey.key wallet.dat

Anschließend kopiert ihr sie euch mit dem folgenden Befehl auf eurem Windows PC in der Eingabeaufforderung rüber:

· scp massa@IP-ADRESSE-VPS:/tmp/massa-episode13.zip .

Bitte beachtet, dass im Namen der ZIP-Datei keine Leerzeichen sind! Wenn “zip” noch nicht vorhanden ist, dann installiert ihr es auf eurem VPS mit

· sudo apt install zip

Anschließend die Dateien in /tmp löschen mit:

· cd /tmp
· rm node_privkey.key
· rm wallet.dat
· rm massa-episode13.zip

IPv6

Um das Scoring zu verbessern, könnt ihr die Massa Node am besten unter einer IPv6 Adresse laufen lassen. Mit jeder Routing-Nachricht in einem Cycle wird die Distanz zwischen den Servern anhand deren IP Adressen mit GeoLocation gemessen. Die Distanz wird mit dem sogenannten maxim_factor ausgedrückt. Der Wert liegt zwischen 0 und 1 und wird pro Cycle aufaddiert. Je größer der Wert umso ein besseres Scoring hat man. Bei IPv6 funktioniert GeoLocation nicht immer, da für die Positionen noch nicht überall gepflegt werden. Kann einer IPv6 Adresse keine Position zugeordnet werden, dann erhält man automatisch den Wert 1 als maxim_factor. Also, optimal ist das der total_maxim_factor gleich dem routable samples ist. Weiterhin zeigt die Erfahrung, dass der Bot zur Auswertung der Positionen auch die IPv6 Adressen vergleicht. Da bei einem Provider die IP Adressen gleich anfangen, sind natürlich dann die maxim-factor-Werte schlechter wenn man seinen VPS bei einem Provider hat, den viele andere auch benutzen. Hier sind inzwischen Contabo und Hetzner stark vertreten. Daher lohnt es sich bei einem qualitativ guten Provider zu sein, der nicht so bekannt ist.

Um IPv6 für euren Node zu nutzen, müsst ihr nur in die Datei /opt/massa/massa-node/config/config.toml eure IPv6 Adresse eintragen und diese auch dem MassaBot in Discord mitteilen.

In der Regel braucht es wirklich nicht mehr dazu. Aber es gibt zur Zeit zwei Stolpersteine. Zum einen kann es sein, dass der VPS nicht mit IPv6 vorkonfiguriert ist. Dann müsst ihr das entsprechend einer Anleitung eures Hosting Providers einrichten, z.B. https://contabo.com/blog/de/ipv6-auf-ihrem-server-einrichten/. Zum anderen liegt ein Teufel in der IPv6 Adresse. Wenn die IPv6 Adresse irgendwo mittendrin den String “:100:” hat, dann interpretiert der Discord Bot diese als das Emoji “100”. Der Discord Bot wurde bis jetzt noch nicht angepasst und somit kann man die IPv6 Adresse dann nicht registrieren. Das ist leider Pech.

Ende der Episode

Am Ende einer Episode, d.h. wenn das Scoring nicht mehr stattfindet, solltet ihr euren Node auch stoppen. Der Hintergrund ist der, dass die Entwickler ihre Hauptrechner des Netzwerks auch runterfahren, um neuere Versionen einzuspielen. Wenn eure Node dann mit deren Servern nicht mehr kommunizieren kann, dann schreibt euer Node ganz viele Fehlermeldungen in die Logdatei bis kein Speicherplatz mehr auf der Festplatte vorhanden ist. Dann ist euer System nicht mehr zu gebrauchen. Diesen Umstand solltet ihr vorbeugen.

Update einer Node zu Beginn einer Episode

Auf der Massa Dokumentrationsseite gibt es einen Abschnitt wie man die Nodesoftware updaten kann. Wir empfehlen grundsätzlich zu Beginn jeder Episode die Nodesoftware neu aufzuspielen. Hintergrund ist, dass ggfs. zwischengespeicherte Informationen vorhanden sind und bei Beginn einer Episode die Nodesoftware aus den Tritt bringen kann. Daher sichert euch die wichtigsten Dateien (siehe oben Backup), installiert die neueste Rust Version und holt per git die aktuelle Nodesoftware. Dann kopiert ihr die gesicherten Dateien in die Verzeichnisstruktur und startet dann das compilieren.

Das update der Nodesoftware wie in der Original Massa Dokumentation würden wir nur dann so durchführen, wenn es eine Fehlerbereinigung innerhalb derselben Episode ist.

Active roll ist verschwunden

Manchmal kommt es vor, dass die aktive Roll nicht mehr da ist und die Nodesoftware nicht mehr staked. Das passiert wenn man weniger als 70% der vorgesehenen Blöcke bearbeitet. Dann wird die Roll automatisch verkauft. Die 100 Token werden euch dann gut geschrieben, aber noch für eine kurze Zeit geblockt. Danach sind sie wieder verfügbar.

Was wir empfehlen, ist ein Skript abzulegen, das alle 3 Minuten überprüft, ob noch eine aktive roll da ist. Wenn nicht, dann kauft das Skript automatisch eine neue Roll.

Zur Vorbereitung kopiert ihr euch die Massa Client Software in das massa-client Verzeichnis mit:

· cd /opt/massa/massa-client
·
cp /opt/massa/target/release/massa-client .

Dann erstellt ihr euch die Skriptdatei mit

· nano rollsup.sh

und kopiert das folgende in die Datei. STRG-O (speichern) und STRG-X (verlassen des Editors)

#!/bin/bash
cd /opt/massa/massa-client
candidat=$(./massa-client -p DEIN-PWD wallet_info |grep ‘Candidate rolls’|awk ‘{print $3}’)
massa_wallet_address=$(./massa-client -p DEIN-PWD wallet_info |grep ‘Address’|awk ‘{print $2}’)
if [ $candidat -le “0” ]; then
resp=$(./massa-client -p DEIN-PWD buy_rolls $massa_wallet_address 1 0)
fi

Bitte beachtet, dass das Skript insgesamt 7 Zeilen besitzt. Es kann aufgrund der Bildschirmanzeige zu verschiedenen Zeilenumbrüchen kommen.

Und jetzt noch den cronjob definieren. Ihr erstellt die Datei /etc/cron.d/rollsup mit dem folgenden Befehl:

· sudo nano /etc/cron.d/rollsup

und kopiert die folgende Zeile hinein:

· * /3 * * * * massa /opt/massa/massa-client/rollsup.sh

Jetzt noch dem cronjob sagen, dass er den neuen Job neu einlesen muss.

· sudo service cron reload

Links

--

--