ESP32 Hardware Wallet

Am 17 August 2019 vermeldete die IF in ihrem offiziellen Blog, die erfolgreiche Wallet Implementierung in einem ESP32 SoC (System-on-Chip), ich beschreibe im folgenden worum es dabei geht und warum das großartige Nachrichten sind. Es bedeutet nämlich, dass alle Geräte die ein solches ESP32 SoC verbaut haben, die Möglichkeit bekommen mit dem IOTA-Tangle zu kommunizieren.

Sam Chen, der IF Senior Softwareentwickler hat sich das ESP32 SoC von dem Hersteller Espressif ausgesucht, um darauf eine IOTA-Wallet zu implementieren, durch seine integrierten drahtlosen Verbindungen ist dieses SoC ein guter Kandidat dafür. Basierend auf der Veröffentlichung von CClient v1.0.0-beta ist ihm diese Implementierung jetzt gelungen.

Was bedeutet CClient?

Client-Bibliotheken beinhalten in der Regel funktionsfähige Codebeispiele und Installationsanleitung mit denen ein Softwareentwickler beginnen kann, seine eigenen Softwareanwendungen zu entwickeln. Aufgrund der Tatsache, dass die meisten vorhandenen Client-Bibliotheken in höheren Programmiersprachen geschrieben sind, hat sich die IF, speziell für die IOTA Technologie eine eigene CClient-Bibliothek aufgebaut. Höheren Programmiersprachen haben den Nachteil, dass Befehle nicht unmittelbar von Mikroprozessoren verarbeitet werden können, stattdessen müssen sie mithilfe von Interpretern oder Compilern in Maschinensprache übersetzt werden, oftmals sind bei der Befehlsausführung zudem noch Betriebssysteme dazwischengeschaltet. IOTA ist für das IoT konzipiert, daher müssen viele unterschiedliche kleine eingebettete Geräte mit geringem Stromverbrauch unterstützt werden, höhere Programmiersprachen sind mit ihren erhöhten Hardwareanforderungen daher völlig ungeeignet.

Die Programmiersprache C unterstützt bereits heute viele potenzielle Anwendungen und ist der kleinste gemeinsamen Nenner um kleine eingebettete Geräte im IoT-Ökosystemen mit dem IOTA Tangle kommunizieren zu lassen. Den zukünftigen Entwicklern wird mit der von der IF aufgebauten speziellen CClient-Bibliothek ein Werkzeug an die Hand gegeben, mit welchem sie ihre eigenen Softwareanwendungen deutlich schneller entwickeln können.

Was ist das ESP32 SoC (System on Chip)?

ESP32 ist eine ganze Produktfamilie von unterschiedlich konfigurierten SoC (Datasheet), ein solches SoC vereint die meisten oder sogar allen Funktionen eines Systems wie Grafikkarte, Arbeitsspeicher etc. auf einem einzelnen Chip. Solche Chips ermöglichen extrem kleine und energieeffiziente Systeme, wie geschaffen für das IoT und IOTA. Mit dem Chip alleine kann man allerdings wenig anfangen, daher gibt es von Espressif unterschiedlich konfigurierte Development Boards (siehe Bild), um direkt externe Komponenten wie beispielsweise eine Antenne, einen Micro-SD-Kartenslot oder etwa einen Micro-USB-Anschluss für die Stromversorgung anschließen zu können. (Akkubetriebene Varianten gibt es auch)

Quelle: blog.iota.org

Espressif bewirbt die ESP32 Produktfamilie mit folgenden Eigenschaften:

  • Robustes Design: ESP32 ist in der Lage, in industriellen Umgebungen mit einer Betriebstemperatur von –40 ° C bis + 125 ° C zuverlässig zu funktionieren. Der ESP32 wird von fortschrittlichen Kalibrierungsschaltkreisen angetrieben und kann Fehler in externen Schaltkreisen dynamisch beseitigen und sich an Änderungen der externen Bedingungen anpassen.
  • Ultra-Low-Stromverbrauch: Der ESP32 wurde für mobile Geräte, tragbare Elektronik und IoT-Anwendungen entwickelt und erreicht mit einer Kombination verschiedener proprietärer Softwaretypen einen äußerst geringen Stromverbrauch. Der ESP32 enthält außerdem hochmoderne Funktionen wie feinkörniges Clock-Gating, verschiedene Leistungsmodi und dynamische Leistungsskalierung. Je nach Konfiguration läuft der ESP32 mit ca. 2,5 bis 3,6 V, dies ermöglicht einen Anschluss über USB oder ein Batteriebetrieb.
  • Hoher Integrationsgrad: ESP32 ist mit integrierten Antennenschaltern, HF-Balun, Leistungsverstärker, rauscharmen Empfangsverstärkern, Filtern und Power-Management-Modulen hochintegriert. ESP32 erweitert Ihre Anwendungen um unbezahlbare Funktionalität und Vielseitigkeit mit minimalen Anforderungen an Leiterplatten.
  • Schnittstellen: Der ESP32 kann über seine diversen Schnittstellen wie SPI, I2C, ART oder CAN per Wi-Fi-, Bluetooth und Ethernet mit anderen Systemen verbunden werden. Als analoge Schnittstellen sind Analog-Digital-Umsetzer und Digital-Analog-Umsetzer für die Verarbeitung analoger Signale und eingebaute Sensoren, wie ein integrierter Hall-Sensor zur Messung der magnetischen Flussdichte, vorgesehen.
  • Systemeigenschaften: Der ESP32 kann als vollständiges eigenständiges System oder als Slave-Gerät für eine Host-MCU ausgeführt werden, wodurch der Kommunikationsstapel-Overhead auf dem Hauptanwendungsprozessor verringert wird. Intern besitzt der ESP32 eine kryptografische Einheit zur hardwareunterstützten Beschleunigung von Verschlüsselungsverfahren wie dem Advanced Encryption Standard (AES) und einen Coprozessor mit niedrigem Stromverbrauch, welcher neben einer Echtzeituhr auch die Abfrage von Sensordaten im Bereitschaftsbetrieb erlaubt.

Für den verwendeten Versuchsaufbau, kann dem offiziellen IOTA Blog folgende Konfiguration des ESP32 entnommen werden:

  • ein 32bit SoC basierend auf dem Xtensa LX6
  • es kann mit 160 oder 240 MHz und einer Speichergröße von 512 KB betrieben werden.
  • es bietet zwei Entwicklungs-Frameworks: arduino-esp32 und esp-idf, auch wenn beide gut sind, bevorzuge Sam Chen das esp-idf als Entwicklungsframework, da es bereits im ESP32 enthalten ist.

Die IOTA ESP32 Wallet Architektur besteht aus drei Teilen:

  • Hardware: die Xtensa LX6-Prozesse und Peripheriegeräte
  • FreeRTOS: Echtzeit-System-, Netzwerk- und HAL-Unterstützung (siehe Schnittstellen)
  • Wallet-Anwendung: IOTA CClient-Bibliothek, SNTP-Client und Konsolendienst.

Hinweis für Entwickler: Die Systemzeit wird bei jedem Neustart zurückgesetzt, daher muss der richtigen Zeitstempel über den SNTP-Client abgefragt werden. Mit dem Konsolendienst kann über das Terminal mit dem IRI-Knoten interagieren werden.

Quelle: blog.iota.org: IOTA ESP32 Wallet-Blockdiagramm

Einsatzmöglichkeiten des ESP32

Wenn man kein Nerd ist, fragt man sich natürlich: Was kann man denn nun mit dem ESP32 anfangen?

Die Möglichkeiten sind praktisch unbegrenzt, überall dort wo smarte Steuerungen theoretisch Sinn ergeben würden, könnte ein ESP32 basierendes Board eine kostengünstige und effiziente Lösung sein. Beispielsweise Spracherkennung, Mesh-Netzwerke, Überwachungskameras, Smart Home Anwendungen, smarte Überwachung, Internet-Radio Streaming-Clients, mobile E-Health Produkte, Smartwatches, Service-Roboter und im Bereich der Industrie 4.0 können für sämtliche Abfragen Sensoren betrieben werden.

Und jetzt stellen sie sich all diese Einsatzmöglichkeiten mit einer integrierten IOTA-Wallet vor, es ergeben sich unzählige völlig neue Geschäftsmöglichkeiten und das Beste daran ist, diese sind jetzt praktisch umsetzbar und nicht länger ein Hirngespinst von irgendwelchen Nerds.

Weiterführende Links:

Bei einfachIOTA.de gibt es eine Schritt für Schritt Anleitung, um seine eigene Hardware Wallet zu erstellen: IOTA Machine Wallet auf einem ESP32

Hier gibt es ein Demovideo zur Wallet: IOTA ESP32 Wallet

Die neusten Datensätze gibt es im GitHub: Link

Quellen

https://blog.iota.org/iota-esp32-wallet-1b12b45d8a5
https://www.espressif.com/en/products/hardware/esp32/overview