Excellente question ! Quoique la réponse est loin d’être aisée.
Il y a 4 objets qui composent un bloc de la blockchain : un système de datation (timestamp), les données du bloc précédent, un arbre de Merkle et un nonce.
Le système de datation
Pour l’instant, rien de bien compliqué. La blockchain agit comme un registre de compte de toutes les transactions effectuées en bitcoin entre personnes. Chaque transaction a une heure et une date qui lui est attribuée. C’est pour cette raison que les blocs sont construits dans l’ordre chronologique des transactions, et que sur la blockchain, les blocs se suivent de manière chronologique.
Chaque nouveau bloc doit inclure les informations du précédent. Pour le dire simplement, ces blocs sont encodés via une cryptographie conçue de manière unilatérale : elle peut être décryptée que « de l’intérieur » et non pas par une source externe. En gros, la manière dont est encodé le bloc n°3 contient les informations nécessaires pour décrypter le bloc n°2.
Ceci nous mène à l’élément suivant.
Les données du bloc précédent (le hachage / hash du bloc précédent)
Ici les choses deviennent un poil plus complexes.
En informatique, une manière efficace de traduire une information pour tous les ordinateurs est le code binaire, qui traduit toutes les informations possibles (images, textes, vidéos, etc.) en des séries immenses de 0 et de 1. Cela a l’avantage de prendre peu de place.
Quand vous effectuez une transaction en bitcoin, cela se traduit par une série gigantesque de 0 et de 1, lisible par n’importe quel ordinateur. Néanmoins, une telle masse d’informations serait trop longue à lire d’un seul coup. C’est pourquoi il existe ce que l’on appelle une fonction de hachage (en anglais hash function).
Comme son nom l’indique, cette fonction coupe en petits morceaux une grande somme d’informations, et la répartit dans des plus petits blocs de taille égale. Ces blocs ne sont pas indépendants toutefois, ils ne « veulent rien dire » s’ils ne sont pas combinés tous ensemble.
Cela a deux avantages : 1) si un seul petit bloc est conforme, complet, n’a pas d’erreur d’encodage, cela implique que la somme des blocs est elle-même correct, et que l’entièreté de l’information est vérifiée ; cela prend tout de même moins de temps que s’il fallait tout lire.
2) Comme un seul petit bloc, si on traduisait ses 0 et ses 1, ne voudrait rien dire du tout, on ne peut pas reconstruire le fichier dont il est tiré à partir de lui seul. C’est pour cela qu’on utilise ce système de hachage en cryptographie, puisqu’il permet de rendre illisible une information pendant qu’on la fait transiter dans des petits blocs. Bitcoin utilise la cryptographie selon hachage.
Arbre de Merkle
Un arbre de Merkle ou arbre de hachage est tout simplement la manière d’organiser ces petits blocs d’informations entre eux. Il structure les données.
Ainsi, un ensemble de données (plusieurs transactions Bitcoin par exemple), va être haché en petits morceaux de même taille. On a donc décomposé, puis recomposé une première fois l’ensemble de l’information. Mais cela ne suffit pas encore, puisqu’il n’y a qu’un seul bloc au final.
Il faut donc à nouveau hacher et recomposer les petits blocs entre eux dans de plus gros blocs, et ainsi de suite, jusqu’à ce que l’on obtienne un seul grand bloc, ou un seul grand noeud, qui contienne l’information de tout l’ensemble des données de base. Par exemple, un bloc de la blockchain.
Cette technique permet ainsi de crypter l’information de base, puisqu’elle est successivement découpée, puis synthétisée, puis découpée, etc. dans des blocs chaque fois différents.
Mais comment se fait-ce qu’un petit bloc individuel soit illisible sans les autres ? C’est le dernier élément du bloc : le nonce.
Nonce
Lorsque l’on applique une fonction de hachage sur un ensemble d’informations, résultent des petits blocs de taille égale. Mais comment s’assurer que les blocs soient de taille égale ? Si l’on veut par exemple faire 15 petits blocs à partir d’une longue série de 0 et de 1, mais que le nombre de 0 et de 1 ne se divise pas par 15 ?
Il faut utiliser un nonce. Le nonce est un champs programmé pour mettre des valeurs neutres (c’est-à-dire souvent des 0) dans des blocs de hachage, pour qu’ils aient tous la même taille, le même nombre de bits. Ainsi, chaque hachage a une certaine quantité de 0 définie par le nonce, que l’ordinateur saura lire comme étant superflue, puisqu’il a en vue le fichier final.
Mais pour un programme extérieur, qui ne sait pas d’où ce bloc de hachage provient, cette série de 0 rend pratiquement infaisable la déduction du fichier entier à partir d’un seul bloc ou même de quelques blocs.
Les blocs de la blockchain doivent être également hachés dans les blocs ultérieurs. Et comme chaque nouveau bloc contient les informations de tous les blocs précédents, il faut que chaque bloc soit de taille égale dans le nouveau bloc, et ainsi, il faut un nonce pour faire en sorte que tous les blocs aient la même taille.