Die Version 0.9 des dezentralen Dateisystems IPFS (InterPlanetary File System) wurde vorgestellt, das ein globales versioniertes Dateispeicher-System bildet, das in Form eines P2P-Netzwerks aus Teilnehmer-Systemen besteht. IPFS kombiniert Ideen, die zuvor in Systemen wie Git, BitTorrent, Kademlia, SFS und dem Web realisiert wurden, und erinnert an ein einheitliches BitTorrent 'Schwarm' (Peers, die am Austausch teilnehmen), das Git-Objekte austauscht. IPFS unterscheidet sich durch die inhaltliche Adressierung und nicht durch den Speicherort und beliebige Namen. Der Code der Referenzimplementierung ist in Go geschrieben und wird unter den Lizenzen Apache 2.0 und MIT verbreitet.
In der neuen Version:
- In den Gateways wurde die Möglichkeit implementiert, beliebige IPLD-Grafen (InterPlanetary Linked Data, Namensraum zur Adressierung von Ressourcen basierend auf Hashes) über den Handler '/api/v0/dag/export' hochzuladen, der eine Funktion ausführt, die dem Befehl 'ipfs dag export' ähnelt. Der Export erfolgt im Format eines DAG-Archivs (gerichteter azyklischer Graph). Der erhaltene IPLD ermöglicht es dem Nutzer zu überprüfen, dass die vom öffentlichen Gateway geladenen Daten mit dem angeforderten symbolischen Namen übereinstimmen (zum Beispiel kann man bei Erhalt der Datei '/ipfs/bafyexample' überprüfen, ob sie mit dem Inhaltshash übereinstimmt, der ursprünglich mit dem symbolischen Namen verknüpft war).
- Es wurde die Möglichkeit geschaffen, einen eigenen DNS-Resolver zu definieren, der das Protokoll 'DNS over HTTPS' verwendet und anstelle des im Betriebssystem festgelegten Resolvers angewendet wird. Es ist auch möglich, den Resolver für einzelne Domains Top-Level-Domains zu überschreiben. Bei DNSLink, dem Mechanismus zur Verknüpfung gewöhnlicher DNS-Namen mit IPFS-Adressen, kann eine selektive Ersetzung des Resolvers verwendet werden, um Domainnamen zu erstellen, die nicht mit ICANN verbunden sind, beispielsweise kann der Resolver 'https://eth.link/dns-query' zur Bearbeitung von Top-Level-Domains '.eth' aktiviert werden, die offiziell nicht bei ICANN genehmigt sind.
- Das Web-Interface (WebUI) wurde aktualisiert, das experimentelle Unterstützung für das Anheften externer Dienste (analog zum Befehl 'ipfs pin remote service') bietet. Das Design der Bildschirme für die Arbeit mit Dateien und Peers wurde geändert.
- Im CLI-Interface wurde die Möglichkeit hinzugefügt, Schlüssel mit dem Befehl 'ipfs key export' zu exportieren, ohne den Hintergrundprozess ipfs anzuhalten.
- Ein experimenteller DHT-Client wurde hinzugefügt, der zur Datensuche unter Verwendung einer verteilten Hash-Tabelle dient und sich durch eine höhere Leistung vom IPNS-basierten Ansatz unterscheidet.
- Die Komponenten für die Migration auf neue Versionen von go-ipfs sind in separate Pakete unterteilt, um den Download zu beschleunigen und die Organisation von Updates in Konfigurationen mit eigenen Plugins zu vereinfachen. Der Download-Prozess für Updates über IPFS wurde automatisiert und es wurden Einstellungen hinzugefügt, um die Anwendung von Updates in Situationen ohne Netzwerkverbindung oder bei Firewall-Sperrungen zu erleichtern.
Es sei daran erinnert, dass in IPFS der Link zum Zugriff auf eine Datei direkt mit ihrem Inhalt verbunden ist und einen kryptografischen Hash des Inhalts umfasst. Die Adresse der Datei kann nicht willkürlich umbenannt werden, sie kann sich nur nach einer Änderung des Inhalts ändern. Ebenso ist es nicht möglich, eine Datei zu ändern, ohne die Adresse zu ändern (die alte Version bleibt an der bisherigen Adresse, während die neue über eine andere Adresse verfügbar wird, da der Hash des Inhalts sich ändert). Angesichts der Tatsache, dass sich die Datei-ID bei jeder Änderung ändert, bieten Dienste an, um permanente Adressen zu verknüpfen, die verschiedene Versionen der Datei berücksichtigen (IPNS), oder um einen Alias ähnlich wie bei traditionellen FS und DNS zu sichern (MFS (Mutable File System) und DNSLink).
Analog zu BitTorrent werden die Daten direkt auf den Systemen der Teilnehmer gespeichert, die Informationen im P2P-Modus austauschen, ohne an zentrale Knoten gebunden zu sein. Wenn eine Datei mit einem bestimmten Inhalt benötigt wird, findet das System Teilnehmer, die diese Datei haben, und liefert sie in mehreren Streams von ihren Systemen in Teilen. Nach dem Herunterladen der Datei auf sein System wird der Teilnehmer automatisch zu einem der Punkte für deren Verbreitung. Zur Bestimmung der Teilnehmer im Netzwerk, auf deren Knoten der relevante Inhalt vorhanden ist, wird eine verteilte Hash-Tabelle (DHT) verwendet. Für den Zugriff auf das globale FS kann IPFS über das HTTP-Protokoll oder über ein virtuelles FS /ipfs mithilfe des FUSE-Moduls eingebunden werden.
IPFS hilft, solche Aufgaben wie die Zuverlässigkeit der Speicherung zu lösen (wenn der ursprüngliche Speicherort ausfällt, kann die Datei von den Systemen anderer Benutzer heruntergeladen werden), das Gegensteuern von Zensur bei Inhalten (um zu blockieren, müsste jeder Knoten der Benutzer, auf denen eine Kopie der Daten vorhanden ist, blockiert werden) und die Organisation des Zugriffs bei fehlender direkter Verbindung zum Internet oder bei schlechter Verbindung (Daten können über die nächsten Teilnehmer im lokalen Netzwerk heruntergeladen werden). Neben der Speicherung von Dateien und dem Datenaustausch kann IPFS auch als Grundlage für die Erstellung neuer Dienste verwendet werden, zum Beispiel zur Organisation des Betriebs von Websites, die nicht an Server gebunden sind, oder zur Erstellung verteilter Anwendungen.

Quelle: opennet.ru
