Bitcoin - Qu'y a-t-il dans un bloc ?
Que contient un bloc Bitcoin exactement ? Quelles sont les données « hachées » par les mineurs ?
BLOC
Un bloc comporte plusieurs parties. Le Coinbase, les transactions, l’en-tête (le « header ») et quelques autres informations. Mais seules les données contenues dans le header sont hachées.
Voici à quoi ressemble le bloc genesis (le tout premier bloc miné par Satoshi Nakamoto) exprimé en hexadécimal.
La section Coinbase se trouve à droite. Les mineurs s’en servent pour se verser leur récompense. Cette section peut contenir des données arbitraires. C’est là que Satoshi a inscrit le célèbre titre du journal The Times : « Chancellor on brink of second bailout for banks ».
Le header est standardisé. Il pèse 80 octets et se compose de six sections :
Numéro de version / Hash du bloc précédent / Hash de la racine de l’arbre de Merkle / Time Stamp / Valeur cible du hash / Nonce
Header
L’algorithme SHA-256 hache l’ensemble des informations comprises dans les six sections du header. Voici leur description :
-Numéro de version du protocole (4 octets)
Le numéro de version indique l’ensemble des règles de validation du bloc à suivre. Nous en sommes à la version 4 depuis 2015.
-Hash du bloc précédent
Un bloc contient toujours dans son header le hash du bloc précédent. En clair, chaque bloc est lié au précédent. D’où l’expression « blockchain ».
-Hash de la racine de l’arbre de Merkle (32 octets)
Ce hash résulte de la concaténation de toutes les transactions que contient le bloc. C’est grâce à l’arbre de Merkle que l’on répertorie et verrouille les transactions d’un bloc.
-Time Stamp, ou horodatage (4 octets)
Horodatage en temps Unix. L’heure UNIX est le nombre de secondes depuis le 1er janvier 1970. Nous étions à 1 679 647 534 secondes au moment d’écrire ces lignes.
-Valeur cible du hash (difficulté de mining) (4 octets)
La valeur du hash du bloc doit être inférieure ou égale à la valeur de hachage cible pour être valide. En gros, il faut que le hash commence par un certain nombre de zéros. Cet ajustement de la difficulté (qui a lieu tous les 2016 blocs) permet d’assurer le rythme d’un bloc toutes les 10 minutes environ.
-Nonce (4 octets)
Le nonce (diminutif en anglais de « number only used once ») est un nombre que le mineur fait varier jusqu’à trouver un hash commençant par un nombre de zéros valide.
La section offre un espace de 4 octets, ce qui nous donne approximativement 4,3 milliards de nonces possibles. C’est peu quand on sait que l’ensemble des mineurs produisent 400 milliards de milliards de hash par seconde (400 ExaHash) :
Les mineurs font donc varier d’autres données comme le time stamp, les transactions (ce qui va changer la racine de l’arbre de Merkle) où les données du Coinbase pour créer plus d’aléatoire.
Quoi d’autre dans un bloc ?
On trouve bien évidemment le hash du bloc en question. Mais aussi :
-Le nombre de transactions et les transactions elles-mêmes
Le nombre de transactions varie d’un bloc à l’autre. Depuis le soft fork SegWit, le plus gros bloc de transactions fut de 2.3 millions d’octets (2,3 Mo), en sachant qu’une transaction pèse en moyenne 500 octets (soit une poignée de milliers de transactions par bloc).
-Récompense par bloc
La récompense par bloc est actuellement de 6,25 BTC. C’est cette récompense qui incite les mineurs à sécuriser le réseau.
Elle était au tout début de 50 BTC par bloc et diminue de moitié tous les 210 000 blocs (tous les quatre ans). Cette récompense disparaîtra vers 2140. La récompense s’attribue via la transaction Coinbase de chaque bloc. Il s’agit d’une transaction unique par laquelle les bitcoins sont créés ex nihilo.
-Hauteur du bloc
Également connu sous le nom de numéro de bloc. Chaque bloc est numéroté dans son ordre d’apparition. Autour de 144 nouveaux blocs se créent tous les jours. Nous en sommes au moment d’écrire ces lignes au bloc numéro 782 762, miné par le pool de mining F2Pool.
-Taille du bloc :
Dans le cas du bloc 782 762, la taille du bloc fut de 2.48 Vbytes (on compte en Vbytes, ou « octets virtuels » depuis SegWit). La taille du bloc comprend les données du header et les informations relatives aux transactions contenues dans le bloc.
-Le nombre « magique » :
En informatique, les nombres magiques permettent d’identifier un type de données. Un programme vérifie le nombre magique pour savoir immédiatement le type de fichier/structure de données qu’on lui donne. Les blocs Bitcoin commencent tous par le même nombre magique : 0xD9B4BEF9
Et c’est à peu près tout ce que l’on trouve dans un bloc. Néanmoins, il est possible de se pencher du côté des transactions (dans la section witness). Vous y trouverez des JPEG de singe. La mode des ordinaux…
Un aspect crucial des blocs Bitcoin réside dans l’utilisation des Arbres de Merkle, essentiels pour assurer l’intégrité des transactions. En effet, le hash de la racine de l’arbre de Merkle, présent dans le header du bloc, est le résultat de la concaténation de toutes les transactions du bloc. Cette structure permet non seulement de sécuriser et de vérifier rapidement les transactions, mais aussi d’optimiser l’espace de stockage sur la blockchain, contribuant ainsi à l’efficacité globale du réseau Bitcoin. Les arbres de Merkle facilitent également la synchronisation et la vérification des blocs par les nœuds du réseau, renforçant ainsi la fiabilité et la robustesse de la blockchain.
Maximisez votre expérience Cointribune avec notre programme 'Read to Earn' ! Pour chaque article que vous lisez, gagnez des points et accédez à des récompenses exclusives. Inscrivez-vous dès maintenant et commencez à cumuler des avantages.
Reporting on Bitcoin, "the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy".
Les propos et opinions exprimés dans cet article n'engagent que leur auteur, et ne doivent pas être considérés comme des conseils en investissement. Effectuez vos propres recherches avant toute décision d'investissement.