P2P et client-serveur
Le peer-to-peer, ou en français le pair-à-pair, communément abrégé en P2P est un modèle de réseau informatique essentiel à la technologie Bitcoin. Le P2P existait bien avant l’invention de Bitcoin (pensez à Napster, Limewire, mais aussi plus récemment au système des torrents), comme contre-point au système classique du client-serveur.
Le principe d’un réseau client-serveur stipule qu’un ordinateur qualifié de client, envoie des requêtes ; l’autre ou les autres ordinateurs, qualifiés de serveurs, attendent les requêtes des clients et y répondent. Il y a donc un système hiérarchique : le client ne peut pas remplir la même fonction que le serveur, dont il dépend. Dans le cas d’un réseau pair-à-pair, tous les client agissent aussi comme des serveurs. La terminologie spécifique des réseaux P2P parle souvent de « noeud », de « pair » ou « d’utilisateur » pour désigner plus précisément les ordinateurs reliés entre eux.
Néanmoins, le P2P n’est pas par essence décentralisé. Ce n’est pas là sa différence avec le système client-serveur. Un réseau P2P peut en effet fonctionner en même temps qu’un serveur central agit comme intermédiaire. Par exemple, certains sites utilisant le torrent (comme archive.org) ont des serveurs qui fonctionnement comme des intermédiaires entre les utilisateurs : si ces serveurs disparaissaient, les utilisateurs ne pourraient plus communiquer.
Bitcoin est un réseau P2P décentralisé : cela signifie qu’il n’y a pas de serveur central servant d’intermédiaire. Les ordinateurs communiquent directement les uns avec les autres. Plus précisément, Bitcoin est ce que l’on appelle un réseau P2P hybride. Nous allons donc surtout nous concentrer sur ce type de P2P – il existe en effet des réseaux non-structurés (comme Gnutella) et des réseaux structurés (comme Bittorrent).
Comment fonctionne le réseau Bitcoin ?
Bitcoin est certes un réseau structuré, il n’en reste pas moins unique en son genre. S’il est hybride, c’est parce qu’il n’y a pas qu’un seul protocole en usage dans le réseau Bitcoin. Il y en a plusieurs, s’appliquant à diverses fonctions possibles des nodes. De ce fait, même si d’un point de vue « topologique » (ou si vous préférez, « conceptuel »), le réseau Bitcoin est horizontal, néanmoins, certains nodes spécifiques sont plus « concentrés » que d’autres car ils remplissent des fonctions plus essentielles au maintien du réseau.
Si l’on prend un réseau P2P structuré typique, chaque node peut chercher le réseau pour trouver une ressource, peu importe sa rareté. Il est structuré autour d’une table de hachage distribué (DHT) qui assigne la propriété de chaque fichier à un node en particulier. Cela permet aux autres utilisateurs de recherches des ressources sur le réseau en utilisant la table de hachage : les clés sont stockés sur le réseau, et n’importe quel node peut récupérer la valeur associée à cette clé.
Toutefois ce modèle convient mal aux réseaux avec un grande nombre de va-et-vient de la part des utilisateurs. Puisque la disponibilité des ressources dépend tout de même de la présence de nodes, s’il y a un constant va-et-vient, l’accès devient problématique, erratique, voire disparaît parfois pendant longtemps. Or Bitcoin fait partie de ces réseaux à haut « barattage » (churn).
C’est à cette fin que Bitcoin a des nodes « plus spéciaux » que d’autres, parmi lesquelles il y a les mineurs. Les mineurs sont responsables de faire en sorte que les transactions soient traitées activement. Lorsque vous envoyez une transaction à une adresse, il y a forcément le travail d’un ou plusieurs mineurs derrière la transaction (pour autant qu’elle ait réussi).
Parallèlement, le fait de posséder un client Bitcoin sur son ordinateur est bénéfique pour le reste du réseau puisque chaque transaction doit également être vérifiée. Pour ce faire, le protocole de la transaction est testée virtuellement par l’ensemble du réseau. C’est-à-dire que son protocole est comparé aléatoirement au protocole de tel ou tel node. Ce faisant, le réseau Bitcoin agit comme sa propre sûreté.
Pour vous donner une idée d’à quoi ressemble le réseau Bitcoin sous forme de diagramme, vous pouvez en trouver ici une représentation.
À lire aussi :