J’apprécie l’esprit indépendant et critique lors de l’apprentissage et j’aime poser des questions comme pourquoi les choses fonctionnent comme ça. Cet article sera donc écrit selon mes propres pensées et lignes parce que je veux qu’il ressemble plus à un essai stimulant qu’à un livre de référence vous expliquant comment les choses fonctionnent.
Qu’est-ce que la blockchain ? Blockchain VS liste liée
Nous partons d’une question simple : qu’est-ce que la blockchain ?
La blockchain est une structure de données. Afin de comprendre la blockchain, vous devez d’abord vous renseigner sur la liste chaînée.
Dans une liste chaînée, les nœuds sont reliés par des liens à l’aide d’un pointeur.
Il y a 2 éléments dans un nœud :
1. un pointeur vers le nœud suivant
2. une partie valeur pour stocker les données

Dans une liste chaînée, vous pouvez facilement insérer et supprimer de nouveaux nœuds en modifiant le pointeur des nœuds sans affecter les autres nœuds.
Blockchain est une liste chaînée qui utilise des pointeurs de hachage pour connecter des nœuds. Que signifient les pointeurs de hachage ?
Le pointeur de hachage comprend à la fois un pointeur vers le nœud précédent et une valeur de hachage des données stockées dans le nœud précédent.

Cette valeur de hachage change si le contenu change. Cela rend donc la blockchain immuable avec des journaux inviolables. Par exemple, vous modifiez le contenu de la valeur d’un nœud, le nœud à côté et ainsi de suite seront tous modifiés. Ainsi, vous pouvez conserver le hachage du bloc le plus récent et prouver que toutes les transactions sont correctes. C’est de là que vient le nœud de lumière. Le nœud léger ne conserve que les blocs récents et interroge des données supplémentaires du nœud complet en cas de besoin.
Qu’est-ce que TRIE ?
Nous savons maintenant comment les blocs sont connectés. Voyons comment les transactions et les données de compte sont stockées dans des blocs (trie est une autre infrastructure de données importante dans la blockchain).
Les transactions sont stockées à l’aide de trie (également appelé arbre). Trie vient de « récupération » et c’est une structure de données pour une meilleure récupération. Bitcoin utilise l’arbre Merkle pour organiser les transactions et Ethereum utilise l’arbre Merkle Patricia.
Un trie normal a les caractéristiques suivantes :
- L’efficacité de la récupération dépend de la longueur de chaque clé (la longueur d’une adresse Ethereum est de 160 bits, l’adresse bitcoin est de 256 bits).
- Dans un arbre, il n’y a aucune possibilité de collision (la collision de hachage est possible mais cela ne se produira pas dans un trie).
- Pour une entrée donnée, la sortie est toujours la même (la structure du trie sera toujours la même).
- Il est coûteux de mettre à jour l’ensemble du trie (il est préférable de mettre à jour dans une petite portée).
Arbre de Merkle en Bitcoin
Dans Bitcoin, les transactions sont stockées dans l’arborescence Merkle. « Merkle » vient de la fonction de hachage, et cette fonction de hachage est utilisée pour remplacer le pointeur ordinaire dans un trie ordinaire.
Les transactions sont stockées dans l’arborescence Merkle. Ils sont hachés couche par couche et construisent finalement un hachage racine (comme indiqué ci-dessous).
Si vous voulez prouver qu’une transaction a été exécutée correctement auparavant, vous devez interroger des valeurs de hachage supplémentaires à partir du nœud complet (les rouges ci-dessous) et calculer un hachage racine via une preuve Merkle. Ensuite, vous comparez ce hachage racine calculé avec celui que vous avez stocké localement dans votre nœud léger (SPV), si la racine est la même, alors vous pouvez prouver que la transaction est correcte.

Cette procédure est également connue sous le nom de preuve d’adhésion, cela signifie prouver qu’une transaction est incluse dans la blockchain. Mais les choses pourraient être différentes en ce qui concerne la preuve de non-adhésion. Si vous voulez prouver qu’une transaction n’existe pas dans la blockchain, vous devez télécharger le trie entier sur le nœud léger pour vérifier l’exactitude du trie et rechercher chaque transaction dans ces blocs, ce qui est épuisant et peu efficace. (Il existe une solution à cela : l’arbre merkle trié. Mais le bitcoin n’a pas adopté cette méthode, car il existe peu de scénarios pour prouver la non-adhésion.)
Merkle Patricia Tree dans Ethereum
Pourquoi Ethereum utilise l’arbre Merkle Patricia au lieu d’utiliser l’arbre Merkle comme le bitcoin ?
Il y a beaucoup de considérations.
Différent du modèle UTXO dans Bitcoin, Ethereum utilise un modèle basé sur le compte.
En bitcoin, les transactions sont gérées par des blocs de taille limitée. Un bloc peut contenir jusqu’à environ 4000 transactions.
Le modèle basé sur les comptes signifie qu’il existe un trie d’état global qui contient des informations sur chaque compte (y compris le nonce, le solde, le hachage de code et le trie de stockage).
Ce procès merkle de compte pose un problème. Chaque fois qu’un nouveau bloc est publié, tout le tri va changer et le pneu grandira constamment à mesure que de nouveaux comptes seront créés. Même si une seule transaction implique très peu de comptes, il faut recalculer et republier tout le trie et cela coûte cher.
Ethereum prend donc cette voie différente : Merkle Patricia Tree.
Patricia signifie espace optimisé et compressé.
Un arbre ordinaire ressemble à ceci :

Un arbre Patricia ressemble à ceci :

L’arbre de Patricia économise beaucoup de ressources. Mais dans quelles circonstances l’arbre Patricia a-t-il les meilleures performances ? La réponse est : où la distribution des clés est clairsemée.
Imaginez un scénario où les clés ont toujours le même préfixe, alors un arbre Patricia ressemblera à un arbre normal. C’est la raison pour laquelle Ethereum utilise des adresses de 160 bits au lieu d’utiliser des adresses plus courtes pour augmenter l’efficacité. Il existe 2¹⁶⁰ types d’adresses Ethereum possibles et 2¹⁶⁰ est un nombre vraiment énorme par rapport au nombre de comptes, donc la distribution est assez clairsemée.
De plus, dans un système de chaîne de blocs entièrement décentralisé, les adresses sont générées localement par les utilisateurs. L’augmentation de la longueur est donc le seul moyen d’éviter les collisions d’adresses dans un système décentralisé.
(je pourrais écrire quelque chose à partir de la vue du code source dans le prochain article…)
Rejoignez le groupe Coinmonks Telegram et découvrez le trading et l’investissement crypto