Vous êtes sur la page 1sur 27

Blockchain

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

Combinaison h'AB h'CD h'EF h'EF


par
concaténation
h'ABCD h'EFEF
Fonction de
hachage
h''ABCD h''EFEF
Combinaison
par
concaténation h'ABCDEFEF

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.

100 Blockchain 2021-2022


Structure d’un block
 En vert est représenté l'arbre de Merkle
des transactions sans leur témoin.
 Les empreintes de ces transactions sont
leur identifiant classique (txid).
 La racine de cet arbre de Merkle est écrite
au sein de l'entête du bloc. Puisque tout
est lié, il est impossible de modifier une
transaction ou sa signature sans modifier
l'entête, et donc sans altérer la chaîne de
preuve de travail.

101 Blockchain 2021-2022


Protocole pour le transfert de valeur
 “Le protocole et le réseau Bitcoin [est] aujourd’hui [un] réseau de transfert de valeur. Au-
delà, il s’agit d’un core, d’un service de sécurité backbone sécurisant les contrats, les biens
physiques et numériques, les actions, les obligations, les robots IA et une énorme vague
d’applications qui n’ont pas encore été conçues.” - Jeff Garzik, Développeur Bitcoin
Core

 Bitcoin est une convention qui spécifie


 les règles,
 les procédures
 et les formats
pour le transfert d’argent en ligne sans intermédiaires centraux.

 Horizen vise à devenir la norme en matière de valeur privée et de transfert de données


dans le Web 3.0 décentralisé.

102 Blockchain 2021-2022


Protocole pour le transfert de valeur
 Règles de la blockchain :
 la gestion du registre
 Chaque nœud conserve une copie de la blockchain et vérifie chaque transaction qu’il reçoit.
Une fois qu’une transaction est vérifiée, elle est sauvegardée dans le mempool (abréviation
de memory pool) avec toutes les autres transactions qui ne sont pas incluses dans un bloc.
Lorsqu’un nœud reçoit un nouveau bloc de ses pairs, il vérifie d’abord la validité du bloc. Si
elle est valide, elle est ajoutée à la copie locale de la blockchain et toutes les transactions
incluses dans le bloc sont supprimées du mempool. Le mempool ne contiendra jamais que
des transactions non confirmées.
 la structure d’un bloc valide
 Un bloc a un en-tête de bloc qui contient des informations sur la version du client bitcoin
avec lequel il a été créé, une référence à son bloc précédent, une sorte de résumé de toutes
les transactions qui sont contenues dans le bloc (la Racine de Merkle), un indicateur horaire
et quelques informations pratiques

103 Blockchain 2021-2022


Smart Contract
 Définition : des logiciels qui s’exécutent sur la blockchain
 Un contrat, en général, est un accord entre les parties qui les lie.
 Exécution automatique des contrats numériques.
 Un grand nombre d’énoncés “si, alors” qui sont rédigés et mis en
application par le code.
 Le contrat s’exécute automatiquement si les conditions du contrat sont
remplies.

104 Blockchain 2021-2022


dApp
 Une application décentralisée ou dApp est un cas d’utilisation plus
sophistiqué pour les smart contracts.
 La plupart des applications et des sites Web utilisent des API (interfaces de
programmation d’applications) pour communiquer avec leur base de
données sous-jacente.
 Une API bien rédigée permet aux développeurs d’offrir plus facilement un
service en définissant la communication entre les différents composants
d’un système tel que le système d’exploitation, une base de données ou une
bibliothèque logicielle.

105 Blockchain 2021-2022


Plateforme de Smart Contracts
 Il existe de nombreuses plateformes de smart contracts en dehors d’Ethereum,
qui est la plus populaire aujourd’hui et qui en plus de cela, a la plus grande activité
de développement. Les autres plateformes comprennent Lisk, NEM et
Hyperledger, une version modifiée d’Ethereum conçue pour les entreprises.

 Peu de gens savent que Bitcoin permet également le déploiement de smarts


contracts. Bitcoin possède un langage de programmation intégré appelé Script.
C’est un langage de programmation rudimentaire comparé à Solidity qui est utilisé
pour écrire des smart contracts sur Ethereum. Solidity est un langage de
programmation Turing-complet, qui permet des contrats plus complexes que
Bitcoin Script. Plus complexe signifie plus difficile à écrire, à analyser et à
sécuriser.

106 Blockchain 2021-2022


Plateforme de Smart Contracts
 Les smart contracts sur les blockchains basées sur Bitcoin (comme Horizen)
écrits en Script sont moins complexes que ceux écrits en Solidity sur
Ethereum. Cela limite les cas d’utilisation possibles, mais facilite
l’énumération, l’examen et la comptabilisation des états possibles du contrat
(ou du programme), ce qui rend les contrats plus faciles à écrire.

 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.

108 Blockchain 2021-2022


Mécanismes de consensus
 Le mécanisme de consensus d’une blockchain permet au réseau de se mettre
d’accord sur une version unique de l’histoire.
 L’historique dans le cas d’une blockchain de type cryptomonnaie est l’ordre
dans lequel les transactions ont eu lieu sur le réseau.
 Lorsqu’un participant au réseau crée une transaction, celle-ci est ensuite
diffusée à l’ensemble du réseau.
 Chaque nœud enregistre la transaction et l’ajoute à sa version du registre.
 En fin de compte, tous les participants du réseau doivent se mettre d’accord
sur un ordre donné et c’est à cela que sert le mécanisme de consensus d’une
blockchain.

109 Blockchain 2021-2022

Vous aimerez peut-être aussi