Outils du site

Outils pour utilisateurs


Panneau latéral

P2PFR:Wiki

p2p:ipfs (lu 2751 fois)

Ceci est une ancienne révision du document !


IPFS

Présentation

IPFS (Inter Planetary File System) est un P2P sous licence libre qui vise à proposer un web décentralisé, à l'instar de ZeroNet. Contrairement à I2P ou Freenet, IPFS n'est pas anonymisant, mais des solutions pourraient être apportées, notamment par un couplage avec Tor.

Pour arriver à ses fins, IPFS réutilise des technologies à succès et s'en inspire ou les combine : Git, BitTorrent, Kademlia, Bitcoin, SFS1).

IPFS est développé par Protocol Labs, une start-up de San Francisco pour qui les protocoles qui ont permis de batir le réseau internet doivent être libres et ouverts. Il s'agit naturellement d'un logiciel libre, l'implémentation de référence est écrite en langage Go et est disponible pour la plupart des systèmes d'exploitation (Linux, Mac OS X, Windows). La boite développe aussi FileCoin, une solution de stockage avec rémunération, ainsi que libp2p, qui est la couche réseau utilisée par IPFS, IPLD, qui décrit le modèle de données pour un web décentralisé, et Multiformats.

IPFS cherche vraiment à rempacer (ou au moins trouver un modèle alternatif) au web centralisé essentiellement basé sur HTTP(S). Les adresses utilisées dans ce web décentralisé pointent non pas vers un emplacement (comme l'adresse IP d'un hôte) mais vers un contenu (identifié par un hash). Ce contenu peut être hébergé de façon décentralisée, comme avec BitTorrent, ce qui permet à l'auteur de ce contenu de ne pas avoir à l'héberger lui-même. La réplication des données joue également un rôle de protection contre la censure.

L'un des atouts actuels de IPFS par rapport à d'autres solutions de web décentralisé comme ZeroNet ou Dat est qu'il s'intègre relativement bien avec le web ordinaire : pas besoin d'un navigateur particulier, ni d'installer le logiciel si vous utilisez des passerelles. Il peut même tirer partie de l'infrastructure existante de DNS, voir DNSLink plus bas.

La cryptographie est utilisée comme moyen de résoudre la question de la confiance envers les autres noeuds membres du réseau.

IPFS utilise une blockchain pour stoquer les liens IPFS. Les données en elles-mêmes ne sont donc pas stockées dans la blockchain.

IPFS utilise la DHT (merkle tree).

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 à indiquer qu'une ressource ne doit pas être supprimée du cache. Le pinning peut être sollicité auprès de noeuds autres que les votres, mais il faut pour cela passer par un mécanisme extérieur à IPFS, ce type de service est toutefois envisagé dans la doc, et des personnes mettent en place leurs propres contrats, comme cette personne sur twitter.

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. Comme avec BitTorrent, si le contenu de l'un de ces fichiers change, le hash sera altéré. Le problème est alors que les noeuds qui ne connaissent que l'ancien hash ne seront pas alertés de cette modification.

Nous étions habitués avec Bittorrent à ce que, une fois la ressource partagée, celle-ci n'évolue plus, et que tout changement soit republié en tant que nouveau torrent. IPFS dispose de mécanismes donnant une réponse à ce problème, typiquement via un niveau d'indirection.

Les deux mécanismes actuellement proposés sont :

  • DNSLink, qui repose sur les registres DNS d'un nom de domaine
  • et IPNS, qui correspond au hash d'une clé publique pointant vers un registre qui ne peut être mis à jour que par la personne disposant de la clé privée.

Si vous disposez d'un nom de domaine, vous pouvez vous en servir pour pointer vers une ressource IPFS.

IPFS utilise pour cela les registres TXT.

Ci-dessous un exemple de réponse DNS pour le site ipfs.io, lui-même hébergé sur IPFS, disposant d'un sous-domaine “docs” dont le registre dnslink pointe vers une ressource IPFS particulière :

$ dig +noall +answer TXT _dnslink.docs.ipfs.io
_dnslink.docs.ipfs.io.	1800	IN	TXT	"dnslink=/ipfs/QmV29UU6pxUD1jkcY6oBfYNw9zi15LvrrHyESg35PVtKFd"

IPNS

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 (une clé publique) qui cette fois-ci se réfère à la dernière version d'une ressource, qui peut ainsi évoluer. La personne disposant de la clé privée correspondant à la clé IPNS pourra mettre à jour le registre IPNS en signant les données.

Conclusion

Ces deux mécanismes permettent à la fois d'envisager IPFS en tant que web décentralisé, mais aussi de pallier à un problème fréquent avec Bittorrent qui est le caractère figé des ressources.

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).

Passerelle HTTP

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.

Usages

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

Amorcer votre noeud IPFS

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

Accéder à l'interface web

Il suffit de se rendre avec votre navigateur sur http://localhost:5001/webui.

Projets utilisant IPFS

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.

Liens

  • P2P similaires : Dat

type:réseau-p2p type:client-p2p licence:libre réseau:ipfs système:windows système:mac système:linux

1)
Smart File System est un système de fichiers journalisé initialement implémenté sur Amiga qui gère les écritures de méta-données de façon transactionnelle, ce qui permet de revenir à des états préalables sains en cas d'erreur d'écriture.
p2p/ipfs.1547062540.txt.gz · Dernière modification: le 09/01/2019 à 20h35 de 111110101011