Chia Farming mit dem Raspberry Pi 4 und Ubuntu

Dieses Tutorial zeigt dir, wie du energiesparsames Chia Farming mit dem Raspberry Pi 4, Ubuntu und externen USB Festplatten betreiben kannst. Die Konfiguration ist zudem sehr leise aufgrund des verwendeten passiven Raspberry Pi Gehäuses. Wie du Plots für diesen Farming PC erstellst erfährst du hier.

Hardware

In dem Build verwende ich folgende Hardware:

  • Raspberry Pi 4: Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM, WLAN-ac, Bluetooth 5, LAN, 4 x USB, 2 x Micro-HDMI
  • Passives Alu Gehäuse: Lüfterloses Vollaluminium Gehäuse für den Raspbery Pi. Mein aktuelles Lieblingsgehäuse mit guten Preis-Leistungsverhältnis
  • WD My Book 8 TB USB 3.0: Externe USB 3.0 8TB Festplatte
  • Netzteil: Raspberry Pi 4 USB-C Netzteil, 5.1V, 3A
  • SanDisk 64GB Micro SD Card: Micro SD Card mit 64 GB. Aus eigener Erfahrung würde ich keine kleinere Karte nehmen, da du aufgrund der schnell wachsenden Blockchain sonst schnell an die Grenzen des Speicherplatzes stößt.
  • Micro HDMI Adapter

Ubuntu Desktop Installation

  1. Als Betriebssystem für den Raspberry Pi verwenden wir Ubuntu Desktop 21.04 mit Gnome Desktop. Dieses kannst du einfach mit Raspberry Pi Imager herunterladen und auf die SD Card schreiben.
  2. Stecke die SD Card in den Raspberry Pi und schließe Tastatur, Maus, Bildschirm und Netzwerkkabel. Der Raspberry Pi startet sobald das Stromkabel eingesteckt wird. Zur Ubuntu Installation must du nur den Setup Anweisungen folgen.
  3. Abschließend bietet es sich an die System Software zu Aktualisieren. Öffne dazu ein Terminal (Strg+Alt+T) und gebe folgende Befehle ein:
    sudo apt update

    sudo apt upgrade -y

Chia Installation

Chia.net stellt für Ubuntu ein .deb Package zur Verfügung. Die Installation kann daher einfach grafisch erfolgen. Dazu lädst du mit dem bereits installierten Firefox das Installer Package „Ubuntu/Debian ARM“ von der Chia Download Seite herunter. Wichtig ist hier das ARM Package zu nehmen, da der Raspberry PI eine ARM CPU besitzt.
Die heruntergeladene Datei findest du dann im Download Verzeichnis das du über den „Files“ Browser links in der Menüleiste erreichst. Ein Rechtsklick auf das Installer Package erlaubt dir im Kontext Menü die Installation von Chia über den Menüpunkt „Open with Software Install“. Siehe Screenshot:

In dem Menü links unten solltest du nun den installierten Chia Client finden und starten können. Da sich der Raspberry Pi nur zum Farmen eignet und nicht zum erstellen von neuen Plots gehe ich davon aus, das du bereits eine Chia Wallets besitzt. Diese kannst du einfach über den Menüpunkt „Import from Mnemonics (24 words)“ importieren.

Da der Raspbery Pi sich nur zum Farmen eignet, gehe ich davon aus das du eine Ploting Maschine hast, die bereits mit der Chia Blockchain synchronisiert ist. Da dieser Vorgang sehr lange dauert, empfehle ich dir die Blockchain von diesem Computer auf den Raspberry Pi zu kopieren. Dies spart dir einige an Zeit. Schaue dazu bei den Tipps & Tricks rein. Alternativ kannst du den Raspberry Pi auch einfach laufen lassen bis Chia fertig synchronisiert ist.

Festplatten mounten

Erstelle ein Verzeichnis in das die Festplatte mit den Chia Plots gemountet werden soll. z.B. auf der Konsole (Strg+Alt+T) mit folgenden Befehl:
sudo mkdir /mnt/MOUNTNAME

Im Ubuntu Software Menü findest du die Anwendung „Disks“. Mit dieser kannst du die USB Festplatte in das neue Verzeichnis mounten. Dazu klickst du die Festplatte an, gehst dann auf das Zahnradsymbol und wählst „Edit Mount Options…“

Hier wählst du dann „Mount at system startup“ und „Show in user interface“. Bei „Mount Point“ gibst du nun das zuvor angelegte Verzeichnis an. Nach einem Neustart des Raspbery Pi solltn nun die Plots auf der USB Festplatte in dem Verzeichnis verfügbar sein. Dies kannst du z.B. auf der Konsole prüfen oder mit dem Ubuntu File Browser.
Console:
cd /mnt/MOUNTNAME

ls -la

Im Chia Client kannst du die Plots nun im Menü „Plots“ –> „Add Plot Directory“ hinzufügen.

Statische IP Adresse einstellen

Der Farming Raspi sollte im Netzwerk immer unter der IP Adresse erreichbar sein. Dies erleichtert die Administration. Einstellen kannst du dies im Ubuntu Settings Menü „Settings -> Network -> IPv4“. Siehe Screenshot. Die IP Adresse muss natürlich zu deinem Netzwerk passen.
ama

Screen Sharing – Bildschirmfreigabe mit VNC

In Ubuntu ist die Bildschirmfreigabe mit dem VNC Protokoll integriert. Diese kannst du hier aktivieren „Settings -> Sharing -> Screen Sharing“ aktivieren. Siehe Screenshot:

Als Client kann z.B. der VNC Connect von Real VNC verwendet werden. Leider ist das Screensharing recht buggy. Folgende Probleme mit dem Screen sharing habe ich festgestellt und bislang noch keine Zeit für Lösungen gefunden:

  • Nach einem Neustart des Raspberry geht das hinterlegte Passwort verloren und muss neu eingegeben werden
  • Es muss scheinbar ein Bildschirm und Tastatur angeschlossen sein damit es funktioniert
  • Wird der VNC Connect Client verwendet muss in den Optionen „Bildqualität -> hoch“ gewählt werden. Andernfalls sieht man kein Bild.

Bleibt mir noch zu sagen: Happy Farming!

Chia – Tipps und Tricks

Chia Consolen Anwendung

Viele Aufgaben lassen sich auch ohne GUI auf der Konsole erledigen. Die dazu nötige Executable findest du hier:

Windows:
C:\Users\USERNAME\AppData\Local\chia-blockchain\app-1.2.2
Ein guten Einstieg bietet die Chia Hilfe:
chia.exe -h

Linux:
/usr/lib/chia-blockchain/resources/app.asar.unpacked/daemon
Ein guten Einstieg bietet die Chia Hilfe:
./chia -h

Chia Keys anzeigen

Mit folgendem Befehl kannst du dir deine Chia Adressen anzeigen lassen. Wie du zur Chia.exe kommst siehst du im oberen Punkt.
chia keys show

Ergebnis:

Fingerprint: 12345678
Master public key (m): 12345678
Farmer public key (m/12381/8444/0/0): 12345678
Pool public key (m/12381/8444/1/0): 12345678
First wallet address: 12345678

Blockchain und Wallet auf anderen Computer übertragen

Das Herunterladen der Chia Blockchain dauert mitunter viele Stunden oder gar Tage. Wird nun eine zweite Maschine benötigt, z.B. zum Farmen, ist es Sinnvoll diese Zeit einzusparen. Zum Glück lässt sich die Blockchain und die Wallet von einem Computer auf den anderen übertragen. Dies geht auch zwischen Windows und Linux Systemen. Getestet mit Windows 10 und Ubuntu 20.04.
Dazu must du nur die beiden Verzeichnisse „db“ und „wallet“ kopieren. Du findest sie in folgendem Verzeichnis:

Windows (im User Verzeichnis):
C:\Users\USERNAME\.chia\mainnet

Linux (im User Verzeichnis. Falls die Ubuntu GUI verwendet wird. Strg + H drücken um dir die versteckten Verzeichnisse anzuzeigen):

~/.chia/mainnet

Logfiles anschauen

Chia erstellt standardmäßig Logfiles. Diese sind hilfreich um zu Prüfen ob alles Rund läuft, oder um im Fehlerfall eine schnellere Fehlerbehebung zu ermöglichen. Das Standard Log Level ist WARNING. Dieses kann nach INFO geändert werden um mehr Informationen zu erhalten. Die Konfiguration findet sich hier:

C:\Users\USERNAME\.chia\mainnet\config\config.yaml

Suche hier die Zeile
log_level = WARNING
und ändere sie auf INFO. Anschließend muss der Chia Client neu gestartet werden. Beim editieren der Datei must du Aufpassen die Formatierung nicht zu ändern. Bei dem verwendeten YAML Format ist die Einrückung der Zeilen für die Funktion wichtig!

Sobald Chia neu gestartet ist, solltest du hier das Log File sehen. Chia verwendet Logfile Rotation. d.h. es werden nach einiger Zeit mehrere Logfiles erstellt und das älteste gelöscht.
C:\Users\USERNAME\.chia\mainnet\log\debug.log

Verbindungsprobleme beheben

In der Regel sollte der Chia Client ohne manuelle Einstellungen am Router funktionieren. Sollte es doch einmal Probleme mit der Verbidnung geben, kannst du eine Portweiterleitung von Port 8444 am Router anlegen, die auf deinen Chia Rechner verweist.
Weitere Fehlerquellen die du checken kannst sind die Windows Firewall oder dein Virenscanner.

Im Chia Client kannst du unter „Full Node -> Connections -> Connect to other Peers“ versuchen weitere Peer Adressen hinzuzufügen:

node.chia.net:8444
node-eu.chia.net:8444
node-apne.chia:8444

Energieoption für Festplatte anpassen

Die Chia Blockchain fragt regelmäßig die Challenges für den nächsten Block ab. Dazu werden die Plots auf der Festplatte gescannt und ggf. ein Hashwert geliefert der zu der Challenge passt. Diesem Vorgang steht nur eine gewisse Zeit zur Verfügung. Antwortet das System nicht schnell genug verfällt die Chance die Challenge zu gewinnen. Daher sollten die Festplatten auf denen die Plots liegen immer Laufen um die Zugriffszeit so gering wie möglich zu halten. Unter Windows kann man dies in den Energie Optionen einstellen.

Systemsteuerung 🠖 Hardware und Sound 🠖 Energieoptionen 🠖 Energiesparplan bearbeiten

Chia – Plots Erstellen mit Windows PowerShell

Das Erstellen von Chia Plots kann nicht nur über die Chia GUI erfolgen sondern auch auf der Konsole. Dies hat den Vorteil, das kein Full Node betrieben werden muss und der Overhead der GUI entfällt. Außerdem hast du durch die Konsolenausgabe immer einen guten Überblick darüber, in welcher Phase der Plot Erstellung sich der Prozess gerade befindet. Dieser Artikel zeigt dir wie du ein kleines PowerShell Skript anlegst um Plots zu erzeugen.

Als Basis sollte das Skript im Download dienen, oder du legst es mit einem Texteditor deiner Wahl an, fügst den unten stehenden Startbfehl ein und benennst die Dateiendung in „.ps1″um.

invoke-expression ‘cmd /c start powershell -NoExit -Command {cd „C:\Users\USERNAME\AppData\Local\chia-blockchain\app-1.2.2\resources\app.asar.unpacked\daemon\“;$host.ui.RawUI.WindowTitle = „TITLE„; start-sleep 0 ; .\chia.exe plots create -k 32 -b 4000 -n 999 -r 4 -t C:\PATHTOTEMP -d C:\PATHTOFINALDIR -c POOLNFTADDRESS;Read-Host -Prompt „press enter to exit“}‘

Alle Fett markierten Stellen müssen angepasst werden. Insbesondere der Pfad zur Chia.exe und zu den Temp und finalen Plot Verzeichnis. Hierzu must du deinen Windows Benutzernamen (z.B. über den „Taskmanager -> Benutzer“ zu ermitteln) und deine verwendete Chia Version eintragen.

BENUTZER: Dein Windows Benutzername
app-1.2.2: Deine aktuelle Chia Client Version
host.ui.RawUI.WindowTitle: Hier kannst du einen Titel für das Konsolenfenster vergeben. Dies ist besonders hilfreich wenn mehrere Skripte erstellt werden und diese parallel gestartet werden. Dies ist z.B. nötig wenn verschiedene Temp Verzeichnisse genutzt werden.

Ebenso muss der Pfad zu deinem temporären Verzeichnis und zu dem Verzeichnis wo die finalen Plots hin kopiert werden sollen eingetragen werden.

Bei dem -c Parameter trägst du deine Pool NFT Adresse ein. Wie du einem Pool bei tritts wird in diesem Tutorial erklärt. Ebenso wie du deine Pool NFT Adresse ausliest.

Parameter:

  • -k : Plot Format. k32 im Beispiel
  • -b : Maximaler RAM Verbrauch. 4000MB im Beispiel
  • -n : Anzahl zu erstellender Plots. 999 im Beispiel
  • -r : Anzahl der CPU Threads. 4 Gleichzeitig im Beispiel. Nur die erste Phase der Ploterstellung nutzt mehrere Threads. Daher ist es bei der parallelen Erstellung von Plots sinnvoll die Vorgänge etwas zeitlich zu versetzen um die CPU dauerhaft maximal auszulasten
  • -t : Pfad zum Temp Verzeichnis
  • -d : Pfad zum Zielverzeichnis für fertige Plots
  • -c : P2 singleton address (pool contract address for plotting)

Die Parameter kannst du an deine Hardware anpassen. Sie sind aber eine ganz gute Orientierung zum Starten. Eine Übersicht über alle Parameter findet ihr hier. Zum Starten des Plot Vorgangs machst du einfach einen Rechtsklick auf die Skript Datei und wählst „Mit PowerShell ausführen“. Auch das Parallele Erstellen mehrerer Plots gleichzeitig ist möglich, indem du das Skript mehrfach startest. Achte hier auf deinen RAM Verbrauch und die zur Verfügung stehenden CPU Threads.

Chia Pool Farming

Mit der Version 1.2 des Chia Clients ist es nun möglich poolfähige Plots zu erstellen. Hier die Kursfassung wie du einem Chia Pool am Beispiel von XCH Pool beitritts und Plots erstellst:

  1. Download der neusten poolfähigen Chia Client Version (1.2 aufwärts)
  2. Um einen Contract für den Pool zu erstellen brauchst du ein wenig Chia Guthaben. Du kannst dir auf https://faucet.chia.net/ oder auf https://xchfaucet.togatech.org ein paar Mojo auf deine Wallet übertragen lassen.
  3. Damit das Guthaben in deiner Wallet angezeigt und verwendet werden kann muss diese synchronisiert sein.
  4. Danach muss ein Pool NFT erstellt werden. Dies geht mit dem Befehl:
    chia plotnft create -u https://pool.xchpool.org -s pool
    Der Befehl muss auf der Commandozeile (CMD) im „daemon“ Verzeichnis deines Chia Clients ausgeführt werden
    C:\Users\[USERNAME]\AppData\Local\chia-blockchain\[APP VERSION z.B.: app-1.1.6]\resources\app.asar.unpacked\daemon
  5. Überprüfen des Plot NFT mit dem Befehl:
    chia plotnft show
    Merken solltest du hier die „Launcher ID“ und der „P2 singleton address (pool contract address for plotting)“
  6. Auf der Webseite https://explorer.xchpool.org/membersearch kannst du mit deiner Launcher ID überprüfen ob dein Client im Pool registriert ist.
  7. Die Chia Version erlaubt das Erstellen poolfähiger Plots indem der Parameter -c oder –pool_contract_address verwendet wird. Die Pool Contract Address hast du mit dem „chia plotnft show“ ausgelesen.
    chia plots create -c POOL_CONTRACT_ADDRESS

In der Chia Gui siehst du unter dem Menüpunkt „Pool“ wie viele Plots du einsetzt und wie viele Punkte du erworben hast: