Ceci est une ancienne révision du document !
IPFS (Inter Planetary File System) réutilise les technos à succès et les combine: Git, BitTorrent, Kademlia, Bitcoin, SFS1). Il s'agit d'un logiciel libre, l'implémentation de référence est écrite en Go et est disponible pour la plupart des systèmes d'exploitation (Linux, Mac OS X, Windows).
Le but est de concevoir un stockage distribué, donc imaginez un disque dur géant, dont vous pouvez consulter les données depuis votre terminal unix ou depuis votre navigateur web, et vous avez une idée de ce qu'est IPFS.
Comme dans un essaim BitTorrent, les données sont échangées entre les pairs, donc si vous partagez quelque chose, et que d'autres personnes le récupèrent, elles deviendront seeders à leur tour, ce qui permet aux ressources de rester accessibles même après que vous vous soyiez déconnecté du réseau. Plus exactement, cela maximise les chances qu'elle soit en ligne.
Plusieurs mécanismes sont proposés pour offrir un type de redondance.
D'abord, il est possible d'organiser plusieurs noeuds ipfs en cluster. Une instance maître (par exemple, votre ordinateur portable) dispose des fichiers et effectue une mise en partage initiale. Les données seront alors répliquées selon vos souhaits parmi les autres serveurs de votre cluster (comme par exemple un ou plusieurs serveurs distants accessibles 24h/24).
Une autre façon d'influer sur la permenance d'une donnée est d'utiliser le «pinning» sur une donnée qui se situe dans votre cache de données. Votre noeud dispose en effet d'un stockage limité pour stocker les données que vous sollicitez. Si ce cache est rempli, il supprimera les données anciennes. Le pin sert donc à insister sur le fait qu'une ressource ne doit pas être supprimée du cache. Un point intéressant, c'est de voir si ce pinning peut être sollicité auprès des noeuds autres que les votres. Il ne semble pas y avoir de mécanisme qui serait déjà implémenté dans IPFS permettant de signifier à des noeuds du réseau qu'ils devraient effectuer un pinning sur une ressource, mais ce genre de service semble envisagé puisqu'il en est fait mention dans la doc.
Fin 2018, le projet poursuit son développement de façon soutenue.
IPFS ne se charge que de calculer les hashs des fichiers mis en partage. Si l'un de ces fichiers change, il calculera le nouveau hash.
Cependant, les noeuds possèdant déjà la ressource ne disposent que de l'ancien hash, et ne savent pas qu'une nouvelle version est disponible.
IPNS (Inter Planetary Naming System) sert à fournir un niveau d'indirection en jouant un rôle similaire à DNS pour les sites web. Il s'agit simplement d'un nouveau hash qui cette fois-ci se réfère à la dernière version d'une ressource, qui peut ainsi évoluer.
Cela rend IPFS propice à un usage similaire à d'autres initiatives de web décentralisé, utile par exemple lors de la mise à jour d'un article, ou bien pourquoi pas lors de la parution de la nouvelle version d'un jeu video.
Toujours en faveur de ce web décentralisé, IPFS prétend également jouer le rôle de CDN (Content Delivery Network). Dans le principe cela signifie qu'une ressource sera récupérée depuis les noeuds proches du votre, plutôt que ceux qui sont éloignés. Il faudrait toutefois vérifier en quoi techniquement cette appellation est pertinente (ou plus pertinente qu'elle ne s'appliquerait déjà au sein du réseau BitTorrent, par exemple).
Pour consulter une ressource sur IPFS, vous pouvez bien sûr installer IPFS et envoyer une requête pour la récupérer, mais vous pouvez aussi utiliser votre navigateur web et vous rendre sur le site d'une passerelle pour y solliciter la ressource que vous désirez.
Il vous suffit d'indiquer le hash de la ressource à laquelle vous désirez accéder pour qu'elle vous soit servie par HTTP, directement dans votre navigateur.
Cloudflare propose une telle passerelle, mais d'autres existent.
Ce type de passerelle est une commodité, et a l'avantage de rendre disponible une ressource pour des personnes non familières à IPFS, qui n'ont pas besoin d'installer ou de comprendre le logiciel.
L'installation de IPFS est assez simple, l'usage repose principalement sur la ligne de commande et s'inspire de la syntaxe de git.
Si l'anglais vous convient, vous pouvez regarder cette video de démonstration d'IPFS sur Youtube.
Exemple : pour partager toutes les données situées dans le répertoire courant :
ipfs add -r .
Voir aussi: la doc officielle
Vous devriez avant toute chose commencer par amorcer ipfs.
ipfs init
Suivez le tutorial intégré à ipfs.
Vous devrez pouvoir lancer le démon ipfs pour passer en mode connecté, puis vous pouvez interroger la liste des noeuds accessibles.
ipfs daemon ipfs swarm peers
Il suffit de se rendre avec votre navigateur sur http://localhost:5001/webui.
Les possibilités d'IPFS sont encore en cours d'exploration, d'autres outils en font des usages plus ciblés.
Une liste de ces projets est illustrée dans la section «Awesome» du site d'IPFS.
type:réseau-p2p type:client-p2p licence:libre réseau:ipfs système:windows système:mac système:linux