Einstieg in die Blockchain bei AWS mit Hyberledger Fabric und Geth
Wer in die Blockchain-Technologie einsteigen will und eigene Blockchain-Lösungen entwickeln und betreiben möchte, kann auch auf Cloud-Lösungen setzen. Der Vorteil dabei ist, dass die Lösung keine eigene Hardware benötigt und schnell skalierbar ist.
Dazu kommt der einfachere und sichere Zugriff von Teilnehmern an der Blockchain, da die Anbindung an Cloud-Lösungen wesentlich einfacher ist, als das Öffnen der eigenen Firewall im lokalen Netzwerk.
Gleichzeitig belastet eine Cloud-Lösung nicht die eigene Internetleitung und andere Ressourcen in der Cloud. Unter anderem lassen sich Daten von Sensoren oder andere Informationen einfacher anbinden. Smartphone und Tablets sind ebenfalls schneller angebunden als an lokale Netzwerke.
In Cloud-Lösungen können auch mehrere Blockchains parallel zum Einsatz kommen. Das geht zwar auch in lokalen Rechenzentren, erfordert dann aber noch mehr Investitionen, Aufwand und auch Energiekosten. Natürlich verursachen auch Blockchain-Nodes in der Cloud Kosten für die Bereitstellung.
Am Beispiel von AWS finden Entwickler und Unternehmen auf der Seite „Amazon Managed Blockchain Pricing“, mit welchen Kosten zu rechnen ist. Der Einstieg der eigenen Blockchain über AWS ist sehr einfach.
Neben dem Betrieb der eigenen Blockchain auf Basis von Hyperledger Fabric, können in der AWS-Cloud auch Knoten für die Blockchain von Ethereum erstellt und gebucht werden.
Ethereum-Nodes in der Amazon-Cloud betreiben
Mit Amazon Managed Blockchain ist es aber nicht nur möglich, eine eigene Blockchain zu erstellen. Auch der Betrieb von vollwertigen Nodes für bereits vorhandene, öffentliche Blockchains ist denkbar. Dadurch können zum Beispiel Staking oder auch Mining in die Cloud ausgelagert werden.
Aktuell unterstützt Amazon Managed Blockchain allerdings nur den Beitritt in die Ethereum-Blockchain. Für erste Tests der AWS-Cloud ist es problemlos möglich, ein eigenes Konto zu erstellen. Das Erstellen eines neuen Geth-Nodes für Ethereum dauert in der Managementkonsole von AWS wenige Minuten.
Bis sich der Knoten an der Blockchain angemeldet und sich synchronisiert hat, können natürlich noch 30 Minuten bis mehrere Stunden vergehen. Der Betrieb eines eigenen Ethereum-Nodes auf Basis von Geth ist in AWS absolut kein Problem.
Die Erstellung eines Kontos bei AWS ist vollkommen kostenlos, und es stehen auch verschiedene Dienste in AWS, zumindest teilweise, kostenlos zur Verfügung. Über AWS Free Tier stehen fast 90 Clouddienste kostenlos zur Verfügung, nicht nur VMs.
Dazu gehören allerdings nicht die Blockchain-Dienste. Das ändert aber nichts daran, dass sich auf diesem Weg die Möglichkeiten der AWS-Cloud auch kostenlos testen lassen. Die Erstellung eines Ethereum-Nodes mit Geth in AWS kostet zunächst auch nichts. Nur für den Betrieb fallen natürlich Kosten an.
Hyperledger Fabric in der Amazon-Cloud betreiben
Amazon bietet dazu auf seiner Cloud-Plattform den Dienst Amazon Managed Blockchain an. Wir haben uns im Beitrag „Einstieg in verwaltete Blockchains auf AWS“ die Möglichkeiten näher angeschaut.
Im folgenden Beitrag zeigen wir die Praxis und Möglichkeiten des Dienstes ausführlicher und gehen auch darauf ein, wie eine eigene Blockchain in AWS auf Basis von Hyperledger Fabric eingerichtet wird. Wir zeigen nachfolgend auch, wie ein Ethereum-Node in AWS bereitgestellt wird.
Amazon Managed Blockchain ermöglicht die Erstellung einer Blockchain auf Basis von Hyperledger Fabric und auf Basis von Ethereum. Im Fokus stehen also dApps und Smart Contracts.
Wer einen eigenen Ethereum-Full-Node betreiben will, sollte sich die Möglichkeiten des Geth-Nodes genauer anschauen. Er ist schnell installiert, skalierbar und steht über die Cloud natürlich auch zuverlässig zur Verfügung.
Praxis: Der eigene Node für Ethereum mit Geth in AWS
Um einen eigenen Node für Ethereum mit Geth in AWS zu betreiben, ist zunächst eine Anmeldung an der AWS Management Console notwendig. Die Schritte bis an dieser Stelle sind vollkommen kostenlos.
Nach der Anmeldung an der AWS Management Console stehen alle Dienste in AWS zur Verfügung, die kostenlosen und auch die kostenpflichtigen Dienste. Dazu gehören zum Beispiel auch Funktionen für KI/ML, IoT und Analysefunktionen, die optimal mit Blockchains zusammenarbeiten.
Um sich einen Überblick zu den Möglichkeiten der Blockchain in AWS zu verschaffen, reicht es aus, im Suchfeld der Managementkonsole nach „Blockchain“ zu suchen.
Neben „Amazon Managed Blockchain“ sind hier auch Dienste von Drittanbietern zu finden, unter anderem auch ein Ethereum-Node auf Basis von Geth.
Dieser kann kostenlos getestet werden, kostet im produktiven Betrieb 0,17 US-Dollar/Stunde. AWS ermöglicht zudem, einen Geth-Node direkt von Amazon zu beziehen.
In den meisten Fällen ist der Betrieb direkt in AWS der bessere Weg, auch was Verfügbarkeit und Support betreffen.
In den Suchergebnissen erscheinen auch verschiedene Tutorials und Dokumentationen, wie Geth-Nodes und Blockchains auf Basis von Hyperledger Fabric in AWS genutzt werden können.
Nach dem Aufrufen von Amazon Managed Blockchain stehen zunächst die Optionen für die Erstellung eines privaten Blockchain-Netzwerks und dem Beitreten zur Ethereum-Blockchain zur Verfügung.
Ebenso sind auf der Seite Anleitungen und Tipps zum Betrieb der Blockchain oder von Full Nodes in AWS zu finden. Im nächsten Schritt schauen wir uns die Erstellung eines neuen Geth Full Nodes für Ethereum an.
Schritt für Schritt mit AWS zum eigenen Geth-Node für Ethereum
Mit der Schaltfläche „Öffentlichem Netzwerk beitreten“ kann schnell und einfach, und vor allem ohne Installation, ein eigener Knoten in der Ethereum-Blockchain erstellt werden.
Im ersten Schritt wird im Fenster ausgewählt, ob der Knoten zum Mainnet oder zum Testnet Ropsten/Rinkeby hinzugefügt werden soll. Es gibt natürlich hier auch die Möglichkeit, mehrere Knoten zu installieren, auch mit unterschiedlichen Leistungsstufen.
Danach steht die Auswahl der Hardware zur Verfügung. Hier kann ausgewählt werden, welche Ausstattung der virtuelle Computer erhalten soll, auf dem Geth installiert wird. An dieser muss natürlich beachtet werden, dass besser ausgestattete Knoten auch teurer sind.
Über den kleinen Link „Info“ lassen sich Informationen zur Auswahl einblenden und hier sind auch Links zu den Preisen zu finden. Basis des Nodes sind virtuelle Computer in Amazon EC2, dem Clouddienst in AWS, über den virtuelle Server zur Verfügung gestellt werden.
Im Anschluss kann noch ausgewählt werden, welcher Node-Typ aufgebaut werden soll. Hier steht vordergründig Geth als Full Node zur Verfügung. Auch die Availability Zone lässt sich an dieser Stelle steuern.
Mit „Knoten erstellen“ wird der Knoten in AWS schließlich bereitgestellt und kann genauso verwaltet und genutzt werden, wie ein lokaler Knoten. Die Erstellung des Knotens dauert etwa 30 Minuten bis mehrere Stunden.
In der Konsole kann danach der Knoten auch jederzeit wieder gelöscht werden. Außerdem ist in der Konsole zu sehen, wie der Knoten aktuell ausgelastet ist. Nachfolgend zeigen wir die Erstellung von Nodes in der AWS-CLI. Auch hier lassen sich Knoten einfach erstellen und genauso einfach löschen.
Geth-Node in AWS CLI erstellen
Wer sich mit der AWS CLI auseinandersetzt, dem Befehlszeilen-/Terminal-Tool von AWS, kann einen Knoten auch im Terminal direkt in der Cloud erstellen. Die Syntax dazu sieht folgendermaßen aus:
aws managedblockchain create-node \ --node-configuration '{"InstanceType":"bc.t3.large","AvailabilityZone":"us-east-1a"}' \ --network-id n-ethereum-rinkeby
Die verschiedenen Netzwerke lassen sich mit den folgenden Optionen steuern:
n-ethereum-mainnet n-ethereum-rinkeby n-ethereum-ropsten
Bei der erfolgreichen Erstellung erscheint auch die Node-ID. Diese sieht wie folgt aus:
{ "NodeId": "nd-RG3GM4U7HFFHHHGJHHU7UNPCLU" }
Sobald der Knoten erstellt wurde, erscheinen dessen Informationen in der AWS-Managementkonsole. Auch in der CLI ist es möglich, die Daten abzufragen. Der Befehl dazu ist zum Beispiel:
aws managedblockchain get-node \ --network-id n-ethereum-rinkeby \ --node-id nd-RG3GM4U7HFFHHHGJHHU7UNPCLU
Die Informationen, die danach erscheinen, geben alle wichtigen Informationen zurück, zum Beispiel:
{ "Node": { "NetworkId": "n-ethereum-rinkeby", "Id": "nd-RG3GM4U7HFFHHHGJHHU7UNPCLU", "InstanceType": "bc.t3.large", "AvailabilityZone": "us-east-1a", "FrameworkAttributes": { "Ethereum": { "HttpEndpoint": "nd-rg3gm4u7hffhhhgjhhu7unpclu.ethereum.managedblockchain.us-east-1.amazonaws.com", "WebSocketEndpoint": "nd-rg3gm4u7hffhhhgjhhu7unpclu.wss.ethereum.managedblockchain.us-east-1.amazonaws.com" } }, "Status": "CREATING", "CreationDate": "2021-06-25T20:10:18.555000+00:00", "Tags": {}, "Arn": "arn:aws:managedblockchain:us-east-1:111122223333:nodes/nd-RG3GM4U7HFFHHHGJHHU7UNPCLU" } }
Um einen Knoten zu löschen, kann in diesem Beispiel der folgende Befehl verwendet werden:
aws managedblockchain delete-node \
–network-id n-ethereum-rinkeby \
–node-id nd-RG3GM4U7HFFHHHGJHHU7UNPCLU
Die Verwendung der AWS CLI ergibt hauptsächlich dann Sinn, wenn mehrere Nodes für Ethereum mit identischer Konfiguration zum Einsatz kommen sollen, oder wenn die Installation auf Basis eines Skriptes erfolgen soll.
Privates Blockchain-Netzwerk für Hyperledger Fabric erstellen
Um eine eigene Blockchain auf Basis von Hyperledger Fabric 1.2/1.4 zu erstellen, wird in der AWS Managementkonsole die Option „Privates Netzwerk erstellen“ ausgewählt.
Danach wählst Du aus, welche Framework-Version sowie Network Edition Du von Hyperledger Fabric nutzen möchtest.
Bei der Auswahl der Netzwerke stehen „Starter“ und „Standard“ zur Verfügung. Das Starter Edition Netzwerk ist für Testnetzwerke und kleine Produktionsnetzwerke geeignet. Hier können maximal 5 Mitglieder pro Netzwerk und 2 Peer-Knoten pro Mitglied integriert werden.
Verfügbare Peer-Node-Typen sind bc.t3.small und bc.t3.medium, die AWS zur Verfügung stellt. Hier können bis zu 3 Hyperledger Fabric-Kanäle pro Netzwerk eingesetzt werden. Das Netzwerk hat einen geringeren Transaktionsdurchsatz und eine geringere Verfügbarkeit als Standard-Netzwerke.
Für den Einstieg in das Netzwerk allerdings ausreichend. Hier ist auch wichtig zu wissen, dass sich in AWS natürlich parallel auch mehrere Netzwerke auf Basis von Hyperledger Fabric erstellen lassen.
Das Standard-Netzwerk ist für Produktionsnetzwerke ausgelegt. Hier lassen sich maximal 14 Mitglieder pro Netzwerk und 3 Peer-Knoten pro Mitglied integrieren. Die Instanzfamilien bc.t3, bc.m5 und bc.c5 sind verfügbare Instanztypen für Peer-Knoten in diesem Netzwerk.
Insgesamt lassen sich bis zu 8 Hyperledger Fabric-Kanäle pro Netzwerk einsetzen. Der Transaktionsdurchsatz und die Verfügbarkeit sind höher als in einem Starter Edition Netzwerk.
Die Auswahl hat Auswirkungen auf Anzahl der Knoten und die Geschwindigkeit. Auf der Preis-Seite von AWS für Managed Blockchain und Hyperledger Fabric sind hier ausführliche Informationen zu finden.
Bei der Standard-Edition kostet ein Node 0,55 US-Dollar/Stunde, bei einem Starter-Netzwerk liegt der Preis bei 0,30 US-Dollar/Stunde.
Nach der Auswahl des Netzwerks wird noch der Name und die Beschreibung des Netzwerks ausgewählt. Auch die Abstimmungsrichtlinie spielt hier eine wichtige Rolle.
Jedes Mitglied in der Blockchain kann einen Vorschlag zu einer Änderung am Netzwerk einreichen. Dazu gehört auch das Einladen oder Entfernen von weiteren Mitgliedern. Der Vorschlag wird an alle Mitglieder im Netzwerk geschickt, damit diese über den Vorschlag abstimmen können. Die Abstimmungsrichtlinie steuert den Schwellenwert. Das legt fest, ob der Vorschlag angenommen oder abgelehnt wird.
Die Abstimmungsrichtlinie berücksichtigt die Anzahl von Ja-Stimmen in Prozent. Neben dem Schwellenwert wird in der Abstimmungsrichtlinie auch festgelegt, wie lange die Abstimmung maximal dauern darf.
Wenn vor Ablauf der Vorschlagsdauer nicht genügend Ja-Stimmen zusammenkommen, läuft der Vorschlag ab und die vorgeschlagene Aktion wird nicht durchgeführt. Die Abstimmungsrichtlinie kann nach der Erstellung nicht mehr angepasst werden.
Mitglieder in der neuen Blockchain erstellen
Nach der Konfiguration der Blockchain, muss auch gleich das erste Mitglied, also der erste Node der Blockchain erstellt werden. Hier sind zunächst der Name und die Beschreibung wichtig sowie Benutzername und Kennwortes des Administrators.
Dazu kommen noch Einstellungen für Protokollierung des Nodes sowie die verwendete Verschlüsselung der Daten. Hier können auch eigene Schlüssel verwendet werden. Die Abläufe finden im gleichen Assistenten ab, der auch bei der Installation und Erstellung der neuen Blockchain hilft.
Natürlich lassen sich nachträglich jederzeit weitere Nodes hinzufügen und auch externe Mitglieder mit ihren Nodes einladen. Hier muss aber auf die Grenzwerte geachtet werden, welche durch das Starter- und Standard-Netzwerk vorgegeben sind.
Am Ende der Konfiguration erscheint noch einmal eine Zusammenfassung. Hier ist es möglich, mit den Schaltflächen „Bearbeiten“ die Einstellungen noch anzupassen. Durch Auswahl von „Netzwerk und Mitglied erstellen“ bereitet AWS den Fabric-Node vor und erstellt die Blockchain auf Basis der vorgegebenen Einstellungen.
Die Erstellung dauert auch hier 30 Minuten bis zu einer Stunde. Vor dem Betätigen der Schaltfläche muss darauf geachtet werden, dass viele Einstellungen nachträglich nicht mehr zu ändern sind, etwa die Abstimmungsrichtlinie.
Nachdem die Blockchain auf Basis von Hyperledger Fabric erstellt ist, können Entwickler oder Administratoren zusätzliche Mitglieder einladen und Anwendungen sowie Smart Contracts in der Umgebung bereitstellen.
Die Vorgehensweise entspricht den Möglichkeiten beim Betrieb von lokal betriebenen Knoten im eigenen Rechenzentrum. Amazon bietet auf der Seite „Get Started Creating a Hyperledger Fabric Blockchain Network Using Amazon Managed Blockchain“ ein Tutorial, das den Einstieg in die Blockchain umfassend erläutert.
Netzwerke und Endpunkte in der eigenen Blockchain verwalten
Damit die Blockchain funktioniert, muss noch ein Endpunkt (AWS PrivateLink) für das Mitglied erstellt werden. Dadurch kann die Amazon EC2-Instanz, die als Hyperledger Fabric-Client zum Einsatz kommt, mit den Hyperledger Fabric-Endpunkten interagieren, die Amazon Managed Blockchain für Mitglieder und Netzwerkressourcen bereitstellt.
Der verwendete AWS Identity and Access Management-Benutzer (IAM) muss über ausreichende IAM-Berechtigungen verfügen, um einen Interface VPC-Endpunkt zu erstellen. Die Einstellungen werden auf der Seite „Controlling Access – Creating and Managing VPC Endpoints“ erläutert.