{"id":882,"date":"2022-01-05T10:00:46","date_gmt":"2022-01-05T09:00:46","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=882"},"modified":"2022-01-05T15:21:33","modified_gmt":"2022-01-05T14:21:33","slug":"dapp","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2022\/dapp\/","title":{"rendered":"DApp &#8211; dezentrale Applikationen"},"content":{"rendered":"<h1>Was ist eine dApp?<\/h1>\n<p>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\u00e4ufig auf der Ethereum-Plattform aufgebaut sind, k\u00f6nnen f\u00fcr eine Vielzahl von Zwecken entwickelt werden, darunter Spiele, Finanzen und soziale Medien.<\/p>\n<p>Im Zusammenhang mit Kryptow\u00e4hrungen laufen dApps auf einem Blockchain-Netzwerk in einer \u00f6ffentlichen, quelloffenen, dezentralisierten Umgebung und sind frei von Kontrolle und Einmischung durch eine einzelne Beh\u00f6rde. Ein Entwickler kann zum Beispiel eine Twitter-\u00e4hnliche dApp erstellen und sie auf einer Blockchain platzieren, auf der jeder Nutzer Nachrichten ver\u00f6ffentlichen kann. Einmal ver\u00f6ffentlicht, kann niemand, auch nicht der App-Entwickler, die Nachrichten l\u00f6schen.<\/p>\n<h1>Wie funktionieren dApps?<\/h1>\n<p>Bei dApps l\u00e4uft der Backend-Code (Smart Contracts) in einem dezentralen Netzwerk und nicht auf einem zentralen Server. Sie nutzen beispielsweise die Ethereum-Blockchain f\u00fcr die Datenspeicherung und Smart Contracts f\u00fcr ihre Anwendungslogik. Der Code einer dApp besteht aus diesen Smart Contracts, die auf der dezentralisierten Blockchain gespeichert sind.<\/p>\n<p>Ein Smart Contract ist wie eine Reihe von Regeln, die auf der Blockchain f\u00fcr alle sichtbar sind und genau nach diesen Regeln ablaufen. Smart Contracts k\u00f6nnen Geldmittel halten, \u00e4hnlich wie ein Ethereum-Konto. Dies erm\u00f6glicht es dem Code, Vereinbarungen und Transaktionen zu vermitteln.<\/p>\n<p>Doch nicht jeder Smart Contract ist eine dApp, denn diese erm\u00f6glichen keine Benutzerinteraktion. Daf\u00fcr ist eine Frontend-Anwendung n\u00f6tig. Erst mit der Frontend-Anwendung ist eine Benutzerinteraktion m\u00f6glich, die es den Nutzern erlaubt mit dem Netzwerk zu interagieren und die Benutzeridentit\u00e4t zu verwalten.<\/p>\n<p>Die Funktionsweise von dApps kann am Beispiel von Ethereum vorgestellt werden:<\/p>\n<p>Ethereum nutzt die Ethereum Virtual Machnine (EVM), welche jeden Computeralgorithmus ausf\u00fchren und simulieren kann. Der Backend-Code der EVM besteht aus Smart Contracts und die Blockchain-Nodes f\u00fchren die Berechnungen des Konsensalgorithmus aus, die die Funktion der dApp gew\u00e4hrleistet. Die Blockchain-Nodes sind die dahinterstehenden Nutzer, die diese Berechnungnen ausf\u00fchren. Daf\u00fcr erhalten diese Nodes einen Reward in Form von Token. Jeder Token ist anders und ist in seinen Eigenschaften und Funktionen unterschiedlich. Au\u00dferdem sind diese abh\u00e4ngig vom Ersteller des Tokens und seiner Intention. Somit kann dieser Token verschiedene Formen annehmen: Echte Objekte bis hin zu Zahlungsmitteln f\u00fcr Transaktionen.<\/p>\n<h1>Vor- und Nachteile<\/h1>\n<h2>Vorteile<\/h2>\n<ul>\n<li>F\u00f6rdert die Privatsph\u00e4re der Nutzer\n<ul>\n<li>keine Eingabe von pers\u00f6nlichen Daten<\/li>\n<li>durch Smart Contracts \u2192 Transaktion zwischen 2 anonymen Parteien m\u00f6glich ohne sich auf eine zentrale Autorit\u00e4t verlassen zu m\u00fcssen<\/li>\n<\/ul>\n<\/li>\n<li>Widersteht der Zensur\n<ul>\n<li>eine dezentralisierte Social-Media-Plattform ist resistent gegen eine Zensur: Kein einzelner Teilnehmer auf der Blockchain Nachrichten l\u00f6schen oder deren Ver\u00f6ffentlichung blockieren kann<\/li>\n<\/ul>\n<\/li>\n<li>Flexible Plattform erm\u00f6glicht dApp-Entwicklung\n<ul>\n<li>innovative Einsatzm\u00f6glichkeiten f\u00fcr die Zukunft und Branchen (Spiele, Banken, Finanzen, Online-Shopping, &#8230;)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Nachteile<\/h2>\n<ul>\n<li>experimentell \u2192 Skalierbarkeit\n<ul>\n<li>gro\u00dfe Anzahl an Nutzern stellt derzeit ein Problem dar<\/li>\n<li>Beispiel am Spiel CryptoKitties: Bei der Markteinf\u00fchrung des Spiels hat sich das gesamte Ethereum-Netzwerk erheblich verlangsamt<\/li>\n<\/ul>\n<\/li>\n<li>Herausforderungen bei der Entwicklung einer benutzerfreundlichen Schnittstelle\n<ul>\n<li>die meisten Nutzer von Apps, die von zentralisierten Institutionen entwickelt wurden, erwarten eine einfache Bedienung<\/li>\n<\/ul>\n<\/li>\n<li>Erforderliche Code-\u00c4nderungen sind nur schwer m\u00f6glich, da diese auf der Blockchain \u00f6ffentlich gespeichert werden, laut Ethereum<\/li>\n<\/ul>\n<h1>Beispiele von dApps<\/h1>\n<ul>\n<li>dezentralisierte Browser: <a href=\"https:\/\/brave.com\/\" target=\"_blank\" rel=\"noopener\">Brave-Browser<\/a><\/li>\n<li>dezentralisiertes Multimedia-Plattform: <a href=\"https:\/\/odysee.com\/\">Odysee<\/a><\/li>\n<li>R\u00fcckverfolgbarkeit in komplexen industriellen Lieferketten: <a href=\"https:\/\/www.circulor.com\/\" target=\"_blank\" rel=\"noopener\">Circulor<\/a><\/li>\n<li>dezentralisierte Suchmaschinen: <a href=\"https:\/\/www.ipse.io\/\" target=\"_blank\" rel=\"noopener\">Ipse<\/a><\/li>\n<\/ul>\n<h1>Demonstration einer eigenen dApp mit GUN &#8211; Softwareprojekt<\/h1>\n<figure id=\"attachment_901\" aria-describedby=\"caption-attachment-901\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/68747470733a2f2f67756e2e65636f2f7365652f636f6d706172652e706e67.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-901\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/68747470733a2f2f67756e2e65636f2f7365652f636f6d706172652e706e67.png\" alt=\"\" width=\"560\" height=\"315\" \/><\/a><figcaption id=\"caption-attachment-901\" class=\"wp-caption-text\">Quelle: <a href=\"https:\/\/github.com\/amark\/gun\">https:\/\/github.com\/amark\/gun<\/a><\/figcaption><\/figure>\n<p>Die bekanntesten Blockchains sind jedoch mit Geb\u00fchren verbunden. Deswegen wurde auf eine P2P Open-Source \u00d6kosystem GUN zur\u00fcckgegriffen.<\/p>\n<p>GUN ist ein kleines, einfaches und schnelles Protokoll f\u00fcr die Synchronisierung von Daten. GUN ist eine dezentrale Echtzeit-Graphdatenbank, welche zun\u00e4chst offline ist. Diese Offline-First-Funktion bedeutet, dass die Anwendung alle \u00c4nderungen lokal speichert und automatisch synchronisiert, sobald eine Verbindung besteht, falls die Verbindung zu anderen Knotenpunkten aufgrund eines Netzwerkfehlers oder fehlender Verf\u00fcgbarkeit unterbrochen wird.<\/p>\n<p>GUN erm\u00f6glicht eine nahtlose Datensynchronisation zwischen allen angeschlossenen Peers und basiert somit auf einem P2P-Netzwerk.<\/p>\n<h2>ToDo-dApp<\/h2>\n<p>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: <a href=\"https:\/\/github.com\/stevomat\/dApp-todo\" target=\"_blank\" rel=\"noopener\">dApp-todo<\/a>.<\/p>\n<h3>Peers<\/h3>\n<p>Zun\u00e4chst ist GUN und SEA zu importieren. GUN ist, wie schon erw\u00e4hnt, eine Graphdatenbank und SEA eine kryptographische Sicherheitsbibliothek f\u00fcr GUN.<\/p>\n<p>Die Abbildung zeigt zwar Server auf, jedoch ist GUN P2P. Browser lassen aus Sicherheitsgr\u00fcnden keine direkte Verbindung zu anderen Rechnern zu, es sei denn, diese haben eine \u00f6ffentlich zug\u00e4ngliche IP-Adresse. GUN hat sogenannte Relay-Server\/Peers eingef\u00fchrt, um die Datenpersistenz zu gew\u00e4hrleisten. Diese k\u00f6nnen ebenfalls vollst\u00e4ndig dezentralisiert ablaufen und verf\u00fcgen \u00fcber keine zentralisierte Logik. Ein Relay-Server kommt erst zum Einsatz, wenn keine Peers zur Verf\u00fcgung stehen.<\/p>\n<figure id=\"attachment_926\" aria-describedby=\"caption-attachment-926\" style=\"width: 599px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/bis_dezentral_relais.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-926\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/bis_dezentral_relais.png\" alt=\"\" width=\"599\" height=\"424\" \/><\/a><figcaption id=\"caption-attachment-926\" class=\"wp-caption-text\">(eigene Darstellung in Anlehnung an <a href=\"https:\/\/www.youtube.com\/watch?v=J5x3OMXjgMc\">https:\/\/www.youtube.com\/watch?v=J5x3OMXjgMc<\/a>)<\/figcaption><\/figure>\n<h3>Datenspeicherung<\/h3>\n<p>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\u00e4\u00dfig in localStorage gespeichert, aber es gibt auch einen indexedDB-Adapter, der RAD (unsere Radix-Speicher-Engine) verwendet.<\/p>\n<p>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\u00fctige\u00a0<a href=\"https:\/\/gun.eco\/explainers\/data\/security.html\" target=\"_blank\" rel=\"noopener\">Cartoon-Animation<\/a> erkl\u00e4rt primitiv die SEA API. Zu Demonstrationszwecken\u00a0 wurde jedoch im Quelltext ein Public-Key und Private-Key festgelegt. Der Private-Key dient zum Ent-und Verschl\u00fcsseln der ToDos. Die Ent- und Verschl\u00fcsselung wird mit SEA realisiert. Da alle Daten prinzipiell auf jedem Clienten vorhanden sein k\u00f6nnen, fehlt gegen\u00fcber dem klassischen Client-Server-Modell ein Security Layer, wodurch die Verschl\u00fcsselung der Daten essentiell ist.<\/p>\n<figure id=\"attachment_969\" aria-describedby=\"caption-attachment-969\" style=\"width: 1119px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/verschlusselung.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-969 \" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/verschlusselung.png\" alt=\"\" width=\"1119\" height=\"951\" \/><\/a><figcaption id=\"caption-attachment-969\" class=\"wp-caption-text\">Verschl\u00fcsselung und Authentifizierung (eigene Darstellung)<\/figcaption><\/figure>\n<h1>Quellen<\/h1>\n<p><a href=\"https:\/\/bitcoin-2go.de\/was-ist-eine-dapp\/\">Was ist eine dApp? &#8211; Definition und Grundlagen (bitcoin-2go.de)<\/a><\/p>\n<p><a href=\"https:\/\/www.investopedia.com\/terms\/d\/decentralized-applications-dapps.asp\">Decentralized Applications (dApps) Definition (investopedia.com)<\/a><\/p>\n<p><a href=\"https:\/\/www.bitpanda.com\/academy\/de\/lektionen\/was-ist-eine-dapp\/\">Was ist eine DApp? \u2014 Bitpanda Academy<\/a><\/p>\n<p><a href=\"https:\/\/ethereum.org\/en\/dapps\/\">Decentralized applications (dapps) | ethereum.org<\/a><\/p>\n<p><a href=\"https:\/\/www.tokens24.com\/de\/cryptopedia\/basics\/wie-funktionieren-die-ethereum-token\">Wie funktionieren Ethereum-Token? \u2013 Tokens24<\/a><\/p>\n<p><a href=\"https:\/\/www.developintelligence.com\/blog\/2017\/07\/intro-decentralized-databases-gun-js\/\">Intro to Decentralized Databases with GUN.js (developintelligence.com)<\/a><\/p>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=J5x3OMXjgMc\">Gun-Chat (https:\/\/www.youtube.com\/watch?v=J5x3OMXjgMc)<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/fireship-io\/gun-chat\">fireship-io\/gun-chat: Decentralized Chat App with Gun.js (github.com)<\/a><\/p>\n<p><a href=\"https:\/\/gun.eco\/docs\/API\">GUN \u2014 the database for freedom fighters &#8211; Docs v2.0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was ist eine dApp? Dezentrale Applikationen (dApps) sind digitale Anwendungen oder Programme, die auf einer Blockchain oder einem Peer-to-Peer-Netzwerk (P2P)<\/p>\n","protected":false},"author":43,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[56,54,57],"class_list":["post-882","post","type-post","status-publish","format-standard","hentry","category-betriebliche-informationssysteme","tag-blockchain","tag-dapp","tag-p2p"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=882"}],"version-history":[{"count":22,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/882\/revisions"}],"predecessor-version":[{"id":971,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/882\/revisions\/971"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}