Duinocoin-Mining mit ESP8266

Ohne PC: So schürft man Duinocoin (DUCO) auf einem ESP8266 (ESP-01 & ESP-01s)

Der Duinocoin (DUCO) lässt sich nicht nur auf dem Arduino UNO, sondern auch auf diversen Espressif ESP8266-Boards schürfen. Dank integriertem WLAN benötigen die Boards lediglich eine Stromversorgung und einen Zugang zu einem WiFi-AccessPoint, aber keinen PC als Brückenrechner.

Die wohl günstigste Möglichkeit, Duinocoin (DOCU) zu schürfen ist ein ESP8266-basierter Mikrocontroller. Einmal programmiert benötigt ein ESP8266 Dank integriertem WLAN nur noch eine 3.3V-Spannungsversorgung - und er läuft.

Übersicht

Um mit einem ESP8266 (auch ESP01 und ESP01s) den Duinocoin (DUCO) zu schürfen benötigt man folgendes:

  1. eine Duinocoin-Wallet (Online-Account)
  2. einen Rechner mit Windows, GNU/Linux oder Mac OS X und Python 3.x
  3. eine funktionierende Arduino IDE samt der ESP8266-Bibliotheken
  4. die Duinocoin-Software (von Github)
  5. eine 3.3 Volt-Spannungsversorgung und WLAN

Die Vorbereitungen können in rund einer halben Stunde erledigt sein. Mit diesem Setup und einem einzigen ESP8266 kann man anschließend pro Tag rund 4-8 DUCO schürfen.

Was unterscheidet einen ESP8266 von einem Arduino UNO?

Der ESP8266 ist deutlich kleiner und günstiger als ein originaler Arduino UNO und Arduino-Clone. Selbst preiswerte Arduino Pro Mini (ohne USB-Port) sind in Deutschland kaum unter 5 Euro zu bekommen - den ESP-01 hingegen gibt es ab etwa 1,90 Euro pro Stück.

ESP8266

Der ESP8266 ist wesentlich schneller als der ATMEGA328P des Arduino UNO. Ein ESP8266 läuft mit 80 oder 160 MHz, ist also fünf- bis zehnmal höher getaktet als der mit 16 MHz laufende ATMEGA328P des Arduino UNO. In der Rechenleistung schlägt ein ESP8266 den ATMEGA328P beim DUCO-S1-Algorithmus sogar noch deutlicher um den Faktor 37: 10 kH/s beim ESP8266 gegenüber 268 H/s beim ATMEGA328P.

Da der Duinocoin das Kolka-System benutzt, um langsame Systeme höher zu belohnen als schnelle Systeme, bleibt von dem Mehr an Geschwindigkeit in der DUCO-Wallet leider nichts übrig. Der Arduino UNO schafft rund 8 DUCO pro Tag, ein ESP8266 erzeugt weniger DUCO: im Durchschnitt nur 6-7 pro Tag.

Einen Vorteil haben ESP8266-Boards gegenüber dem Arduino UNO und Konsorten trotzdem, denn sie benötigen kein AVR_Miner.py, das auf einem PC läuft und zwischen den Arduino UNO und den DUCO-Servern vermittelt. Die ESP8266 bringen die gesamte Kommunikationssoftware mit und verbinden sich selbständig per WLAN mit den DUCO-Servern. Zum Betrieb eines ESP8266 reicht also eine 3,3V-Spannungsversorgung (oder 5V via USB) aus, und die könnte aus einer mit einer Powerbank kombinierten Solarzelle kommen.

Übrigens: Was unterscheidet einen ESP-01 von einem ESP-01s? Der ESP-01 ist die ältere Version und wird meistens auf einer schwarzen Platine ausgeliefert, der ESP-01s oft auf einer blauen - aber ich habe auch ESP-01s auf schwarzen Platinen. Der ESP-01 hat 512 kByte Flash, der ESP-01s hingegen 1 MByte. Ein ESP-01 hat eine rote Power-LED und eine blaue auf TX, der ESP-01s hat keine Power-LED und eine blaue LED auf GPIO2 (low = on!). In der Praxis fallen weitere Unterschiede auf, beispielsweise im Handling des deep-sleep-mode. Ich persönlich habe bei Projekten mit dem ESP-01 etwas weniger Probleme und kann meistens auf den zusätzlichen Flash-Speicher des ESP-01s verzichten.

1. Duinocoin-Wallet auf der Projektseite anlegen

Um die geschürften Duinocoin (DUCO) irgendwo speichern zu können benötigt man eine Wallet. Die wird beim Duinocoin online verwaltet. Die neue Wallet legt man auf https://wallet.duinocoin.com/register.html an.

Neue Wallet anlegen

Auf wallet.duinocoin.com legt man eine neue Wallet (einen neuen Account) an

2. Rechner mit Windows, GNU/Linux oder Mac OS X und Python 3.x

Die minimale Mining-Software für den PC benötigt lediglich einen Python3-Interpreter. Ob Python 3 vorhanden ist, prüft man so:

  • GNU/Linux: Terminal öffnen via Ctrl-Alt-T (notfalls per Strg-Alt-F2, zurück mit Strg-Alt-F7)
  • Windows: Powershell öffnen via Win+R und "powershell"
  • Mac OS: Finder > Applications > Utilities > Terminal

An der Eingabeaufforderung (Prompt) gibt man folgendes ein:

python --version

Wichtig sind die zwei Minuszeichen (außer bei Mac OS X). Wird "python" nicht gefunden, kann man "python3 -- version" versuchen, dann ist die Version hardcodiert. Das Ergebnis sollte in etwa so aussehen:

mipl@z600:~$ python3 --version
    Python 3.9.2

Auf diesem Rechner (einer HP Z600-Workstation mit dem von systemd befreiten Devuan GNU/Linux 3.0 "Chimaera" läuft offensichtlich Python 3.9.2.

Wie man Python3 auf seinem Rechner installiert wird ausführlich unter Python3 auf dem GNU/Linux-PC installieren beschrieben.

3. Arduino IDE (Entwicklungsumgebung) und ESP8266-Bibliotheken installieren

Um die Mining-Software auf einen ESP8266-Mikrocontroller zu programmieren ist der Weg über die Arduino IDE (Entwicklungsumgebung) am einfachsten. Die freie und quelloffene Software wird vom Arduino-Projekt als kostenloser Download für Windows, GNU/Linux und Mac OS X angeboten.

In einem ausführlichen Artikel zeige ich, wie man die Arduino IDE installiert. Wer es komfortabler haben will, installiert die Arduino IDE im "portable mode" und erleichtert so seine Backups und den Wechsel zwischen unterschiedlichen Mikrocontroller-Architekturen. Ein dritter Artikel gibt Tipps für die ersten Schritte nach der Installation der Arduino IDE.

Tipp: Sollte es auf GNU/Linux-Rechnern zu Problemen beim Zugriff auf den ESP8266 via USB kommen, muss man die Zugriffsrechte auf Gerätedateien (serielle Ports, USB) unter GNU/Linux anpassen.

ESP8266-Bibliotheken installieren

Die Arduino IDE ist logischerweise auf AVR-Mikrocontroller wie den Arduino UNO und seine Verwandten ausgerichtet. Glücklicherweise lässt sie sich leicht erweitern. Um ESP8266-Boards programmieren zu können, muss man dem Boardverwalter (Board-Manager) einen Link zu einer von Espressif bereitgestellten JSON-Datei übergeben:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Diese URL trägt man in der Arduino IDE unter "Datei / Voreinstellungen" in "Zusätzliche Boardverwalter-URLs:" ein. Dazu klickt man am besten auf das kleine Fenster-Symbol rechts von der Eingabezeile. Es öffnet sich ein Mini-Editor, in den man je Zeile eine Boardverwalter-URL eintragen kann.

Arduino IDE 1.8.19

Über zusätzliche Boardverwalter-URLS kann die Arduino IDE auch ESP8266 oder andere Mikrocontroller programmieren

Wer neben dem ESP8266 auch den ESP32 benutzt gibt dort also die folgenden zwei Zeilen ein:

http://arduino.esp8266.com/stable/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json

Ein Klick auf "Ok" in beiden Dialogen übernimmt die Änderungen.

Nun öffnet man den Boardverwalter und sucht dort mit der Typ-Einstellung "Alle" nach "ESP". Nach wenigen Sekunden erscheinen dort die beiden Einträge "esp32 - by Espressif Systems" und "esp8266 - by ESP8266 Community", die man beide installiert.

Arduino IDE 1.8.19

Im Boardverwalter installiert und aktualisiert man die originalen und zusätzlich Board-Definitionen

Nun können ESP8266- und ESP32-Boards mit der Arduino IDE programmiert werden. Ein Neustart der IDE ist nicht notwendig... schadet aber auch nicht.

4. Die Duinocoin-Software

Die offizielle Standard-Software für das Duinocoin-Mining mit einzelnen Mikrocontrollern (keine "Rigs") stellt das Projekt als Quellcode bereit. Die aktuelle Version gibt es immer auf Github.

Github Repo von revox

Das Duinocoin-Repository von revox auf Github

Über "Code / Download ZIP" wird das ZIP-Archiv mit dem aktuellen Duinocoin-Code heruntergeladen und anschließend ausgepackt.

Die Kommunikation und das Mining finden auf dem ESP8266 statt, daher benötigt er die entsprechende Software. Die kann man direkt aus dem Quellcode im ESP8266_Code-Verzeichnis erzeugen und wie jedes andere Projekt (Sketch) auf den ESP8266-Mikrocontroller hochladen.

Achtung: Im Gegensatz zum Arduino UNO-Sketch muss man beim ESP8266-Sketch Anpassungen vornehmen: Zumindest die WLAN-SSID, das WLAN-Passwort und der Name für die Duinocoin-Wallet/Account müssen korrekt gesetzt sein!
const char* SSID     = "MyWLAN";      // WLAN-SSID
const char* PASSWORD = "MyPASS";      // WLAN-Passwort
const char* USERNAME = "ElJalapeno";  // Wallet-Name
const char* MINER_KEY= "geheim";      // Miner-Key, optional

Ganz wichtig:

Achtung! Nicht vergessen, das Board unter "Werkzeuge / Boards" und "ESP8266" auf "Generic ESP8266" umzustellen!

Zusätzliche Headerfiles installieren

Beim Compilieren kommt es nun zu Fehlermeldungen, weil einige Header-Dateien nicht gefunden werden können.

  • ArduinoJson ab 6.18.3 von Benoit Blenchon (und nicht Arduino_JSON!!) muss über die Bibliothekverwaltung nachinstalliert werden.
  • Kommt es zu einem Fehler bei bearssl/bearssl.h wurde vergessen, die ArduinoBearSSL-Bibliothek über die Bibliothekverwaltung zu installieren.
  • Es kann auch sein, dass die Mikrocontroller-Boards in der Arduino IDE aktualisiert werden müssen, siehe hier unter Punkt 2.
Mining mit einem ESP8266

Mining mit einem ESP8266 (ESP01), mitverfolgt im seriellen Monitor der Arduino IDE.

Happy Mining! :)