InterPlanetary File System

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání
InterPlanetary File System
Logo
Vývojář Protocol Labs
Aktuální verze 0.4.21 (30. května 2019)
Operační systém FreeBSD
Linux
macOS
Microsoft Windows
Typ softwaru síťový protokol, peer-to-peer file sharing a souborový systém
Licence Licence MIT
Web ipfs.io
Některá data mohou pocházet z datové položky.

IPFS je internetový peer-to-peer protokol, sloužící k přímé distribuci dat bez použití serverů. Jeho autorem je Juan Benet, který jeho specifikaci popsal v dokumentu IPFS - Content Addressed, Versioned, P2P File System[1]. 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.[2] 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.[3]

Účel[editovat | editovat zdroj]

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

Ztráta informací[editovat | editovat zdroj]

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.[4] 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[5]. To je však jen částečné řešení. Zmizelý obsah lze alespoň dodatečně dohledat, a není tedy nenávratně ztracen. Aplikace, které s ním pracovaly, však 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[editovat | editovat zdroj]

Internet byl původně plánován jako distribuovaný systém – síť, ve které žádný uzel není nenahraditelný.[6] 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[editovat | editovat zdroj]

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ů.[7] 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 obyčejné lidi nebo neziskové organizace by však provoz takové služby nemohl být 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[editovat | editovat zdroj]

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 zemích třetího světa, 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š pomalá doba odezvy může způsobit, že aplikace přestane fungovat, protože vyřízení požadavku trvalo příliš dlouho (tzv. Timeout). Uživatelé mobilních zařízení přirozeně nemohou mít jistotu, že jejich připojení k Internetu bude všude fungovat správně.

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í třeba připojovat se k žádným 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[editovat | editovat zdroj]

Webové stránky používající protokol HTTP lze velmi snadno cenzurovat. Stačí přetížit nebo zničit server, na kterém jsou hostovány, a všechny odkazy na ně přestanou fungovat. 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, ani zabránit ostatním v přístupu k němu.

Latence[editovat | editovat zdroj]

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 se server nachází 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. Problém je v tom, že provoz tolika datových center si mohou dovolit jen velké nadnárodní firmy. IPFS tuto možnost přináší automaticky všem.

Princip fungování[editovat | editovat zdroj]

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

Adresování dle obsahu[editovat | editovat zdroj]

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://www.example.com/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/QmZBuTfLH1LLi4JqgutzBdwSYS5ybrkztnyWAfRBP729WB/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[editovat | editovat zdroj]

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.

IPNS[editovat | editovat zdroj]

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. Při zaregistrování nového jména jeho majitel určí, na jaký obsah má jméno 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 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 rozhoduje o tom, 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[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. BENET, Juan. IPFS - Content Addressed, Versioned, P2P File System [online]. Dostupné online. (anglicky) 
  2. https://github.com/ipfs/go-ipfs
  3. https://github.com/ipfs/js-ipfs
  4. PORUP, J.M. The InterPlanetary File System Wants to Create a Permanent Web. Motherboard [online]. 2015-09-18. Dostupné online. (anglicky) 
  5. https://archive.org/web/
  6. PETERKA, Jiří. Na počátku byl ARPANET.... eArchiv.cz [online]. 1995 [cit. 2013-11-09]. Dostupné online. (česky) 
  7. https://blog.neocities.org/its-time-for-the-permanent-web.html