Tutorial: Der einfache Weg zur Massa Node

Dirk
12 min readAug 7, 2022

Diese Anleitung wurde erstellt eine Node für das Incentivized Testnetzwerk der L1 Blockchain Massa von Massa Labs zu installieren und so zu konfigurieren, dass man am Testnetzwerk teilnimmt.

Diese Anleitung wurde am 18.1.2024 überarbeitet und für das Mainnet angepasst.

Wir empfehlen aus verschiedenen Gründen für Anfänger einen Virtual Private Server (VPS) bei einem Cloudanbieter zu mieten. Es gibt dort verschiedene Anbieter wie AWS, DigitalOcean, Hetzner, Contabo, usw. Jeder Cloudanbieter hat so seine Vor- und Nachteile. Dabei sollte man beachten, dass fast alle Cloudanbieter in ihren AGBs Kryptodienste verbieten. Im Grunde möchten diese vermeiden, dass die Rechner immer unter Volllast stehen, z.B. durch Mining usw. Es sind aber nur ganz weniger Fälle bekannt wo mal ein Server vom Anbieter gelöscht wurde.

Im Folgenden wird die Installation anhand eines VPS bei Contabo gezeigt. Bitte beachtet, dass dieses keine Empfehlung für Contabo darstellt, sondern in diesem Beispiel nur genommen wird, da gerade ein freier Node zu Demonstrationszwecken hier zur Verfügung steht.

Vorbereitung

Step 1: Einrichtung eines VPS

Minimale Hardware Anforderungen sind 8 Kerne, 32 GB Ram und eine Netzwerkschnittstelle mit 100mbit full-duplex. Hier empfehlen wir die Installation des Linux Images Ubuntu 20.04 LTS. Es ist eine sehr verbreitete Distribution und wird auch noch bis Ende 2024 gewartet. Inzwischen funktioniert aber auch die v22.04 LTS ganz gut.

Wenn ihr im Menü links auf VPS Steuerung geht, dann sucht ihr in der Mitte den Button

Contabo VPS Neuinstallation

Anschließend wählt ihr das Standard Image „Ubuntu 20.04 LTS“. Im Feld Passwort tragt ihr das euer Passwort für den Benutzer „root“ ein. Dann den Button „installieren“ drücken.

Step 2: Verbinden mit dem VPS mittels PUTTY

Wenn das Image installiert wurde und euer VPS bereitsteht, dann könnt ihr euch mittels SSH anmelden. Unter Windows (für den weiteren Verlauf in der Anleitung gehen wir davon aus, dass der private Rechner unter Windows läuft) benutzt ihr am besten das Programm PUTTY (https://www.putty.org/). Einfach in das Feld „Host Name“ die IP Adresse eures VPS angeben und dann unten den Button „Open“ drücken.

Wenn ihr erst die IP Adresse eingebt, dann im Feld „Saved Sessions“ einen Namen für die Verbindung und danach den Button „Save“ drückt, so wird unter dem Namen die IP Adresse gespeichert. Danach könnt ihr die entsprechende Session markieren und den Button „Load“ drücken. Dann braucht ihr euch nicht immer die IP Adresse merken.

Wenn ihr die Verbindung zu eurem VPS das erste Mal aufbaut, dann fragt euch PUTTY, ob ihr den “Schlüssel” akzeptiert. Beantwortet die Frage mit “Ja”. Solange ihr kein neues Image unter der IP Adresse installiert, wird diese Abfrage nicht mehr auftauchen. Falls ihr doch mal eine neues Image installiert, dann wird PUTTY eine Warnung anzeigen ala “Achtung, Schlüssel passt nicht. Trotzdem weitermachen?” Ihr müsst wissen, dass bei der Verbindung mit PUTTY ein eindeutiger Schlüssel des VPS bei euch gespeichert wird. Wenn ein Hacker mal euer VPS manipuliert und da was an den Verbindungen ändert, dann seid ihr durch diese Meldung gewarnt.

Step 3: Anmeldung beim VPS server

login as: root
root@<ip-adresse>’s password:

In der Regel loggt ihr euch mit dem Benutzer “root” ein, der der Administrator bzw. SuperUser ist. Bei einem Rechner der vom Internet aus frei erreichbar ist, würden wir das nicht machen. Daher wird empfohlen MASSA unter einem weniger privilegierten Benutzer laufen zu lassen. Daher wird im Folgenden ein neuer Benutzer und eine neue Gruppe angelegt.

Step 4: Neuen Benutzer anlegen:

Bitte gebt folgende Befehle ein:

  • useradd -m massa (Neuen Benutzer massa mit Home-Verzeichnis anlegen)
  • passwd massa(Neues Passwort für den Benutzer massa)
  • usermod -aG sudo massa (Benutzer massa in der Gruppe der SuperUser aufnehmen damit er sudo ausführen darf.)
  • getent passwd | grep massa
  • groups massa
  • ls -al /home/massa

Step 5: Verbindungskommunikation mittels SSH absichern

Um Brute-Force Angriffe auf den root-Benutzer vom Internet aus zu unterbinden, wird das anmelden des Benutzers root verboten.
Wichtig: Dennoch müsst ihr euch das Passwort dringendst merken. Ihr braucht das wenn ihr den Befehl sudo ausführt oder aber die Identität des root Benutzers lokal mit “su –“ übernehmt.

Step 6: Verbot der root Anmeldung:

Danach editieren wir die Datei sshd_config

  • nano /etc/ssh/sshd_config

Wegen sudo muss hier das Passwort des Benutzers „massa“ eingeben werden. Dieses wird gecashed und muss bei der nächsten Verwendung nicht mehr eingeben werden.

Im Config file den folgenden Eintrag suchen

  • #PermitRootLogin prohibit-password (Das # entfernen und prohibit-password mit dem Wort „no“ ersetzen. Manchmal steht da auch “yes”. Dann müsst ihr “yes” mit “no” ersetzen)

Danach könnt ihr euch mit dem Benutzer „massa“ anmelden, aber nicht mehr mit dem Benutzer „root“ mittels PUTTY. Ggfs. legt ihr euch noch einen Notfallbenutzer mit den oben genannten Schritten an.

Wenn sich jemand mit „root“ anmelden möchte dann erhält er ein „Access denied“.

Step 7: Firewall installieren und aktivieren

Zudem wird empfohlen eine Firewall zu installieren und zu aktivieren. Bitte beachtet, dass wenn ein VPS frisch installiert wird der Provider automatisch das Image aktualisiert. Das bedeutet, dass solange die Aktualisierung läuft ihr keine weiteren Programme installieren könnt. Die Fehlermeldung die ihr erhaltet lautet: “Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1304 (apt-get)”. Wenn der Update/Upgrade Prozess fertig ist, dann wird die PUTTY Verbindung getrennt und ihr loggt euch noch mal ein.

Bitte gebt folgende Befehle ein:

  • apt install ufw (Firewall names “ufw” installieren)
  • nano /etc/default/ufw(IPv6 auf YES überprüfen - ob Firewall auch IPv6 abdeckt))
  • ufw default deny incoming (Standardmäßig alle eingehenden Verbindungen verbieten)
  • ufw default allow outgoing (Standardmäßig alle ausgehenden Verbindungen erlauben)
  • ufw allow 22 (Erlaube eingehende Verbindung für SSH bzw. PUTTY)
  • ufw enable (Firewall einschalten)

Standardmäßig benutzt Massa den TCP port 31244 für seine Protokollkommunikation mit anderen Nodes sowie den TCP port 31245 um seinen Node als bootstrap Node für andere zur Verfügung zu stehen. Weiterhin stellt Massa mittels TCP port 33034 eine neue private API und mittels TCP port 33035 eine neue öffentlich API zur Verfügung. Daher sollten diese Ports auch in der Firewall freigeschaltet werden. Bitte gebt dazu folgende Befehle ein:

  • ufw allow 31244
  • ufw allow 31245
  • ufw allow 33034
  • ufw allow 33035
  • ufw status(Firewall Status abfragen)

Step 8: IPv6 einschalten

Viele Hostingprovider statten ihr VPS schon mit IPv6 aus, z.B. Contabo. Falls es noch nicht aktiviert ist, dann benutzt den Befehl

  • enable_ipv6IPv6 bei einem Contabo VPS einschalten. Bei anderen Providern gibt es ggfs andere Anleitungen dafür.

Zur Überprüfung, ob eure Netzwerkkarte auch IPv6 versteht, könnt ihr euch mit dem Befehl ifconfig alle Adressen anzeigen lassen. Es ist am Anfang noch nicht vorhanden und ihr müsst es vorher installieren. Daher

  • apt install net-tools
  • ifconfig

Die IPv6 Adresse fängt hinter dem Wort “inet6” an. Bitte beachtet, dass die zweite Zeile, die mit inet6 anfängt nicht die Adresse, sondern die Netzmaske ist.

Um zu prüfen, ob eurer Rechner auch mittels IPv6 erreichbar ist, könnt ihr die folgende Webseite benutzen: https://www.port.tools/port-checker-ipv6/

Optional: Fail2ban

Optional (wenn ihr eine feste IP Adresse habt von der ihr euch zum Server verbindet) dann installiert und konfiguriert euch fail2ban: https://linuxize.com/post/install-configure-fail2ban-on-ubuntu-20-04/

Das Programm fail2ban erkennt Brute-Angriffe mittels SSH und sperrt die Angreifer aus.

Dann am besten ein reboot durchführen und schauen, ob ihr euch mit dem neuen Benutzer “massa” anmelden könnt. Falls das nicht klappt, dann stimmt etwas mit den Firewall Einstellungen nicht. Dann müsst ihr euch ggfs. übers Terminal anmelden oder noch mal ein neues Image aufspielen.

Zum Schluss noch mal sicherstellen, dass ihr die aktuellsten Versionen von Programmen mittels Installationsbefehlen erhaltet. Mit “apt update” werden die Repositories (also die Liste wo die Programme zu finden sind) und mittels “apt upgrade” die Programme selbst aktualisiert.

  • apt update
  • apt upgrade

Danach führt ihr einen Reboot durch damit auch alle ggfs. ausstehenden Aktualisierungen durchgeführt werden.

  • reboot(Befehl zum reboot).

Der reboot zwingt euch auch dazu sich als Benutzer “massa” einzuloggen. Die nächsten Schritte sind so erläutert, dass ihr als Benutzer “massa” weitermacht.

MASSA Installation

Jetzt loggt ihr euch auf euren VPS mittels PUTTY nicht mit dem Benutzer “root”, sondern mit dem Benutzer “massa” und dem selbstgewählten Passwort ein. Danach den Befehl „bash“ eingeben, um eine veränderte Eingabeaufforderung zu erhalten.

  • bash(Bequemere Eingabeaufforderung).

Jetzt geht es los mit der MASSA Installation. Aus eigener Erfahrung wird die Installation mittels source code befürwortet. Man kann auch die Binaries runterladen, jedoch gibt es dann die Gefahr von Inkompatibilitäten.

Step 9: Zielverzeichnis erstellen

Normalerweise ist unter Linux das /opt Verzeichnis vorgesehen, um zusätzliche Programme zu installieren. Die Anleitungen im Internet — und auch der offizielle Guide — packen die MASSA Installation meistens ins sogenannte Home-Verzeichnis eines Benutzers. Das ist das sogenannte persönliche Verzeichnis eines Benutzers, was wir unglücklich finden aufgrund von Zugriffsrechten.

Am einfachsten finden wir es für Skripte usw. ohne Variablen zu arbeiten und packe die Installation direkt daher in das /opt Verzeichnis.

  • cd /opt (Ins /opt-Verzeichnis wechseln)
  • sudo mkdir massa (Achtung! Ihr müsst wegen dem sudo-Befehl noch einmal das Passwort des Benutzers “massa” eingeben. Danach wird es gecashet. Das Verzeichnis „massa“ erstellen. Da es mit sudo gemacht wird, ist der Eigentümer des Verzeichnisses root)
  • sudo chown massa massa (Eigentümer auf massa ändern)
  • sudo chgrp massa massa (Gruppe auf massa ändern)
  • ls -al (Listet den Inhalt des aktuellen Verzeichnisse auf)

Im nächsten Schritt werden Zusatzprogramme für die MASSA Nodesoftware installiert.

  • sudo apt install pkg-config curl git build-essential libssl-dev libclang-dev cmake

Die Abfrage, ob die Programme installiert werden sollen mit “Y” beantworten.

Step 10: Installation von RUST

MASSA ist in der Programmiersprache RUST geschrieben worden. Daher brauchen wir die RUST Programme (z.B. cargo, etc.) um das fertige Programm zu erstellen und auszuführen.

  • source $HOME/.cargo/env (Pfade konfigurieren)
  • rustup toolchain install nightly (Letzte Version installieren)
  • rustup default nightly (Letzte Version als Standard definieren)

Step 11: Routability einstellen:

Bei einer frischen Installation existiert die Datei config.toml im Verzeichnis /opt/massa/massa-node/config noch nicht. Daher muss die Datei erstellt und zwei Zeilen in die Datei einfügt werden. Wenn man Punkte für die rewards erhalten möchte, sollte man unbedingt die Routability aktivieren. Daher editieren wir die Datei schon hier, um die Node nicht später noch mal zu stoppen, editieren, und wieder starten zu müssen.

  • ls -al /opt/massa/massa-node/config (Verifizieren, dass die Datei nicht existiert)

Mit den folgenden 4 Zeilen wird die Datei automatisch mit den richtigen Werten erstellt. Alle 4 Zeilen gleichzeitig markieren und in die Eingabeaufforderung kopieren !

tee <<EOF >/dev/null /opt/massa/massa-node/config/config.toml
[protocol]
routable_ip = "`wget -qO- eth0.me`"
EOF
  • ls -al /opt/massa/massa-node/config
  • cat /opt/massa/massa-node/config/config.toml

Wenn ihr lieber IPv6 fahren möchtet, dann solltet ihr die IP-Adresse (IPv4 — das erkennt man an dem Format XXX.XXX.XXX.XXX) in den Anführungszeichen durch eure IPv6 Adresse ersetzen. Benutzt den Editor nano wie in der zweiten Zeile. Mit dem Befehl ifconfig könnt ihr euch noch mal die Adressen anzeigen lassen.

  • ifconfig
  • nano /opt/massa/massa-node/config/config.toml

Bitte beachtet, dass der Parameter im Screenshot alt ist. In den eckigen Klammern muss jetzt protocol stehen.

Step 12: Nodesoftware compilieren und starten

  • 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.

Step 13: MASSA client compilieren und starten

Danach können wir 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.

Step 14: Eine wallet erstellen

Entweder ihr erstellt euch eine ganz neue Wallet. Dafür führt ihr bitte folgenden Befehl aus:

  • wallet_generate_secret_key

Wenn ihr aber bereits eine Wallet besitzt oder nachdem ihr die neue Wallet erstellt habt, führt ihr diesen Befehl bitte aus:

  • node_start_staking <wallet_address>

Das mit dem Secret key ist ab Mainnet nicht mehr relevant !

Step 15: Staking

Ob das staking aktiviert wurde, könnt ihr im Logfile nachsehen:

  • cat /opt/massa/massa-node/nohup.out

Dort solltet ihr den Eintrag sehen: Staking with address XXX

Oder ihr gebt das folgende ein:

  • node_get_staking_addresses

Danach muesst ihr euch coins in eure Wallet schicken lassen. Die receiving Adresse sieht ihr weiterhin mit dem Befehl “wallet_info”.

Wenn ihr ausreichend Coins in eurer Wallet habt, dann koennt ihr Rolls kaufen. Eine Roll entspricht 100 Coins. Mit einer Roll nehmt ihr am Staking teil. Als Beispiel kauft ihr eine einzige Roll (ist der Parameter 1). Die 0 ist die Hoehe der Fee fuer die Transaktion. Es wird zur Zeit noch 0 akzeptiert.

  • buy_rolls <address> 1 0

Bei <address> gebt ihr eure Staking Adresse ein. Anzahl rolls ist 1 und für fees nehmt ihr 0.

Aus den 100 Token gibt es dann eine Candidate roll. Aus der Candidate roll wird dann automatisch eine Final roll und die Final balance zu 0.

Jetzt müsst ihr 3 cycle a 35 Minuten warten, bis aus der final roll eine Active roll wird — ungefähr 1,75 Stunde. Erst dann fangt ihr zu staken.

Mit dem Befehl get_status im Client erhaltet ihr aktuelle Informationen über den Zustand eurer Node. Wenn ihr in der 2. Zeile eine IP Adresse seht, dann hat die Konfiguration der Routability funktioniert. Unten seht ihr die Anzahl der eingehenden und der ausgehenden Verbindungen. Es gibt max. 15 eingehende und max. 10 ausgehende (mal +/- 1). Wie vorher erwähnt, auf die eingehende muss man schon mal länger warten. Beim Test hat es fast 2 Stunden gedauert.

Den Status seiner Node kann man auch auf der Webseite https://paranormal-brothers.com/massa/ verfolgen. Weiterhin gibt es die Möglichkeit dort einen Telegram Bot zu aktivieren, der einem eine Nachricht schickt, wenn die Node nicht mehr läuft.

Links

--

--