# InterPlanetary File System

Das Interplanetarische Filesystem, IPFS, ist ein weltweites Peer-to-Peer-Netzwerk um Dateien dezentral zu speichern. Dateien erhalten einen vom Inhalt abhängigen Hash, über den der Zugriff erfolgt. Damit ist das Filessystem inhaltsadressierbar. Diese Fileadressen kann man auch in Webseiten einbinden und damit Hypermedia erstellen, Firefox z. B. unterstützt zusätzlich zu HTTP auch das IPFS-Protokoll über Plug-ins. IPFS bietet auch Gateways zu HTTP an und kann mit normalem Webbrowser zugegriffen werden. IPFS wurde ursprünglich von dem Informatiker Juan Benet entworfen und ist nun ein Open-Source-Projekt, das von einer Gemeinschaft weiterentwickelt wird.

## Geschichte

Im Jahr 2014 verwendete das IPFS-Protokoll das Bitcoin Blockchain-Protokoll und dessen Netzwerkinfrastruktur, um unveränderliche Daten zu speichern, doppelte Dateien über das Netzwerk zu entfernen und Adressinformationen zum Zugriff auf Speicherknoten zu erhalten, um nach Dateien im Netzwerk zu suchen.
Es sind Implementierungen in Go und JavaScript vorhanden und eine Python-Implementierung ist in Arbeit. Die Go-Implementierung wird als Referenz betrachtet, während formale Spezifikationen entwickelt werden.

## Beschreibung

IPFS ist ein verteiltes Peer-to-Peer-Dateisystem, das zum Ziel hat, alle IT-Geräte mit dem gleichen System der Dateiverwaltung zu verbinden. In mancher Hinsicht ist IPFS dem World Wide Web ähnlich, aber IPFS kann auch als einzelner BitTorrent-Schwarm gesehen werden, der Objekte über ein Git-Repository austauscht. In anderen Worten bietet IPFS ein inhaltsadressiertes Blockspeicher-Modell, mit hohem Durchsatz und inhaltsadressierten Hyperlinks. Dies formt einen verallgemeinerten, gerichteten azyklischen Merkle-Graphen. IPFS kombiniert eine verteilte Hash-Tabelle, einen angeregten Blockaustausch und einen selbst-zertifizierenden Namensraum. IPFS hat keinen Single-Point-of-Failure, und Knoten müssen sich nicht gegenseitig vertrauen, mit Ausnahme derjenigen Knoten, mit denen sie verbunden sind. Verteilte Inhaltsauslieferung reduziert Übertragungsvolumen und verhindert DDoS-Angriffe, welche bei der Nutzung von HTTP möglich wären.
Auf das Dateisystem kann über eine Vielzahl an Arten zugegriffen werden, einschließlich FUSE und HTTP. Eine lokale Datei kann zu IPFS hinzugefügt werden und wird so weltweit verfügbar gemacht. Dateien werden über ihre Prüfsummen identifiziert und sind damit Cache-freundlich. Sie werden über ein BitTorrent-basiertes Protokoll verteilt. Andere Nutzer, welche die Inhalte betrachten, tragen dazu bei, diese Inhalte für weitere Nutzer im Netzwerk bereitzustellen. IPFS verfügt über einen Namensdienst, IPNS genannt. Es ist ein globaler Namensraum, basierend auf einer PKI, die die Bildung von Vertrauensketten unterstützt. Sie ist kompatibel mit anderen Namensdiensten und kann beispielsweise DNS, .onion, und .bit auf IPNS abbilden.

## Merkle-Datenformat

Jeder Merkle-Hashbaum ist ein gerichteter azyklischer Graph, weil auf jeden Knoten über seinen Namen zugegriffen wird. Jeder Zweig eines Merkle-Hashbaums ist der Hash seiner lokalen Inhalte und benennt seine Kindknoten nach ihren Hashes anstatt nach ihren vollständigen Inhalten. Daher gibt es nach seiner Erzeugung keine Möglichkeit mehr, einen Knoten zu bearbeiten. Unter der Voraussetzung, dass es zu keinen Hashkollisionen kommt, verhindert dies Endlosschleifen, da man nicht den ersten erstellten Knoten mit dem letzten Knoten verknüpfen kann, um die letzte Referenz zu erstellen.
Im Allgemeinen gilt für jeden Merkle: Um einen neuen Zweig zu erstellen oder einen vorhanden zu verifizieren, wird ein Hash-Algorithmus auf eine Kombination der lokalen Inhalte angewendet, wie einer Liste von Kindes-Prüfsummen und anderen Bytes. Es sind einige wenige unterschiedliche Hash-Algorithmen in IPFS verfügbar.
Die Daten, die als Eingabe für jeden dieser Hash-Algorithmen verwendet werden, sind dokumentiert.

## Anwendungsbeispiele

Das Unabhängigkeitsreferendum in Katalonien im Herbst 2017 wurde vom spanischen Verfassungsgericht für illegal erklärt und damit in Verbindung stehende Websites wurden blockiert. Anschließend wurden diese Websites von der katalanischen Piratenpartei unter Verwendung von IPFS gespiegelt, um die Blockierungsanweisung des Obersten Gerichtshofes Kataloniens zu umgehen.
IPFS wird zur Erstellung eines Spiegels der Wikipedia-Projekte verwendet, um Menschen, die unter repressiven Regimen leben, ungehinderten Zugang zu diesen Inhalten zu ermöglichen.
Die Kryptowährung Filecoin basiert auf einem IPFS-Dateisystem.