Chargement
keyboard_arrow_up
BitcoinTechnique

Souvent présentée comme une “technologie” révolutionnaire, la blockchain de Bitcoin est avant tout le registre comptable horodaté de toutes les transactions ayant été effectuées sur le réseau depuis sa création. Dans le whitepaper original de Bitcoin, Satoshi Nakamoto ne parle pas de blockchain mais plutôt de timestamp server - serveur d'horodatage. Le terme blockchain est apparu plus tard, sans doute pour son côté plus visuel, plus parlant : une chaîne de blocs contenant des transactions. L'horodatage est cependant essentiel pour comprendre comment Bitcoin permet de se passer d'un organe central de contrôle afin de sécuriser le réseau, et notamment d'éviter les double dépenses.

Comprendre le fonctionnement de ce registre décentralisé est un bon point de départ afin d’appréhender les centaines de cryptomonnaies ayant repris ce système.

Objectifs de la blockchain de Bitcoin

Lorsque Satoshi Nakamoto créa Bitcoin en 2008, son objectif était à la fois simple et très ambitieux. Il souhaitait construire un système de “cash” numérique, fonctionnant de pair à pair, tel l’argent liquide.

La blockchain de Bitcoin a pour fonction de maintenir la comptabilité des transactions effectuées sur le réseau, tout en étant impossible à falsifier, et en empêchant les doubles dépenses (le fait de dépenser deux fois les fonds présents à une même adresse). La seule solution existante jusqu’alors pour éviter les doubles dépenses au sein d’un réseau de paiement numérique était de centraliser le tenue du registre comptable en passant par un tiers de confiance (une banque par exemple). La blockchain de Bitcoin permet de se passer d’organe central de contrôle pour valider les transactions.

Pour cela, ce grand livre de comptes numérique est répliqué sur tous les nœuds du réseau Bitcoin - on parle de technologie de registre distribué - et se présente sous forme de blocs qui s’enchaînent les uns aux autres, selon un procédé cryptographique.

Le problème des généraux byzantins

Afin de décentraliser la maintenance du registre comptable et la création des unités monétaires du réseau Bitcoin, Satoshi Nakamoto chercha une solution robuste au fameux problème des généraux byzantins.

Il s'agit d'une analogie historique pour décrire un problème classique de l’algorithmique : comment garder l’intégrité d’une information et assurer sa transmission au sein d’un réseau comportant des acteurs malicieux ?

Imaginons une cité assiégée par plusieurs corps d’armées, dirigés par leurs généraux respectifs. Ces derniers ne peuvent communiquer que par le biais de messagers, se déplaçant à cheval (ou plutôt à dos de chameau) et doivent s’entendre sur l’heure et les modalités de l’attaque finale : elle ne pourra réussir que si les troupes tombent parfaitement d’accord et attaquent de façon coordonnée. Le problème, c’est qu’il y a au sein des généraux, tout comme parmi leurs messagers, des traîtres, non-identifiés, qui vont tenter de fausser l’information.

Comment trouver un mécanisme permettant de maintenir le consensus entre les généraux loyaux ?

Byzantine Generals Problem

En informatique, il s’agit de s’assurer qu’au sein de réseau de machines, une majorité suffisante continue de suivre le bon protocole de fonctionnement malgré la présence éventuelles d’éléments défectueux. Une solution formelle fut proposée en 1982 par Leslie Lamport, Robert Shostak et Marshall Pease.

Vous l’aurez compris, dans le cas du réseau Bitcoin, il s’agit de s’assurer que tous les nœuds maintiennent la comptabilité monétaire du système en suivant un ensemble de règles communes (consensus), tout en se préservant des attaques diverses ou des pannes.

La preuve de travail

C’est ici qu’entre en jeu une brique technologique essentielle au fonctionnement de la blockchain de Bitcoin : la preuve de travail (appelée aussi "algorithme de consensus de Nakamoto").

Cet algorithme est tout simplement la meilleure solution qui ait été trouvée au problème des généraux byzantins. Elle permet de s’assurer que le réseau Bitcoin maintiendra un consensus autour de sa comptabilité de référence, même en présence de 50% d’acteurs malicieux (contre 33 % pour les protocoles classiques).

C'est ici que réside tout le génie de Satoshi Nakamoto : afin de solutionner au mieux ce problème, en plus des mathématiques pures, il introduisit une nouvelle variable, une tendance naturelle de l'être humain : la cupidité. Grâce à un savant jeu d’incitations économiques, attaquer le réseau devient si coûteux qu’il est beaucoup plus rentable de le sécuriser.

Pour en savoir plus sur le problème des généraux byzantins, vous pouvez consulter cet article de Ludovic Lars.

Le minage sur Bitcoin

Le minage est à la fois le processus de création monétaire sur le réseau Bitcoin, mais aussi le mécanisme d’incitations économiques qui sécurise le réseau.

Il existe une récompense, les bitcoins "créés" à chaque ajout d’un bloc à la chaîne, qui sera distribuée de façon aléatoire à un mineur (ou un sous-ensemble de mineurs) qui aura prouvé à l’ensemble du réseau qu’il aura dépensé suffisamment d’énergie (et donc de valeur, quantifiable en argent) pour assurer son fonctionnement et sa sécurité. On parle de "coinbase transaction" : la récompense en bitcoins apparaît directement sur l'adresse du mineur gagnant. Elle est divisée par deux tous les quatre ans, créant ainsi un modèle d'émission monétaire déflationniste imitant l'extraction d'un métal précieux, tel l'or.

Afin de comprendre le processus de minage, il faut avoir à l'esprit quelques notions préalables.

La cryptographie asymétrique

La cryptographie symétrique est un principe de chiffrement vieux comme le monde : un message est chiffré grâce à une clef secrète que possèdent l'émetteur et le récepteur. Pour déchiffrer le message, il suffit de connaître cette clef.

La cryptographie asymétrique fonctionne grâce à deux clefs : une clef publique et une clef privée. La clef publique est la clef de chiffrement : n'importe qui la possédant peut chiffrer un message, mais seul le propriétaire de la clef privée associée peut alors le déchiffrer. Dans le cas de Bitcoin, l'émetteur d'une transaction signe cette dernière grâce à sa clef privée, et une fois diffusée sur le réseau, n'importe qui peut vérifier que la signature est valide grâce à la clef publique de l'émetteur.

Le modèle UTXO

L'état de la blockchain de Bitcoin (le solde en bitcoins présent à chaque adresse) à un instant fixé est un ensemble de "sorties non dépensées" (UTXO pour Unspent Transaction Output).

Chaque adresse Bitcoin comporte un solde, qui est la somme de toutes les sorties provenant d'adresses ayant dépensé des bitcoins vers cette adresse (ce qui signifie qu'à l'origine, chaque sortie non-dépensée provient d'une coinbase transaction, la création ex nihilo de bitcoins sur l'adresse d'un mineur).

Une transaction Bitcoin vise donc à modifier le solde d'une adresse en utilisant les UTXO d'une ou plusieurs adresses. Afin d'être valide, elle doit être signée par le propriétaire de la clef privée associée à (ou aux) adresses d'entrée. Il est possible de créer des transactions qui s'enchaînent, signées ou pas, et de les diffuser à sa guise sur le réseau. Cependant, les doubles dépenses sont interdites : s'il est tout à fait possible de créer des transactions qui dépensent plusieurs fois les coins présents sur une adresse, seule l'une d'entre elles sera validée par le réseau.

Les fonctions de hachage

Il s'agit de fonctions mathématiques qui transforment un nombre (ou une chaîne de caractères, par extension) de taille arbitraire en une image (nombre, chaîne) de taille fixée. Elles sont à sens unique, c'est-à-dire qu'il est impossible, en connaissant leur résultante, le hash ou hachis, de remonter jusqu'aux données originelles. Sur Bitcoin, la fonction SHA-256 est très utilisée.

Structure d’un bloc

Un bloc sur le réseau Bitcoin est semblable à un tableau qui comporte des données organisées d’une façon bien précise. Certaines sont déterminées par les utilisateurs du réseau, comme le montant des transactions, les adresses des destinataires et les modalités d’envoi, et d’autres par le protocole lui-même, comme le numéro du bloc, la version du logiciel Bitcoin employé, etc.

La taille maximale d’un bloc sur le réseau Bitcoin fut initialement définie à 1 Mo. Pour donner un ordre de grandeur, cela correspond à quelques milliers de transactions "standard" (en cas de multiples adresses d'entrée et/ou de sortie, la taille d'une transaction augmente). Ces dernières sont transcrites grâce au langage de script de Bitcoin comme des messages signés : une demande de transaction auprès des mineurs consiste à modifier le solde de plusieurs adresses d’émission et de réception. Cette demande est signée grâce à la clef privée du propriétaire de la ou des adresses publiques d’entrée. Les nœuds du réseau vont s’assurer que la transaction est valide avant de la diffuser à leurs pairs, de proche en proche.

Structure d'un bloc Bitcoin
Structure d'un bloc Bitcoin

Les mineurs vont alors sélectionner les transactions qu’ils souhaitent inclure dans le bloc courant, généralement en fonction des frais qui y sont associés.

Il faut ensuite raccorder ce bloc aux précédents. Pour cela, son en-tête doit revêtir une certaine forme.

Structure de l'en-tête (header)

Structure de l'en-tête d'un bloc Bitcoin
Structure de l'en-tête d'un bloc Bitcoin

Afin que le bloc soit valide, le hash de l'en-tête de ce dernier doit commencer par certain un nombre de zéros tout en restant inférieur à une valeur donnée, la cible. Cette cible est déterminée par le protocole afin d'ajuster la difficulté du problème de telle façon qu'en moyenne, un bloc valide soit trouvé toutes les dix minutes environ. Cette cible dépend donc de la puissance de hachage totale du réseau : plus elle est élevée, plus la valeur de la cible est faible (c'est-à-dire qu'il y a plus de zéros au début) et plus la difficulté est grande (c'est-à-dire qu'il y a peu de solutions à ce problème : une puissance de calcul considérable doit être déployée pour trouver cette solution - ce hash - par génération aléatoire). Si, en revanche, la puissance de calcul du réseau diminue, la difficulté sera revue à la baisse.

Les mineurs vont tous tenter de trouver la solution à ce problème mathématique très complexe, en générant des solutions aléatoirement (via le nonce, nombre aléatoire) jusqu’à en trouver une qui convient.

Pertinence de l'algorithme

L'avantage de cette méthode est qu'il est ensuite très facile pour les nœuds du réseau de vérifier que la solution est valide. En effet, n'importe quel nœud peut calculer très rapidement le hash de l'en-tête du bloc proposé et vérifier qu'il respecte la cible. Une fois que l'en-tête du bloc proposé par un mineur convient à l'ensemble du réseau, le bloc miné est ajouté définitivement à la chaîne et le mineur chanceux touche sa récompense (dans le cas d'un groupe de mineurs, la récompense sera distribuée au prorata de la puissance allouée par chaque mineur).

En quoi ce mécanisme rend-il le registre des transactions (la blockchain) immuable ? Étant donné que l'en-tête de chaque nouveau bloc dépend des précédents, si un attaquant souhaite réécrire une transaction, il devra recalculer tous les blocs situés chronologiquement avant celui qu'il souhaite modifier, ce qui est techniquement impossible.

L'horodatage des blocs empêche également à un acteur malicieux d'effectuer une double dépense : s'il est tout à fait possible de diffuser sur le réseau deux transactions dépensant les mêmes bitcoins vers deux adresses différentes, seule la première transaction inscrite sur la blockchain sera valide. Grâce à l'horodatage, l'ensemble du réseau pourra voir que la deuxième transaction (la tentative de double dépense) est invalide.

Conclusion

Afin d’illustrer ce qui précède, vous pouvez vous rendre sur un explorateur de blocs et parcourir la blockchain de Bitcoin : vous verrez que chaque bloc présente un hash commençant par un certain nombre de zéros.

Le meilleur moyen de donner vie à ces concepts reste de télécharger le logiciel client Bitcoin Core et de monter un nœud Bitcoin complet, possédant l’intégralité de la blockchain, afin de participer à la sécurisation du réseau !

Pour aller plus loin, n’hésitez pas à réserver votre place pour une formation en présentiel sur Bitcoin !

Formation Bitcoin

Formation Bitcoin

Lire aussi :

Illustrations : Shutterstock, Flickr, L. Lamport, BitConseil, Swann.

Commentaires

Indice des prix

Sécurisez vos cryptos

Ledger Nano S
Ledger Blue
Trezor Hardware wallet

Flux Twitter

Achetez des bitcoins/ethers

Acheter bitcoins et ethers sur Coinhouse
Acheter des bitcoins sur ZeBitcoin
Achat / Vente de crypto-monnaies sur coinbase
BitIt, achat de crypto-monnaies facile et rapide
SpectroCoin, le multi-services
Cex.io, Achat / Vente et échange de crypto-monnaies
Coinmama, l’achat bitcoin ethereum facile