Skip to content

Instantly share code, notes, and snippets.

@NatoBoram
Last active November 5, 2018 00:34
Show Gist options
  • Save NatoBoram/01a3311bd673776bc84736166ea4e6a5 to your computer and use it in GitHub Desktop.
Save NatoBoram/01a3311bd673776bc84736166ea4e6a5 to your computer and use it in GitHub Desktop.
Qu'est-ce que IPFS?

IPFS

IPFS signifie Inter-Planetary FileSystem, ou Système de Fichiers Inter-Planétaire. Il est extrêmement similaire au protocole BitTorrent, mais il est beaucoup plus facile d'utilisation. Cependant, il nécessite quelques notions supplémentaires avant de bien pouvoir l'apprécier.

Prérequis

Lire les sections suivantes vous aideront à comprendre les concepts clés sous-jacents à IPFS. Vous n'avez pas besoin d'une compréhension approfondie des concepts, simplement savoir ce qu'un terme veut dire est suffisant.

Pair à pair

Le pair à pair (en anglais peer-to-peer, souvent abrégé « P2P ») est un modèle de réseau informatique où chaque entité du réseau est à la fois client et serveur contrairement au modèle client-serveur. Les termes « pair », « noeud », et « utilisateur » sont généralement utilisés pour désigner les entités composant un réseau P2P.

Le pair à pair peut être centralisé (les connexions passant par un serveur central intermédiaire) ou décentralisé (les connexions se faisant directement). Il peut servir au partage de fichiers en pair à pair, au calcul distribué ou à la communication.

Dans le cas d'IPFS, le pair-à-pair se fait de manière décentralisée et sert au partage de fichiers.

Noeud

Un noeud est une unité de base utilisée en informatique. Les noeuds sont des périphériques ou des points de données sur un réseau plus grand. Les périphériques tels qu'un ordinateur personnel, un téléphone portable ou une imprimante sont des noeuds. Lors de la définition des noeuds sur Internet, un noeud est tout ce qui a une adresse IP. Les noeuds sont des éléments individuels d'une structure de données plus grande, tels que des listes chaînées et des structures de données arborescentes. Les noeuds contiennent des données et peuvent également être liés à d'autres noeuds. Les liens entre les noeuds sont souvent mis en oeuvre par des pointeurs.

Lorsque vous installerez IPFS, vous devrez ouvrir un noeud IPFS, plus connu sous le nom d'IPFS Node.

Hash

On nomme fonction de hachage, de l'anglais hash function (hash : pagaille, désordre, recouper et mélanger) par analogie avec la cuisine, une fonction particulière qui, à partir d'une donnée fournie en entrée, calcule une empreinte servant à identifier rapidement, bien qu'incomplètement, la donnée initiale. Les fonctions de hachage sont utilisées en informatique et en cryptographie.

Dans le cas d'IPFS, les fichiers passent par une fonction de hashage et le résultat de cette fonction identifie de manière unique le fichier sur le réseau.

Content Addressed Storage

Le Content Addressed Storage (CAS, ou stockage accessible par son contenu) est une méthode d'accès à des données enregistrées sur un stockage. Cette méthode utilise une clef d'identification unique permettant de désigner une donnée et d'envoyer, par exemple, des commandes de récupération ou de suppression. La clef d'identification, basée généralement sur un code hash sur la donnée, a deux objectifs principaux :

  1. Sécurité : Les données n'étant pas accessibles directement, elles sont protégées de tout accès non autorisé, car aucune données n'est visible et n'est accessible sans la clef unique à chaque donnée.
  2. Optimisation du stockage : Le hash unique doit permettre de détecter une redondance de données, puisque, hors problématique de collision, deux hash identiques doivent correspondre à deux données identiques. De ce fait, l'enregistrement d'une donnée avec un hash déjà connu dans le stockage ne sera pas enregistré à nouveau.

Une telle mécanique d'accès, au regard du traitement logiciel au sein d'un CAS impose la conservation externe au CAS, ainsi que la sécurisation des clefs. La perte des clefs implique l'impossibilité définitive d’accéder à l'information.

Sur IPFS, on accède à un contenu grâce à son hash. On dit qu'il est content-addressed.

Installer IPFS

Maintenant que vous connaissez les notions nécessaires au fonctionnement d'IPFS, allons-y de manière plus pratique.

Vous pouvez utiliser une interface graphique pour faire office d'IPFS Node ou utiliser un terminal. Sur Windows, ce terminal sera ouvert en permanence, alors que sur MacOS et Linux, vous pouvez démarrer une commande en arrière plan avec la commande screen.

Je vous conseille très fortement d'installer IPFS Desktop et de le configurer pour qu'il s'ouvre au démarrage de l'ordinateur.

Une fois IPFS Desktop installé, vous aurez besoin du Compagnon IPFS. Il vous permet d'accéder facilement au contenu sur IPFS à l'aide de votre navigateur.

Windows

Avant d'installer IPFS sur Windows, nous allons installer scoop. Scoop est un programme d'installation en ligne de commande pour Windows. Avec Scoop, vous pouvez installer un programme avec une commande sans avoir peur d'accidentellement installer un virus.

  1. Ouvrir PowerShell en tant qu'Administrateur
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
exit
  1. Redémarrer PowerShell
scoop install sudo
sudo scoop install --global 7zip git openssh aria2
scoop status
scoop update
scoop bucket add extras
exit
  1. Ouvrir Command Prompt
sudo scoop install -g go-ipfs

MacOS

Avant d'installer IPFS, nous allons installer brew. Homebrew est le gestionnaire de paquet manquant pour macOS. Avec Homebrew, vous pouvez installer un programme avec une simple commande.

  1. Ouvrir le terminal
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install ipfs

Linux

  1. Ouvrir le terminal
sudo snap install ipfs

Utiliser IPFS

Félicitations! Maintenant qu'IPFS est installé, utilisons-le.

Démarrer une IPFS Node

Vous pouvez sauter cette étape si IPFS Desktop est déjà installé et ouvert.

Pour accéder à IPFS, il vous faut une IPFS Node. Mais avant la démarrer, elle a besoin d'être initialisée. ipfs init initialisera une node en créant des clés uniques pour vous et en réservant un espace pour stocker les fichiers d'IPFS. Ensuite, ipfs daemon démarrera la node.

ipfs init
ipfs daemon

Ajouter des fichiers à IPFS

Avec le Compagnon IPFS

Pour ajouter un fichier à IPFS, vous pouvez ouvrir votre compagnon IPFS sur votre navigateur et sélectionner Dépôt rapide. Ça devrait ouvrir une fenêtre qui ressemble à ça :

Dépôt Rapide

Une fois ajouté, vous devriez voir le fichier apparaître.

Ajouté

Cliquez sur le logo d'IPFS dans la barre d'adresse et sélectionnez "Copier l'adresse de la passerelle publique". Vous pouvez maintenant coller ce lien pour le partager.

Exemple de lien : https://cloudflare-ipfs.com/ipfs/QmQbdB5yrtbi44YBogHPY8YUhBwXLTwBKRBGA9zSstmvBa/

En ligne de commande

C'est bien plus simple! Naviguez jusqu'au fichier que vous souhaitez partager, puis exécutez la commande ipfs add. Vous pouvez aussi utiliser quelques options pour préciser la manière de l'ajouter.

  • -w va "emballer" ce que vous mettez sur IPFS dans un dossier. Essayez avec et sans pour voir ce que vous préférez.
  • Si c'est une image ou une vidéo, ajoutez -t
  • Si c'est un dossier, ajoutez -r mais n'utilisez pas -t

-w sert à conserver le nom d'un fichier sur IPFS.

Exemple avec une image :

ipfs add -w -t dépôt_rapide.png

Exemple avec un dossier :

ipfs add -r Tenues

Tenues

Le dernier hash qui vous est donné est la racine du contenu que vous voulez partager. Dans l'image ci-dessus, c'est QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k. Donc, pour partager ce dossier, vous allez ouvrir une passerelle publique, y coller ce hash, puis le partager.

Il existe plusieurs passerelles publiques. La plus connue est celle de base, https://ipfs.io/ipfs/, mais il existe aussi celle de CloudFlare, https://cloudflare-ipfs.com/ipfs/, qui est, à mon avis, bien supérieure. Vous pouvez d'ailleurs modifier votre Compagnon IPFS pour qu'il vous redifige vers la node de CloudFlare à la place de celle par défaut.

Collez l'adresse d'une node publique suivi de votre hash pour visualiser le contenu.

https://cloudflare-ipfs.com/ipfs/ + QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k

Une fois que vous aurez ouvert cette adresse, vous serez redirigés vers votre propre node IPFS par le Compagnon IPFS pour accélérer la vitesse du chargement du contenu sur IPFS.

Exemple : http://127.0.0.1:8080/ipfs/QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k

Cependant, il est plus pratique de partager le lien d'une node publique pour permettre à ceux qui n'utilisent pas IPFS de voir le contenu partagé sur IPFS quand même. Cliquez sur votre Compagnon IPFS et sélectionnez "Copier l'adresse de la passerelle publique". Vous pourrez coller cette adresse pour la partager.

Exemple : https://cloudflare-ipfs.com/ipfs/QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k

Télécharger un fichier sur IPFS

On vous a donné un hash, il est temps de télécharger le fichier concerné. Pour ce faire, ouvrez un terminal, naviguez à l'aide de la commande cd vers le dossier où vous souhaitez télécharger le contenu, puis exécutez la commande ipfs get.

ipfs get QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k

Voilà, c'est tout!

Le principe des pins

Sur IPFS, un pin est un hash que vous souhaitez conserver sur votre ordinateur afin de distribuer le fichiers correspondant sur IPFS. C'est le moyen principal pour conserver des fichiers sur IPFS de manière permanente. Voici comment utiliser les pins.

Vous pouvez visualiser vos pins à l'aide de la commande ipfs pin ls.

ipfs pin ls

Pour ajouter un pin, utilisez la commande ipfs pin add.

ipfs pin add QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k

Pour retirer un pin, utilisez la commande ipfs pin rm.

ipfs pin rm QmXAzhLZD8in4tPnQWHXQx1d3uNNP9MYLqamqScs2ybe3k

Conclusion

Avec un peu d'expérience, vous verrez qu'IPFS est bien plus pratique que BitTorrent parce qu'on peut y accéder à partir d'un navigateur. Il est aussi plus pratique qu'un hébergeur d'images parce que vous n'avez pas à vous limiter dans la taille de l'image.

D'ailleurs, toutes les images de ce guide sont hébergées sur IPFS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment