Das InterPlanetary File System

Di, 2. November 2021, Niklas

IPFS funktioniert grundlegend anders, als das normale Web. Es kommt vollkommen ohne zentralisierte Server aus und seine Inhalte liegen auf vielen verschiedenen Servern verteilt. Es nutzt das  BitTorrent Protokoll zum Austausch der Daten, allerdings ohne zentrale Torrent Tracker. Kryptografische Hashes der Dateien sorgen gleichzeitig dafür, dass Dateien im dezentralisierten Netz aufgefunden werden können, als auch zur Verifizierung der Korrektheit der angefragten Datei.

Damit kann IPFS auch auf einige wenige festgelegte Certificate Authoritys verzichten, um die Sicherheit bei der Datenübertragung zu gewährleisten. Dateien im IPFS können auf mehreren Servern gespiegelt werden. So können zum Beispiel grosse Videos effizient verteilt werden, mit hoher Downloadgeschwindigkeit und geringerer Trafficauslastung bei dem, der die Datei hineingestellt hat.

Aber sogar ganze Software-Repositorys von Betriebssystemen können über IPFS verteilt werden, wie es das Haiku Projekt mit dem experimentellen Angebot unter de.hpkg.haiku-os.org zeigt - Leider hat es die IPFS-basierte Lösung aufgrund anfänglicher Schwierigkeiten mit der Stabilität nicht zur Standardeinstellung geschafft, aber ich nutze das IPFS Repository auf allen Geräten und habe seit vielen Wochen keine Probleme mehr bemerkt.

IPFS eignet sich auch hervorragend zum Umgehen von staatlicher Zensur, da nicht einfach bestimmte Server blockiert werden können. Man müsste einen grossen Teil des Internets blockieren, um den Zugang zu IPFS unmöglich zu machen. Das nutzte man beim Block von Wikipedia in der Türkei, um eine unzensierbare Kopie der Seite anzubieten.

Am häufigsten wird IPFS für die Verteilung von statischen Dateien verwendet, da sich das relativ einfach in bestehende Projekte übernehmen lässt. Es gibt aber auch die Möglichkeit, dynamische Apps auf Basis des IPFS Netzwerks zu entwickeln. Eine umfangreiche Liste von IPFS-basierten Programmen bietet das Projekt auf seiner Webseite an.

Um direkt auf Inhalte im IPFS Netzwerk zugreifen zu können, bietet das Projekt selbst verschiedene Programme an. Direkt auf dem Computer ist die Nutzung des IPFS Desktop Clients am einfachsten. Dieser ist für die gängigen Betriebssysteme verfügbar und führt den Nutzer in einem grafischen Interface durch die Einrichtung. Er bietet auch systemweit das Öffnen von ipfs://, ipns:// und dweb: Adressen an.

Soll IPFS auf einem Server oder Computer ohne grafische Desktopumgebung installiert werden, gibt es alternativ den IPFS Command-line Client. Dieser muss zuerst über das Terminal installiert und eingerichtet werden und bietet dann als Webapp dieselbe grafische Verwaltungsoberfläche an, die auch der Desktop Client mitbringt.

Mit IPFS Companion gibt es auch eine Browsererweiterung, mit der IPFS Adressen direkt im Browser geöffnet werden können. Voraussetzung für das Funktionieren der Erweiterung ist ein lokal installiertes IPFS Node. Im Brave Browser und der Android Version von Opera werden IPFS Adressen ohne zusätzliches Add-on und ohne lokal installiertes IPFS Node unterstützt.

Wer nichts installieren möchte, kann auch über ein öffentliches IPFS Gateway auf die Inhalte im IPFS Netzwerk zugreifen. Dazu bietet unter anderem das IPFS Projekt selbst und der CDN Dienstleister Cloudflare ein Gateway an. Ausserdem betreut das Projekt eine vollständige Liste mit vielen weiteren öffentlichen Gateways, die genutzt werden können.

IPFS wurde von Juan Benet entwickelt, der daraufhin im Mai 2014 die Firma Protocol Labs gegründet hat, die die Entwicklung von IPFS vorantreibt. Die erste Alpha Version von IPFS wurde im Februar 2015 veröffentlicht und im Oktober des gleichen Jahres schrieb das News-Portal TechCrunch bereits über das Projekt und sagte, es verbreite sich sehr schnell durch Mundpropaganda.

Die am stärksten verbreitete IPFS Implementierung ist in Go geschrieben. Sie dient auch als Referenz, während noch an einer formalen Protokollspezifikation gearbeitet wird. Ausserdem gibt es eine offizielle IPFS Implementierung in Javascript. Weiterhin gibt es Implementierungen in Python und C, die von der Community entwickelt und gepflegt werden.

Quellen: