Kürzlich habe ich meine erste Webseite mit Web3-Technologien veröffentlicht. Dazu habe ich eine Seite auf das sogenannte IPFS (InterPlanetary File System) hochgeladen, sie unter dries.eth
mit dem ENS (Ethereum Name Service) verfügbar gemacht und schließlich mit einem web3-fähigen Browser besucht. Wenn ihr jetzt nicht wisst, was das alles zu bedeuten hat, schnallt euch an für einen kleinen Crashkurs.
Ein Gastbeitrag von Dries Buytaert
Schritt 1: Kauft euch einen ENS-Domainnamen
Letztes Jahr habe ich mir buytaert.eth
gesichert und kürzlich auch dries.eth
erworben. Beide sind so genannte ENS-Domains.
ENS steht für Ethereum Name Service und ist ein Open Source-Protokoll, das auf der Ethereum-Blockchain läuft und die Domain-Namen für das Web3 verwaltet. ENS ist sozusagen das DNS für das Web3. So wie das DNS – ähnlich einem Telefonbuch – IP-Adressen einem Domain-Namen zuordnet, gibt das ENS Ethereum-Adressen einen Domain-Namen. Diese Ethereum-Adresse kann dann wiederum mit einer Krypto-Wallet, dem Hash einer bestimmten Datei oder anderen Informationen verknüpft sein.
Aber ENS ist nicht nur ein Service für Ethereum. Es ist in erster Linie ein genereller Dienst für das Web3, der lediglich auf der Ethereum-Blockchain entwickelt wurde – mit Hilfe der so genannten Smart Contracts. Und da ENS auf einer Blockchain läuft, ist das System im Gegensatz zu DNS wesentlich widerstandsfähiger gegenüber Zensur.
Derzeit braucht man eine solche Adresse hauptsächlich, um das Empfangen von Kryptowährungen einfacher zu machen. Um mir Ether zu schicken, müsstet ihr sie normalerweise an 0xbAD65DE65AE2c23f5eA30d12fC8c2f883cbe671f
senden, die Adresse meiner Wallet. Da mir allerdings nun dries.eth
gehört, reicht diese Kennung als Adressat. Viel einfacher zu merken!
Ich finde es ziemlich erstaunlich, dass dries.eth
überall auf der Welt, ohne Erlaubnis von irgendwem und ohne einen einzigen Vermittler Kryptowährungen annehmen kann. Dazu aber ein andermal. In diesem Beitrag soll es darum gehen, wie dries.eth
benutzt werden kann, um eine komplett dezentralisierte Web3-Website zu hosten.
Eine .eth
-Domain könnt ihr über die ENS Domain-Website kaufen. Und weil eine .eth
-Domain im Grunde auch ein NFT (Non-Fungible Token) ist, könnt ihr sie auch auf NFT-Marktplätzen wie beispielsweise OpenSea erstehen und wieder veräußern.
Als ENS im Mai 2017 gestartet wurde, war es nur mit der ENS-nativen, so genannten TLD .eth
kompatibel. Aber seit August 2021 hat man über ENS auch Zugriff auf das volle Spektrum von DNS-Namenssätzen. Wenn dir also zum Beispiel die Domain example.com
auf DNS gehört, kannst du die ENS Domain-Website benutzen, um die entsprechenden Einträge für example.com
auf ENS anzulegen.
Schritt 2: HTML Dateien zu IPFS hochladen
Das InterPlanetary File System IPFS ist ein Open Source-Protokoll und ein Peer-to-Peer-Netzwerk, um Daten zu speichern und zu teilen.
Heutzutage werden die meisten Webseiten auf einem einzigen Server, in einem einzigen Datencenter gehosted. Das führt zu einer geringen Resilienz gegen Ausfälle, Denial-of-Service-Attacken oder gar die Zensur durch den Staat.
Anspruchsvollere Websites replizieren ihre Webpages mit so genannten CDNs oder anderen Cache-Systemen. Meine eigene Website z.B. benutzt mehrere Kubernetes-Webknoten, Varnish und Cloudflare – und das nicht, weil sie es unbedingt nötig hätte, sondern weil mein Unternehmen einige der größten Webseiten der Welt mit am Laufen hält. Mit den oben genannten Services kann die Resilienz einer Website verbessert werden.
Mit dem IPFS können eure Webseiten nun gleich auf Hunderten von IPFS-Knotenpunkten (Nodes) weltweit vervielfältigt werden. Und jeder kann irgendwo auf der Welt einen solchen IPFS-Node betreiben. So entsteht ein einziges globales Netzwerk, in dem jede Datei einen einzigartigen, weltweiten Identifikator bekommt.
Du hast Lust auf Zukunft?
Dann bist du bei 1E9 richtig. Hier geht’s um Technologien und Ideen, mit denen wir die Welt besser machen können. Konstruktiver Journalismus statt Streit und Probleme! Als 1E9-Mitglied bekommst du außerdem exklusive Newsletter, Workshops und Events. Vor allem aber wirst du Teil einer Community von Zukunftsoptimisten, die viel voneinander lernen.
Jetzt Mitglied werden!Theoretisch ist IPFS also resilienter als das traditionelle Hosting von Webseiten, weil die Knotenpunkte eben von verschiedenen Personen und Organisationen auf der ganzen Welt betrieben werden und sich Inhalte über diese Knotenpunkte replizieren. Andererseits ist es dadurch aber auch schwieriger, Desinformation zu begegnen.
Ich habe hier bewusst „theoretisch“ geschrieben, weil Inhalte, die auf IPFS hochgeladen werden, nur so lange online bleiben, wie irgendein Knotenpunkt diesen Inhalt auch hostet. IPFS hat nämlich keinen eingebauten Mechanismus, der andere Nodes incentiviert, Daten bestimmten Inhalts zu vervielfältigen. Jeder Node hostet zunächst seine eigenen Dateien. Darüber hinaus gibt es allerdings auch Nodes, die Daten in Kooperation mit anderen Nodes oder als Service anbieten.
Und hier nun kommt der Kyptowährungs-Token Filecoin ins Spiel. Auch dieser ist wie IPFS ein Open Source-Protokoll, das – anders als IPFS – auf einer Blockchain basiert. Filecoin erweitert IPFS um einen offenen Marktplatz für die Speicherung und Vervielfältigung von Daten. Miner können Filecoins verdienen, indem sie IPFS-Daten speichern und vervielfältigen. Und weil Filecoin auf einer Blockchain basiert, wird der Marktplatz, auf dem all diese Transaktionen stattfinden, von keinem Intermediär betrieben, sondern die Speicherdeals werden programmatisch über die Netzwerkknoten gehandelt.
Lange Rede, kurzer Sinn: Um meine eigene Webpage auf IPFS zu hosten, brauche ich also mindestens einen IPFS-Node, der meine Inhalte bereitstellt. Dafür gibt es nun zwei Lösungen: a) ich betreibe meinen eigenen Node oder b) ich bezahle dafür einen Drittanbieter.
Einen eigenen IPFS-Node betreiben
Um dabei zu helfen, ein dezentralisiertes Netz zu bauen, sollten wir diese Lösung eigentlich bevorzugen. Unten seht ihr meinen lokalen IPFS-Knotenpunkt, der meine index.html
-Datei hostet.
Meine Website vervielfältigen
Weil der lokale IPFS-Node auf meinem Laptop läuft, ist meine Webpage nur dann online, wenn auch mein Laptop mit dem Internet verbunden ist.
Wie vorhin schon erklärt, kann ich Filecoin benutzen, um andere Knotenpunkte im Netzwerk dafür zu bezahlen, meine Inhalte zu hosten. Aber mir ist noch eine bessere Lösung eingefallen, nämlich einer meiner besten Freunde, der Blockchain-Experte Stefaan Ponnet.
Ihr braucht nur ein paar Freunde und könnt euch gegenseitig eure Webseiten ans IPFS anpinnen – und schon muss keiner mehr fürs Webhosting bezahlen!
Ich habe ihn gebeten, meine Datei an seinen IPFS-Node „anzupinnen“, denn der ist permanent mit dem Internet verbunden. Dadurch bleibt meine Webpage online, selbst wenn mein Laptop mal die Internetverbindung verliert.
Drittanbieter und Services für das Anpinnen
Falls ihr nicht euren eigenen IPFS-Service betreiben möchtet, könnt ihr auch bestimmte Dienstleister nutzen. Ich habe etwa ein Dutzend Pin-Services gefunden und die folgenden ausprobiert:
Bei Infura kann man direkt das Kommandozeilen-Tool verwenden, um Dateien hochzuladen:
$ ipfs-upload-client --id xxx --secret yyy ./index.html
Hier steht xxx
steht für die Infura Projekt-ID und yyy
für den Secret Key.
Fleek und Pinata hingegen erlaubt es, Dateien vom Web-Browser aus hochzuladen:
Falls ihr auf der Suche nach einer Filecoin-basierten Lösung seid, kann ich euch web3.storage und estuary.tech ans Herz legen.
Schritt 3: Deine Web3 Webpage besuchen
Nachdem ihr eine Datei auf IPFS hochgeladen habt, kriegt ihr einen „Hash“, also eine einzigartige ID oder Adresse der Datei. Der Hash meiner index.html
-Datei ist:
bafybeibbkhmln7o4ud6an4qk6bukcpri7nhiwv6pz6ygslgtsrey2c3o3q
Auf Inhalte, die auf IPFS gehosted werden, kann man mit einem IPFS-kompatiblen Browser wie zum Beispiel Brave zugreifen. Firefox, Safari und Chrome unterstützen IPFS nativ momentan noch nicht, aber es gibt dafür schon viele Browser-Erweiterungen.
Mit Brave könnt ihr meine Webpage über ipfs://bafybeibbkhmln7o4ud6an4qk6bukcpri7nhiwv6pz6ygslgtsrey2c3o3q aufrufen (man beachte das ipfs://
-Schema).
Schritt 4: Deine Webpage mit deinem Domain-Namen verbinden
Es ist ziemlich cool, dass ihr jetzt eure eigene, auf IPFS gehostete Website aufrufen könnt, aber vermutlich werdet ihr eure Freunde nicht darum bitten, ipfs://bafybeibbkhmln7o4ud6an4qk6bukcpri7nhiwv6pz6ygslgtsrey2c3o3q
in den Browser einzugeben. Ein 60 Buchstaben langer hexadezimaler Hash ist dafür nicht gerade ideal.
Hier nun kommt ENS ins Spiel. Ich musste dafür nur den Content Resolver Record von dries.eth
mit dem IPFS-Hash meiner Webpage aktualisieren.
Wenn man einen ENS-Eintrag updatet, wird er auf der Ethereum-Blockchain aktualisiert. Dafür muss man eine so genannte „Gas Fee“, d.h. einer Netzwerk-Transaktionsgebühr bezahlen. Wie ihr auf Etherscan sehen könnt, kostete es mich 0.004369 Ether, rund 11,69$ zum Zeitpunkt der Veröffentlichung, um meinen ENS-Eintrag upzudaten.
Jetzt könnt ihr einen ENS- und IPFS-kompatiblen Browser nutzen, um https://dries.eth zu besuchen. Voila: eine echte dezentralisierte Website!
Sind ENS und IPFS nun die Zukunft des Netzes?
Es gibt einige große Mängel:
-
Das Ganze funktioniert nur mit statischen Seiten. Die meisten Firmen und Organisationen benutzen dynamische Webseiten, die auf Systemen wie Drupal oder WordPress basieren. Diese kann man zwar als statisches HTML exportieren und die Dateien dann auf IPFS hochladen. Aber längst nicht alle Seiten sind dafür geeignet.
-
Es ist für viele zu teuer. Jedes Mal, wenn ihr eure Webseite verändert und auf IPFS aktualisiert, generiert ihr einen neuen Hash. Und ein neuer Hash bedeutet eine Aktualisierung des ENS-Eintrags und das wiederum bedeutet erneute Gas Fees. Wenn ihr also öfters eure Webseite aktualisieren müsst, wird’s teuer.
-
Es ist für einige zu langsam. Um die ENS-Einträge zu aktualisieren, braucht es eine manuelle Eingabe, eine Genehmigung der Transaktion und schließlich das Warten, bis sich die Blockchain aktualisiert hat. Sowas geht nicht für News-Websites, die ihre Informationen in Echtzeit liefern müssen.
-
Mangel an Browser-Kompatibilität. Standardmäßig wird ENS von allen großen Browsern bisher noch nicht unterstützt. Bis das passiert, wird sich das Web3 noch immer wie ein Paralleluniversum anfühlen.
Ich bin mir sicher, dass diese Mängel in den nächsten Jahren adressiert werden. Für manche gibt es möglicherweise jetzt schon Lösungen.
Davon abgesehen halte ich IPFS und ENS für durchaus vielversprechend:
-
Ich bevorzuge die IPFS-Schnittstelle gegenüber der proprietären S3-API von Amazon. Denn sie macht meine Web-Applikationen mobiler. Außerdem mag ich Open Source-Lösungen immer lieber.
-
Die Vorstellung, dass künftige Web-Services „permissionless“ sind, also einen völlig freien Zugang haben und gleichzeitig programmierbar sind, finde ich atemberaubend. Ich frage mich zum Beispiel, ob ich nicht einen Smart Contract entwickeln könnte, der Miner auf der ganzen Welt automatisch dafür bezahlt, dass sie meinen Blog und meine Fotoalben für die nächsten 250+ Jahre online halten. Diese Idee würde ich echt gerne in einem zukünftigen Beitrag weiterverfolgen.
-
ENS fühlt sich wie ein nützlicher Baustein an, um verschiedene Dinge zu regeln und zu verifizieren. Es gibt viele Anwendungsfälle für eine globale Datenbank von Schlüsselwerten.
Was bedeutet Web3 für Entwickler?
Wenn du ein Entwickler bist, dann stell dir Web3 als eine sich ständig erweiternde Sammlung von „Web Services“ vor.
IPFS und ENS sind nun zwei dieser „Web Services“. Derzeit liefern die beiden hauptsächlich eine bessere Resilienz und Schutz vor Zensur. Wenn dies wichtig für eure Webseiten ist, benutzt diese Services! Wenn nicht, dann nicht. Als Betreiber und Entwickler von https://dri.es ist mir persönlich der Schutz vor Zensur vollkommen egal. Genau deswegen gebe ich mich einstweilen damit zufrieden, weiterhin traditionelle Hosting-Services zu verwenden. Und trotzdem ist mir bewusst, dass IPFS und ENS in der Zukunft noch viel interessanter werden können.
Den meisten Besitzern von Webseiten bieten IPFS und ENS in ihrer jetzigen Form nur einen begrenzten Nutzen, einer sehr kleinen Gruppe jedoch einen enormen Nutzen. Das könnte sich in Zukunft ändern.
Was ist das Versprechen von Web3?
Ich glaube, dass es wichtig ist, die Entwicklungen im Web3 zu verfolgen. Denn es werden neue leistungsstarke Web3-Services entstehen. Die Tendenz des Internets, sämtliche Intermediäre zu eliminieren, zeigt sich seit über zwanzig Jahren. Es ist ein unaufhaltsamer Trend. Und mit dem Web3 sind weitere Vermittler dem Risiko der Dezentralisierung ausgesetzt.
Das gilt auch für Organisationen, deren Geschäftsmodelle auf proprietären Datenbanken und Registern basieren: Finanzinstitutionen, Zentralbanken, manche gemeinnützige Organisationen und soziale Gemeinschaften. Viele von diesen könnten sich in echte dezentralisierte Web-Services verwandeln.
Zum Beispiel bieten viele E-Commerce-Webseiten Kreditprogramme durch PayPal oder Square an. Es könnte nicht lange dauern, bis so einige dieser Vermittler durch Web-Services ausgewechselt werden, die einen offenen Zugang besitzen und einen kleineren Zinssatz und/oder niedrigere Transaktionskosten verlangen. Wenn es um höhere Gewinnmargen geht, werden technische Lösungen schnell übernommen.
Die Blockchain wird es uns erlauben, Probleme der Koordinierung und des Eigentumsrechts durch neue Methoden zu lösen. Alle, die im Web Inhalte produzieren, egal ob Bilder, Musik, Videos oder Blog-Posts, könnten davon profitieren. Die Möglichkeit, dass andere eure Inhalte weiterverwenden und der dabei erzielte Profit automatisiert an euch zurückfließt, ist ziemlich spannend.
Am allermeisten hoffe ich darauf, dass dezentralisierte Services uns dabei helfen, öffentliche Güter zu verwalten, Open Source-Projekte aufrecht zu erhalten und die Macht von großen Organisationen auf eine sinnvolle Weise zurück zu Individuen und Gemeinschaften zu bringen.
Dieser Artikel ist zunächst im Blog von Dries Buytaert auf Dri.es erschienen. Übersetzung: 1E9.
Hat dir der Artikel gefallen? Dann freuen wir uns über deine Unterstützung! Werde Mitglied bei 1E9 oder folge uns bei Twitter, Facebook oder LinkedIn und verbreite unsere Inhalte weiter. Danke!