Waves Node Konfiguration - Die waves.conf-Datei

Erstellt am:16.03.2021 Aktualisiert am:01.06.2022

Hier findest du den Aufbau der Waves Node Konfigurationsdatei (waves.conf) und Details zu den einzelnen Bestandteilen. Wenn du gerade eine Node aufsetzt, dann kannst du hier eine Minimal- und eine komplette Konfigurations-Datei herunterladen und deine MainNet-Node sofort testen. Funktioniert deine Node, dann kannst du die heruntergeladene waves.conf entsprechend für dich bzw. für deine eigene Node anpassen.

Ablageort der waves.conf - Datei unter Linux (Ubuntu/Lubuntu)

Die Waves Konfigurations-Datei wird in folgendem Verzeichnissen abgelegt. Beachte, dass die Waves-Node als MainNet und als TestNet installiert werden kann. Daher ist der Ablageort der waves.conf-Datei unterschiedlich:

$ /etc/waves/waves.conf  # MainNet
$ /etc/waves-testnet/waves.conf  # TestNet

Download der waves.conf Konfigurations-Datei (MainNet)

Über folgenden Download-Befehl kannst du die Minimale-WavesNode Konfigurationsdatei (MainNet) herunterladen. Die Ablage erfolgt direkt in das richtige MainNet-Verzeichnis (/etc/waves/).

Führe entsprechend diesen Befehl aus, um die Minimal-Konfiguration jetzt herunterzuladen:

$ curl https://www.chaincheck.de/stuff/waves-node-anleitung/mainnet/waves-conf-mini-1.conf -o /etc/waves/waves.conf

Zum Herunterladen der vollständigen MainNet-Node Konfigurationsdatei, führe diesen Befehl aus:

$ 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 deine Waves Node mit der vorbereiteten Konfiguration (s.o.), dann kannst du dich jetzt über die Inhalte der waves.conf-Datei vertraut machen und entsprechende Anpassungen für deine Node vornehmen. Dabei können dir diese Detail-Infos helfen. Klicke auf die Links um mehr Infos zu den eizelnen Bereichen 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

  }

}

Bereich: wallet

Grundsätzliches zum Bereich wallet. Diese Angaben sind Pflicht. Das Feld password und das Feld seed muss zwingen 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 Passwort und Seed wird die Datei /var/lib/waves/wallet/wallet.dat automatisch erstellt. Das bedeutet, dass nach jeder Änderung die wallet.dat gelöscht werden muss, damit die Waves-Node diese Datei entsprechend neu erstellen und ablegen kann. Andernfalls wird die Node nicht starten, es folgt dann diese 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 in das Feld "seed" eingetragen werden. Unter Linux (Ubuntu/Lubuntu) kann das Programm base58 zum kodieren verwendet werden. Das geht aber viel einfacher: In der Waves Exchange unter "Einstellungen / Sicherheit / Kodierter Seed" findest du ebenfalls den Base58 kodierten Seed. Diesen einfach kopieren:

Bereich: 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 REST-API aktiviert, so kann per API auf die Node per Swagger zugegriffen werden. Mit den Standardwerten kann nur der Server selbst auf die API zugreifen. D.h. ein Zugriff von extern ist mit den Standardwerten aus Sicherheitsgründen nicht möglich, was i.O. ist.

Die bind-address muss auf "0.0.0.0:6869" gesetzt werden, um Zugriff auch von extern zu ermöglichen. Port forwarding (Portweiterleitung) muss dementsprechend dann 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:

Wer rest-api komplett deaktivieren möchte, der muss "enable = no" setzen.

Swagger kann über den Browser und der URL http://127.0.0.1:6869 aufgerufen werden, wenn rest-api entsprechend aktiviert ist. Möchtest du von extern auf die Node zugreifen, dann muss deine Internet IP-Adresse statt 127.0.0.1 eingetragen werden.

rest-api | api-key-hash

Der api-key-hash wird benötigt, um erweiterte Funktionen über API/Swagger ausführen zu können. So z.B. kann die Node über API angehalten oder gestartet werden.

In das Feld "api-key-hash" wird das unter "password" (Bereich Wallet) frei ausgewählte Passwort verschlüssel (gehasht) eingetragen. Zum hashen wird Swagger verwendet. Öffne dazu den Swagger und gehe zum Punkt "/utils/hash/secure". Trage dort dein Passwort ein. Du erhält das Passwort gehasht. Diesen String trägst du in der Feld "api-key-hash" ein.

Wichtig, beachte! Wenn du eine MainNet-Node aufsetzt, dann soltest du zum hashen nicht eine fremde Node verwenden, da du nie sicherstellen kannst, ob das Kennwort über das Internet nicht abgehört wird. Auch kannst du nicht sicherstellen, ob die fremde Node nicht dein Kennwort loggt. Die Lösung heißt: Erstelle zuerst eine TestNet-Node. Für diese TestNet-Node kannst du eine fremde Node zum hashen verwenden. Danach kannst du lokal oder im lokalen Netzwerk deine eigene TestNet-Node zum hashen verwenden. Oder du verwendest die Node mit der oben zum Download bereitgestellten Konfiguration (MainNet).

Bereich: network

Wird der Bereich network nicht angegeben d.h. nicht manuell konfiguriert, so wird dieser Bereich automatisch mit Standardwerten aktiviert.

network | port

Wird manuell kein Wert vorgegeben, so wird dieser automatisch auf 6868 gesetzt.

network | node-name

Trage hier einen belibigen Namen deiner Waves-Node ein, z.B. Meine Waves Node. Der Node-Name wird automatisch generiert, wenn hier keine manuelle Vorgabe erfolgt.

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 man bei nicht aktiven uPnP zwingend die eigene IP-Adresse eingeben sollte. Wird dies nicht gemacht, so kann es zu Problemen der Quittierung der Verbindungsparter (handshake) kommen. Über IP ermitteln kannst du deine IP-Adresse im Internet ermitteln.

Wichtig:
Zur Portprüfung muss dieser Bereich zwingend aktiviert sein. Eine automatische Portprüfung kann z.B. verwendet werden, um prüfen zu lassen, ob der Server online ist. Siehe: Portalarm

Bereich: features & rewards

futures | supported

Über dieses Feld stimmt deine Node für die eingetragenen Futures mit einem Ja ab. Diese Angaben müssen Kommagetrennt angegeben sein.

rewards | desired

Im diesem Feld wird die BlockReward-Höhe für das Future 14 (Monetary Policy) bestimmt. D.h. für wieviel Waves pro Block deine Node stimmt. Dieser Wert muss durch 100.000.000 geteilt werden. 600000000 entspricht 6 Waves pro Block.