Académique Documents
Professionnel Documents
Culture Documents
Pb double dépense… ?
Nour Gharbi
1
Lorsque Bob envoie un 1 BTC (Bitcoin) à Alice, plusieurs vérifications doivent être effectuées :
1.S'assurer que Bob est bien Bob et non un usurpateur du compte de ce dernier.
2.S'assurer pareillement que Alice est bien Alice.
3.Vérifier que le compte de Bob possède bien le BTC qu'il souhaite adresser à Alice.
4.Vérifier que ce BTC ne puisse être transmis qu'une seule fois.
5.Opérer un calcul de contrôle de cette transaction propre à une formule cryptologique précise.
6.Vérifier au bout du compte que ce BTC est présent sur le wallet (portefeuille) d'Alice et qu'il a été soustrait du
wallet de Bob.
7.Inscrire cette nouvelle transaction dans le registre qu'est la blockchain du Bitcoin afin qu'une telle trace soit
conservée.
Pour opérer ces diverses vérifications, celui qui procède au minage doit effectuer de savants calculs impliquant la
clé privée (identifiant) de Bob comme d'Alice, et aussi des clés publiques propre à cette transaction, soit une série
de chiffres calculés à partir de leurs clés privées.
2
Consensus
❑ Les différents nœuds du réseau Blockchain contiennent une liste complète des enregistrements de
transactions comme le grand livre public conventionnel. Les nœuds communiquent entre eux afin
❑ Le terme « consensus » signifie que tous les nœuds du réseau doivent se mettre d’accord sur une
❑ Un certain nombre d'algorithmes différents qui ont été développés à cet effet sont appelés consensus.
3
Consensus
pas une source unique de confiance et de validation pour les transactions mais c’est tout le réseau
4
Consensus
❑ En informatique, un algorithme de consensus est un processus utilisé pour assurer la fiabilité des
consensus n’est parfait, mais chacun possède ses forces et ses faiblesses.
5
Consensus
de ce dernier….
6
Proof of work
L’application la plus célèbre de PoW est sans conteste Bitcoin. C’est Bitcoin qui a jeté les bases de ce type de
consensus.
❑ Cet algorithme permet de changer la complexité d’un puzzle en fonction de la puissance totale du réseau. Le
7
Proof of work
❑ sha256 est une technique de cryptographie dont on se sert pour transformer des données (peu importe la
quantité) sous la forme d'une chaîne de caractère chiffrée. Les données sortantes sont encodées en 256 bits.
❑ Il faut voir un hash comme un mixeur. On va rentrer des informations qui vont sortir sous une autre
forme.
❑ À noter que la transformation est unilatérale (on ne peut pas revenir aux informations d'origine !). Cela
sert à authentifier une grande quantité d'informations, si une seule donnée est modifiée, le hash obtenu
change complètement !
9
Bloc
10
Merkle Tree
11
Bloc
12
Nonce
13
Nonce
❑ Pour pouvoir modifier le hash, on comprend que les acteurs du réseau ne peuvent pas modifier ni les
transactions ni le hash précédent. Il va alors modifier la Nonce jusqu’à ce que son hash soit correct.
❑ C’est concrètement le sens du mot « Travail » dans le terme « Preuve de Travail ». Notamment puisque
leurs machines vont chercher la Nonce en utilisant la force brute (en réalisant un maximum d’essais
jusqu’à ce qu’elles trouvent la solution) pour trouver ce nombre de 32 bits, lequel permettra de créer un
14
Comment fonctionne le minage de Bitcoin?
•Les mineurs configurent leur matériel pour vérifier les transactions du réseau Bitcoin.
•Les transactions vérifiées sont regroupées dans un seul bloc de 1 Mo toutes les 10 minutes.
•Tous les ordinateurs du réseau doivent résoudre un casse-tête cryptographique complexe pour ajouter un
•Le premier ordinateur qui résout le puzzle ajoute le bloc et est récompensé par des Bitcoins.
15
Proof of work
❑ Pour pouvoir modifier le hash, un compteur va être ajouté dans le bloc. Ce compteur est appelé nonce.
En itérant sur le nonce nous modifions le hash jusqu’à tomber sur un hash débutant par le nombre de
zéros souhaité.
❑ L’intérêt est que le puzzle est compliqué à trouver, mais il est très simple à valider.
16
LES SPÉCIFICITÉS DE LA PROOF OF WORK
❑ Une blockchain utilisant la Proof of Work fait appel à des mineurs pour vérifier les données entrantes sur le
❑ Pour récompenser l’ensemble des mineurs pour leur travail, la preuve de travail doit établir des règles
permettant de choisir le mineur qui aura le droit d’émettre le prochain bloc de la chaîne.
❑ Les règles du consensus de Proof of Work permettent donc de désigner un mineur auquel on accorde un droit
d’écriture pour prolonger la chaîne de blocs. Elle doit, bien entendu, dissuader les éventuels utilisateurs
19
Le flux de la création de blocs dans PoW est présenté dans la Figure suivante.
20
Minage
21
Minage
La difficulté est ajustée périodiquement pour s'assurer qu'il faut toujours une moyenne de 10 minutes pour
miner un bloc. Après chaque 2016 ajouts de blocs, le système vérifie combien de temps, il a fallu pour
créer ces blocs. Normalement, cela devrait prendre environ 2 semaines, soit 20 160 minutes. S'il a fallu
plus de 2 semaines, la difficulté sera réduite et s'il a fallu moins de 2 semaines, la difficulté sera augmentée.
22
le halving
Actuellement, une fois le casse-tête résolu et un nouveau bloc ajouté à la blockchain, le mineur reçoit une
prime de 6,25 bitcoins. Le prix diminue avec le temps, il diminue de moitié tous les 210 000 blocs. Les
premiers mineurs avaient gagné 50 Bitcoins par bloc, alors qu'en 2024, le taux tombera à 3,125 Bitcoins.
C'est le halving.
23
Proof of work
25
Notez que tous les ordinateurs du monde produiront le même
résultat, à condition que l'entrée soit la même et que la fonction
SHA256 soit utilisée.
Le résultat du nombre hexadécimal, s'il est converti en décimal, est :
48,635,463,943,209,834,798,109,814,161,294,753,926,839,975,257,569,79
5,305,637,098,542,720,658,922,315
Et converti en binaire c'est :
110101110000110101100100111001111111111001101001111110011100001100111010
110101110000000010011101111111101011010001111110101011101000111101011011
0100100111010101010001000101111000111010100100111000000000111100101
001011011101101101111000011101011011010010111101011100110101110011010110
011010111001101011100110101110011010111001101011100111
26
Exploitation minière
27
Exploitation minière
✓ Maintenant, créons une règle qui dit que pour que ce message de paiement soit valide, nous avons besoin que le
✓ Pour ce faire, nous devons changer l'entrée d'une manière ou d'une autre. Mais, comme vous l'avez appris, il est
impossible de prévoir ce que sera la sortie pour une entrée donnée. Quelle modification pouvons-nous apporter
✓ Mais nous ne voulons pas non plus changer la signification du message d'entrée.
✓ Nous allons donc créer un champ (une section allouée) appelé "nonce" qui contiendra une valeur absurde.
28
Exploitation minière
29
Exploitation minière
30
Exploitation minière
31
Exploitation minière
32
Exploitation minière
33
Notez que les champs de Bitcoin sont comme
cela, mais il y a plus de détails que on n'a pas
ajoutés. Il s'agit juste d'illustrer un point, pas
nécessairement de détailler exactement ce à
quoi ressemble un bloc Bitcoin.
On ajoutera un champ de temps au prochain
bloc, car on en a besoin pour expliquer l'"
ajustement de la difficulté " suivant :
34
Si les blocs sont produits trop rapidement, la cible de hachage est ajustée selon des règles
prédéfinies que tous les nœuds suivent de manière identique (c'est dans leur code).
Pour rester simple dans mon exemple, disons que d'autres personnes sont en concurrence avec
moi, que les blocs sont produits trop rapidement et que le quatrième bloc nécessite deux zéros au
Cela va me prendre un peu plus de temps pour obtenir deux zéros, mais nous imaginons qu'il y a
beaucoup d'autres personnes en compétition avec moi, de sorte que le temps total pris par chacun
36
❑ Avec le bitcoin, il existe des règles techniques pour les transactions (Avez- vous
rempli tous les champs de données requis ? Est-ce au bon format ? etc.),
que vous n'en avez ? Essayez-vous dépenser deux fois les mêmes bitcoins ?)
37
Problème de la plus longue chaine
réseau simultanément ? Dans ce cas, les deux blocs sont diffusés et chaque nœud
exige que chaque nœud s'appuie immédiatement sur la plus longue blockchain
disponible.
❑ Donc, s'il y a une ambiguïté sur le dernier bloc, dès que le bloc suivant est résolu,
38
chaque nœud adoptera la chaîne la plus longue comme seule option.
Problème de la plus longue chaine
39
Problème de la plus longue chaine
Exemple :
Mary pourrait tirer parti de cette ambiguïté de fin de chaîne pour effectuer une
attaque à double dépense.
43
▪ Mary envoie de l'argent à John,
▪ John expédie le produit à Mary.
▪ Étant donné que les nœuds adoptent toujours la queue la plus longue
comme transactions confirmées, si Mary pouvait générer une queue
plus longue contenant une transaction inverse avec les mêmes
références d'entrée, John serait à court d'argent et de produit.
44
45
Comment le système empêche-t-il ce type de fraude ?
❑ Chaque bloc contient une référence au bloc précédent. Cette référence fait partie
du problème mathématique qui doit être résolu afin de diffuser le bloc suivant
sur le réseau. Il est donc extrêmement difficile de pré-calculer une série de blocs en
raison du nombre élevé de suppositions aléatoires nécessaires pour résoudre un bloc
et le placer sur la blockchain.
❑ Mary est dans une course contre le reste du réseau pour résoudre le problème
mathématique qui lui permet de placer le bloc suivant sur la chaîne. Même si elle le
résout avant tout le monde, il est très peu probable qu'elle puisse résoudre deux,
trois blocs ou plus d'affilée, car à chaque fois, elle est en concurrence avec l'ensemble
du réseau.
46
Comment le système empêche-t-il ce type de fraude ?
47
Comment le système empêche-t-il ce type de fraude ?
48
Comment le système empêche-t-il ce type de fraude ?
Par conséquent, les transactions deviennent plus sécurisées avec le temps. Ceux inclus dans un bloc
confirmé il y a une heure, par exemple, sont plus sécurisés que ceux d'un bloc confirmé dans les 10
dernières minutes. Puisqu'un bloc est ajouté à la chaîne toutes les 10 minutes en moyenne, une
transaction incluse pour la première fois dans un bloc il y a une heure a très probablement été traitée et est
désormais irréversible.
49
Le dilemme de la double dépense
50
51