© Liashko/Shutterstock.com
Interview mit Daniel Dietrich

Web3j, Blockchain und Klimawandel


Was hat die Blockchain mit dem Klimawandel zu tun? Was sind Web3j und Solidity? Und wie unterscheidet sich die Ethereum von der klassischen Blockchain? Diese und weitere Fragen beantwortet Daniel Dietrich, Lead Developer im Bereich Blockchain und Digitalisierung, in diesem Interview. Dabei erklärt er nicht nur die Grundlagen der jeweiligen Tools und Technologien, sondern wirft auch einen kritischen Blick auf den Hype und dessen Folgen.

Entwickler Magazin Spezial: Daniel, du hast dich beim Projekt Web3j beteiligt, einer Java- und Android-Bibliothek für die Integration mit Ethereum-Clients. Vielleicht zum Anfang erst einmal eine Frage zur Technik: Wie genau ist das Projekt aufgebaut?

Daniel Dietrich: Die Web3j Library implementiert das Ethereum-JSON-RPC-Protokoll und wird verwendet, um mit einer Ethereum Blockchain zu kommunizieren. Web3j verbindet sich mit (genau) einem Knoten des verteilten Netzwerks, einem sogenannten Ethereum-Client. Eine Web3j-Instanz, die mit einem Ethereum-Client verbunden ist, gestattet es dann, lesend und schreibend auf die Blockchain zuzugreifen. Lesende Operationen sind kostengünstig, da ein Ethereum-Client eine lokale Kopie aller persistenten Daten enthält, schreibende Operationen sind hingegen kostspielig: Sie werden durch sogenannte Transaktionen repräsentiert, die im Wesentlichen entweder einen monetären Transfer (in Form der Kryptowährung Ether) zwischen zwei Teilnehmern oder eine zustandsverändernde Interaktion eines Teilnehmers mit Kontrakten darstellen.

Ein Kontrakt ist eine Art Java-Klasse, deren Syntax und Semantik in der Sprache Solidity spezifiziert werden. Er kapselt Daten, ist daher vergleichbar mit Instanzvariablen, und bietet Operationen, die Methoden ähnlich sind. Kontrakte werden in die Blockchain deployt und erhalten eine eindeutige Adresse. Das Ganze erinnert an dieser Stelle an die Instanziierung einer Klasse. Doch bevor Kontrakte von Web3j verwendet werden können, müssen sie (außerhalb von Web3j) übersetzt werden. Das Resultat der Übersetzung sind eine Schnittstellenbeschreibung (Application Binary Interface, ABI) und hexadezimal codierte Binärdaten, die Instruktionen der Ethereum Virtual Machine entsprechen. Die Binärdaten werden lediglich für das Deployment eines Kontrakts in das Ethereum-Netzwerk benötigt.

Web3j bietet sogenannte Kontrakt-Wrapper, die eine Repräsentation der jeweiligen ABIs in Form von Java-Klassen sind. So ist eine Interaktion mit Kontrakten in Java auf einer hohen Abstraktionsebene mögl...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang