Waves Node Konfiguration - waves.conf-Datei

Erstellt am:Di., März 16, 2021 Aktualisiert am:So., Sept. 15, 2024

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.