← Web3 / web3 / ipfs-gateway / concepts
Interplanetary File System (IPFS)
Interplanetary File System (IPFS) je síť pro ukládání souborů typu peer-to-peer. Místo ukládání souborů na jediném serveru, jak funguje tradiční webhosting, IPFS distribuuje soubory mezi mnoho počítačů po celém světě.
Kterýkoli počítač se může připojit k síti IPFS instalací softwaru IPFS a začít hostovat a poskytovat soubory.
Pokud někdo nahraje soubor do sítě IPFS, může si ho zobrazit a stáhnout kdokoli jiný, kdo používá IPFS. Žádný centrální server do toho nezasahuje.
Identifikátory obsahu
Každý soubor přidaný do IPFS získá jedinečnou adresu odvozenou z hashe jeho obsahu. Tato adresa se nazývá Content Identifier (CID). CID obsahuje dvě informace: hash souboru a identifikátor použitého hashovacího algoritmu, spojené do jediného řetězce.
Protože se CID odvozuje přímo z obsahu, dva identické soubory vždy vytvoří stejné CID a jakákoli změna souboru vytvoří CID jiné. Právě to dělá z IPFS systém "adresovaný podle obsahu": soubory vyhledáváte podle toho, co obsahují, ne podle toho, kde jsou uloženy.
IPFS používá SHA-256 ↗ ve výchozím nastavení a výsledek kóduje pomocí Base58 ↗, tedy kódovací schéma, které vynechává vizuálně nejednoznačné znaky (například nulu a velké písmeno O), aby se snížil počet chyb při přepisu.
CID obvykle vypadá takto: QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco
IPFS také podporuje jiná kódování (Base32 ↗) a hashovací algoritmy (SHA-3 ↗, BLAKE2 ↗).
Nahrávání do IPFS
IPFS sleduje, které počítače mají které soubory, pomocí Distribuovaná hashovací tabulka (DHT) ↗, tedy vyhledávací systém, který mapuje CID na síťové adresy počítačů hostujících daný obsah. Žádný jednotlivý počítač neuchovává celou vyhledávací tabulku. Místo toho každý počítač v síti uchovává její část a ví, kde najít zbytek.
„Nahrání“ obsahu do IPFS neznamená odeslání souboru na centrální server. Znamená to oznámit síti, že daný obsah máte, a to přidáním záznamu do DHT, který mapuje CID vašeho souboru na vaši síťovou adresu. Když si někdo jiný chce tento soubor stáhnout, vyhledá CID v DHT, najde vaši adresu a stáhne data přímo od vás.
Protože stejný soubor může hostovat více počítačů najednou, stahování se rozkládá mezi všechny z nich. Pokud jeden hostitel přejde offline, ostatní nadále poskytují obsah. Právě tato redundance dává IPFS výhodu rychlosti a spolehlivosti oproti hostování na jediném serveru.
Adresáře
Nahrávat můžete více než jen jednotlivé soubory. Vezměte si například složku s názvem example, který obsahuje přesně jeden soubor, example_text.txt, obsahující řetězec I'm trying out IPFS.
Pokud by byla tato složka nahrána příkazem ipfs add -r ./example, jak složka, tak soubor, který obsahuje, by měly vlastní CID. V tomto případě by složka měla CID QmdbaSQbGU6Wo9i5LyWWVLuU8g6WrYpWh2K4Li4QuuE8Fr zatímco soubor by měl CID QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy.
Poté můžete k souboru přistupovat dvěma způsoby:
- Přímý požadavek na soubor:
https://cloudflare-ipfs.com/ipfs/QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy - Požadavek na soubor podle názvu z adresáře:
https://cloudflare-ipfs.com/ipfs/QmdbaSQbGU6Wo9i5LyWWVLuU8g6WrYpWh2K4Li4QuuE8Fr/example_text.txt
Zatímco CID souboru se změní pouze v případě, že se změní samotný soubor, CID adresáře se změní pokaždé, když any souborů v něm změní nebo pokud jsou nějaké soubory přidány či odebrány.
Adresáře umožňují adresovat celý statický web jediným CID a přistupovat k jednotlivým stránkám webu vyžádáním příslušných souborů v daném adresáři.
Související zdroje
Vysvětlení dalších pojmů najdete v IPFS ↗ dokumentace.