Nathan Williams, ganz links, arbeitet kürzlich bei einem Blockchain-Hackathon mit seinen ArcTouch-Kollegen zusammen. Das Team erstellte mit Ethereum und Microsoft Azure einen Blockchain-Proof-of-Concept.

Einrichten einer privaten Ethereum-Blockchain in 20 Minuten

Jedes Jahr bringt ArcTouch seine Mitarbeiter zu einem dreitägigen Hackathon zusammen, bei dem Gruppen eine Idee mit neuen und aufkommenden Technologien als Prototyp entwickeln. In diesem Jahr hatten wir viele Blockchain-Hackathon-Projekte - und wir denken, dies spricht sowohl für das wachsende Interesse unserer Mitarbeiter an Blockchain als auch für das Potenzial für Unternehmen, davon zu profitieren.

Meine Fraktion entschied sich für die Implementierung eines Identitätsprüfungssystems, das auf der Blockchain aufbaut. Die Idee war, einen Altersnachweis zu speichern, auf den ein Barkeeper oder Verkäufer anstelle eines Personalausweises wie eines Führerscheins verweisen kann. Da wir die Nutzung intelligenter Verträge planen, haben wir uns für eine Ethereum-Blockchain entschieden. Für die Entwicklung in der ersten Runde ist die Verwendung der öffentlichen Blockchain oder sogar des Testnetzwerks aufgrund langer Transaktionsbestätigungszeiten jedoch nicht immer ideal. Stattdessen haben wir uns verschiedene Möglichkeiten angesehen, um schnell eine private Blockchain aufzubauen.

Mit Abstand am einfachsten ist es, einen Cloud-Dienst wie Azure zum Hosten eines privaten Blockchain-Netzwerks zu verwenden. Azure vereinfacht die Einrichtung besonders, indem eine Ethereum Blockchain Consortium-Vorlage bereitgestellt wird, die eine konfigurierbare Anzahl von Mining- und Transaktionsknoten enthält. In drei Schritten und ungefähr 10 Minuten können Sie eine voll funktionsfähige private Blockchain in der Cloud einrichten (hier ist ein weiterer großartiger Beitrag, in dem dieses Setup detailliert beschrieben wird).

Diese bestimmte Azure-Vorlage bietet jedoch eine PoW-Blockchain (Proof-of-Work), die je nach Ihren Anforderungen möglicherweise nicht die beste Option für eine private Blockchain ist. Zum Beispiel haben wir uns für eine PoA-Blockchain (Proof-of-Authority) entschieden, die die letztes Jahr veröffentlichte Clique-Consensus-Engine von Ethereum verwendet. Diese Konsenskonfiguration eignet sich gut für private Umgebungen, da die Knoten nicht gegeneinander antreten müssen, um das Privileg zu erhalten, Blöcke zu prägen. Dadurch entfällt der mit dem PoW-Block-Mining und dem Ethhash-Algorithmus verbundene Verarbeitungsaufwand und Energieverbrauch.

Um unser PoA-Netzwerk in Azure zu erstellen, richten wir eine Serverinstanz mit der Ubuntu Server 16.04 LTS-Vorlage ein, die als unser Berechtigungsknoten fungiert. Da Behörden keine großen Rechenressourcen benötigen, konnten wir eine kleinere virtuelle Maschine (B1S) mit den folgenden Standardoptionen verwenden:

Sobald die virtuelle Maschine bereitgestellt wurde, richten wir unseren Berechtigungsknoten mit den folgenden Schritten ein:

Schritt 1: Installieren Sie Ethereum und Geth

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install ethereum

Schritt 2: Erstellen Sie das Berechtigungskonto und das Transaktionskonto

Sie erstellen zwei Konten, von denen das erste das Konto der Behörde und das zweite ein vorfinanziertes Konto ist, mit dem Transaktionen an das Netzwerk gesendet werden können:

geth --datadir .ethereum / Konto neu
> Adresse: {6203bb870bfb79438b827de3d6b0070d4d2a5f7b}
geth --datadir .ethereum / Konto neu
> Adresse: {1808adc011f6e970943d3f28f4d285053d9140ac}

Behalten Sie das Kennwort, das zum Erstellen jedes Kontos verwendet wurde, im Auge!

Schritt 3: Erstellen Sie den Genesis-Block

Mit puppeth, einem mit geth 1.6 veröffentlichten CLI-Tool, erstellen und exportieren Sie die Definition für Ihren Genesis-Block:

Puppen
...
Bitte geben Sie einen zu verwaltenden Netzwerknamen an (keine Leerzeichen, bitte)
> Clique
...
Was würdest du gern tun? (Standard = Statistik)
 1. Netzwerkstatistik anzeigen
 2. Konfigurieren Sie neue Genesis
 3. Verfolgen Sie den neuen Remote-Server
 4. Stellen Sie Netzwerkkomponenten bereit
> 2
Welche Konsens-Engine soll verwendet werden? (Standard = Clique)
 1. Ethash - Arbeitsnachweis
 2. Clique - Berechtigungsnachweis
> 2
Wie viele Sekunden sollten Blöcke dauern? (Standard = 15)
> 15
Welche Konten dürfen versiegeln? (obligatorisch mindestens eine)
> 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b
> 0x
Welche Konten sollten vorfinanziert werden? (empfehlenswert mindestens eine)
> 0x1808adc011f6e970943d3f28f4d285053d9140ac
> 0x
Geben Sie Ihre Ketten- / Netzwerk-ID an, wenn Sie eine explizite möchten (Standard = zufällig).
> 42
INFO [02-15 | 18: 24: 03] Neuer Genesis-Block konfiguriert
Was würdest du gern tun? (Standard = Statistik)
 1. Netzwerkstatistik anzeigen
 2. Bestehende Genesis verwalten
 3. Verfolgen Sie den neuen Remote-Server
 4. Stellen Sie Netzwerkkomponenten bereit
> 2
 1. Ändern Sie vorhandene Fork-Regeln
 2. Exportieren Sie die Genesis-Konfiguration
 3. Entfernen Sie die Genesis-Konfiguration
> 2
In welcher Datei soll die Entstehung gespeichert werden? (default = clique.json)
> genesis.json
INFO [02-15 | 18: 24: 22] Vorhandenen Genesis-Block exportieren

Verwenden Sie das erste Konto, die Behörde als Siegelkonto und das zweite Konto als vorfinanziertes Konto. Für die Netzwerk- / Ketten-ID würde ich empfehlen, einen Wert unter 1000 zu wählen. Der Wert 1337 wird von Entwicklungsketten verwendet, und wir haben festgestellt, dass höhere Werte (wie sie beispielsweise bei Auswahl von "zufällig" generiert werden) später zu Problemen führen können.

Schritt 4: Starten Sie Ihre private Ethereum-Instanz

Initialisieren und starten Sie Ihre Instanz von Authority Geth:

geth --datadir .ethereum / init genesis.json
geth --nodiscover --networkid 42 --datadir .ethereum / --unlock 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b --mine --rpc --rpcapi eth, net, web3 --rpcaddr

Übergeben Sie die Adresse der Berechtigung an den Unlock-Parameter, und verwenden Sie für rpcaddr die private IP-Adresse Ihrer virtuellen Maschine, die in den Netzwerkeinstellungen der Azure-Konsole angezeigt wird:

Stellen Sie sicher, dass Sie eine eingehende Sicherheitsregel für Port 8545 in Ihrer Netzwerksicherheitsgruppe erstellen, damit Sie mit der Standardbibliothek web3.js oder in unserem Fall Nethereum für die Verwendung mit Xamarin eine Verbindung zu Ihrem Berechtigungsknoten herstellen können:

Ergebnis: Eine funktionierende Ethereum-Blockchain

Der obige Vorgang dauert ungefähr 20 Minuten und führt zu einer voll funktionsfähigen privaten PoA Ethereum-Blockchain in der Cloud. Diese Umgebung ist ideal für die Proof-of-Concept-Entwicklung von dezentralen Anwendungen (DApp) und bietet schnelle und kostenlose Transaktionen.

Sie können problemlos andere virtuelle Maschinen in das Setup aufnehmen, um als dedizierte Transaktionsknoten oder zusätzliche Berechtigungsknoten für ein repräsentativeres Netzwerk zu fungieren. Die Entwicklung eines Proof-of-Concept ist jedoch nur ein Schritt zur Entwicklung einer vollständigen kommerziellen Blockchain-Lösung. DApp-Sicherheit ist ein notorisch komplexes Thema, und die Bereitstellung in einem öffentlichen Testnetzwerk zum Testen realer Szenarien und zum Überprüfen des korrekten Betriebs ist von entscheidender Bedeutung.

Die Integration Ihres Blockchain-basierten Backends in ein Mobile-App-Frontend erfordert ebenfalls eine solide Strategie. Blockchain stellt eine einzigartige Herausforderung für die Benutzererfahrung dar, da die Bestätigung von Transaktionen je nach dem Gaspreis, den Sie zu zahlen bereit sind, viele Minuten in Anspruch nehmen kann.

Wir bei ArcTouch freuen uns, ein DApp-Entwicklungsunternehmen zu sein, und sind davon überzeugt, dass Blockchain ein wichtiger Bestandteil der Anwendungen von morgen für Unternehmen und Verbraucher ist.

Dieser Artikel wurde von ArcTouch-Chefingenieur Nathan Williams verfasst. Sie wurde ursprünglich am 28. Februar 2018 auf arctouch.com veröffentlicht.

Sie fragen sich, wie Blockchain Ihrem Unternehmen helfen kann?

Die BlockFirst-Blockchain-Entwicklung von ArcTouch unterstützt Unternehmen dabei, ihre Geschäftsprozesse durch dezentrale Apps und Hauptbuch-Technologie zu transformieren. Wir bieten kostenlose Beratung - kontaktieren Sie uns einfach.