InterPlanetary File System
InterPlanetary File System (IPFS, meziplanetární souborový systém) je internetový peer-to-peer protokol, sloužící k přímé distribuci dat bez použití serverů. IPFS má za cíl zlepšit některá technická omezení sdílení dat na webu.

Autorem systému je Juan Benet, který popsal specifikaci v dokumentu IPFS - Content Addressed, Versioned, P2P File System. IPFS je od počátku vyvíjen jako otevřený software. Na GitHubu je dostupná implementace v jazyce Go, která funguje na operačních systémech Windows, MAC OS X a Linux. Současně s tím vzniká také implementace v JavaScriptu, která může běžet přímo ve webovém prohlížeči bez nutnosti instalace. Na začátku roku 2021 byl IPFS zabudován do webového prohlížeče Brave, a na konec roku 2022 je naplánováno společnostmi Lockheed Martin a Filecoin Foundation vyslání satelitního uzlu IPFS na nízkou oběžnou dráhu Země v rámci zkušební mise. Rozhodli se tak kvůli nevýhodám centralizovaného řešení, které například zahrnuje příliš vysokou latenci při přenosu dat mezi vzdálenými tělesy ve vesmíru a závislost na prostředcích poskytnutých ze Země.

Účel 
Cílem protokolu IPFS je odstranit hlavní nedostatky protokolu HTTP a vyřešit tak následující problémy dnešního webu:

Ztráta informací 
Hypertextové odkazy protokolu HTTP míří na konkrétní server. Pokud jeho provozovatel ukončí činnost, všechny webové odkazy, které na tento server směřovaly, přestanou fungovat. Starší weby proto mohou obsahovat mnoho nefunkčních odkazů. Ztráta informací však může být mnohem dramatičtější. 26. října 2009 zmizelo z Internetu 38 milionů webů hostovaných na platformě Geocities, jejíž činnost firma Yahoo toho dne ukončila. Tento problém se snaží alespoň částečně zmírnit nezisková organizace Internet Archive, která archivuje webové stránky, aby je uchovala pro budoucí generace, a umožňuje prohledávání svého archivu skrze portál Wayback Machine. Zmizelý obsah lze proto alespoň dodatečně dohledat, avšak aplikace, které s ním pracovaly, vidí pouze nefunkční odkaz. V IPFS nejsou data adresována dle serveru, na
kterém se nacházejí, ale dle obsahu (viz sekce Princip fungování). Znamená to, že dokud je někde na Internetu alespoň jeden člověk, který má kopii daného souboru, budou odkazy na něj fungovat stejně jako dříve.

Centralizace 
Internet byl původně plánován jako distribuovaný systém – síť, ve které žádný uzel není nenahraditelný. Omezení architektury klient-server má však za následek to, že provozovat vlastní služby pro větší množství uživatelů může být velmi nákladné. Většina obsahu je proto soustředěna do obřích datových center pod kontrolou několika korporací, jako je Facebook, Google nebo Microsoft, což zvyšuje riziko zneužívání těchto dat, jak ukazují například odhalení Edwarda Snowdena z roku 2013. IPFS nepotřebuje žádné centralizované servery, funkce takového serveru může být rozprostřena mezi tisíce uživatelů v mnoha různých zemích světa. To výrazně zlepšuje soukromí uživatelů, protože zde není žádné centrální místo, odkud by mohly být jejich aktivity snadno zaznamenávány.

Nízká efektivita 
Dnešním internetem zbytečně protékají obrovské objemy dat, která by bylo možné získat mnohem snáze, pokud by je uživatelé sdíleli i mezi sebou. Nejsledovanější video na serveru YouTube, videoklip Gangnam Style, má již více než 2,344,327,696 zobrazení. Protože v protokolu HTTP klient komunikuje výhradně se serverem, posílají nyní servery firmy Google toto video, stejně jako kterékoli jiné, každému divákovi zvlášť. Velikost zmíněného videoklipu je 117 megabytů, takže bylo třeba po internetu přenést 274,286,340,432 megabytů (274 petabytů), i když jde stále o ta samá data. Provozovatelé serverů musí za přenesená data platit. Pokud by Google platil 1 cent za 1 gigabyte, byla by cena distribuce tohoto jednoho videa okolo 2 742 860 amerických dolarů. Takové náklady nepředstavují příliš velký problém pro obří firmu jako je Google, která provoz služby YouTube financuje ze zisků z reklamy. Pro většinu jednotlivců nebo neziskových organizací by však provoz takové služby nebyl finančně dostupný, což je jedna z příčin centralizace.

Architektura klient-server přináší také další problém: čím více uživatelů má zájem o daný obsah, tím horší bývá jeho dostupnost. Server musí vyřizovat požadavek každého z nich nezávisle, což může způsobit zpomalení, nebo i úplné zablokování dané služby z důvodu přetížení. U peer-to-peer sítí, jako je BitTorent nebo IPFS, je tomu naopak. Čím větší je zájem, tím vyšší je rychlost, protože každý, kdo obsah právě stahuje, zároveň nabízí ostatním části, které již má, čímž se zvyšuje jejich dostupnost.

Online vs. Offline 
Webové aplikace na současném Internetu vyžadují spojení s backendem, který obvykle běží na serverech v nějakém datovém centru. Přerušení připojení k Internetu způsobí, že aplikace přestane fungovat. V oblastech, kde je připojení k Internetu pomalé a nespolehlivé, může být zcela nemožné používat běžné webové aplikace. Ke stejnému problému může dojít, když uživatel cestuje a je připojen skrze pomalou mobilní síť. I příliš dlouhá doba odezvy může způsobit, že aplikace přestane fungovat, protože vyřízení požadavku trvalo příliš dlouho (tzv. Timeout).

IPFS může požadovaný obsah stáhnout od kohokoli, kdo jej sdílí. Pokud například někdo ve stejné budově na stejné lokální síti má kopii daného souboru, není nutné se připojit k datovým centrům. Připojení k vnější síti je zapotřebí teprve ve chvíli, kdy daný soubor není přítomen lokálně. Tomuto principu se říká „Offline First“ – aplikace mohou být navrženy tak, aby k běžnému fungování nepotřebovaly připojení k Internetu.

Cenzura 
Webové stránky používající protokol HTTP lze znepřístupnit např. útokem pro odepření služby (DOS) nebo vypovězením smlouvy ze strany hostingové společnosti. Přerušení provozu ovšem může nařídit veřejná moc, v případě zahraničních stránek je i pro méně rozvinuté státy cenzura internetu na základě webové adresy snadná. IPFS používá stejný způsob distribuce souborů jako BitTorrent - dokud je na síti alespoň jeden počítač, který obsah sdílí, mohou si ho ostatní uživatelé stáhnout od něj. Pokud tedy nějaký soubor již sdílí stovky nebo tisíce lidí v mnoha zemích světa, není možné jej ze sítě nijak odstranit a zcela zabránit v přístupu k němu.

Latence 
Pro některé aplikace je důležité, aby doba mezi vysláním požadavku na server a obdržením odpovědi byla co nejkratší, což je možné, jen pokud je server fyzicky blízko klienta. V současnosti se tento problém řeší pomocí „sítí pro distribuci obsahu“ - Content Distribution Networks (CDN). Jedná se o sítě datových center v mnoha zemích na různých kontinentech, které jsou nastaveny tak, aby požadavky klienta směřovaly na datové centrum, které je k němu nejblíže. Provoz tolika datových center si ovšem mohou dovolit jen velké firmy, IPFS tuto možnost přináší automaticky všem.

Princip fungování 
IPFS je kombinací několika osvědčených technologií, jako je BitTorrent, Git a Distribuovaná hashovací tabulka (DHT).

Adresování dle obsahu 
Hlavním rozdílem oproti HTTP je to, že jde o protokol adresovaný dle obsahu, nikoli dle umístění. Pro ilustraci, takto může vypadat hypertextový odkaz protokolu HTTP:

https:///archives/index.html

Červeně vyznačená část webovému prohlížeči řekne kde má obsah hledat, na kterém serveru se nachází, zbytek adresy pak specifikuje cestu ke konkrétnímu souboru na tomto serveru. Protokol IPFS umístění souboru vůbec neřeší a specifikuje rovnou o jaký obsah se jedná:

/ipfs//archives/index.html

Červeně vyznačený kód je hash požadovaného objektu, v tomto případě statického webu. Tento kód slouží pouze pro vnitřní fungování protokolu, v praxi místo něj uživatel uvidí čitelné jméno, které na tento hash odkazuje.

Hash má vždy 46 znaků, bez ohledu na velikost souboru, který reprezentuje. Pro každý soubor existuje vždy přesně jeden hash, a sebemenší změna v něm provedená způsobí, že výsledný hash bude zcela jiný. Slouží tedy nejen k identifikaci daného obsahu, ale i ke snadnému ověření jeho integrity. Hash může představovat jeden soubor, nebo také celý adresář a všechny soubory v něm uložené.
Zde je tedy zásadní rozdíl. Protokol HTTP spoléhá na to, že provozovatel serveru www.example.com stále funguje, že je jeho server zapnutý, nemá žádnou poruchu, a že z něj mezi tím nikdo požadovaný soubor nevymazal. Kontaktuje tento server, a soubor si od něj vyžádá. Musí přitom zcela důvěřovat serveru, že jeho obsah je v pořádku, protože nemá možnost si ověřit, zda jde o tentýž soubor, ke kterému webový odkaz původně směřoval.

Naproti tomu IPFS ví, jaký obsah má hledat. Pomocí distribuované hashovací tabulky se zeptá sítě, kteří uživatelé jej sdílejí, stáhne si ho od nich, vypočítá jeho hash, a ověří si tím, že obsah nebyl změněn.

Brány 
Pro uživatele, kteří nemají právě IPFS nainstalovaný, slouží brány (gateway), což jsou webové servery, které přijímají obyčejné HTTP požadavky, a v pozadí přitom obsah načítají ze sítě IPFS.
Toto je například uvítací textový soubor, který se objeví po úspěšném spuštění aplikace:

/ipfs/QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT/readme

Pod touto adresou je dostupný v síti IPFS. Pokud se chcete na tento, nebo kterýkoli jiný soubor podívat z webu, stačí před tuto adresu připojit adresu brány (např. ipfs.io):

https://ipfs.io/ipfs/QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT/readme

Použitím serveru brány se pochopitelně vytrácejí výhody spojené s rychlostí a soukromím protokolu IPFS, a slouží spíše jako záložní řešení tam, kde protokol IPFS z nějakého důvodu není dostupný přímo.

Funkčních IPFS bran jsou dnes (2022) již desítky, některé z nich operují i v anonymizační síti Tor. Jedním z českých projektů je i IPFS brána IPFSGate.com, která také umožňuje IPFS link storage (vytváření a sdílení odkazů na obsah umístěný v síti IPFS) a IPFS webhosting (hostování celých webových stránek v síti IPFS).

V červnu 2022 bylo spuštěno tržiště IPFSBay (https://www.ipfsbay.com ), které využívá IPFS síť k ukládání dat. Tržiště umožňuje nákup a prodej zboží a díky zapojení technologie IPFS jsou sdílená data značně odolná vůči cenzuře.

Systém pro registraci jmen IPNS 
Soubory v síti IPFS jsou trvalé, jejich kopii může sdílet kdokoli a nelze je tedy nijak vymazat ani změnit. Pro obsah který má být aktualizován má IPFS jiné řešení. Součástí protokolu je specifikace systému pro registraci jmen IPNS (Interplanetary Name Space). Adresy v tomto systému nezačínají na /ipfs, ale na /ipns. Při zaregistrování nového IPNS jména jeho majitel určí, na jaký obsah má odkazovat. Pokud například právě vložil do sítě textový soubor, může nastavit jméno tak, aby odkazovalo na hash tohoto souboru. Pokud se později rozhodne textový soubor upravit a nahrát do sítě novou verzi, změní registrované jméno tak, aby ukazovalo na hash nové verze souboru, který právě vložil. Uživatelé, kteří si otevřou adresu s tímto jménem uvidí, že se soubor změnil. Jméno IPNS určuje, která verze je dle autora aktuální, původní verze souboru však zůstává na síti také, dokud ji někdo sdílí. K registraci jmen se používá asymetrická kryptografie, a jakoukoli změnu musí majitel jména podepsat svým soukromým klíčem. Jde o stejný princip, jaký používá Bitcoin k autorizaci transakcí.

Odkazy

Externí odkazy 
 
 https://ipfs.io/ - Stránky projektu (anglicky)
 https://ipfs.io/docs/install  - Návod na instalaci (anglicky)
 https://www.ipfsgate.com - Pokročilá IPFS brána s možností vkládat odkazy na obsah umístěný v síti IPFS. Brána také nabízí IPFS webhosting
https://www.ipfsbay.com  - Decentralizované tržiště (marketplace) v síti IPFS

Reference 

Protokoly aplikační vrstvy
Komunikační protokoly počítačových sítí
World Wide Web
Protokoly pro přenos souborů
Internetové protokoly