URL: https://linuxfr.org/users/erdnaxeli/journaux/syncnet-navigateur-peer-to-peer Title: SyncNet, navigateur peer-to-peer Authors: erdnaxeli Date: 2014年02月05日T02:51:50+01:00 License: CC By-SA Tags: Score: 20 J'aime bien les projets décentralisés. Même si en pratique la quasi totalité des services Internet que j'utilise au quotidien sont centralisés (à part le mail, si on oublie le G qui est bien souvent avant), l'idée de ne pas dépendre d'une entité centrale est plutôt plaisante. C'est pour ça que j'aime bien les initiatives comme [[[Freenet]]], les réseaux mesh, ou tous ces beaux projets de réseau social décentralisé. [Jack Minardi](http://jack.minardi.org/) a l'air de lui aussi bien aimer ça. Il est l'auteur de [SyncNet](http://jack.minardi.org/software/syncnet-a-decentralized-web-browser/), un navigateur web qui a pour caractéristique de pouvoir naviguer sur un _Web_ décentralisé. L'idée est de partager en peer-to-peer des sites (en HTML/CSS/JS classique). Lorsque l'on veut naviguer sur un de ces sites, le navigateur va les chercher sur le réseau peer-to-peer, puis en faire un copie local. Ainsi plus un site est visité, plus il est diffusé, et plus on peut y accéder facilement. Le comportement classique du peer-to-peer, quoi. La conséquence, c'est qu'on ne peut faire que des sites statiques. En interne tout repose sur le protocole [BitTorrent Sync](http://www.bittorrent.com/intl/fr/sync) qui permet de synchroniser des répertoires en utilisant le protocole peer-to-peer [BitTorrent](https://fr.wikipedia.org/wiki/BitTorrent_(protocole)). Lorsque vous décidez de synchroniser un répertoire, deux clefs sont générées : une clef secrète read-write, et une clef read-only. C'est cette dernière qui est utilisée par SyncNet pour récupérer le contenu d'un site mais empêcher n'importe qui de le modifier. Actuellement il faut vraiment taper la clef dans la barre de navigation (ou cliquer sur un lien de type `sync://`), mais à terme l'idée est de pouvoir utiliser un système de DNS lui aussi décentralisé. L'auteur n'est pas encore fixé sur la technologie à utiliser, mais il semble pencher vers [Colored Coins](http://coloredcoins.org/). Si j'ai bien compris (j'ai découvert cette techno en même temps que SyncNet), l'idée de Colored Coins est de se baser sur le système du [[Bitcoin]] (une chaîne de blocs validée par la communauté) pour enregistrer des _propriétés_ (dans le sens d'appartenance). Dans notre cas, un nom de domaine et un site (une clef) correspondant. L'auteur n'exclue cependant pas l'utilisation d'autres technologies (comme [Namecoin](http://namecoin.info/)). Une autre idée pour le future est de pouvoir _décentraliser_ rapidement un site. Vous vous baladez sur le Web classique avec SyncNet, vous cliquez sur un petit bouton et _hop !_, le site en question est automatiquement aspiré et ajouté aux dossiers synchronisés par BitTorrent Sync. Il reste des points à éclaircir (qui a le droit de mettre à jour cette copie ? si plusieurs copies se baladent, comment savoir laquelle est la plus récente ? comment savoir s'il existe une copie d'un site que je visite ?), mais l'idée est intéressante. C'est d'ailleurs même je pense un (futur) atout majeur du projet, parce que soyons honnête, je ne crois pas à l'émergence d'un Web parallèle décentralisé réellement intéressant pour le grand public (exemple avec Freenet : si c'est techniquement intéressant, il y a dessus en pratique majoritairement du contenu pornographique, des tutoriels pour faire pousser de la drogue / construire des bombes, et des théories complotistes). Cette dernière idée me rappelle d'ailleurs un peu [Coral](www.coralcdn.org), un projet de CDN lui aussi peer-to-peer (mais il faut cette fois installer un serveur spécifique), ou [PeerCDN](https://peercdn.com), la même chose mais avec des WebSockets (et donc directement sans serveur ni client spécifique). Sources et information supplémentaire : * [Article chez Korben](http://korben.info/syncnet.html) * [Papier sur Colored Coins](https://docs.google.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) * [le code source de SyncNet](https://github.com/jminardi/syncnet)