Vous êtes sur la page 1sur 51

BLOCKCHAIN : Consensus, PoW, pb de la plus longue chaine,

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

d'acquérir une compatibilité sur le contenu du grand livre.

❑ Le terme « consensus » signifie que tous les nœuds du réseau doivent se mettre d’accord sur une

version identique de la blockchain.

❑ Un certain nombre d'algorithmes différents qui ont été développés à cet effet sont appelés consensus.

3
Consensus

❑ Un mécanisme de consensus permet au réseau blockchain d'atteindre la fiabilité, de créer un niveau

de confiance entre les différents nœuds, et de garantir la décentralisation de l’information : il n’y a

pas une source unique de confiance et de validation pour les transactions mais c’est tout le réseau

qui en est responsable.

4
Consensus

❑ En informatique, un algorithme de consensus est un processus utilisé pour assurer la fiabilité des

données dans un réseau impliquant plusieurs nœuds non fiables.

❑ Derrière chaque grande cryptomonnaie, il y a un algorithme de consensus. Aucun algorithme de

consensus n’est parfait, mais chacun possède ses forces et ses faiblesses.

5
Consensus

Voici d’ailleurs quelques exemples d’algorithmes de consensus populaires :


•Proof-of-Work (PoW)
•Proof-of-Stake (PoS) : avec ce consensus, la sélection du mineur est faite aléatoirement tout en étant pondéré
par la quantité de cryptomonnaie à disposition de ce mineur.
•Delegated Proof-of-Stake (DPoS) : dans lequel la sélection se fait sur d’autres critères tel que l’utilisation de la
blockchain, l’ancienneté, la quantité de monnaie possédée, …
•Proof-of-Authority (PoA) : ici, on définit à l’avance quels sont les mineurs qui feront autorité.
•Proof-of-Capacity (aussi appelé Proof of Space) : la sélection du mineur est faite selon la capacité de stockage

de ce dernier….

6
Proof of work

Dans quel contexte mettre en œuvre PoW ?

❑ L’algorithme de consensus Proof-of-Work est actuellement utilisé par plusieurs cryptocurrencies.

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

temps moyen de formation d’un nouveau bloc est de 10 minutes.

❑ Un autre grand projet de cryptomonnaie avec PoW est l’Ethereum.

7
Proof of work

Dans quel contexte mettre en œuvre PoW ?


❑ Quelques exemples d’ICO qui utilisent le PoW :
•Litecoin
•Bitcoin Cash
•Bitcoin Gold
•Verge
•Monero Original
•Lightning Bitcoin
•Litecoin Cash
•Etc.
8
hash

❑ 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

•Version du bloc : elle sert surtout à ce que l'ordinateur comprenne l’intérieur du


bloc. Cela lui indique comment les données sont structurées
•L’horodatage : on lui assimile le rôle de « montre du bloc », elle permet
d’associer une transaction à une date et une heure bien précise ⏲️
•Hash du bloc précédent : Cela permet d'empêcher toute modification sur les
blocs précédents.
•Les transactions : Si une information est modifiée, le hash final l’est également
•Nonce (abréviation de Number used once)

10
Merkle Tree

❑ The transactions are then hashed to form a Merkle


tree structure, which will eventually produce a Merkle
root (or root hash).
❑ The Merkle root is a single hash that represents all
previous hashes of that tree, and therefore, all
transactions that were included in that particular block.

11
Bloc

12
Nonce

❑ un bloc est constitué de transactions, du hash du bloc précédent et de la « Nonce ».


❑ Les mineurs vont donc devoir hasher le bloc actuel. Mais l’objectif du PoW est de les mettre en concurrence
pour éviter que n’importe qui propose son bloc ce qui pourrait donner lieu à la fraude.
❑ Alors, ils vont devoir trouver un hash pour le bloc qui commencera par un certain nombre de 0 dans le cas
de Bitcoin. L’algorithme de Bitcoin ajuste automatiquement le nombre de 0 nécessaire pour valider le bloc.
❑ Si un mineur trouve un hash avec une quantité inférieure de 0 demandée par l’algorithme, il va réessayer.
Tout sera valide lorsque le hash proposé est en accord avec la difficulté demandée.

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

hash valide pour le réseau en conservant les données fondamentales de la blockchain.

14
Comment fonctionne le minage de Bitcoin?

En termes très simples, cela fonctionne comme ceci:

•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

nouveau bloc à la chaîne de blocs Bitcoin.

•Le premier ordinateur qui résout le puzzle ajoute le bloc et est récompensé par des Bitcoins.

15
Proof of work

Comment implémenter le Proof of Work ?


❑ Un des puzzles les plus répandus est le fait de trouver un hash valide pour le bloc débutant par un

certain nombre de zéro suivant la difficulté souhaitée.

❑ 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

registre, valider l’authenticité des transactions et créer de nouveaux blocs.

❑ 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

malveillants pour protéger l’intégrité de la chaîne.


17
FONCTIONNEMENT DE LA PROOF OF WORK
❑ Concrètement, la preuve de travail consiste à demander aux mineurs de résoudre un problème mathématique
complexe nécessitant une puissance de calcul informatique importante.
❑ Le premier à pouvoir résoudre ce problème sera également le prochain à créer un bloc sur la blockchain. Le
mineur applique donc un algorithme de hachage à un même groupe de données jusqu’à trouver le résultat cherché.
❑ Chaque nouveau hash dépend à la fois de la valeur du bloc et du nonce, un nombre aléatoire choisi par le logiciel
de minage. Pour que le bloc soit valide, ce hash devra être inférieur à la difficulté de minage.
❑ La difficulté de minage est réajustée par le réseau tous les 2016 blocs. Elle évolue pour réclamer une puissance
de calcul de plus en plus gourmande aux mineurs, qui doivent multiplier les essais avant de parvenir à trouver le
bon hash.
18
Minage

19
Le flux de la création de blocs dans PoW est présenté dans la Figure suivante.

20
Minage

21
Minage

Déterminer la difficulté de 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

Comment fonctionne le minage de Bitcoin?

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

Avantages d’un algorithme de consensus PoW


Les principaux avantages de PoW sont les suivants :
•La défense contre les attaques DoS (Denial of Service attack, une attaque par déni de service) et le faible
impact des enjeux sur les possibilités minières.
•Le programme de travail impose des limites aux actions dans le réseau. Ils ont besoin de beaucoup d’efforts
pour être exécutés. Une attaque efficace nécessite beaucoup de puissance de calcul et beaucoup de temps pour
exécuter les calculs.
•Possibilités d’extraction, Ce qui compte, c’est d’avoir un grand pouvoir de calcul pour résoudre les énigmes
et former de nouveaux blocs. Ainsi, les détenteurs d’énormes sommes ne sont pas chargés de prendre des
décisions pour l’ensemble du réseau.
24
Les limitations de Proof of Work
Le mécanisme de consensus PoW est excellent pour sécuriser la blockchain Bitcoin, mais il est :
•Lent : 1 bloc toutes les 10 minutes ;
•Coûteux et mauvais pour l’environnement : beaucoup de matériel et d’énergie sont nécessaires ;
•Ne passe pas bien à l’échelle : une grande partie du travail est effectuée pour rien car les mineurs sont en
concurrence ;
Toutes ces limitations ont conduit à la conception de nouveaux mécanismes de consensus.

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

On va commencer par démontrer un concept de travail, d'où

vient la "preuve de travail" du bitcoin.

➢ Allez sur le calculateur de hachage en ligne et tapez "Je

crée 50 bitcoins et me paie ce montant".

➢ Tapez-le exactement, en respectant la casse, y compris le

point. Vous devriez obtenir ce résultat :

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

hash commence par un zéro.

✓ 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

pour garantir un hachage commençant par un zéro ?

✓ Nous devons ajouter des données en procédant par essais et erreurs.

✓ 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

➢ La sortie ne commence toujours pas par un "0", alors

ajoutons un peu de non-sens.

29
Exploitation minière

Il ne commence toujours pas par un zéro. On a

essayé d'autres caractères jusqu'à ce que le

hachage commence par un zéro :

30
Exploitation minière

le texte dans la fenêtre d'entrée est un bloc valide


avec une seule transaction qui me rapporte 50
bitcoins.

31
Exploitation minière

Maintenant, une nouvelle règle. Pour le bloc suivant,

le hash du bloc précédent doit être inclus. On va

ajouter un peu de complexité et ajouter quelques

champs supplémentaires pour approcher ce que

contient un vrai bloc de bitcoin.

Le hash commence par un "f" et non par un "0", On


va donc devoir essayer quelques valeurs dans le
champ nonce.

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

lieu d'un, selon un calcul imaginaire.

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

pour trouver un bloc est maintenu à un objectif.


35
Notez l'heure. Plus de 10
minutes se sont
écoulées depuis le bloc
précédent.
L'objectif de 10 minutes
est probabiliste ; on ne
sait jamais exactement
quand le prochain bloc
sera trouvé.

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.),

❑ et il existe des règles commerciales (Essayez-vous de dépenser plus de bitcoins

que vous n'en avez ? Essayez-vous dépenser deux fois les mêmes bitcoins ?)

37
Problème de la plus longue chaine

❑ Si deux nœuds résolvent le problème en même temps et envoient leurs blocs au

réseau simultanément ? Dans ce cas, les deux blocs sont diffusés et chaque nœud

s'appuie sur le bloc qu'il a reçu en premier. Cependant, le système de blockchain

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

❑ En raison de la faible probabilité de résoudre des blocs simultanément, il est


presque impossible que plusieurs blocs soient résolus en même temps
encore et encore, créant différentes « queues », de sorte que l'ensemble de la
blockchain se stabilise rapidement en une seule chaîne de blocs sur laquelle
chaque nœud s'accorde.
❑ Un désaccord sur quel bloc représente la fin de la queue de chaîne ouvre à
nouveau le potentiel de fraude. Si une transaction se trouve dans un bloc qui
appartient à une queue plus courte (comme le bloc B sur la figure ), une fois le
bloc suivant résolu, cette transaction, ainsi que toutes les autres de son bloc,
reviendra aux transactions non confirmées.
40
Problème du double dépense

Voici comment procéder :


• Créez deux paiements avec les mêmes bitcoins : l'un vers un
détaillant

en ligne, l'autre vers vous-même (une autre adresse que vous


contrôlez)

• Diffuser uniquement le paiement qui paie le commerçant

• Lorsque le paiement est ajouté dans un bloc honnête, le détaillant


vous envoie des marchandises
• Créez secrètement une chaîne de blocs plus longue qui exclut le 41
Problème du double dépense

• Publiez la chaîne la plus longue. Si les autres nœuds respectent la


règle de la chaîne la plus longue, ils ignoreront le bloc honnête
avec le paiement du détaillant et continueront à s'appuyer sur
votre chaîne plus longue.
• Le bloc honnête est dit « orphelin » et n'existe pas à toutes fins utiles.
• Le paiement initial au détaillant sera considéré comme invalide par
les nœuds honnêtes car ces bitcoins ont déjà été dépensés (dans
votre chaîne plus longue)
42
Problème du double dépense

Transactions in the Bitcoin blockchain system are protected by a mathematical


race: Any attacker is competing against the whole network.

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 ?

❑ Mary pourrait-elle utiliser un ordinateur super rapide pour


générer suffisamment de suppositions aléatoires pour rivaliser
avec l'ensemble du réseau dans la résolution de blocs ?
❑ Oui, mais même avec un ordinateur très, très rapide, en raison du
grand nombre de membres du réseau, il est très peu probable
que Mary puisse résoudre plusieurs blocs d'affilée au moment
exact nécessaire pour effectuer une attaque à double dépense.

47
Comment le système empêche-t-il ce type de fraude ?

❑ Elle aurait besoin de contrôler 50 % de la puissance de calcul de


l'ensemble du réseau pour avoir 50 % de chances de résoudre un
bloc avant qu'un autre nœud ne le fasse - et même dans ce cas,
elle n'aurait que 25 % de chances de résoudre deux blocs. dans
une rangée. Plus il y a de blocs à résoudre à la suite, plus la
probabilité de réussite est faible.

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

❑ En pratique avec le Bitcoin, on doit attendre qu'une transaction soit validée.


La validation d'une transaction n'est pas instantanée avec le Bitcoin. On
considère qu'il faut attendre que plusieurs blocs aient été ajoutés à la
blockchain pour confirmer la transaction (ce qui peut prendre quelques
dizaines de minutes !). Ca veut dire qu'à partir du moment où vous payez, le
vendeur va attendre l'arrivée de nouveaux blocs pour être sûr que vous n'avez
pas essayé de tromper le système.
❑ Plus il y a eu de nouveaux blocs, plus on est sûr que vous aviez bien
l'argent.
❑ Si le vendeur choisit de ne pas attendre, il prend un risque que vous l'ayez trompé.

50
51

Vous aimerez peut-être aussi