Blog >>> Techtalk_

Web 3.0, Blockchain, Ethereum und dApps

Die Entwicklung von dApps hat in den letzten Jahren an Fahrt aufgenommen und auch wir setzen uns mit dem Thema auseinander. Aber was ist eine dApp und was haben Ethereum und Blockchains damit zu tun? Wir beginnen bei den Grundlagen.
21.10.2021
Ellen Landschoof
Ellen Landschoof
Praktikantin
Web 3.0, Blockchain, Ethereum und dApps

Was ist Web 3.0?

Um zu erklären, was Web 3.0 ist fangen wir am besten am Anfang an. Bei Web 1.0.

Web 1.0 lässt sich als die erste Version des Internets beschreiben. Es existieren Websites, die gelesen werden können, aber das ist dann auch schon so ziemlich alles.

Der nächste Schritt kam mit Web 2.0. Nutzer von Websites können nun mit diesen interagieren und eigene Inhalte beitragen. Dazu zählen Texte, Bilder, Videos und alles andere, das beispielsweise als Post hochgeladen werden kann. Eines der Probleme von Web 2.0 besteht jedoch darin, dass die Nutzer nicht direkt miteinander interagieren, sondern alles über einen Dritten weitergeleitet wird. Das ist in den meisten Fällen damit verbunden, dass diese Anbieter Daten von Nutzern abgreifen.

Das Ziel von Web 3.0 ist es, genau diese Problematik zu beseitigen. Um das zu erreichen, wird mithilfe der Blockchain-Technologie ein dezentralisiertes Netzwerk genutzt. Das bedeutet, dass Daten nicht mehr zentral auf wenigen Servern gespeichert sind und stattdessen auf viele Geräte, die sogenannten Nodes, verteilt sind, die sich ständig untereinander austauschen. Jeder Nutzer hat die Möglichkeit, auf einen Node zuzugreifen, eigene Daten in die Blockchain zu laden und auf diese Weise direkt mit anderen zu interagieren. Ein weiterer Vorteil von Web 3.0 ist die Sicherheit, die durch die Blockchain geboten wird – Daten, die einmal hinzugefügt wurden, können nicht mehr verändert werden.

Was ist eine Blockchain?

Wir starten wieder klein und sehen uns zunächst an, woraus eigentlich ein einzelner Block besteht.

Der Hauptteil von diesem besteht aus den enthaltenen Daten. Aus diesen wird ein Hash erstellt, der ebenfalls im Block enthalten ist. Um den Hash zu berechnen, wird eine Funktion genutzt, die nur schwer umzukehren ist. Das heißt, dass es leicht ist, den Hash zu erzeugen, solange man die Daten kennt, aber schwer ist die Daten herauszufinden, sofern der Hash bekannt ist. Zusätzlich hat der Hash eine feste Länge, die nicht abhängig von den Daten ist.

Damit ein Block als gültig angesehen wird, muss sein Hash eine Bedingung erfüllen. In den meisten Blockchains besteht diese darin, dass der Hash mit einer bestimmten Anzahl an Nullen beginnen muss.

Da nicht davon auszugehen ist, dass der Hash die Bedingung erfüllt, sobald er aus den Daten berechnet wird, wird den Daten ein Proof of work hinzugefügt. Dieses besteht aus einer zufälligen Zahl und sorgt dafür, dass der Hash sich verändert. Die richtige Zahl zu finden, damit der Hash die Bedingung erfüllt, ist dabei sehr rechenaufwändig, da es keine bessere Möglichkeit gibt, außer diese zu erraten.

Zu guter Letzt enthält ein Block noch den Hash des vorangegangenen Blocks. Durch diese Verweise bildet sich aus den einzelnen Blöcken eine Kette: Die Blockchain.

Web3.0_Blockchain

Was macht eine Blockchain sicher?

Wie beschrieben verändert sich der Hash eines Blocks, sobald sich seine Daten verändern. Dadurch kann der folgende Block nicht mehr über den (nun nicht mehr vorhandenen) Hash auf seinen Vorgänger verweisen und der Rest der Blockchain und der Block selbst werden ungültig.

Die Blockchain kann in der Theorie mit den veränderten Daten neu erstellt werden, indem alle folgenden Proof of work Werte neu berechnet werden. Zu diesem Zeitpunkt befindet sich die veränderte Blockchain auf einem Node. Das nächste Mal, wenn die Nodes ihre jeweiligen Blockchains untereinander abgleichen, wird sie jedoch wieder überschrieben, da die Mehrzahl der anderen Nodes über andere Daten verfügt. Um die Blockchain erfolgreich zu verändern, müsste sie also auf über der Hälfte aller Nodes manipuliert werden. Dies gilt aufgrund der hohen Rechenleistung, die dafür benötigt werden würde, als so gut wie unmöglich.

Was ist Proof of stake?

Die Validierung von Blöcken mithilfe von Proof of work ist nicht umweltfreundlich. Da nur die erste Node, die einen gültigen Proof of work findet, den neuen Block erzeugen darf und so die damit zusammenhängende Belohnung erhält, gibt es mittlerweile ganze Hallen voll mit Geräten, die nichts tun, außer Proof of works zu berechnen. Aufgrund der dafür benötigten Rechenleistung kostet das eine Menge Strom.

Proof of stake bietet hingegen eine Methode zur Validierung von Blöcken, bei der keine hohen Rechenleistungen benötigt werden. Stattdessen kann eine Node ein Validator werden, indem eine bestimmte Menge der entsprechenden Währung im Netzwerk als Kaution hinterlegt wird. Aus allen Validators wird dann eine Node gewählt, die den nächsten Block erzeugen darf. Nodes, die mehr Geld als Kaution hinterlegt haben, haben meist eine bessere Chance gewählt zu werden. Die Sicherheit der Blockchain wird dabei dadurch gewährleistet, dass die Nodes einen Anteil ihrer Kaution verlieren, wenn sie Blöcke mit verfälschten Inhalten erzeugen.

Was ist Ethereum?

Ethereum ist eine Software-Plattform, die die Blockchain-Technologie nutzt.

Die Daten, die in einer Blockchain gespeichert sind, können die unterschiedlichste Form annehmen. Im Falle von Bitcoin werden beispielsweise Einträge darüber gespeichert, wer wie viel Geld an jemand anderen überweist.

In der Ethereum-Blockchain wird dagegen Code in Form von sogenannten Smart Contracts, gespeichert. Dadurch eröffnen sich viele Möglichkeiten und es wird möglich ganze Applikationen für die Blockchain zu schreiben. Diese nennen sich dApps oder auch dezentralisierte Applikationen.

Was kann helfen eine dApp zu entwickeln?

Eine eigene dApp zu entwickeln, kann zu vielen Fragen führen.

  • Wie kann eine Verbindung zur Blockchain aufgebaut werden?
  • Wie kann die Application getestet werden?
  • Und wie können sich zukünftige Nutzer identifizieren und anmelden?

Glücklicherweise gibt es bereits viele Hilfsmittel, die genutzt werden können, um diese Fragen etwas leichter zu beantworten.

web3.js

Bei web3.js handelt es sich um eine Sammlung an Libraries, die genutzt werden können, um mit den Nodes des Ethereum-Netzwerks zu interagieren. Die Kommunikation läuft dabei über HTTP, IPC oder WebSockets. Wie der Name vermuten lässt, kann web3.js via JavaScript oder Node.js verwendet werden.

Ganache

Ganache macht es möglich, dApps in einer lokalen Blockchain zu entwickeln und zu testen. Es muss also nicht direkt in der richtigen Ethereum-Blockchain gearbeitet werden, sofern man sich im Entwicklungsstadium befindet.

MetaMask

MetaMask ist ein Crypto-Wallet. Zu jedem Wallet gehören dabei eine Adresse, ein privater Schlüssel und ein öffentlicher Schlüssel. Dank dieser ist es möglich, dass Nutzer, die MetaMask installiert haben, sich in dApps anmelden und identifizieren können.

Abhängig davon, was in der dApp umgesetzt werden soll, bieten sich selbstverständlich weitere Libraries und Programme an.

Getting started

Für unser erstes Projekt, das die Ethereum-Blockchain nutzt, haben wir eine Website gebaut, auf der es Nutzern möglich ist, sich mit MetaMask einzuloggen.

Dabei bringen wir zunächst die Ethereum-Adresse des Nutzers in Erfahrung. Falls der Nutzer sich auf unserer Website noch nie mit MetaMask verbunden hat, nutzen wir window.ethereum.request({ method: 'eth_requestAccounts' }) um seine Erlaubnis zu erhalten, seine MetaMask Account-Adressen einsehen zu dürfen. Dabei wird das window.ethereum Objekt von MetaMask zur Verfügung gestellt. Falls dies bereits geschehen ist können wir die Adressen mit web3.js über web3.eth.getAccounts() abrufen.

Anhand der Adresse wird der entsprechende Nutzeraccount herausgesucht. Zu jedem Nutzeraccount gehört eine Nonce (eine willkürlich gewählte, große Zahl). Diese wird mit web3.eth.personal.sign(nonce.toString(), ethAddress) zum unterzeichnen zurück an den Nutzer geschickt.

Erst nachdem die Nonce über MetaMask mit dem privaten Schlüssel des Nutzers signiert und mit web3.eth.personal.ecRecover(nonce, signature) überprüft wurde, ob die Signatur von der erwarteten Adresse unterzeichnet wurde, wird der Nutzer tatsächlich eingeloggt. Das Unterschreiben der Nonce dient dabei zur Abwehr möglicher Täuschungsversuche.

Web3.0_Programm_Uebersicht

Elixir & Phoenix LiveView

Die technische Grundlage dieses Proof of Concepts basiert auf Elixir und Phoenix LiveView. So ist die asynchrone Kommunikation zwischen Frontend und Backend schnell implementiert, da keine klassische REST API implementiert werden musste. Die Interoperabilität zwischen Phoenix LiveView und JavaScript Bibliotheken wie web3.js wird über die Implementierung von sogenannten (Phoenix LiveView) Client Hooks realisiert.

Mit dem fertigen Prototyp kann ein Nutzer sich mit seiner MetaMask Wallet verbinden und mit der Etherum Blockchain interagieren. In einem nächsten Teil werden wir genauer darauf eingehen, wie Phoenix LiveView und Client Hooks funktionieren.

Teilen @
Lust auf was Neues?
Aktuelle Stellenangebote >>>