Académique Documents
Professionnel Documents
Culture Documents
Fonctionnement de la Blockchain
Plan
Structure d’un block
Protocole pour le transfert de valeur
Smart Contract
Réseau P2P
Mécanismes de consensus
83 Blockchain 2021-2022
Structure d’un block
Selon la structure liste chainée
Block :
conteneur de données
ensemble horodaté et validé de transactions
Remarque :
transactions sont généralement des transferts de cryptomonnaies
mais peuvent aussi constituer des interactions avec des contrats ou contenir des
données arbitraires
84 Blockchain 2021-2022
Structure d’un block
Comme les nœuds d’une liste chaînée, chaque block contient
une référence, qui est le hachage du bloc précédent :
lien avec le bloc précédent
établit l’ordre tout au long de la chaîne de blocs (la blockchain)
La chaine commence par un premier bloc considéré comme valide par
défaut, qui est appelé bloc de genèse (genesis block).
85 Blockchain 2021-2022
Structure d’un block
Blockchain : “append-only” l’ajout des données que à l’avant
La validité des liens sécurisés est constamment vérifiée.
Exemple de falsification :
86 Blockchain 2021-2022
Structure d’un block
Un nouveau bloc construit sur un bloc existant : confirmation
Plus un bloc est ancien, plus il y aura de confirmations
Les références entre les blocs ne dépendent pas seulement de l’ordre des
blocs, mais aussi des données contenues dans chaque bloc
Difficulté d’ajouter ou de supprimer les données d’un bloc dans une
blockchain.
87 Blockchain 2021-2022
Structure d’un block
Exemple du Bitcoin :
Block = 2 composantes :
un entête (block header)
les transactions, qui permettent de construire un arbre de Merkle (Merkle tree)
88 Blockchain 2021-2022
Entête d’un block
Un bloc commence par un entête de 80 octets :
1. La version du bloc. Outre son rôle pur de versionnage, ce champ permet aux
mineurs de signaler leur approbation (ou non) pour un changement du protocole.
2. L'identifiant du bloc précédent, qui permet de chaîner l'entête à l'entête du bloc
précédent.
3. La racine de Merkle, dont le rôle est de lier l'entête au reste du bloc.
4. L'horodatage : la date et l'heure du minage.
5. Une donnée indiquant la difficulté de minage du bloc.
6. Le nonce relatif à la preuve de travail.
89 Blockchain 2021-2022
Identifiant du block
L'identifiant du bloc a un rôle particulier :
retrouver simplement le bloc
preuve de travail
Exemple :
Id du block 630 000 :
000000000000000000024bead8df69990852c202db0e0097c1a12ea637d7e96d
90 Blockchain 2021-2022
Calcule de l’identifiant du block
Id block :
Hachage de l'entête par le double SHA-256
Bitcoin exige que le nombre obtenu soit inférieur à une valeur cible définie dans
l'entête, en respect de la difficulté du réseau
Le mineur fait varier le nonce dans l'entête jusqu'à ce qu'il trouve une solution.
Cette solution constitue une preuve qu'il a dépensé de l'énergie afin de calculer tous
ces hachages.
Remarque :
Le nonce prévu par Satoshi Nakamoto n'est codé que sur 4 octets et ne permet que de
tester que 4,3 milliards de possibilités, ce qui est trop peu pour la puissance de calcul
actuelle. C'est pour cela que les mineurs font également varier nonce
supplémentaire au sein de la transaction de récompense.
91 Blockchain 2021-2022
Transactions
Les transactions sont placées les unes à la suite des autres dans le bloc.
La seule règle à respecter est que la première transaction doit être
la transaction de récompense (« coinbase transaction ») qui rémunère le mineur.
La transaction de récompense crée de nouveaux bitcoins :
montant est actuellement de 6,25 bitcoins par bloc
récupère aussi les frais de transaction issus des transactions du bloc.
92 Blockchain 2021-2022
Transactions
La transaction de récompense contient également un ensemble
d'informations supplémentaires :
en particulier, les coopératives de minage (mining pools)
indiquent souvent leur nom dans un champ spécial de la transaction
pour que les utilisateurs aient une idée de la répartition du minage (pas obligatoire)
Par exemple, puisqu'on retrouve le message Mined by AntPool dans le bloc 630 000,
on peut en déduire qu'il a probablement été miné par la coopérative chinoise Antpool.
93 Blockchain 2021-2022
Arbre de Merkle
Les transactions sont placées dans un certain ordre dans le bloc :
structure de l’arbre de Merkle ou arbre de hachage
Forme de l’arbre de Merkle :
hacher les transactions (les « feuilles »)
rassembler les empreintes (hashes) résultantes deux à deux et de les hacher
ainsi de suite jusqu'à obtenir une empreinte unique appelée la racine de Merkle de
l'arbre.
La fonction de hachage utilisée pour construire cet arbre est le double SHA-
256.
94 Blockchain 2021-2022
Arbre de Merkle
Exemple :
block contenant 6 transactions : TxA, TxB, TxC, TxD, TxE et TxF
hi = Fonction de hachage (Txi)
hi est l’identifiant de Txi
h'i = Fonction de hachage (hi)
hxy = Concaténation (hx, hy)
95 Blockchain 2021-2022
TxA TxB TxC TxD TxE TxF
Fonction de
hachage
hA hB hC hD hE hF
Combinaison
par
concaténation
hAB hCD hEF
Fonction de
hachage
Fonction de
hachage h'''ABCDEFEF Racine de Merkle
Arbre de Merkle
La racine de Merkle est placée dans l'entête du bloc
Si l'une des transactions est modifiée, la racine de Merkle ne correspond
plus, permet une vérification légère des transactions pour les portefeuilles
Remarque :
depuis l'activation de « SegWit » (24/9/17), chaque bloc est constitué de deux arbres
de Merkle :
l'arbre des transactions (sans les signatures)
l'arbre des témoins (qui est l'arbre des transactions incluant les signatures des
transactions SegWit)
la racine de l'arbre des témoins est placée dans la transaction de récompense, de sorte
que la racine de Merkle principale dépende d'elle.
97 Blockchain 2021-2022
Structure d’un block
En bleu est représenté l'identifiant
du bloc précédent qui est le résultat
de deux hachages par la fonction
SHA-256 de l'entête du bloc
précédent.
C'est ceci qui permet de rattacher
les blocs entre eux, de sorte à
obtenir une chaîne de preuve de
travail.
99 Blockchain 2021-2022
Structure d’un block
En rouge est représenté l'arbre de
Merkle des transactions munies de
leur témoin (signature).
Les empreintes de ces transactions
sont leur identifiant SegWit (wtxid
ou witness transaction identifier).
La racine de cet arbre de Merkle est
écrite dans la transaction de
récompense du bloc (tx0), de sorte
à lier les signatures au reste du bloc.
Il est intéressant de noter que les modèles de smart contracts les plus
couramment utilisés sur Ethereum, à savoir les normes ERC-20 et ERC-
721, n’exigent pas que la machine virtuelle soit Turing-complète. Presque
tous les jetons déployés sur la chaîne Ethereum utilisent l’un de ces deux
standards, car ils permettent une intégration plus facile avec différents
portefeuilles et échanges.
107 Blockchain 2021-2022
Réseau P2P
Les systèmes distribués présentent certains avantages majeurs par rapport à
leurs homologues plus centralisés, notamment leur robustesse.
Les réseaux Peer-to-Peer ont un haut niveau de redondance intégré.
Il n’y a pas de points de défaillance uniques et le système peut survivre
même si une majorité du réseau s’arrête.
Tolérance aux pannes que vous obtenez d’une architecture peer-to-peer.