Waves Node Konfiguration - waves.conf-Datei
Ihr findet in diesem Artikel den Aufbau der Waves MainNet Node Konfigurationsdatei (waves.conf), sowie Details zu den einzelnen Bestandteilen. Wollt ihr eine WAVES-Node aufsetzen, dann stelle ich euch hier eine Minimal- und eine komplett-Konfigurations-Datei zum Download zur Verfügung. Mit der Minimal-Konfiguration könnt ihr testen, ob eure Node generell funktioniert. Danach könnt ihr auf die komplette Konfigurations-Datei wechseln.
Ablageort der waves.conf - Datei unter Linux (Ubuntu/Lubuntu)
Die Waves Konfigurations-Datei ist in folgenden Verzeichnissen abgelegt. Beachtet, dass der Ablageort der Datei für MainNet und für TestNet unterschiedlich ist.
$ /etc/waves/waves.conf # MainNet $ /etc/waves-testnet/waves.conf # TestNet
Download der waves.conf Konfigurations-Datei (MainNet)
Über den folgenden Download-Befehl könnt ihr die Minimale-Konfigurationsdatei (MainNet) herunterladen. Die Ablage erfolgt im Verzeichnis /etc/waves/ (MainNet).
Zum download der Minimal-Konfiguration führt diesen Befehl aus:
$ curl https://www.chaincheck.de/stuff/waves-node-anleitung/mainnet/waves-conf-mini-1.conf -o /etc/waves/waves.conf
Zum download der vollständigen Konfigurationsdatei (MainNet), könnt ihr diesen Befehl benutzen:
$ curl https://www.chaincheck.de/stuff/waves-node-anleitung/mainnet/waves-conf-full-1.conf -o /etc/waves/waves.conf
Waves Komplett-Konfiguration - MainNet
Funktioniert eure Waves Node mit der vorbereiteten minimal-Konfiguration, dann könnt ihr euch jetzt über die Inhalte der waves.conf-Datei vertraut machen und Anpassungen vornehmen. Dabei können euch diese Detail-Infos helfen. Klickt auf die Links um mehr Infos zu den eizelnen Bestandteilen zu erhalten.
waves { # Blockchain settings # MAINNET, TESTNET or STAGENET blockchain.type = MAINNET # Wallet settings wallet { # Password to protect wallet file # Example: password = "u5PtzQph#lgg1n_G29Y" password = "u5PtzQph#lgg1n_G29Y" # Wallet seed as BASE58 string # from: 3PJg2KZM6hZ3vXrzt6emYP4NvAucoG6rKo5 seed = "dJgzTwCpGwxSXb5Tqe3g7AU9skFRdRn3T61wiiGQ5RMM7ETPhgRcN9rF5QUuC1vKwaRkkjhm7JdAS9aSoSBbtWHA7vqV3DEPf7bd8VnGQC5zfALbLHXRLwJ5eR6Hu76jHjB" } # Node's REST API settings rest-api { # Enable/disable node's REST API enable = yes # Network address to bind to bind-address = "127.0.0.1" # Port to listen to REST API requests port = 6869 # Hash of API key string # Example: api-key-hash = "xxxx" # From password Swaager UI/utils/hash/secure/ api-key-hash = "2d3KsBmNqg5HygW6dH53pzZp5fKpWRaU1Dx9RkW9iASj" } # P2P Network settings network { # Port number port = 6868 # Node name to send during handshake. Comment this string out to set random node name. # Example: node-name = "Waves Chainchech Node" node-name = "Name-deiner-Node" # String with IP address and port to send as external address during handshake. # Could be set automatically if uPnP is enabled. # Example: declared-address = "111.11.1.1.1:6868" # Für Portprüfung notwendig declared-address = "deine-internet-ip:6868" } # supported futures features { supported = [2, 14, 15] } # desired rewards rewards { desired = 600000000 } }
Bestandteil: wallet
Diese Angaben sind Pflicht. Das Feld password und das Feld seed müssen angegeben sein. Ohne diese Angaben kann die Waves Node nicht starten.
wallet | password
Dieses Passwort verschlüsselt die wallet.dat. Die wallet.dat befindet sich im Verzeichnis /var/lib/waves/wallet/ (MainNet). Das Kennwort kann frei gewählt werden. Im Betrieb einer MainNet-Node sollte ein komplexes und damit sicheres Kennwort gewählt werden.
Wichtig: Anahnd der Angaben von Passwort und Seed wird die Datei /var/lib/waves/wallet/wallet.dat automatisch erstellt. Entsprechend muss die wallet.dat nach jeder Änderung der waves.conf gelöscht werden, damit die Waves-Node eine neue wallet.dat erstellen kann. Andernfalls wird die Node nicht starten können. Es kommt zur folgenden Fehlermeldung:
$ Caused by: java.lang.RuntimeExeption: File storage decrypt error
wallet | seed
Jede Waves-Node verwendet eine eigene Waves-Wallet. Die Wallet-Seed, d.h. die 15 Wörter müssen in Base58 kodiert im Feld "seed" eingetragen sein. Unter Linux (Ubuntu/Lubuntu) kann das Programm base58 zum kodieren verwendet werden. Das geht jedoch viel einfacher: Ihr findet eure Base58 kodierte Seed unter "Einstellungen / Sicherheit / Kodierter Seed" in eurer wx.network (WAVES-Wallet).

Bestandteil: rest-api
Diese Angaben sind nicht zwingend notwendig. Bei Nichtangabe wird rest-api automatisch mit den Standardwerten aktiviert. Die Standardwerte sind bind-address 127.0.0.1 und port 6869. Ist die REST-API aktiviert, so kann per API auf die Node per Swagger zugegriffen werden. Mit Standardwerten kann nur der Server selbst auf die API zugreifen. D.h. ein Zugriff von extern ist mit den Standardwerten nicht möglich.
Die bind-address muss auf "0.0.0.0:6869" gesetzt sein, um den Zugriff auch von extern zu ermöglichen. Port forwarding (Portweiterleitung) muss dann aber auch eingerichtet sein.
Exkurs: Portweiterleitung
Um Portweiterleitung zu aktivieren, muss im Router der Port 6869 per Protokoll TCP auf den Zielrechner (Node) aktiviert werden. Als Beispiel, wie das auf dem Vodafone Router CH7465VF aussieht wenn die Portweiterleitung auf den Zielrechner 192.168.0.29 zielt:

Wenn ihr rest-api komplett deaktivieren möchtet, dann stellt "enable = no" in der waves.conf ein.
Swagger könnt ihr über den Browser (URL http://127.0.0.1:6869) aufrufen. Für den Aufruf von extern müsst ihr an dieser Stelle eure eigene Internet IP-Adresse eintragen.

rest-api | api-key-hash
Der api-key-hash ist notwendig, wenn ihr erweiterte Funktionen über API/Swagger ausführen wollt. So kann die Node z.B. über API gestoppt oder neu gestartet werden.
Im Feld "api-key-hash" wird das unter "password" (Bestandteil Wallet) frei ausgewählte Passwort verschlüssel (gehasht) eingetragen. Zum hashen wird Swagger verwendet. Öffnet dazu Swagger und geht zum Punkt "/utils/hash/secure". Tragt dort euer Passwort ein. Ihr erhaltet das Passwort gehasht. Diesen String trägt ihr dann in das Feld "api-key-hash" ein.
Wichtige Annmerkung! Wenn ihr eine MainNet-Node aufsetzt, dann verwendet bitte zum hashen des Passwortes nicht eine fremde Node. Niemand kann sicherstellen, dass das Password über das Internet nicht abgehört wird. Auch kann niemand sicherstellen, dass die fremde Node das Passwort nicht mitließt. Die Lösung: Erstellt euch zuerst eine TestNet-Node. Zum hashen des Passwortes für die TestNet-Node könnt ihr eine fremde Node verwenden. Danach könnt ihr im lokalen Netzwerk eure TestNet-Node zum hashen verwenden.
Bestandteil: network
Wird dieser Bestandteil nicht manuell konfiguriert, so werden automatisch Standardwerte verwendet.
network | port
Wird manuell kein Wert vorgegeben, so wird dieser automatisch auf 6868 gesetzt.
network | node-name
Hier könnt ihr den Name eurer Node hinterlegen, z.B. Meine Waves Node. Der Node-Name wird automatisch generiert, wenn ihr hier keinen Namen einträgt.
network | declared-address
Ist uPnP im Router aktiviert, dann muss die eigene Internetadresse an dieser Stelle nicht eingetragen werden. Die meisten Router haben uPnP aktiviert. Das bedeutet aber auch, dass bei nicht aktiven uPnP die eigene IP-Adresse eingeben sein sollte. Wird dies nicht gemacht, dann kann dies zu Problemen bei der Quittierung der Verbindungsparter (handshake) führen.
Über IP Adresse Check - zeigt deine Internet IP-Adresse an könnt ihr eure IP-Adresse ermitteln.
Wichtig: Zur Portprüfung müsst ihr diesen Bereich zwingend aktivieren. Eine automatische Portprüfung kann z.B. für die Server-Statusprüfung verwendet werden. Dazu könnt ihr Portcheck - Portprüfung nutzen.
Bestandteil: features & rewards
futures | supported
Über dieses Feld voted eure Node für bestimmte Futures mit einem Ja ab. Diese Angaben müssen kommagetrennt angegeben sein.
rewards | desired
Über dieses Feld wird die BlockReward-Höhe für das Future 14 (Monetary Policy) abgestimmt. D.h. für wie viele Waves pro Block eure Node voted. Dieser Wert muss x 100.000.000 eingetragen werden. Möchtet ihr, dass eure Node für 6 WAVES pro Block voted, dann müsst ihr 600.000.000 eintragen.