web-dev-qa-db-fra.com

Où IPFS stocke-t-il toutes les données?

J'ai essayé d'implémenter et de comprendre le fonctionnement d'IPFS et j'ai quelques choses qui ne sont pas claires.

Choses que j'ai essayées:
J'ai implémenté IPFS sur mon système et stocké des fichiers dessus. Même si je supprime les fichiers de mon système et ferme le démon ipfs, je suis toujours en mesure d'accéder aux fichiers d'une autre machine via IPFS.
J'ai remarqué qu'il y a un dossier . Ipfs dans mon répertoire personnel qui contient la partie des blocs de données que j'ajoute à IPFS.

Des questions:
1. Les blocs sont-ils également stockés localement sur mon système?
2. Où les données sont-elles stockées ailleurs? Sur d'autres pairs auxquels je suis connecté? Parce que je peux toujours accéder au fichier si je ferme mon démon ipfs.
3. Si cela est vrai et que les données sont stockées à plusieurs endroits, la possibilité de perdre mes données est toujours là, si tous les pairs se déconnectent du réseau?
4. Chaque homologue du réseau stocke-t-il l'intégralité du fichier ou seulement une partie du fichier?
5. Si une copie des données est distribuée sur le réseau p2p, cela signifie que les données sont dupliquées plusieurs fois? Comment est-ce efficace en termes de stockage?
6. Nous stockons également les données téléchargées par d'autres pairs?
7. Configuration minimale requise pour exécuter IPFS? Nous avons juste besoin d'un stockage abondant, pas nécessairement d'un système puissant?

Merci d'avance!

29
Aneesh Kumar

Lorsque vous téléchargez quelque chose, le fichier est fragmenté par ipfs et stocké dans votre dossier de cache (.ipfs).

Si vous essayez de voir le fichier sur un autre homologue du réseau (disons la passerelle principale, ipfs.io), cet homologue vous demande le fichier et met en cache ça aussi.

Si vous désactivez ensuite votre démon, vous pouvez toujours voir le fichier sur la passerelle, probablement parce que la passerelle ou un autre homologue sur le Web l'a toujours mis en cache.

Lorsqu'un pair souhaite télécharger un fichier mais qu'il n'a plus de mémoire (il ne peut plus mettre en cache), les fichiers utilisés les plus anciens sont oubliés pour libérer de l'espace.

... En fait, c'est plus complexe que ça, pour avoir une portée plus large je vous conseille de vérifier:

  • comment git fonctionne
  • tables de hachage décentralisées
  • kademlia
  • merkle trees
  • ...

Mais ce dernier devrait vous donner une idée du fonctionnement du mécanisme plus ou moins.

Maintenant, répondons point par point

  1. Oui
  2. Tous les pairs qui demandent votre fichier le cachent
  3. Vous perdez le fichier lorsqu'il n'est plus possible de reconstituer votre fichier à partir de tous les pairs qui en avaient une partie en cache (vous y compris)
  4. On peut en obtenir juste une partie, imaginez que vous regardez un film et que vous vous arrêtez plus ou moins à la moitié ... c'est tout, vous n'en avez mis en cache que la moitié.
  5. Lorsque vous regardez une vidéo sur YouTube, votre navigateur la met en cache (cela signifie une réplication!) ... ipfs est plus efficace en termes de trafic, disons que vous éteignez le navigateur et 2 minutes plus tard, vous voulez le regarder à nouveau. Ipfs l'obtient de votre cache, YouTube vous fait le télécharger à nouveau. Il y a aussi une question intéressante sur le stockage delta (lié à git) et d'où vous l'obtenez (pourrait être à l'intérieur de votre lan ... cela signifie flamboyer rapide) mais je ne vais pas m'y plonger.
  6. Si vous obtenez des données, vous les cachez donc ...
  7. Le démon principal est écrit en go. Go est efficace mais pas autant que de l'écrire en C++, C, Rust ... De plus, la technologie est assez jeune et s'améliorera avec le temps. Plus vous avez d'espace, plus vous pouvez mettre en cache, la puissance du processeur n'est pas si importante.

Si vous êtes intéressé par des moyens de stocker des données de manière p2p, voici quelques liens vers des projets intéressants.

30
G. M.