Qu’est ce que la Proof of Work (PoW) pour les débutants

Proof of Work PoW

Explications de la Proof of Work (PoW) en crypto pour les débutants

Si vous vous intéressez au Bitcoin ainsi qu’à la blockchain, vous avez très probablement entendu parler de l’algorithme de consensus Proof of Work (ou preuve de travail). Mais, qu’est-ce que c’est ? À quoi ça sert ? Et surtout, comment ça fonctionne ? C’est ce que nous allons aborder dans cet article complet sur le sujet.

C’est quoi la PoW (Proof of Work) appelée aussi preuve de travail ?

La Proof of Work (PoW) ou preuve de travail en français est un procédé cryptographique qui permet la création de blocs de transactions. Initialement, la preuve de travail était utilisée comme antispam.

Une première implémentation en 1997 avec HashCash

En effet, c’est en 1997 que Adam Cash inventa le Hashcash conçu pour limiter le spam et les attaques par dénis de service (DDoS). Un procédé dont l’objectif est d’exiger un travail informatique pour que celui-ci soit vérifié et considéré comme légitime.

Avec cette méthode, les spammeurs sont obligés de devoir utiliser des ressources conséquentes à contrario des utilisateurs normaux qui n’abusent pas du système. Ceci fût d’ailleurs utilisé par Microsoft pour ses services d’envoie de mails

Le PoW de nos jours

Aujourd’hui, ce processus cryptographique est utilisé notamment par la blockchain du Bitcoin depuis sa création en 2008 et son exécution le 03 janvier 2009 par Satoshi Nakamoto. Pour la parenthèse, le Bitcoin utilise la preuve de travail pour rendre immuable la blockchain et utilise le consensus de Nakamoto.

Si l’on reprend l’exemple du Bitcoin, un bloc contient toutes les transactions effectuées lors des 10 dernières minutes. Ainsi, lors de la création d’un nouveau bloc, les transactions réalisées dans ce laps de temps sont validées : elles sont inscrites dans la blockchain.

En utilisant la blockchain, le registre (la blockchain) devient immuable : on ne peut pas le modifier ultérieurement. C’est le procédé de l’empilement des preuves de travail qui permet de rendre ce registre immuable.

Une transaction validée dans un bloc a plus de risque d’être annulée qu’une transaction confirmée dans 6 blocs. C’est pour cette raison que plus les sommes sont conséquentes, plus il est conseillé d’attendre une certaine quantité de blocs pour éviter une mauvaise surprise.

Ce processus nécessite de réaliser un défi cryptographique complexe avec la mise en concurrence d’un réseau d’utilisateurs communément appelés mineurs.

C’est un procédé différent de celui du Proof of Stake (PoS) mais qui ont un but commun : Sécuriser la blockchain sur le long terme.

Le rôle des nœuds ou validateurs avec la Proof of Work

Avec la preuve de travail, les nœuds ou validateurs sont des relais qui fonctionnent en pair à pair (peer to peer). Ce sont eux qui reçoivent, valident et propagent les transactions au travers du réseau.

Les nœuds sont synchronisés sur la blockchain sur laquelle ils reposent. Cela signifie qu’ils ont généralement en mémoire toutes les transactions antérieures jusqu’à maintenant précisément.

Dès qu’une transaction est soumise, elle est envoyée à un nœud qui va vérifier la validité de celle-ci. Une fois validé, celle-ci sera envoyée dans le mempool, une zone virtuelle tampon dans laquelle les transactions sont en attente d’être inscrite dans un bloc par les mineurs.

Le mempool va répertorier les transactions en fonction des frais qui leur sont appliquées. Les transactions sont en attente jusqu’à ce qu’elle soit récupérée par un mineur dans le but d’être inséré et de créer le prochain bloc.

Quand le mempool est congestionné, ce sont les transactions avec les frais les plus élevés qui seront traitées les premières par les mineurs.

Qu’est ce qu’un mineur dans le processus de PoW ?

Un mineur est en réalité une entité qui dispose d’une certaine puissance de calcul (hashrate). Cette puissance de calcul peut-être obtenue de différentes manières : 

  • utilisation de matériel informatique comme les ASIC, les processeurs (CPU), les cartes graphiques (GPU) ou bien encore les FPGA (Field-programmable gate array) qui sont des cartes reprogrammable ;
  • location de hashrate dans le cloud auprès d’entreprises spécialisées ;
  • posséder une certaine quantité de jetons qui matérialise de la puissance de calcul avec le projet BTCST

Mise à disposition par les mineurs, cette puissance de calcul (hashrate) va permettre d‘inscrire les transactions soumises par les nœuds du réseau dans des blocs. Les blocs représentent simplement un ensemble de transactions validées ou en attente de validation par la chaîne de blocs.

Bloc transaction
Représentation graphique d’un bloc de transaction

L’objectif des mineurs dans le Proof of Work est de récupérer la récompense pour avoir créer un bloc de transaction. Mais pour cela, il sont en compétition avec d’autres mineurs en résolvant des casse-têtes cryptographiques complexes. Tout ces éléments vont ainsi influencer ce que l’on appelle la difficulté de minage.

Aujourd’hui, la récompense pour avoir miné un bloc sur Bitcoin est de 6,25 Bitcoins. Une quantité qui tend à diminuer en 2024 avec le prochain halving.

Comment est sélectionné le mineur avec la preuve de travail ?

Lors du cycle de minage d’un bloc, les différents mineurs du réseau sont mis en compétition. Le but de celle-ci est de calculer une suite de chiffres qui soit la plus proche possible de ce qu’on appelle le hash du bloc.

Ce que l’on appelle le hash n’est rien d’autre qu’une empreinte numérique. Cette empreinte est générée par une fonction appelée : Fonction de hachage cryptographique

Par exemple, si l’on utilise la fonction SHA-256 sur le mot arbre, on obtient la suite de caractères suivante : 5b81c7c3bb698fbfea7fc79fe3f11cb5fde0861b94fffabd36e4366afc76f34b

Voici donc un exemple graphique de comment est sélectionné le mineur :

Proof of Work (PoW) hash
Exemple de différentes solutions (hash) proposées par les mineurs

Dans cet exemple, la cible est la solution qu’il faut réussir à trouver pour être éligible à la validation du bloc. Vu la complexité des calculs, il est presque impossible de trouver ce chiffre à l’identique.

Avec ce processus, si un autre mineur trouve un hash encore plus viable que le précédent, alors c’est ce mineur qui sera éligible à la récompense de bloc aussi appelée prime de minage.

Par conséquent, c’est donc le mineur qui dispose de la solution la plus proche du résultat attendu qui valide le bloc. La validation d’un bloc engendre la création d’un nouveau bloc sur la blockchain et ainsi de suite.

Malgré tout, un mineur disposant d’une grande puissance de calcul aura un avantage par rapport à un autre disposant d’un hashrate plus faible. Mais il arrive que ces probabilités soient bousculées et que miner un bloc Bitcoin en solitaire soit possible.

Un fonctionnement légèrement différent sur la blockchain du Bitcoin

Sur la blockchain du Bitcoin, celui qui gagne la récompense est celui qui trouve en premier le “nonce”. Le Nonce est un nombre arbitraire destiné à être utilisé une seule fois.

Ce Nonce permet d’avoir un hash correspondant à la cible de difficulté. Sur la blockchain du Bitcoin, il n’y a pas de résultat plus « proche » car la cible de difficulté ne définit pas un résultat exact.

La cible de difficulté permet de spécifier les contraintes sur le hash. Plus la difficulté est grande, plus il faudra de 0 au début du hash (et plus le hash devra être petit). De ce fait, si un mineur trouve un hash plus petit que celui proposé sur le réseau, cela ne change rien.

Comment corrompre une blockchain qui utilise le Proof of Work ?

Pour commencer, on parle de compromettre une blockchain quand une entité tente d’annuler des transactions pour en tirer profit. Généralement, ce type d’attaque à pour but de dépenser de la cryptomonnaie ou du Bitcoin qui n’est pas en notre possession.

Quand une transaction est soumise sur le réseau, elle est vérifiée par l’ensemble des nœuds. En fonction de votre propre hashrate et celui du réseau, votre proposition aura un certain poids et donc une certaine légitimité.

Compromettre une blockchain qui utilise le Proof of Work nécessite d’avoir la majorité de la puissance de calcul pour tromper celle-ci. Cette majorité correspond à 51%, c’est d’ailleurs de là que l’attaque des 51% tire son nom. 

L’attaque des 51% avec la preuve de travail (Proof of Work)

Ce type d’attaque vise à obtenir 51% de la puissance de calcul et permet de réorganiser la blockchain. En disposant d’une telle puissance de calcul, l’attaquant peut donc tromper le réseau en supprimant ses transactions par exemple.

Un type d’attaque pratiquement impossible sur le Bitcoin pour plusieurs raisons : 

  • Coût exorbitants pour obtenir 51% de la puissance
  • Techniquement impossible de par la décentralisation de la puissance et des acteurs indépendants
  • Chute immédiate de la valeur en cas de succès de l’attaque (et perte d’argent pour l’attaquant)

En revanche, c’est une attaque possible sur des blockchains plus petites et où la puissance de calcul est plus faible. C’est d’ailleurs une attaque qui est déjà arrivée plusieurs fois sur la blockchain Ethereum Classic (ETC)

Que se passe-t-il si la blockchain est corrompue ?

En cas de corruption avérée d’une blockchain, les équipes disposent principalement de deux solutions : 

  • Conserver la blockchain existante et ne rien faire
  • Réaliser un « hard fork », c’est à dire, un retour en arrière

Le fait de conserver la blockchain sans y faire de modifications entraînera probablement une chute de la valeur. C’est le prix de la décentralisation et avec laquelle une entité ne peut (en principe) pas agir d’elle-même.

En cas de hard fork, c’est une nouvelle blockchain qui sera créée en parallèle de l’ancienne avec un retour à un moment précis (avant l’attaque). Comme si l’on réinitialisait le solde de votre compte bancaire au 1er jour du mois.

Cette technique à pour but de revenir à un moment où il ne s’était rien passé. Une méthode controversée et contre les principes même de la décentralisation.

D’ailleurs, celle-ci est impossible sur la blockchain du Bitcoin tant la coordination serait importante. En plus de ça, c’est contre les principes même et le fonctionnement du consensus de Nakamoto.

En quoi la POW permet-elle de sécuriser la blockchain ?

La Proof of Work permet de sécuriser la blockchain grâce à plusieurs aspect : 

  • Le temps écoulé (plus le temps passe et plus les preuves de travail s’accumulent)
  • Le système de sélection “aléatoire” des mineurs via des calculs mathématiques complexes
  • Un hashrate élevé qui rend difficile voire impossible de compromettre l’intégrité de la blockchain
  • La décentralisation de la puissance de minage possédée par des mineurs indépendants, des mineurs institutionnelle et des pools de minage

Le protocole de consensus Proof of Work reste malgré tout l’un des plus sécurisés de par les aspects évoqués précédemment. Le Bitcoin utilise ce mécanisme depuis son implémentation en 2009 et aucune attaque de ce type n’a réussi à compromettre l’intégrité de sa chaîne de blocs.

Ce qu’il faut retenir, c’est que la preuve de travail (PoW) est le procédé cryptographique qui permet de valider et créer de nouveaux blocs sur la blockchain. Les règles de sélection sont, quant à elles, fixées par le consensus. Chaque blockchain peut donc avoir un consensus différent et, par conséquent, un fonctionnement légèrement différent.

Article rédigé en collaboration avec @EasyCryptoEZC et @JohnOnChain. Un grand merci à John pour les éclaircissements sur certains points liés au Bitcoin et sa blockchain.

Partager l'article sur les réseaux sociaux

Auteur

Depuis 2017, je ne cesse d'explorer l'univers du Bitcoin, de la blockchain des crypto monnaies, des NFT et plus récemment, celui du Web3. Après avoir fondé Au Coin du Bloc en 2021, je met à disposition mes connaissances et tente de vulgariser les aspects obscurs pour rendre abordable et compréhensible cet univers naissant dans lequel je crois fermement.

Articles similaires