# InterPlanetary File System

Le système de fichier interplanétaire (InterPlanetary File System (IPFS)), est un protocole pair à pair de distribution de contenu adressable par hypermédia, conçu à l'origine par Juan Benet. L'implémentation principale d'IPFS est un logiciel libre écrit en go.
L'adjectif « interplanétaire » dans le nom évoque l'aspiration initiale du projet à pouvoir fonctionner de façon suffisamment décentralisée pour surmonter des difficultés liées à un morcellement du réseau même sur des distances astronomiques.

## Description

sIPFS est un système distribué de fichiers pair à pair qui ne dépend pas de serveurs centralisés. Son but est de connecter un ensemble d'équipements informatiques avec le même système de fichiers. D'une certaine manière IPFS est similaire au World Wide Web, à la différence qu'il peut être vu comme un essaim (Swarm) BitTorrent unique, qui échange des objets au sein d'un dépôt Git.
En d'autres termes, IPFS fournit un modèle de stockage par blocs adressables par contenu de haute capacité, utilisant des hyperliens pour l'accès. Ceci forme un graphe orienté acyclique de Merkle généralisé. IPFS combine une table de hachage, un échange de blocs encouragé et un espace de noms auto-certifié. IPFS n'a pas de point unique de défaillance et les nœuds n'ont pas besoin de se faire mutuellement confiance.
Le système de fichiers peut être accédé de différentes manières, notamment via FUSE ou à travers HTTP. Il est possible d'ajouter un fichier local au système de fichier IPFS, le rendant de ce fait accessible au reste du monde. Les fichiers sont identifiés grâce à leur hash, permettant l'utilisation d'une mémoire cache, et distribués via Bitswap, une généralisation du protocole BitTorrent. Il y combine également la table de hachage distribuée, (THD ou DHT) Kademlia, le système de contrôle de version Git et le système de fichier auto-certifiant (Self-certifying File System (en), SFS). Les utilisateurs lisant du contenu contribuent à servir ce contenu à d'autres utilisateurs sur le réseau.
IPFS utilise son propre système de noms de domaine appelé IPNS (Inter-Planetary Naming System), c'est un espace de nom global basé sur une infrastructure à clés publiques (ICP ou PKI) qui sert à construire une chaîne de confiance, qui est compatible avec les autres services de noms de domaine et peut lier des adresses de type DNS, .onion, .bit, etc. vers IPNS.

## Concepts essentiels
### CID

IPFS, en tant que système de fichier adressable par contenu, s'appuie sur un système d'identification de contenu. Chaque fichier est donc représenté par un identifiant typiquement calculé par une fonction de hachage, comportant si nécessaire un ou plusieurs préfixes spécifiant par exemple la fonction de hachage utilisée ou son encodage.
La chaîne de caractères obtenue est appelée CID, acronyme pour l'anglais Content IDentifier, signifiant « identifiant de contenu ».

### IPNS

Le système de nom interplanétaire (InterPlanetary Name System (IPNS)) est un système permettant d'adresser un fichier ou un répertoire muable. Ce système est basé sur la cryptographie asymétrique, un nom IPNS étant essentiellement l'empreinte d'une clef publique.

### Pinning
## Réception

Kyle Drake, le créateur du service d'hébergement Neocities, a exprimé sa conviction que IPFS est le remplaçant de HTTP et de nombreux autres protocoles et solutions. Selon lui, « la manière dont HTTP distribue le contenu est fondamentalement imparfaite, et essayer d'améliorer les performances ou forcer les gens à utiliser des certificats SSL brisés est inutile. »

## Applications utilisant IPFS

Quelques applications utilisant IPFS :
* Arbore, logiciel de partage de fichier
* Agregore, un navigateur web utilisant IPFS
* brig système de fichier utilisant FUSE et IPFS, avec une commande en ligne proche de git.
* cURL ajoute son support le 23 septembre 2023
* Diffuse, diffusion de flux audio via IPFS
* Hardbin, un Pastebin chiffré
* Interplanetary Wiki, un wiki utilisant le système distribué
* IPFS Desktop, une application de bureau permettant d'utiliser IPFS
* ipfs-chat logiciel de messagerie instantanée en terminal et chiffré
* IPGit dépôt GIT qui duplique le code via IFPS.
* Peergos, logiciel de partage de fichier