Comment la Blockchain empêche-t-elle la double dépense ?

L’une des principales préoccupations de tout développeur de cryptomonnaie est la question des doubles dépenses. La double dépense fait référence à une personne qui dépenserait plus d’une fois le solde de ses cryptomonnaies, créant ainsi une disparité entre les dépenses et le montant disponible de cette cryptomonnaie, ainsi que la manière dont elle est distribuée.

La question des doubles dépenses est un problème que l’argent liquide ne connaît pas : si vous payez un sandwich avec un billet de 10 €, en remettant ce billet au vendeur, vous ne pouvez pas dépenser à nouveau ce même billet dans le magasin d’à côté !

Une transaction utilisant une monnaie numérique comme le bitcoin, en revanche, se fait entièrement de manière numérique. Cela signifie qu’il est possible de copier les détails de la transaction et de les rediffuser de telle sorte que la même cryptomonnaie puisse être dépensée plusieurs fois par un seul propriétaire.

Les points clés :

• Un problème technique qui se pose avec la notion de monnaie numérique est la possibilité pour quelqu’un de dupliquer la cryptomonnaie et de la dépenser simultanément à deux ou plusieurs endroits.
• Ce problème — connu sous le nom de « double dépense » — est évité dans les cryptomonnaies basées sur une Blockchain grâce à un mécanisme de consensus appelé « Proof of Work » (PoW) ou en français « Preuve de Travail ».
• Cette preuve de travail est effectuée par un réseau décentralisé de « mineurs » qui non seulement garantissent la fidélité des transactions passées dans la blockchain, mais détectent et empêchent également les doubles dépenses.

Comprendre la Blockchain

Dans une Blockchain, toutes les transactions impliquant une cryptomonnaie sont vérifiées, enregistrées et protégées par un processus de confirmation. Dans le cas du bitcoin et de nombreuses autres monnaies cryptographiques, les transactions qui ont été confirmées sont alors ajoutées à la Blockchain (un registre public) en bloc et deviennent ainsi irréversibles.

Le bitcoin a été la première grande monnaie numérique à résoudre le problème de la double dépense. Il l’a fait en mettant en œuvre un mécanisme de confirmation et en maintenant un système de grand livre de compte public et universel. De cette façon, la Blockchain bitcoins conserve les enregistrements des transactions horodatées depuis la création de la cryptomonnaie en 2009.

En termes de cryptomonnaies, un « bloc » est un fichier de données enregistrées de manière permanente. Toutes les transactions récentes sont écrites en blocs, un peu comme un registre de transactions boursières sur un marché boursier.

Pour Bitcoin, les informations des blocs sont ajoutées au registre toutes les 10 minutes environ et tous les nœuds du réseau conservent une copie de la Blockchain. Les utilisateurs peuvent naviguer dedans et examiner certains détails des transactions. Les détails concernant l’identité de l’acheteur et du vendeur dans toute transaction sont protégés par un cryptage de haut niveau, qui protège également le registre contre les manipulations par des sources extérieures. Lorsque le registre de la Blockchain est mis à jour, tous les portefeuilles de bitcoins le sont également.

Faire face aux doubles dépenses

Imaginez que vous ayez 1 Bitcoin et que vous essayez de le dépenser deux fois en deux transactions distinctes. Vous pourriez essayer de le faire en envoyant le même BTC à deux adresses de portefeuille bitcoin distinctes. Ces deux transactions seront alors incluses dans le pool de transactions non confirmées. La première transaction sera approuvée par le mécanisme de confirmation et sera ensuite vérifiée dans le bloc suivant. En revanche, la deuxième transaction serait reconnue comme non valable par le processus de confirmation et ne serait pas vérifiée.

Si les deux transactions sont retirées simultanément de la réserve pour confirmation, la transaction ayant reçu le plus grand nombre de confirmations sera incluse dans la Blockchain, tandis que l’autre sera rejetée.

Si cela permet de régler efficacement le problème des doubles dépenses, cela n’est pas sans poser de problèmes. De nombreux commerçants attendent au moins 6 confirmations d’une transaction (ce qui signifie que 6 blocs de transactions ultérieures ont été ajoutés à la Blockchain après la transaction en question). À ce stade, le commerçant peut supposer sans risque que la transaction est valable, mais le délai d’attente reste long.

Il reste d’autres vulnérabilités qui pourraient permettre des attaques à double dépense. Par exemple, si un attaquant est en mesure de contrôler au moins 51 % des ressources du réseau, il peut commettre une double dépense. Cependant, la croissance rapide du Bitcoin a pratiquement assuré que ce type d’attaque est impossible.

« Proof of Work » et « mining » : Quelques explications !

Maintenant, soyons un peu plus techniques. Dans la pratique, les utilisateurs détectent les altérations, comme les tentatives de doubles dépenses, par le biais de hachages, de longues chaînes de chiffres qui servent de preuve de travail (PoW).

Si l’on fait passer un ensemble de données par une fonction de hachage (bitcoin utilise SHA-256), il ne générera jamais qu’un seul et unique hash.

fonction-de-hash

En raison de l’« effet d’avalanche », même une modification minime d’une partie des données d’origine entraînera un hachage totalement méconnaissable. Quelle que soit la taille de l’ensemble de données d’origine, le hachage généré par une fonction donnée sera de la même longueur.

Le hachage est une fonction à sens unique : il ne peut pas être utilisé pour obtenir les données originales, mais seulement pour vérifier que les données qui ont généré le hash correspondent aux données originales.

Générer n’importe quel hash pour un ensemble de transactions bitcoin serait trivial pour un ordinateur moderne, donc pour transformer le processus en « travail », le réseau bitcoin fixe un certain niveau de « difficulté ». Ce paramètre est ajusté de manière à ce qu’un nouveau bloc soit « miné » — c’est-à-dire ajouté à la Blockchain en générant un hash valide — toutes les 10 minutes environ. Pour définir le niveau de difficulté, il faut établir un « objectif » pour le hachage : plus l’objectif est bas, plus le nombre de hachages valides est faible et plus il est difficile d’en générer un. Le hachage pour le bloc #429818, par exemple, est :

000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d.

Ce bloc contient 2 012 transactions impliquant un peu plus de 1 000 bitcoins, ainsi que l’en-tête du bloc précédent. Si un utilisateur modifiait le montant d’une transaction de ne serait-ce qu’un satoshi, le hash qui en résulterait serait méconnaissable et le réseau rejetterait identifierait la transaction comme fraude.

Une fois qu’un hash valide est trouvé, il est diffusé au réseau et le bloc est ajouté à la Blockchain.

Le « mining » (Extraction ou minage en français) est un processus concurrentiel, mais il s’agit plus d’une loterie que d’une course. En moyenne, quelqu’un produira un hash valide toutes les 10 minutes, mais on ne sait pas qui ce sera. Les mineurs se regroupent pour augmenter leurs chances d’exploiter des blocs puis partagent ensuite les récompenses.

Le Proof of Work rend extrêmement difficile la modification quelconque de la Blockchain, car une telle modification nécessiterait la modification de tous les blocs suivants. Il est également difficile pour un utilisateur ou un groupe d’utilisateurs de monopoliser la puissance de calcul du réseau, car les machines et la puissance nécessaires pour effectuer les fonctions de hachage sont extrêmement coûteuses.

Partager sur :