Waves Node Installation unter Linux (Ubuntu/Lubuntu)

Erstellt am:17.03.2021 Aktualisiert am:17.07.2021

Wer im Krypto-Space passives Einkommen erwirtschaften möchte, kann WAVES staken oder selbe eine eigene Node betreiben. Mit dem Betrieb einer eigenen Waves Node ist der Ertrag aufgrund der zusätzlichen Einnahmen durch zusätzliche/externe Staker höher. Der Betrieb einer Node ist jedoch mit Aufwand verbunden: Wartung, Updates, Monitoring usw.

Wenn du der Waves Node-Community beitreten möchtest, dann findest du hier die entsprechende Node-Installationsanleitung dazu. Es ist eine detailierte Step by Step Anleitung zum aufsetzen bzw. installieren einer eigenen Waves FullNode unter Linux (Ubuntu/Lubuntu). Beachte, dass eine Node mindestens 1000 WAVES im Staking/Leasing oder selbst im Besitz haben muss, damit Blöcke gemint werden. Die Gesamtinstallation inkl. Konfiguration und Blockchaindownload dauert etwa zwei Stunden.

1. Vorbereitung

1.1 Vorab Informationen

Diese Anleitung ist auch für Anfänger geeignet. Trotzdem sollte ein Grundlagenwissen aus dem Bereich IT und Linux (Ubuntu/Lubuntu) vorhanden sein. D.h. dir ist bekannt was ein Terminal ist und du weißt, wie man im Terminal einen Befehl ausführt, zB. ein Verzeichnis wechselt. In dieser Anleitung wird alles über Terminal bzw. über eine SSH Verbindung druchgeführt. Es ist keine GUI-Anleitung.

Waves kann als MainNet oder als TestNet installiert werden. Wie der Name schon sagt, ist das TestNet für Tests zu verwenden. MainNet-Daten wie zB. Waves-Adresse, können nicht im und für TestNet und anders herum verwendet werden. Ein weiterer Unterschied ist die Verzeichnisbezeichnung. MainNet hat das Verzeichnis: "waves/" und das TestNet hat das Verzeichnis "waves-testnet/".

1.2 Systemvoraussetzungen

Eine Waves-Node funktioniert bereits ab 4 GB RAM. Für den Dauerbetrieb einer MainNet-Node werden jedoch 8 GB empfohlen. Für die gesamte Blockchain wird eine Festplattengröße von aktuell 80 GB (MainNet) und 30 GB (TestNet) benötigt (Stand 02.2021).

1.3 Linux System aufsetzen / installieren

Diese Anleitung beschreibt die Installation einer Waves Full-Node auf einem Linux-System (Ubuntu/Lubuntu). Entsprechend benötigst du ein Linux-System. Dieses Linux-System sollte nach Möglichkeit "clean" sein, demzufolge sollte es neu aufgesetzt/installiert worden sein.

D.h. installiere jetzt ein komplett neues Linux System (falls nicht schon vorhanden), welches du für diese Node-Installation verwendet kannst. Du kannst dazu auch VirtualBox (virtueller PC) verwenden. Eine Anleitung zum installieren eines Linux-Systems unter VirtualBox findest du hier: Lubuntu 19 Grundinstallation

Empfehlung: Für den Betrieb einer MainNet Node wird ein VPS empfohlen. Gute und günstige Anbieter sind DigitalOcean und Contabo (HISPEED-1). Eine MainNet-Node kann und darf auf einer VirtualBox betrieben werden.

1.4 SSH Server auf Linux installieren (falls notwendig)

Diesen Punkt kannst du überspringen, wenn du Direktzugriff (auf Terminal über GUI) auf deinem Linux-System hast. Falls nicht, dann führe diesen Punkt jetzt entsprechend aus.

Bei VPS wird SSH benötigt. Was SSH bedeutet und wie es installiert sowie verwendet wird, beschreibe ich detailiert in dieser Anleitung: Remote Verbindung zum Linux via SSH Server

1.5 Linux Updates durchführen

Damit der Installationsverlauf ordentlich funktioniert, solltest du jetzt dein Linux updaten. Führe dazu diese zwei Update- und Upgrade-Befehle im Terminal oder über deinen SSH-Zugang aus. Mehr Info zum Update / Upgrade findest du hier: Update / Upgrade Linux

$ sudo apt-get update 
$ sudo apt-get upgrade

1.6 Java per Terminal oder SSH installieren (Linux)

Der Waves-Server (Node) benötigt Java in Version 8 oder 11. D.h. installiere jetzt Java in der gewünschten Version auf deinem Linux-System. Ich empfehle die version 11 zu installieren.

Hier beschreibe ich die Java-Installation unter Linux: Java openJDK Installation (Linux)

1.7 Waves-Wallet MainNet oder TestNet über Waves.Exchange erstellen

Der Waves-Server benötigt zum funktionieren eine eigene WAVES Wallet auf der Blockchain. D.h. erstelle jetzt eine Waves-Wallet für deine Node. Das kannst du einfach über den Waves.Exchange Client machen. Wichtig dabei ist, dass du hier zwischen TestNet und MainNet unterscheidest. Links zu den entsprechenden Clients: MainNet | TestNet

Und hier beschreibe ich, wie du unter Waves-Exchange eine Wallet erstellen kannst: WAVES Wallet erstellen

2.0 Die WAVES Node-Installation

Nach Erledigung der oberen Punkte kann jetzt mit der Installation der Waves-Node begonnen werden. Die Installation erfolgt über APT Repository (Advanced Packaging Tool).

2.1 GPG Schlüssel bekannt gegeben

Als erstes muss der GPG Schlüssel bekannt gegeben werden. Melde dich über SSH PuTTY, PowerShell oder über das Terminal an deinen Server an und führe zur Bekanntgabe des GPG-Schlüssels folgenden Befehl aus:

$ curl -sL http://apt.wavesplatform.com/apt-key.gpg | sudo apt-key add -

Sollte an dieser Stelle die Meldung erscheinen, dass curl nicht installiert ist, dann muss curl mit diesem Befehl installiert werden. Danach den oberen Befehl einfach wiederholen:

$ sudo apt install curl

2.2 WavesPlatform zum APT Magazin (Repository) hinzufügen

Je nachdem, ob du den TetNet- oder den MainNet-Server installieren möchtest, muss das entsprechende APT Magazin (Repository) für die Installation hinzugefügt werden. Bei dieser Ausführung werden alle Daten heruntergeladen und die Paketlisten aktualisiert.

Wichtig:
xenial muss auch bei neueren Linux-Versionen verwendet werden, d.h. bei foscal ebenso xenial verwenden.

Für TestNet:

$ sudo add-apt-repository "deb https://apt.wavesplatform.com/ xenial testnet"

Für MainNet:

$ sudo add-apt-repository "deb https://apt.wavesplatform.com/ xenial mainnet"

Sollte an dieser Stelle die Meldung "add-apt-repository command not found" erscheinen, dann müssen die software-properties installiert werden. Das wird über diesen Befehl ausgeführt. Danach kann Punkt 2.2 wiederholt werden.

$ sudo apt install software-properties-common

2.3 APT Update/Upgrade durchführen

Führe jetzt ein Update und Upgrade durch:

$ sudo apt update
$ sudo apt upgrade

2.4 Waves Node installieren

Hier wird die abschließende Installation durchgeführt. Abhängig davon, welche Node (TestNet oder MainNet) mit Punkt 2.2 geholt wurde, kann jetzt die entsprechende WAVES-Node installiert werden. Für das MainNet muss der folgende Befehl ausgeführt werden:

$ sudo apt install waves

Und für das TestNet muss dieser Befehl ausgeführt werden:

$ sudo apt install waves-testnet

Die Installation dauert jetzt etwa 10 Minuten.

2.5 Die WAVES application.ini konfigurieren oder herunterladen

Durch die Installation ist die application.ini-Datei angelegt worden. Über die application.ini wird u.a. gesteurt, wie viel Arbeitsspeicher die Java virtual machine (JVM) erhält. Wie unter den Voraussetzungen (Punkt 1.2) bereits beschrieben, sollte eine MainNet Node 8 GB erhalten. Eine auskonfigurierte application.ini einer MainNet-Node sieht wie folgt aus. Für eine TestNet-Node können die Werte übernommen oder angepasst werden.

# options from build
-J-server
-J-Xms4g
-J-Xmx8g
-J-XX:+ExitOnOutOfMemoryError
-J-XX:+UseG1GC
-J-XX:+UseNUMA
-J-XX:+AlwaysPreTouch
-J-XX:+PerfDisableSharedMem
-J-XX:+ParallelRefProcEnabled
-J-XX:+UseStringDeduplication
-J-Dfile.encoding=UTF-8

Das Verzeichnis dieser Datei ist "/etc/waves/" (MainNet), und "/etc/waves-testnet/" (TestNet). Diese Datei kann über das Terminal oder die SSH Verbindung mit dem Editor nano bearbeitet werden. Um das ganze einfacher zu machen, kann die application.ini auch direkt auskonfiguriert über diesen Befehl heruntergeladen werden:

Für MainNet:

$ curl https://www.chaincheck.de/stuff/waves-mainnet/application.ini -o /etc/waves/application.ini

Für TestNet:

$ curl https://www.chaincheck.de/stuff/waves-mainnet/application.ini -o /etc/waves-testnet/application.ini

2.6 Konfigurieren der waves.config

Die WAVES Config-Datei ist relativ komplex, daher ist auf der folgenden Seite der gesamte Aufbau dieser Datei im Detail erklärt: Waves Node Konfiguration

2.7 Waves Blockchain downloaden und entpacken

Nachdem die waves.conf-Datei konfiguriert wurde, muss jetzt die Blockchain vor dem Start der Node heruntergeladen werden. Dies dauert bei einer guten Internetverbindung ca. 1h. Bei normaler Verbindung kann dies schon 3-4h dauern. Der Download der Blockchain wird mit diesem Befehl gestartet.

Für MainNet:

$ curl http://blockchain.wavesnodes.com/blockchain_last.tar -o /var/lib/waves/blockchain.tar

Für TestNet:

$ curl http://blockchain-testnet.wavesnodes.com/blockchain_last.tar -o /var/lib/waves-testnet/blockchain.tar

Prüfe als nächstes, ob das Blockchain-Verzeichnis "data" nicht eventuell schon vorhanden ist. Das kann passieren, wenn man den Server schon einmal gestartet hat. D.h. prüfe mit diesem Befehl, ob das Verzeichnis "data" im MainNet oder TestNet vorhanden ist:

$ ls /var/lib/waves/
$ ls /var/lib/waves-testnet/

Wenn in diesem Verzeichnis der Ordner "data" nicht existiert, dann kannst du diesen Punkt überspringen. Andernfalls muss dieser Ordner nun mit diesem Befehl geleert werden (MainNet oder TestNet):

$ rm -r /var/lib/waves/data/*
$ rm -r /var/lib/waves-testnet/data/*

Jetzt kann die Blockchain.tar entspackt werden. Das wird mit diesem Befehlt durchgeführt. Auch hier, oben = MainNet, unten = TestNet:

$ tar -xvf /var/lib/waves/blockchain.tar -C /var/lib/waves/
$ tar -xvf /var/lib/waves/blockchain.tar -C /var/lib/waves-testnet/

3.0 Systemstart / Node-Wechsel

Fast geschafft! Deine Node ist nun komplett installiert und konfiguriert. Du kannst deine Node nun starten. Das erfolgt mit diesem Befehl für MainNet oben, für TestNet unten.

$ systemctl start waves.service
$ systemctl start waves-testnet.service

Zum prüfen, ob deine Node erfolgreich gestartet wurde und auch läuft, führe folgenden Befehl ein:

$ journalctl -u waves.service -f
$ journalctl -u waves-testnet.service -f

Sieht die Ausgabe wie folgt aus, bzw. es gibt die Ausgabe "MicroBlock" und "New height: xxxx", dann war die Node-Installation und der Start der Node erfolgreich.

Mar 16 16:41:18  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - MicroBlock(B8kKF9o... -> 7kydM44..., txs=6) appended, diff=63374b0
Mar 16 16:41:23  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - MicroBlock(4RR512Z... -> B8kKF9o..., txs=1) appended, diff=d75f3f6c
Mar 16 16:41:28  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - MicroBlock(5Rc4ddB... -> 4RR512Z..., txs=4) appended, diff=b02a6498
Mar 16 16:41:33  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - MicroBlock(CCPHwmT... -> 5Rc4ddB..., txs=1) appended, diff=1039424b
Mar 16 16:41:36  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - New height: 2505451
Mar 16 16:41:38  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - MicroBlock(AxAZsML... -> uzebxbE..., txs=1) appended, diff=4d38c552
Mar 16 16:41:40  x1.consr.net waves[10687]: INFO  c.w.s.BlockchainUpdaterImpl - MicroBlock(5aDZU9s... -> AxAZsML..., txs=1) appended, diff=d071d6db

Waves Config-Change / Wallet und Restart / Fragen & Antworten

Nachfolgend noch ein paar wichtige Infos, bzw. Befehle die jeder Node-Betreiber kennen sollte. Beachte, dass bei diesen Beispielen MainNet beschrieben wird. Für TestNet muss einfach statt "waves", "waves-testnet" eingegeben werden.

1. Server stoppen, starten, deakvieren

$ systemctl stop waves.server
$ systemctl start waves.server
$ systemctl disable waves.server
$ systemctl enable waves.server

2. Wallet.dat löschen

Immer wenn in der waves.conf-Datei eine signifikante Änderung vorgenommen wurde, muss die wallet.dat neu angelegt werden. Damit aber der Server die wallet.dat neu anlegen kann, muss diese vorher manuell mit diesem Befehl gelöscht werden:

$ rm /var/lib/waves/wallet/wallet.dat

3. waves.config editieren

Über eine SSH-Verbindugn kann kein GUI-Editor wie featherpad usw. verwendet werden. Um die waves.conf-Datei über SSH trotzem bearbeiten zu können, kann das Programm nano verwendet werden:

$ nano /etc/waves/waves.conf

4. Server Status prüfen

Um den Waves Node Status prüfen zu können, kann der folgende Befehl verwendet werden:

$ journalctl -u waves.service -f

5. Logs prüfen / löschen

Die Waves-Node erzeugt durchgehen Logs um mögliche Fehler finden zu können. Diese Log-Dateien (Archive) sollten in gewissen Zeitabständen gelöscht werden. Am besten ist es, sich hier eine monatliche Erinnerung im Kalender einzustellen.

Mit diesem Befehl werden Log-Archive gelöscht:

$ rm /var/log/waves/*.log.gz

6. Müssen Node-Rewards an die Node selbst gestaked werden?

Sobald die Node Rewards erwirtschaftet hat, müssen diese nicht manuell ins Staking zur eigenen Node hinzugefügt werden, die erwirtschaftete Waves-Menge wird automatisch einbezogen.