Cours Complet sur IPFS : De Débutant à Intermédiaire

in EducDAO5 days ago

Introduction

Bienvenue dans ce cours complet sur l'InterPlanetary File System (IPFS). Ce cours est conçu pour vous guider à travers les concepts fondamentaux d'IPFS, de la théorie à la pratique. Il est divisé en trois parties :

  1. Niveau Débutant : Pour comprendre ce qu'est IPFS et pourquoi c'est une technologie importante pour l'avenir du web.
  2. Niveau Intermédiaire : Pour apprendre à installer, configurer et utiliser un nœud IPFS, et maîtriser les commandes essentielles.
  3. Exercices Pratiques : Pour mettre en application vos nouvelles connaissances et solidifier votre compréhension.

Commençons notre voyage dans le monde du web décentralisé !


Cours IPFS - Niveau Débutant

Introduction à IPFS : Le Web de Demain

Bienvenue dans ce cours d'introduction à IPFS (InterPlanetary File System). Si vous avez déjà entendu parler de décentralisation, de blockchain ou de P2P, vous êtes au bon endroit. IPFS est une technologie révolutionnaire qui vise à changer la façon dont nous partageons et stockons l'information sur le web.

Qu'est-ce que le Web Actuel (et ses Problèmes) ?

Pour comprendre l'intérêt d'IPFS, il faut d'abord comprendre comment fonctionne le web que nous utilisons tous les jours. Le web actuel est basé sur un modèle centralisé. Cela signifie que les données (sites web, images, vidéos, etc.) sont stockées sur des serveurs centraux. Lorsque vous voulez accéder à un site, votre navigateur envoie une requête à l'adresse de ce serveur (par exemple, https://copylaradio.com) et le serveur vous renvoie les données.

Ce modèle a plusieurs inconvénients :

  • Centralisation et Censure : Si un serveur tombe en panne, le site devient inaccessible. De plus, les gouvernements ou les entreprises peuvent facilement bloquer l'accès à un serveur pour censurer l'information.
  • Performance : Si vous êtes en France et que vous voulez accéder à un site hébergé sur un serveur en Australie, les données doivent parcourir une longue distance, ce qui peut ralentir le chargement.
  • Duplication de Données : La même vidéo populaire peut être stockée des milliers de fois sur différents serveurs, ce qui gaspille de l'espace de stockage.
  • Fragilité des Liens : Vous avez sûrement déjà cliqué sur un lien pour tomber sur une page "404 Not Found". Cela arrive lorsque le contenu a été déplacé ou supprimé. C'est ce qu'on appelle la "pourriture des liens" (link rot).

IPFS : Une Nouvelle Approche

IPFS propose une approche radicalement différente : un réseau décentralisé et pair-à-pair (P2P). Au lieu de demander à un serveur central de nous donner un fichier, nous demandons au réseau IPFS de nous donner un fichier qui a un certain contenu.

C'est la grande révolution d'IPFS : l'adressage par contenu (content addressing). Au lieu d'identifier un fichier par son emplacement (son URL), on l'identifie par son empreinte numérique unique, appelée CID (Content Identifier). Cette empreinte est calculée à partir du contenu du fichier lui-même (c'est un hash cryptographique).

Modèle Actuel (HTTP)Modèle IPFS
Adressage par localisationAdressage par contenu
https://example.com/image.jpgQmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco
CentraliséDécentralisé
FragileRésilient

Comment ça Marche Concrètement ?

  1. Ajout d'un Fichier : Lorsque vous ajoutez un fichier à IPFS, il est découpé en petits morceaux. Pour chaque morceau, on calcule son hash. Ensuite, on crée un objet IPFS qui contient la liste des hashs de tous les morceaux. Le hash de cet objet final est le CID du fichier.

  1. Partage sur le Réseau : Votre ordinateur (votre "nœud" IPFS) annonce au réseau qu'il possède les morceaux correspondant à ce CID.
  2. Accès à un Fichier : Lorsque quelqu'un veut accéder à votre fichier, il demande au réseau : "Qui possède les morceaux du fichier avec ce CID ?". Le réseau le met en contact avec les nœuds qui possèdent ces morceaux (dont le vôtre). Il peut alors télécharger les morceaux depuis plusieurs sources en même temps (comme avec BitTorrent) et reconstituer le fichier.

Les Avantages d'IPFS

  • Résilience et Disponibilité : Tant qu'au moins un nœud sur le réseau possède une copie du fichier, il reste accessible. Fini les erreurs 404 !
  • Résistance à la Censure : Comme il n'y a pas de serveur central, il est très difficile de bloquer l'accès à un contenu.
  • Efficacité : Les fichiers sont téléchargés depuis les nœuds les plus proches, ce qui améliore la vitesse. De plus, comme les fichiers sont identifiés par leur contenu, les doublons sont automatiquement éliminés.
  • Vérification de l'Intégrité : Le CID étant le hash du contenu, vous pouvez être sûr que le fichier que vous téléchargez n'a pas été modifié ou corrompu.

Cours IPFS - Niveau Intermédiaire

Maintenant que vous avez compris les concepts de base d'IPFS, il est temps de mettre les mains dans le cambouis ! Dans cette partie, nous allons installer un nœud IPFS, apprendre les commandes essentielles et explorer des concepts plus avancés comme le "pinning" (épinglage) et IPNS.

1. Installation d'un Nœud IPFS (Kubo)

Il existe plusieurs implémentations d'IPFS. La plus courante et mature est Kubo (anciennement go-ipfs), écrite en langage Go. Nous allons l'installer.

Instructions d'Installation (pour Linux/macOS)

  1. Télécharger Kubo : Rendez-vous sur la page de distribution de Kubo et téléchargez l'archive binaire correspondant à votre système d'exploitation et votre architecture (par exemple, linux-amd64).

  2. Extraire l'archive :

    tar -xvzf kubo_vX.Y.Z_linux-amd64.tar.gz
    
  3. Installer l'exécutable : Déplacez-vous dans le dossier kubo et lancez le script d'installation.

    cd kubo
    sudo ./install.sh
    
  4. Vérifier l'installation : Tapez la commande suivante pour vous assurer que tout fonctionne.

    ipfs --version
    

    Vous devriez voir la version d'IPFS que vous venez d'installer.

2. Initialiser votre Nœud IPFS

Avant de pouvoir utiliser IPFS, vous devez initialiser votre "dépôt" local. C'est là que votre nœud stockera ses paramètres, ses clés et les données que vous partagerez.

ipfs init

Cette commande va créer un dossier .ipfs dans votre répertoire personnel. Elle va également générer une clé cryptographique unique qui représente votre identité sur le réseau (votre Peer ID). Conservez bien le résultat de cette commande, notamment votre Peer ID.

3. Démarrer le Démon IPFS

Pour connecter votre nœud au réseau IPFS, vous devez lancer le "démon" (un processus qui tourne en arrière-plan).

ipfs daemon

Votre terminal va afficher des logs indiquant que votre nœud se connecte à d'autres pairs sur le réseau. Laissez ce terminal ouvert. Votre nœud est maintenant en ligne !

Vous pouvez maintenant accéder à une interface web locale très pratique pour visualiser l'état de votre nœud : http://127.0.0.1:5001/webui

4. Commandes Essentielles

Ouvrez un nouveau terminal pour interagir avec votre nœud.

Ajouter un fichier (ipfs add)

Pour ajouter un fichier au réseau IPFS, utilisez la commande add.

# Créez un fichier de test
echo "Bonjour le monde décentralisé !" > mon_fichier.txt

# Ajoutez-le à IPFS
ipfs add mon_fichier.txt

La commande vous retournera le CID du fichier. C'est son adresse unique sur IPFS. Par exemple :

added QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g mon_fichier.txt

Lire un fichier (ipfs cat)

Pour lire le contenu d'un fichier à partir de son CID, utilisez la commande cat.

ipfs cat QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g

Cela affichera : Bonjour le monde décentralisé !

Vous pouvez aussi accéder à ce fichier via une passerelle (gateway) publique. C'est un nœud IPFS qui est accessible via le web classique (HTTP). Essayez ce lien dans votre navigateur (en remplaçant le CID par le vôtre) :

https://ipfs.io/ipfs/QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g

5. Le Problème de la Persistance : l'Épinglage (Pinning)

Par défaut, votre nœud IPFS agit comme un cache. Si vous ajoutez beaucoup de fichiers, il peut supprimer les plus anciens pour faire de la place (un processus appelé "garbage collection").

Pour dire à votre nœud de conserver un fichier de manière permanente, vous devez l'épingler (pin).

# La commande `add` épingle le fichier par défaut sur votre nœud.
# Pour lister les fichiers épinglés :
ipfs pin ls

# Pour épingler un CID qui n'est pas sur votre nœud :
ipfs pin add QmSomeOtherCID

Important : Si vous éteignez votre nœud, le fichier ne sera plus accessible (sauf si quelqu'un d'autre l'a aussi téléchargé et épinglé). Pour garantir une haute disponibilité, on utilise des services d'épinglage (Pinning Services) comme Pinata ou Filebase, qui sont des nœuds IPFS professionnels toujours en ligne.

6. Le Problème des Adresses qui Changent : IPNS

Le CID d'un fichier change à chaque fois que vous le modifiez, même d'un seul caractère. C'est logique (adressage par contenu), mais ce n'est pas pratique si vous voulez avoir une adresse fixe pour un contenu qui évolue (comme un site web).

C'est là qu'intervient IPNS (InterPlanetary Name System). IPNS vous permet de créer une adresse stable (basée sur votre Peer ID) qui pointe vers un CID. Vous pouvez ensuite mettre à jour le CID vers lequel cette adresse pointe, sans que l'adresse elle-même ne change.

  1. Publier un contenu sur IPNS :

    # Publions notre fichier sur IPNS. Cela peut prendre un peu de temps.
    ipfs name publish QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g
    

    La commande retournera votre Peer ID (qui est maintenant votre adresse IPNS) et le CID vers lequel il pointe.

  2. Accéder au contenu via IPNS :

    Vous pouvez maintenant accéder à votre fichier via votre adresse IPNS (remplacez VotrePeerID):

    https://ipfs.io/ipns/VotrePeerID

Si vous modifiez votre fichier, ajoutez la nouvelle version à IPFS pour obtenir un nouveau CID, puis relancez la commande ipfs name publish avec le nouveau CID. Votre adresse IPNS ne changera pas, mais elle pointera vers le nouveau contenu !


Cours IPFS - Exercices Pratiques

Ces exercices sont conçus pour vous aider à mettre en pratique les concepts que vous avez appris dans les parties débutant et intermédiaire du cours.

Exercice 1 : Le Pouvoir du CID (Niveau Débutant)

Cet exercice a pour but de vous faire comprendre intuitivement la puissance de l'adressage par contenu, sans même installer IPFS.

  1. Trouvez le CID d'un fichier connu : L'image ci-dessous, le logo officiel d'IPFS, a été ajoutée au réseau IPFS. Son CID est QmQzY5c6zX9C9zY5c6zX9C9zY5c6zX9C9zY5c6zX9C9zY (ceci est un exemple, nous utiliserons un vrai CID ci-dessous).

  2. Accédez à l'image via différentes passerelles : Ouvrez les liens suivants dans votre navigateur. Vous remarquerez que même si le nom de domaine (le serveur) change, vous accédez toujours exactement à la même image, car vous demandez le contenu identifié par le CID.

    (Note : Le CID ci-dessus est un exemple. Pour un vrai test, utilisez le CID de l'image du logo IPFS : QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG)

Question : Que se passe-t-il si une de ces passerelles tombe en panne ? Pouvez-vous toujours accéder à l'image ? Pourquoi ?

Exercice 2 : Votre Premier Fichier sur le Web Décentralisé (Niveau Intermédiaire)

Cet exercice vous guidera pour mettre votre premier fichier sur IPFS.

  1. Installez et initialisez IPFS : Suivez les étapes 1 et 2 de la partie intermédiaire pour installer Kubo et initialiser votre dépôt.

  2. Mettez votre nœud en ligne : Lancez la commande ipfs daemon dans un terminal.

  3. Créez un fichier : Dans un autre terminal, créez un fichier presentation.txt qui contient une petite présentation de vous.

    echo "Bonjour, je m'appelle [Votre Nom] et je découvre IPFS !" > presentation.txt
    
  4. Ajoutez le fichier à IPFS : Utilisez la commande ipfs add pour ajouter votre fichier. Notez bien le CID qui vous est retourné.

  5. Vérifiez votre fichier : Utilisez la commande ipfs cat avec le CID que vous avez obtenu pour vérifier que le contenu est correct.

  6. Accédez-y via une passerelle publique : Construisez une URL comme https://ipfs.io/ipfs/VOTRE_CID et ouvrez-la dans votre navigateur. Votre fichier est maintenant accessible depuis n'importe où dans le monde, tant que votre nœud est en ligne !

Exercice 3 : Héberger une Page Web Simple (Niveau Intermédiaire)

Allons plus loin en hébergeant un petit site web (une seule page).

  1. Créez un fichier HTML : Créez un fichier index.html avec le contenu suivant :

    <!DOCTYPE html>
    <html>
    <head>
        <title>Ma Page IPFS</title>
    </head>
    <body>
        <h1>Bienvenue sur ma page web décentralisée !</h1>
        <p>Cette page est hébergée sur IPFS.</p>
    </body>
    </html>
    
  2. Créez un dossier pour votre site : Créez un dossier mon_site et placez le fichier index.html à l'intérieur.

  3. Ajoutez le dossier à IPFS : Pour ajouter un dossier, utilisez l'option -r (récursif).

    ipfs add -r mon_site
    

    La commande add vous donnera plusieurs CIDs (pour le fichier et pour le dossier). Le CID qui nous intéresse est le dernier, celui qui correspond au dossier mon_site.

  4. Visitez votre site : Prenez le CID du dossier et accédez-y via une passerelle : https://ipfs.io/ipfs/CID_DU_DOSSIER/. Vous devriez voir votre page web s'afficher !

Exercice 4 : Mettre à Jour votre Site avec IPNS (Niveau Intermédiaire)

Maintenant, mettons à jour notre site et publions-le avec une adresse stable grâce à IPNS.

  1. Modifiez votre site : Ouvrez le fichier index.html et modifiez le titre ou le paragraphe.

  2. Ajoutez la nouvelle version : Ré-ajoutez le dossier mon_site à IPFS avec ipfs add -r mon_site. Vous obtiendrez un nouveau CID pour le dossier.

  3. Publiez sur IPNS : Prenez ce nouveau CID et publiez-le sur IPNS.

    ipfs name publish NOUVEAU_CID_DU_DOSSIER
    

  1. Visitez votre site via IPNS : Accédez à votre site en utilisant votre adresse IPNS : https://ipfs.io/ipns/VOTRE_PEER_ID/. Vous devriez voir la version mise à jour de votre site.

Bonus : Modifiez à nouveau votre site, obtenez un nouveau CID et republiez-le. Rafraîchissez la page dans votre navigateur (cela peut prendre un peu de temps pour que la mise à jour se propage). L'adresse n'a pas changé, mais le contenu si ! Vous avez maintenant un site web décentralisé avec une adresse permanente.


Conclusion

Félicitations ! Vous avez maintenant une compréhension solide des principes fondamentaux d'IPFS et de son utilisation pratique. Vous avez appris à partager des fichiers, à garantir leur persistance et même à héberger et mettre à jour un site web de manière totalement décentralisée.

Le monde d'IPFS est vaste et en constante évolution. Nous vous encourageons à continuer d'explorer, à consulter la documentation officielle et à rejoindre la communauté pour découvrir tout le potentiel de cette technologie passionnante.

Sort:  

Hi , you might want to check your witness votes , i saw your name voting for a witness that is no longer active ;)