DApp – dezentrale Applikationen

Was ist eine dApp?

Dezentrale Applikationen (dApps) sind digitale Anwendungen oder Programme, die auf einer Blockchain oder einem Peer-to-Peer-Netzwerk (P2P) von Computern statt auf einem einzelnen Computer existieren und laufen. DApps, die häufig auf der Ethereum-Plattform aufgebaut sind, können für eine Vielzahl von Zwecken entwickelt werden, darunter Spiele, Finanzen und soziale Medien.

Im Zusammenhang mit Kryptowährungen laufen dApps auf einem Blockchain-Netzwerk in einer öffentlichen, quelloffenen, dezentralisierten Umgebung und sind frei von Kontrolle und Einmischung durch eine einzelne Behörde. Ein Entwickler kann zum Beispiel eine Twitter-ähnliche dApp erstellen und sie auf einer Blockchain platzieren, auf der jeder Nutzer Nachrichten veröffentlichen kann. Einmal veröffentlicht, kann niemand, auch nicht der App-Entwickler, die Nachrichten löschen.

Wie funktionieren dApps?

Bei dApps läuft der Backend-Code (Smart Contracts) in einem dezentralen Netzwerk und nicht auf einem zentralen Server. Sie nutzen beispielsweise die Ethereum-Blockchain für die Datenspeicherung und Smart Contracts für ihre Anwendungslogik. Der Code einer dApp besteht aus diesen Smart Contracts, die auf der dezentralisierten Blockchain gespeichert sind.

Ein Smart Contract ist wie eine Reihe von Regeln, die auf der Blockchain für alle sichtbar sind und genau nach diesen Regeln ablaufen. Smart Contracts können Geldmittel halten, ähnlich wie ein Ethereum-Konto. Dies ermöglicht es dem Code, Vereinbarungen und Transaktionen zu vermitteln.

Doch nicht jeder Smart Contract ist eine dApp, denn diese ermöglichen keine Benutzerinteraktion. Dafür ist eine Frontend-Anwendung nötig. Erst mit der Frontend-Anwendung ist eine Benutzerinteraktion möglich, die es den Nutzern erlaubt mit dem Netzwerk zu interagieren und die Benutzeridentität zu verwalten.

Die Funktionsweise von dApps kann am Beispiel von Ethereum vorgestellt werden:

Ethereum nutzt die Ethereum Virtual Machnine (EVM), welche jeden Computeralgorithmus ausführen und simulieren kann. Der Backend-Code der EVM besteht aus Smart Contracts und die Blockchain-Nodes führen die Berechnungen des Konsensalgorithmus aus, die die Funktion der dApp gewährleistet. Die Blockchain-Nodes sind die dahinterstehenden Nutzer, die diese Berechnungnen ausführen. Dafür erhalten diese Nodes einen Reward in Form von Token. Jeder Token ist anders und ist in seinen Eigenschaften und Funktionen unterschiedlich. Außerdem sind diese abhängig vom Ersteller des Tokens und seiner Intention. Somit kann dieser Token verschiedene Formen annehmen: Echte Objekte bis hin zu Zahlungsmitteln für Transaktionen.

Vor- und Nachteile

Vorteile

  • Fördert die Privatsphäre der Nutzer
    • keine Eingabe von persönlichen Daten
    • durch Smart Contracts → Transaktion zwischen 2 anonymen Parteien möglich ohne sich auf eine zentrale Autorität verlassen zu müssen
  • Widersteht der Zensur
    • eine dezentralisierte Social-Media-Plattform ist resistent gegen eine Zensur: Kein einzelner Teilnehmer auf der Blockchain Nachrichten löschen oder deren Veröffentlichung blockieren kann
  • Flexible Plattform ermöglicht dApp-Entwicklung
    • innovative Einsatzmöglichkeiten für die Zukunft und Branchen (Spiele, Banken, Finanzen, Online-Shopping, …)

Nachteile

  • experimentell → Skalierbarkeit
    • große Anzahl an Nutzern stellt derzeit ein Problem dar
    • Beispiel am Spiel CryptoKitties: Bei der Markteinführung des Spiels hat sich das gesamte Ethereum-Netzwerk erheblich verlangsamt
  • Herausforderungen bei der Entwicklung einer benutzerfreundlichen Schnittstelle
    • die meisten Nutzer von Apps, die von zentralisierten Institutionen entwickelt wurden, erwarten eine einfache Bedienung
  • Erforderliche Code-Änderungen sind nur schwer möglich, da diese auf der Blockchain öffentlich gespeichert werden, laut Ethereum

Beispiele von dApps

  • dezentralisierte Browser: Brave-Browser
  • dezentralisiertes Multimedia-Plattform: Odysee
  • Rückverfolgbarkeit in komplexen industriellen Lieferketten: Circulor
  • dezentralisierte Suchmaschinen: Ipse

Demonstration einer eigenen dApp mit GUN – Softwareprojekt

Quelle: https://github.com/amark/gun

Die bekanntesten Blockchains sind jedoch mit Gebühren verbunden. Deswegen wurde auf eine P2P Open-Source Ökosystem GUN zurückgegriffen.

GUN ist ein kleines, einfaches und schnelles Protokoll für die Synchronisierung von Daten. GUN ist eine dezentrale Echtzeit-Graphdatenbank, welche zunächst offline ist. Diese Offline-First-Funktion bedeutet, dass die Anwendung alle Änderungen lokal speichert und automatisch synchronisiert, sobald eine Verbindung besteht, falls die Verbindung zu anderen Knotenpunkten aufgrund eines Netzwerkfehlers oder fehlender Verfügbarkeit unterbrochen wird.

GUN ermöglicht eine nahtlose Datensynchronisation zwischen allen angeschlossenen Peers und basiert somit auf einem P2P-Netzwerk.

ToDo-dApp

Mittels Angular wurde eine dezentrale P2P ToDo-Applikation mit GUN im Backend und Ionic im Frontend implementiert. Die Applikation kann auf GitHub eingesehen und ausprobiert werden: dApp-todo.

Peers

Zunächst ist GUN und SEA zu importieren. GUN ist, wie schon erwähnt, eine Graphdatenbank und SEA eine kryptographische Sicherheitsbibliothek für GUN.

Die Abbildung zeigt zwar Server auf, jedoch ist GUN P2P. Browser lassen aus Sicherheitsgründen keine direkte Verbindung zu anderen Rechnern zu, es sei denn, diese haben eine öffentlich zugängliche IP-Adresse. GUN hat sogenannte Relay-Server/Peers eingeführt, um die Datenpersistenz zu gewährleisten. Diese können ebenfalls vollständig dezentralisiert ablaufen und verfügen über keine zentralisierte Logik. Ein Relay-Server kommt erst zum Einsatz, wenn keine Peers zur Verfügung stehen.

(eigene Darstellung in Anlehnung an https://www.youtube.com/watch?v=J5x3OMXjgMc)

Datenspeicherung

Anders als Bitcoin, welches alle Daten auf allen Peers speichert, kann GUN jeden Peer beliebige (oder alle) Daten speichern lassen. In Browsern werden die Daten standardmäßig in localStorage gespeichert, aber es gibt auch einen indexedDB-Adapter, der RAD (unsere Radix-Speicher-Engine) verwendet.

Mit der User-Registrierung wird ein Public-Key zugewiesen, welche unsere ToDO-Liste darstellt. SEA kann unter anderem Public- und Private Keys generieren. Diese 1-minütige Cartoon-Animation erklärt primitiv die SEA API. Zu Demonstrationszwecken  wurde jedoch im Quelltext ein Public-Key und Private-Key festgelegt. Der Private-Key dient zum Ent-und Verschlüsseln der ToDos. Die Ent- und Verschlüsselung wird mit SEA realisiert. Da alle Daten prinzipiell auf jedem Clienten vorhanden sein können, fehlt gegenüber dem klassischen Client-Server-Modell ein Security Layer, wodurch die Verschlüsselung der Daten essentiell ist.

Verschlüsselung und Authentifizierung (eigene Darstellung)

Quellen

Was ist eine dApp? – Definition und Grundlagen (bitcoin-2go.de)

Decentralized Applications (dApps) Definition (investopedia.com)

Was ist eine DApp? — Bitpanda Academy

Decentralized applications (dapps) | ethereum.org

Wie funktionieren Ethereum-Token? – Tokens24

Intro to Decentralized Databases with GUN.js (developintelligence.com)

Gun-Chat (https://www.youtube.com/watch?v=J5x3OMXjgMc)

fireship-io/gun-chat: Decentralized Chat App with Gun.js (github.com)

GUN — the database for freedom fighters – Docs v2.0