Contenu du cours
Introduction à la Blockchain
Introduction à la Blockchain
Plus sur l'En-Tête de Bloc
Avant de pouvoir explorer le bloc d'en-tête en détail, nous devons d'abord comprendre la différence entre les formats big endian et little endian.
Little Endian et Big Endian
Tout d'abord, nous devons comprendre ce que signifie réellement l'endianness.
Le format Big endian stocke le byte le plus significatif en premier, ce qui correspond à la façon dont les humains lisent généralement les nombres. Prenons le nombre décimal 234567890
comme exemple et convertissons-le en hexadécimal et binaire en utilisant Python et affichons les résultats :
decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Étant donné que les ordinateurs stockent les entiers en utilisant un nombre entier de bytes, et que chaque 2 chiffres hexadécimaux correspondent à un byte, nous avons besoin d'un nombre pair de chiffres. La représentation hexadécimale de notre nombre, 0xDFB38D2
, contient 7 chiffres, nous devons donc ajouter un zéro 0
à gauche. Le nombre résultant, 0x0DFB38D2
, a maintenant 8 chiffres hexadécimaux (correspond exactement à 4 bytes) et la même valeur.
De même, notre nombre binaire a 28 bits, et chaque 8 bits correspondent à 1 byte, nous avons donc besoin que le nombre de bits soit divisible par 8 en ajoutant 4 zéros 0
à gauche. Le nombre résultant, 0b00001101111110110011100011010010
, a maintenant 32 bits (correspond exactement à 4 bytes) et la même valeur.
En utilisant Python, nous avons obtenu le format big endian, que nous obtiendrions également si nous conversions manuellement, et notre nombre se présente comme suit :
0x0DFB38D2
en hexadécimal;0b00001101111110110011100011010010
en binaire.
Jetons un coup d'œil au tableau ci-dessous pour comprendre le format big endian :
Inversement, le format little endian stocke le byte le moins significatif en premier, inversant l'ordre intuitif :
Comme vous pouvez le voir, notre nombre au format little endian ressemble à ceci :
-
0xD238FB0D
en hexadécimal ; -
0b11010010001110001111101100001101
en binaire.
Retour au Header du Bloc
Pour récapituler, l'en-tête fait exactement 80 octets contenant six champs de données, chacun d'eux étant au format little endian. Regardons maintenant l'en-tête du bloc 645536 :
Étant donné que l'en-tête de bloc occupe exactement 80 octets, il y a exactement 160 chiffres hexadécimaux (chaque octet correspond à 2 chiffres hexadécimaux). Le champ Version, par exemple, occupe 4 octets, donc il y a 8 chiffres hexadécimaux.
Voici les informations détaillées sur ce bloc dans l'explorateur :
Les champs ici sont affichés au format big endian. Examinons le champ Bits, par exemple, et comparons-le avec sa représentation dans l'en-tête de bloc. Sa représentation hexadécimale est 0x171007ea
au format big endian :
Si nous le convertissons au format little endian, il ressemblera à ceci :
Comme vous pouvez le voir, c'est exactement ce que nous avions dans l'en-tête de bloc.
Merci pour vos commentaires !