Bitcoin, un ensemble de briques technologiques

Chapitre I Article e

Après avoir abordé les fondements à l'origine de Bitcoin, les Hommes qui ont participé à sa création et les dates marquantes de son histoire, intéressons-nous ici aux briques technologiques sur lesquelles il repose et sans lesquelles il ne pourrait exister. Nous vous les présenterons une à une pour poser les bases, avant de revenir sur les éléments les plus importants et la façon dont ils s'articulent dans les articles suivants.

Temps de lecture estimé : 13 minutes

Les protocoles informatiques

Un protocole informatique est un ensemble de règles qui définissent comment des ordinateurs, ou d’autres systèmes électroniques connectés, peuvent communiquer et échanger des données pour remplir une tâche (par exemple effectuer des transactions pour Bitcoin). Son rôle est de définir comment les différents acteurs doivent coopérer pour mener à bien leur mission. Il est le garant de la fiabilité, de la sécurité et l’efficacité de la réussite de cette dernière.

ll existe de très nombreux types de protocoles informatiques, selon les domaines d’application. Voici quelques exemples de protocoles dont vous avez sûrement déjà dû entendre parler :

  • HTTP : permet notamment de passer d'une page web à une autre ;
  • TCP/IP : permet de transmettre des données sur Internet ;
  • FTP : utilisé pour le transfert de fichier.

Dans Bitcoin, le protocole est implémenté grâce au logiciel Bitcoin Core (aussi appelé « client » Bitcoin). Lorsque le contexte de l'informatique est clairement posé comme ici, on peut parler directement de protocole sans avoir besoin d'ajouter l'adjectif « informatique ».

Pour fonctionner, les protocoles s'appuient sur des langages de programmation et du code.

Les langages de programmation et le code

Le langage de programmation est le moyen de communication entre le programmeur et l’ordinateur. Le code est l’ensemble des instructions écrites par un programmeur pour faire exécuter une tâche à une machine.

Par analogie avec les langues vivantes (français, anglais, etc.), le code pourrait être associé à des mots, dont l'association dans le bon ordre et suivant les bonnes règles forme une langue appelée « langage de programmation ».

Le programme qui rend effectif le protocole Bitcoin, implémenté par Bitcoin Core, est codé avec plusieurs langages de programmation dont :

  • Du C++ ;
  • Du Python ;
  • Du Bitcoin Script, aussi appelé Script lorsque le contexte de Bitcoin est déjà défini.
Segment du code du protocole Bitcoin
Segment du code du protocole Bitcoin

Le Script est utilisé pour programmer les transactions. Il n'est a priori pas Turing-complet, c’est-à-dire qu'il ne permet pas d'exécuter des boucles. Les possibilités qu'il offre sont volontairement limitées pour maximiser la sécurité. Il offre néanmoins une certaine flexibilité dans le sens où il permet une grande variété de transactions, avec notamment la possibilité de coder des contrats intelligents (smart contracts).

Le fait que les boucles ne soient pas réalisables explique le fait que, à l'heure actuelle, les smart contracts déployés sur Bitcoin restent très basiques. Ils ne jouent donc pas le même rôle que ceux d'Ethereum et son langage Solidity (et c'est un choix).

Les réseaux de pair à pair

Un réseau de pair à pair (Peer-to-Peer en anglais), est un type de réseau informatique où les ordinateurs sont directement connectés les uns aux autres, sans passer par un serveur central. Chacun sert alors d’émetteur, en distribuant des données numériques, et de récepteur, en recevant des données numériques.

L'une des premières applications grand public du pair à pair a été le partage de fichiers audio et vidéo. Qui n'a jamais utilisé BitTorent, µTorrent ou encore eMule ?

Comparatif architecture client-serveur / de pair à pair
Comparatif architecture client-serveur / de pair à pair

Bitcoin, pour sa part, est un réseau qui a introduit le partage de valeur monétaire de pair à pair dans lequel les transactions sont diffusées grâce à des nœuds. La notion de « pair à pair » est si centrale qu'elle est directement intégrée dans le titre du livre blanc de Bitcoin publié par Satoshi Nakamoto : « A peer to peer electronic cash system ».

Bitcoin profite ainsi des avantages de cette architecture que sont la résistance aux attaques et à la censure, comme nous le verrons par la suite.

Les systèmes distribués

Un système distribué est un système dans lequel les composants et les données dépendent d’une multitude de sources. Plusieurs acteurs de ce système sont capables de remplir les mêmes fonctions.

Illustration d'une architecture distribuée
Illustration d'une architecture distribuée

Grâce à cela, toute panne ou censure du système est moins susceptible de survenir, car l'une comme l'autre devraient se produire simultanément chez une majorité des acteurs qui jouent le même rôle.

Bitcoin est un système distribué dans le sens où des milliers de nœuds du réseau possèdent une copie de son registre comptable, la blockchain. Même si certains nœuds sont compromis ou rencontrent des problèmes, le réseau continue de fonctionner.

Dans un système distribué, les composants du système sont physiquement séparés et communiquent via un réseau. Chaque nœud peut effectuer des calculs et stocker des données de manière indépendante. La prise de décision, quant à elle, peut être centralisée ou décentralisée.

Les réseaux décentralisés

Un réseau décentralisé s'appuie sur l'architecture d'un réseau de pair à pair. Il n'existe pas d'organe central, ou de tiers de confiance, sur lequel repose le fonctionnement du réseau. Chaque nœud peut agir comme un client et un serveur à la fois, et fonctionner librement et indépendamment des autres. Il est entièrement libre de sa façon d'agir, et possède un pouvoir sur le réseau identique à celui de ses pairs. Aucune entité n'a le pouvoir de contrôler le réseau.

Il n’y a pas de point de défaillance unique, ce qui signifie que même si un nœud rencontre un problème, le réseau peut continuer de fonctionner. Les réseaux décentralisés sont à la fois plus résistants aux attaques et à la censure que les réseaux centralisés, et moins sensible aux pannes.

Cependant, du fait qu'il n'y ait pas d’autorité centrale pour prendre les décisions, ils sont aussi plus complexes à faire évoluer.

Comparatif architecture centralisée et décentralisée
Comparatif architecture centralisée et décentralisée

Il existe plusieurs types de décentralisation (architecturale, politique, logique, géographique et financière). Nous développerons davantage ces points en ce qui concerne les blockchains en général et Bitcoin en particulier dans l'article suivant de notre Encyclopédie.

Pour bien comprendre la différence entre distribution et décentralisation, on peut dire qu'un système distribué se concentre sur la répartition physique des nœuds, tandis qu’un réseau décentralisé se concentre sur la répartition du contrôle et de la prise de décision entre les nœuds.

Les deux plus grands challenges des réseaux distribués sont de ne pas avoir d’incohérence des données entre les nœuds, qui doivent rester synchronisés, et d'obtenir un consensus sans appel. Vous verrez dans les articles suivants que Bitcoin résout très bien ces problèmes à l'aide de la blockchain et de la preuve de travail.

Bitcoin est ainsi un réseau à la fois décentralisé et distribué.

Les blockchains

La blockchain (ou chaîne de blocs) est une technologie de stockage et de transmission d’informations, qui s'apparente à une base de données. Comme son nom l'indique, elle est composée de blocs, reliés entre eux par des procédés cryptographiques. Nous expliquerons en détail ses particularités et son fonctionnement dans le prochain article de l'Encyclopédie.

Dans une blockchain, chaque bloc représente un maillon
Dans une blockchain, chaque bloc représente un maillon

Si le sujet de notre Chapitre se limite à Bitcoin, sachez cependant que le champ d'application de cette technologie est bien plus large que celui des cryptomonnaies et peut s'appliquer à de nombreux secteurs d'activité (logistique, santé, industrie, droit, etc.).

Cependant, il est souvent inutile d’utiliser une blockchain pour gérer des données non-financières. Une blockchain n’offre pas plus de souplesse, de meilleures performances, de sécurité et même parfois de décentralisation qu’une base de données classique pour de nombreuses applications.

Néanmoins, les propriétés des blockchains peuvent servir à améliorer certains systèmes. Ceux qui méritent plus de transparence, de sécurité et de résistance à la censure bénéficient des avancées techniques héritées de Bitcoin. Nous pouvons par exemple citer les certificats d'authenticité, les données médicales, ou les registres de vote.

Il existe des blockchains publiques, c’est-à-dire consultables par tous comme Bitcoin, et des blockchains privées, accessibles seulement à qui de droit. Leurs propriétés peuvent donc être foncièrement différentes.

Les mécanismes de consensus

Dans le cas des réseaux décentralisés, il est nécessaire de s'assurer que les règles du protocole sont bien respectées sans avoir recours à une entité de contrôle centrale. C'est ici qu'entrent en jeu les mécanismes de consensus, aussi appelé algorithmes de consensus. Il indique au système les étapes à suivre pour produire les résultats escomptés.

En ce qui concerne les blockchains, ce sont ces mécanismes qui permettent de déterminer comment sont validées les transactions et comment sont ajoutés les blocs. Il existe plusieurs types de mécanisme de consensus.

Sur Bitcoin, l’algorithme de consensus utilisé est celui de la preuve de travail (« Proof of Work » en anglais). Les nœuds du réseau doivent effectuer un travail et en fournir la preuve pour pouvoir ajouter des blocs de transactions à la blockchain.

Ethereum utilise pour sa part un mécanisme de consensus appelé preuve d'enjeu (« Proof of Stake » en anglais). Ici, les acteurs du réseau doivent mettre « en gage » une certaine quantité de jeton pour prouver leur bonne foi et assurer qu'ils ne trichent pas.

D'autres types de mécanisme existent mais sont moins répandus (Proof of Capacity, Proof of History, Delegated Proof of Stake, etc.). Nous évoquerons leurs fonctionnements dans un prochain article de cette Encyclopédie.

La cryptographie

La cryptographie est une discipline de la cryptologie qui est « la science du secret ». Le mot tire son origine du grec « kryptos » qui signifie « caché ». Elle vise, dans le monde numérique, à rendre des messages inintelligibles par toute autre personne (ou système) que celle à qui ils sont destinés.

Elle assure la confidentialité de ces messages, ainsi que leur authenticité et leur intégrité.

En cryptographie, le chiffrement et le déchiffrement des messages se font à l'aide d'un algorithme et d'une clé (souvent une suite alphanumérique). Il peut y en avoir une ou plusieurs que l'on peut assimiler à des mots de passe.

Si la même clé sert à chiffrer et à déchiffrer le message, la cryptographie est dite symétrique. Dans ce cas, l'émetteur et le destinataire possèdent tous les deux la clé.

Chiffrage symétrique
Chiffrage symétrique

En revanche, si une première clé (publique) sert à chiffrer le message et une deuxième clé (privée) à le déchiffrer, la cryptographie est dite asymétrique. Dans ce cas, l'expéditeur utilise la clé publique du destinataire pour chiffrer le message à envoyer. Le destinataire utilise ensuite sa clé privée pour le déchiffrer.

Chiffrage asymétrique
Chiffrage asymétrique

Avec la cryptographie asymétrique, seule la partie qui doit pouvoir déchiffrer le message possède la clé privée permettant de le faire. C'est sur la cryptographie asymétrique que s'appuient la plupart des signatures numériques, utilisées notamment par Bitcoin pour assurer le bon déroulé des transactions, comme nous le verrons ici.

Les signatures numériques

À l'instar d'une signature manuscrite, une signature numérique a pour fonction de permettre d'authentifier l'auteur d'un document ou d'une information. Elle doit réunir les propriétés qui suivent en étant :

  • Authentique : on doit pouvoir retrouver l’identité de celui qui l'appose ;
  • Non réutilisable : elle ne doit pas pouvoir être déplacée d'un document à un autre ;
  • Irrévocable : celui qui a signé ne doit pas pouvoir le contester ;
  • Infalsifiable : une entité ne doit pas pouvoir se faire passer pour une autre ;
  • Inaltérable : il doit être impossible de modifier un document signé.

La grande majorité des procédés de signature numérique s’appuient sur la cryptographie asymétrique. Seul le détenteur de la clé privée peut créer une signature numérique valide, et tout le monde peut vérifier cette signature avec la clé publique correspondante.

C'est grâce à ce procédé que sont signées les transactions Bitcoin.

Le hachage

Une fonction de hachage est un outil mathématique de chiffrement utilisé en cryptographie. Il consiste à transformer des données de n'importe quelle taille en une suite de caractères de taille finie appelée « hash » ou empreinte. 

Avec ce type de fonction, des données d'entrée identiques donnent toujours la même valeur de sortie. Il est cependant impossible de retrouver les données d'entrées avec les données de sortie et le moindre changement dans les données d'entrées entraîne une modification importante des données de sortie.

La fonction de hachage appelée SHA-256 est utilisée par Bitcoin dans le processus de minage qui sert à ajouter des blocs à la chaîne. Les mineurs doivent l'utiliser pour trouver une valeur précise de hash en ajustant les données d'entrée dont ils disposent.

Avec SHA-256, le hash de sortie est une suite de 64 caractères quelles que soient les données d'entrées.

Illustration d'une fonction de hachage
Illustration d'une fonction de hachage

Pour mieux comprendre, rien de tel que de pratiquer. Pour ce faire, vous pouvez vous rendre sur ce site qui vous permettra de voir en un clin d'œil ce que donne une entrée une fois passée par la fonction de hachage SHA-256.

Vous trouverez plus de détails sur les fonctions de hachage et sur le processus de minage dans l'article sur la preuve de travail.

Vous disposez maintenant d'une bonne base pour comprendre les mécanismes sur lesquels repose Bitcoin. Si tout cela vous semble malgré tout encore flou et imprécis, ne vous inquiétez pas : à ce stade, rien de plus normal. Pour commencer à étudier comment tourne vraiment la machine Bitcoin, nous invitons à passer au prochain article dans lequel nous vous développerons la notion de blockchain, et plus particulièrement celle de Bitcoin.