Tim Zöller ilum:e informatik ag

„Jedes Ethereum-Netzwerk besteht aus mehreren Nodes, die sich durch Ethereum-Clients miteinander verbinden. Es existiert nicht lediglich eine Art Ethereum-Client, sondern eine Vielzahl von Projekten, die die Ethereum-Spezifikation in verschiedenen Sprachen umsetzen. Die beiden populärsten sind in Rust (Parity) und Go (Geth) umgesetzt, weitere Clients basieren auf C++ (cpp-ethereum) oder Java (Harmony).“

Anwendungen, die auf Blockchains basieren, können neue Anwendungsfälle ermöglichen, sind jedoch aufgrund ihres dezentralen Charakters naturgemäß eingeschränkt. Im folgenden Tutorial betrachten wir, wie man Ethereum Smart Contracts mit Hilfe von web3j mit Java-Applikationen integriert, damit man Rechenoperationen „off-chain“ vornehmen kann.

Bevor wir in die Benutzung von web3j einsteigen, lohnt es sich zunächst, die einzelnen Komponenten von Ethereum zu umreißen. Bei Ethereum handelt es sich um eine Blockchain-Plattform, die die Ausführung von dezentral deployten Programmen (DApps) mit sogenannten Smart Contracts ermöglicht. Diese Programme werden in der Blockchain gespeichert und können durch Transaktionen parametrisiert aufgerufen werden. Ethereum ist eine öffentliche Blockchain, jedem ist es möglich, am Netzwerk teilzunehmen. Transaktionen im Netzwerk sind ebenfalls öffentlich, können also von jedem Teilnehmer eingesehen werden. Es erschien 2015 und wurde hauptsächlich von Vitalik Buterin und Gavin Wood begründet. Die Konsensfindung im Netzwerk erfolgt, ähnlich wie bei Bitcoin, nach dem Proof-of-Work-Prinzip. Netzwerkteilnehmer können durch Mining zum Betrieb des Netzwerks beitragen.

Teilnahme am Ethereum-Netzwerk

Jedes Ethereum-Netzwerk besteht aus mehreren Nodes, die sich durch Ethereum-Clients miteinander verbinden. Es existiert nicht lediglich eine Art Ethereum-Client, sondern eine Vielzahl von Projekten, die die Ethereum-Spezifikation in verschiedenen Sprachen umsetzen. Die beiden populärsten sind in Rust (Parity) und Go (Geth) umgesetzt, weitere Clients basieren auf C++ (cpp-ethereum) oder Java (Harmony). Weitere Projekte für Clients in JavaScript, .NET, Python und Elixir existieren, decken aber nicht die vollständige Spezifikation ab. Die große Menge verschiedener Clients sorgt für ein heterogeneres Netzwerk – eine mögliche Sicherheitslücke in einer Clientart ist zwar immer noch ärgerlich, gefährdet aber nicht das gesamte Netzwerk, da es unwahrscheinlich ist, dass dieselbe Schwachstelle auch in den anderen Clients existiert.

Benutzer können an einem beliebigen Netzwerk teilnehmen, indem sie sich einen Account erstellen. Hierbei handelt es sich um ein Schlüsselpaar, bestehend aus einem öffentlichen und einem privaten Schlüssel. Der Account wird durch eine 42-stellige Adresse identifiziert. Transaktionen, die von einem Ethereum-Account ausgehen, werden mit dem privaten Schlüssel des Accounts signiert und können von Dritten durch einen öffentlichen Schlüssel verifiziert werden. Ein Verlust des privaten Schlüssels führt unwiederbringlich zu einem Verlust des Ethereum-Accounts. Da das Ausführen von Transaktionen im Netzwerk auf allen Nodes Rechenleistung benötigt, müssen Transaktionen mit der Währung „Ether“ bezahlt werden, um Spam im Netzwerk vorzubeugen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 4.19 - "Java und die Blockchain"

Alle Infos zum Heft
579882044Web3j – Transaktionen für die Ewigkeit
X
- Gib Deinen Standort ein -
- or -