Blockchain: Mit Raspberry Pi Ethereum entdecken

| Autor / Redakteur: Andrew Back * / Margit Kuther

Ethereum: entdecken mit Raspberry Pi
Ethereum: entdecken mit Raspberry Pi (Bild: Raspberry Pi / Ethereum)

Etherium bietet mehr als Kryptowährungen und die Absicherung von Transaktionen. Sie stellt eine verteilte Datenverarbeitungs-Plattform bereit. Dieser Beitrag zeigt, wie Sie einen Ethereum-Blockchain-Client auf einem Raspberry Pi 3B installieren und ausführen.

Blockchain ist noch immer ein unglaublich heißes Thema, was nicht zuletzt darauf zurückzuführen ist, dass Kriptowährungen – insbesondere Bitcoin – scheinbar über Nacht für frühe Nutzer generiert haben. Ein anderer Aspekt sind die neuen wirtschaftlichen Möglichkeiten, die sich durch Kryptowährungen eröffnen.

Blockchain kann aber für bedeutend mehr als Kryptowährungen verwendet werden. Das Blockchain-Konzept eignet sich aufgrund seines komplexen, verteilten Gebildes sowie der Fähigkeit zum Verifizieren von Transaktion für fälschungssichere Datensätze auch für IoT-Anwendungen. Das Interessante an der Ethereum-Plattform ist, dass sie über Kryptowährungen und die Absicherung von Transaktionen hinausgeht und eine verteilte Datenverarbeitungsplattform bereitstellt.

In diesem Beitrag werfen wir einen kurzen Blick auf die Ethereum-Architektur und versuchen, einige der wesentlichen Konzepte und Komponenten zu erläutern, bevor wir uns mit der Installation der Client-Software auf einem Raspberry Pi befassen. Nur zur Klarstellung: Wir decken hier nicht das Mining von Kryptowährungen ab, da hierfür eine wirklich leistungsstarke GPU benötigt wird, aber ein Raspberry Pi kann für die Erstellung einer einfachen Sandbox für Versuche verwendet werden – und das beweist, dass es tatsächlich möglich ist, Blockchain-Technologie mit integrierten Plattformen bereitzustellen.

Ethereum 101

Eine Blockchain ist ein Distributed Ledger (verteiltes Hauptbuch), das in der Regel über ein Peer-to-Peer-Netzwerk verwaltet wird und immer weiter wächst, wenn weitere Datensätze – oder Blocks – sukzessive hinzugefügt werden. Blocks enthalten für gewöhnlich einen Zeitstempel sowie Transaktionsdaten und sind mittels Hashing-Algorithmen kryptographisch gesichert. Das heißt, dass Daten nach der Übergabe nicht mehr verändert werden können – sie sind unveränderbar.

Ether ist die Kryptowährung von Etherium

Die Ethereum-Plattform hat ihre eigene Kryptowährung, genannt Ether, baut aber auch weiter auf Blockchain-Technologie auf, um eine dezentralisierte Plattform für Smart Contracts zu schaffen. Bei Smart Contracts handelt es sich um Objekte, die Code-Funktionen enthalten und auf der Blockchain aufsetzen. Sie sind in der Lage, mit anderen Verträgen zu interagieren, Entscheidungen zu treffen, Daten zu speichern und anderen Ether zu senden.

Smart Contracts werden in einer Sprache namens Solidity implementiert, die auf JavaScript basiert. Der Solidity-Compiler wird zum Kompilieren von Smart Contracts zu Bytecode verwendet – genau wie dies bei JavaScript oder beispielsweise Python-, Java- und Android-Code vor der Ausführung der Fall ist – und dieser wird dann über die Ethereum Virtual Machine (EVM) ausgeführt. Die Ausführung von Transaktionen in einem Smart Contract ist mit Kosten verbunden. Doch dieses ist nicht Thema unseres Beitrags.

Es sind verschiedene Client-Anwendungen für Ethereum verfügbar, wobei die Originalreferenzimplementierung geth in Go geschrieben ist. Einige sind zum Mining von Ether imstande und es gibt auch eine Standalone-Mining-Software sowie GUI-Clients und eine IDE für verteilte Anwendungen.

Neben dem primären, öffentlichen Ethereum-Blockchain-Netzwerk mainnet gibt es Testnetzwerke für Versuche und Sie können auch Ihre eigenen privaten Netzwerke erstellen.

Das Einmaleins zu Ethereum

In der Annahme, dass Raspbian bereits installiert ist, können wir zunächst mit der Aktualisierung der installierten Softwarepakete auf die neuesten Versionen beginnen (Bild 1 der Bildergalerie).

$ sudo apt-get update

$ sudo apt-get dist-upgrade

Bei meinem ersten Versuch den Ethereum-Client zu kompilieren, war nicht ausreichend Arbeitsspeicher verfügbar. Eine gute Möglichkeit, RAM für speicherintensive Aufgaben freizumachen, besteht darin, den der GPU zugeordneten Speicher zu reduzieren. Wenn Sie nicht unbedingt einen grafischen Desktop benötigen, können Sie Ihr System auch so konfigurieren, dass es beim Booten einfach die Befehlszeile öffnet.

$ sudo raspi-config

  • 3 → Booten
  • B1 → Desktop/CLI
  • B1 → Konsole
  • 7 → Erweitert
  • A3 → Speicherverteilung
  • 16 (MB)
  • Neu booten

Danach können wir die gebündelten Abhängigkeiten installieren.

$ sudo apt-get install git golang libgmp3-dev

Anschließend nehmen wir die Quellen für geth, die offizielle Go-Sprachimplementierung eines Ethereum-Knotens, kompilieren diese und kopieren die ausführbaren Dateien unter den Pfad /usr/local/bin/.

$ mkdir src

$ cd src

$ git clone -b release/1.7 https://github.com/ethereum/go-ethereum.git

$ cd go-ethereum

$ make

$ sudo cp build/bin/geth /usr/local/bin/

Kontoerstellung und Test

Zunächst verwenden wir geth zur Erstellung eines neuen Kontos (Bild 2 der Bildergalerie):

$ geth account new

Dadurch wird ein neuer Satz kryptographischer Schlüssel generiert und der private Schlüssel wird mit einem Passwort geschützt. Beachten Sie, dass es sich bei Verwendung dieses Kontos für das Mining von Kryptowährung und bedeutungsvolle Transaktionen empfiehlt, Ihre Schlüssel zu sichern und den Zugriff auf Ihren privaten Schlüssel zu verhindern.

Nun starten wir den Knoten (Bild 3):

$ geth --syncmode light --cache 64 --maxpeers 12

Bei Ausführung von geth ohne Argumente wird ein Knoten gestartet und es wird versucht, die gesamte öffentliche Mainnet-Blockchain zu synchronisieren. Angesichts der Größe von > 50 GB, die zudem auch noch beständig zunimmt, ist dies auf einem Embedded Computer keine so gute Idee. Stattdessen starten wir den Knoten im Synchronisierungsmodus Leicht. So werden nur Block-Header abgerufen, wie sie erscheinen, und andere Teile der Blockchain auf Anforderung.

Um das Beenden des Knotens zu erzwingen, drücken Sie einfach STRG+C. Zum Ausführen als Service beim Booten:

$ sudo vi /etc/systemd/system/geth@.service

Sie können „vi“ auch durch Ihren bevorzugten Texteditor ersetzen. Geben Sie dann folgendes ein:

[Unit]

Description=Ethereum daemon

Requires=network.target

[Service]

Type=simple

User=%I

ExecStart=/usr/local/bin/geth --syncmode light --cache 64 --maxpeers 12

Restart=on-failure

[Install]

WantedBy=multi-user.target

Speichern Sie die Datei. Zum Ausführen des Ethereum-Knotens als „pi“-Benutzer:

$ sudo systemctl enable geth@pi.service

$ sudo systemctl start geth@pi.service

Bei Ausführung unseres Ethereum-Knotens als Service ist ein Anfügen wie folgt möglich:

$ geth attach

Dadurch erhalten wir eine interaktive JavaScript-Konsole. Von hier aus können wir Funktionen aufrufen wie:

> eth.accounts

Damit werden die aktuellen Konten aufgelistet (Bild 4).

Zum Abrufen von Informationen zu den verbundenen Peers (Bild 5):

> admin.peers

Beachten Sie, dass das Light-Client-Protokoll sich noch in der Entwicklung befindet, in gewisser Weise experimentell ist und auf Unterstützung durch vollständige Peers/Knoten angewiesen ist. Demnach ist es womöglich nicht besonders praktisch, es zum Zeitpunkt des Schreibens für Transaktionen auf der Ethereum-Mainnet-Blockchain zu verwenden. Die Dinge entwickeln sich aber schnell und die Situation könnte sich in nicht allzu ferner Zukunft auch leicht ändern.

Kleinster Computer der Welt für 10 Cent

Kleinster Computer der Welt für 10 Cent

27.03.18 - Kleiner als ein Salzkorn ist das System-on-a-Chip, das Teil von IBMs ‘Krypto-Anker’-Entwicklung ist. Dabei handelt es sich um manipulationssichere digitale Fingerabdrücke. Einsatzgebiete sind zum Beispiel die lückenlose Rückverfolgbarkeit von Waren. lesen

* Andrew Back ist Freelance Consultant | AB Open und Autor auf der Community Designspark von RS Components

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45321136 / Raspberry & Co.)