Après avoir abordé les fondements derrière le 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 suivant.
Temps de lecture estimé : 10 minutes
Table des matières
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 protocole lié à internet dont vous avez sûrement déjà entendre parler :
- HTTP : permet notamment de passer d'une page web à une autre.
- TCP/IP : sert à 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 du code issu de langages de programmation.
Le code et les langages de programmation
Le code est l’ensemble des instructions écrites par un programmeur pour faire exécuter une tâche à une machine.
Le langage de programmation est le moyen de communication entre le programmeur et l’ordinateur.
Par analogie avec les langues vivantes (français, anglais...), 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.
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 cependant 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.
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 sont encore très peu utilisés sur le réseau par rapport à ce qui a lieu sur Ethereum qui utilise le langage Solidity.
Les réseaux de pair à pair
Un réseau de pair à pair (Peer-to-Peer (P2P) 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.
Bitcoin est un réseau de pair à pair dans lequel les transactions sont diffusées grâce à des nœuds. Il 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.
Grâce à cela, les pannes et les problèmes du système sont moins susceptibles de se produire, du fait qu'ils devraient arriver simultanément chez tous les acteurs qui jouent le même rôle.
Bitcoin est un système distribué dans le sens ou un grand nombre de nœuds possèdent une copie de son registre comptable, la blockchain.
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. Aucune entité n'a le pouvoir de contrôler le réseau.
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 qui suit.
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 l'article qui suit.
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 très nombreux secteurs d'activité (logistique, santé, industrie, 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 ou de sécurité 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.
Les mécanismes de consensus
Dans le cas des réseaux décentralisés, il faut 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 ce faire et 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, que vous pourrez découvrir dans la suite de cette encyclopédie.
En ce qui concerne 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 valider des blocs.
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, ...).
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 à 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 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 2 la clé.
- Si une première clé (publique) sert à chiffrer le message et qu'une deuxième clé (privée) sert à 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.
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éroulement 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. Elle doit être :
- 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, empreinte ou signature.
Avec ce type de fonction, des données d'entrée identiques donnent toujours la même valeur de sorite. Il est 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.
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 de toutes les bases nécessaires pour comprendre comment fonctionne Bitcoin. Si vous vous voulez commencer à étudier comment tourne la machine, vous pouvez passer au prochain article, dans lequel nous vous présenterons les blockchains et celle de Bitcoin en particulier.