Bauen Sie ein minimales Quorum-Netzwerk auf – 51 Knoten

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining


Einrichten eines minimalen Quorum-Netzwerks mit Raft-Konsens für die Entwicklung mit Docker

Bild von Wolfgang Vogt aus Pixabay

Das Hauptziel dieses Artikels ist es, zu zeigen, wie ein einfaches Quorum-Netzwerk für die Entwicklung eingerichtet und angedockt wird. Unser Ziel ist es, die vom Entwickler benötigten Ressourcen und Zeit zu minimieren, indem nur 3 Knoten und der Raft-Algorithmus verwendet werden. Außerdem stellen wir den vollständigen Quellcode in unserem GitHub-Repository zur Verfügung.

Um die Installationsschritte auszuführen, müssen Sie Docker und Docker Compose (Version 3.6) installieren. Wir halten Grundkenntnisse in Docker für eine Voraussetzung, um diesen Artikel zu würdigen.

Quorum ist eine Blockchain-Plattform mit Open-Source-Berechtigungen, die auf der Ethereum-Technologie basiert. Durch die Kombination der Innovation der Ethereum-Community und der Funktionen, die die Unternehmensanforderungen erfüllen, möchte Quorum eine zuverlässige Technologie schaffen, mit der Blockchain für Unternehmen funktioniert.

Nicht nur wegen der Unterstützung durch JP Morgan und Microsoft, sondern auch wegen seiner nützlichen Funktionen kann Quorum als eine der bevorzugten Blockchain-Plattformen für Unternehmen angesehen werden. Die bekannteste Funktion von Quorum ist die Aktivierung privater Transaktionen. Quorum hat jedoch mehr zu bieten, wie Netzwerk- und Peer-Berechtigungsverwaltung, bessere Leistung, Entwicklerunterstützung und – vielleicht die am meisten unterschätzte Funktion – einen steckbaren Konsensalgorithmus. Zum Zeitpunkt des Schreibens unterstützt Quorum zwei wichtige Konsensmechanismen: IBFT (fehlertoleranter Konsens) und Raft (crashtoleranter Konsens). In zukünftigen Versionen werden noch mehr Konsensmechanismen implementiert. IBFT und Raft führen zu einem schnelleren Konsens und sorgen für eine sofortige Abwicklung der Transaktion, was sie zu einer geeigneten Wahl für die Geschäftsanforderungen macht.

Als wir versuchten, ein lokales Quorum-Netzwerk einzurichten, um zu testen, ob unsere Anwendung auch mit Quorum kompatibel ist, haben wir mit dem Beispiel mit 7 Knoten im Quorum-Repository auf GitHub begonnen. In diesem Beispiel werden zwei Methoden zum Ausführen Ihres lokalen Netzwerks bereitgestellt, entweder Vagrant oder Docker. Docker war unsere Wahl, weil wir bereits mehr Erfahrung damit hatten. Die lange Liste zur Fehlerbehebung und die für die Einrichtung des Netzwerks mit Vagrant erforderliche Zeit machten die Entscheidung noch einfacher.

Das Ausführen dieses Beispiels mit Docker brachte jedoch auch einige Probleme mit sich. Die Docker-Compose-Datei startet 15 Docker-Container, 7 Container für die Knoten, 7 Container für die Transaktionsmanager und 1 Container für das Beispiel. Alle diese Container müssen gleichzeitig ausgeführt werden, was zu einem hohen Bedarf an Arbeitsspeicher und CPU-Ressourcen führt und möglicherweise nicht für eine Entwicklungsumgebung geeignet ist.

Führen Sie zum Testen dieses Setups das Beispiel mit Docker aus

Git-Klon https://github.com/jpmorganchase/quorum-examples
CD-Quorum-Beispiele
docker-compose up -d

Beginnen wir also mit der Implementierung der Docker-Compose-Datei:

Zuerst müssen wir die Konfigurationsfragmente festlegen, die in allen Knoten verwendet werden. Diese wiederverwendbaren Fragmente beginnen mit dem Zeichenfolge und kann in den Diensten mit dem YAML-Zusammenführungstyp zusammengeführt werden

Die Quorum-Def-Konfiguration, die für alle Container verwendet wird

In Zeile 4 definieren wir den Docker Bild Diese Datei wird aus dem öffentlichen Docker Hub-Repository abgerufen. Zum Zeitpunkt des Schreibens dieses Artikels ist die aktuelle Version 2.3.0. Danach definieren die Zeilen 6 und 7 die freiliegende Häfen 21000 für den Knoten-Client und 50400 für die Floßkommunikation zwischen den Knoten. Der Knoten-Client in Quorum, der den Knoten in den Containern ausführt und verwaltet, ist Geth, eine GoLang-Implementierung des Ethereum-Protokolls. In Zeile 8 richten wir ein einfaches ein GesundheitskontrolleWenn wir später die Container starten, werden wir die Meldung (gesund / ungesund) in der Spalte STATUS bemerken, die wir auch erhalten können Containerzustand mit dem Befehl:

docker inspect - format = ’{{json .State.Health}}’ 

In Zeile 16 haben wir die Einstiegspunkt, Darunter befinden sich die Skripte, die nach dem Start des Containers ausgeführt werden, z. B. das Kopieren der erforderlichen Ressourcen (Knotendateien und Genesis-Block-Dateien) vom Host in den Container, das Festlegen einiger Variablen und das Starten von Geth in Zeile 33. Beachten Sie die folgenden zusätzlichen Argumente werden zusätzlich zur Standardkonfiguration von Geth benötigt, um Quorum-spezifische Funktionen zu aktivieren.

--ermächtigt 
--rpcapi .., .., .., .., .., Quorum, Floß
--Floß
--raftport 50400

Wie bereits erwähnt, unterstützt Quorum zwei Konsensalgorithmen: IBFT oder Raft. Raft war unsere Wahl. Gemäß der folgenden Leistungsbewertung in diesem Artikel schneidet Raft bei höheren Eingangstransaktionsraten etwas besser ab, die Blockierungszeit kann auf weniger als 1 Sekunde festgelegt werden, und die erforderliche Mindestanzahl von Knoten beträgt 3.

Nun müssen wir die Services definieren:

Beispiel Service, Netzwerk und Vol für einen Knoten

Der obige Code zeigt nur die Leistung des ersten Containers. Wie wir in Zeile 3 sehen, verwenden wir die oben definierte Quorum-Konfiguration. In Zeile 6 stellen wir den ersten Knoten an Port 22000 zur Verfügung, indem wir den Port 8545 (siehe Geth-Argument: rpcport) auf 22000 abbilden. Für persistente Daten werden Docker-Datenvolumes in Zeile 8 und 9 festgelegt PRIVATE_CONFIG zu ignorieren in Zeile 11, da wir nicht die Datenschutzfunktion von Quorum verwenden (für die die Transaktionsmanagerkomponente erforderlich ist). In Zeile 13 wird das Docker-Netzwerk festgelegt, in dem der Container ausgeführt wird. Dieses Netzwerk wird in Zeile 16 definiert. Die Dienste des zweiten und dritten Containers sind ähnlich. Die vollständige Version der Compose-Datei finden Sie hier.

An diesem Punkt sind wir fertig und verfügen über ein lokales Quorum-Netzwerk, das mit den folgenden Befehlen gestartet werden kann:

Git-Klon https://github.com/51nodes/quorum-local-raft-network.git
CD
Quorum-Local-Raft-Netzwerk
docker-compose up -d

Um zu überprüfen, ob die Container fehlerfrei sind und ausgeführt werden, verwenden Sie den Befehl:

3 Docker-Container für 3 Quorum-Knoten, die ein lokales Quorum-Netzwerk aufbauen

So verwenden Sie die Konsole des Knotenclients Geth des ersten Knotens:

docker exec -it quorum-local-raft-network_node1_1 fügt /qdata/dd/geth.ipc hinzu

Um das Netzwerk mit Remix zu testen, legen Sie die folgende Umgebungsvariable fest, bevor Sie die Container starten:

export QUORUM_GETH_ARGS = "- rpccorsdomain https://remix.ethereum.org"

Um Remix mit Ihrem lokalen Netzwerk zu verbinden, müssen Sie die Umgebung unter "Bereitstellen und Transaktionen" auf "Web3-Provider" ändern und den Endpunkt eines der Knoten festlegen:

Verbinden Sie den Remix mit dem externen Endpoint

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close