Comment une blockchain empêche-t-elle la double dépense de Bitcoins?
Table des matières
Développer
- Comprendre la blockchain
- Faire face à la double dépense
- Preuve de travail et « exploitation minière »
L’une des principales préoccupations de tout développeur de crypto-monnaie est le problème des doubles dépenses. Cela fait référence à l’incidence qu’un individu dépense plus d’une fois le solde de cette crypto-monnaie, créant effectivement une disparité entre le dossier de dépenses et le montant de cette crypto-monnaie disponible, ainsi que la façon dont elle est distribuée.
La question de la double dépense est un problème que l’argent n’a pas; si vous payez pour un sandwich avec une facture de 10 $, en remettant cette facture au fabricant du sandwich, vous ne pouvez pas faire demi-tour et dépenser ces mêmes 10 $ ailleurs. Une transaction utilisant une monnaie numérique comme le bitcoin, cependant, se produit entièrement numériquement. Cela signifie qu’il est possible de copier les détails de la transaction et de les rediffuser de sorte que le même BTC puisse être dépensé plusieurs fois par un seul propriétaire. Ci-dessous, nous examinerons comment les développeurs de crypto-monnaie ont assuré que les doubles dépenses ne pouvaient pas se produire.
Points clés à retenir
- Un problème technique qui se pose avec la notion de monnaie numérique est la capacité pour quelqu’un de dupliquer l’argent numérique et de le dépenser simultanément à deux endroits ou plus.
- Ce problème de « double dépense » est évité dans les crypto-monnaies basées sur la blockchain telles que Bitcoin en utilisant un mécanisme de consensus appelé preuve de travail (PoW).
- Ce PoW est effectué par un réseau décentralisé de « mineurs » qui non seulement sécurisent la fidélité des transactions passées sur le registre de la blockchain, mais détectent et empêchent également les doubles dépenses.
Comprendre la blockchain
La blockchain qui sous-tend une monnaie numérique comme le bitcoin n’est pas en mesure d’éviter à elle seule les doubles dépenses. Au contraire, toutes les différentes transactions impliquant la crypto-monnaie concernée sont publiées dans la blockchain, où elles sont vérifiées séparément et protégées par un processus de confirmation. Dans le cas du bitcoin et de nombreuses autres crypto-monnaies, les transactions ainsi confirmées deviennent irréversibles; ils sont affichés publiquement et maintenus à perpétuité.
Bitcoin a été la première grande monnaie numérique à résoudre le problème des doubles dépenses. Il l’a fait en mettant en œuvre ce mécanisme de confirmation et en maintenant un système de grand livre commun et universel. De cette manière, la blockchain Bitcoin conserve des enregistrements de transactions horodatées remontant à la fondation de la crypto-monnaie en 2009.
En termes Bitcoin, un » bloc » est un fichier de données enregistrées en permanence. Toutes les transactions récentes sont écrites dans des blocs, un peu comme un grand livre de transactions boursières sur une bourse. Les informations des blocs sont ajoutées au grand livre toutes les quelques minutes; tous les nœuds du réseau conservent une copie du registre de la blockchain. Les utilisateurs peuvent naviguer dans la blockchain pour Bitcoin et examiner les transactions en termes de quantité uniquement. Les détails sur 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 grand livre contre la falsification par des sources extérieures. Lorsque le registre de la blockchain est mis à jour, tous les portefeuilles Bitcoin le sont également.
Faire face à la double dépense
Imaginez que vous avez 1 BTC et que vous essayez de le dépenser deux fois dans deux transactions distinctes. Vous pouvez essayer de le faire en envoyant le même BTC à deux adresses de portefeuille Bitcoin distinctes. Ces deux transactions entreront ensuite dans le pool de transactions non confirmées. La première transaction serait approuvée via le mécanisme de confirmation, puis vérifiée dans le bloc suivant. Cependant, la deuxième transaction serait reconnue comme invalide par le processus de confirmation et ne serait pas vérifiée. Si les deux transactions sont extraites du pool pour confirmation simultanément, la transaction avec le plus grand nombre de confirmations sera incluse dans la blockchain, tandis que l’autre sera rejetée.
Bien que cela règle effectivement la question de la double dépense, ce n’est pas sans problèmes. Par exemple, le destinataire prévu de la deuxième transaction (échouée) ne participerait pas à l’échec de la transaction elle-même, et pourtant cette personne ne recevrait pas le bitcoin qu’elle avait anticipé. De nombreux commerçants attendent au moins 6 confirmations d’une transaction (ce qui signifie que six blocs de transactions suivants ont été ajoutés à la blockchain après la transaction en question). À ce stade, le commerçant peut supposer en toute sécurité que la transaction est valide.
Il reste d’autres vulnérabilités dans ce système qui pourraient permettre des attaques à double dépense. Par exemple, si un attaquant est en quelque sorte capable de contrôler au moins 51% de la puissance du réseau, il peut engager le double de dépenses. Si un attaquant était en quelque sorte capable de contrôler cette puissance de calcul, il pourrait inverser les transactions et créer une blockchain privée distincte. Cependant, la croissance rapide du bitcoin a pratiquement assuré que ce type d’attaque est impossible.
Preuve de travail et « exploitation minière » expliquées
Passons maintenant un peu plus technique. La façon dont les utilisateurs détectent une falsification telle qu’une tentative de doubler les dépenses dans la pratique consiste à utiliser des hachages, de longues chaînes de chiffres qui servent de preuve de travail (PoW). Mettez un ensemble de données donné via une fonction de hachage (bitcoin utilise SHA-256), et il ne générera jamais qu’un seul hachage. Cependant, en raison de «l’effet d’avalanche», même un petit changement à 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 aura la même longueur. Le hachage est une fonction à sens unique: il ne peut pas être utilisé pour obtenir les données d’origine, uniquement pour vérifier que les données qui ont généré le hachage correspondent aux données d’origine.
Générer n’importe quel hachage pour un ensemble de transactions Bitcoin serait trivial pour un ordinateur moderne, donc afin de transformer le processus en «travail», le réseau Bitcoin définit un certain niveau de «difficulté». Ce paramètre est ajusté pour qu’un nouveau bloc soit « miné » – ajouté à la blockchain en générant un hachage valide – environ toutes les 10 minutes. La difficulté de réglage est accomplie en établissant une « cible » pour le hachage : plus la cible est basse, plus l’ensemble de hachages valides est petit et plus il est difficile d’en générer un. En pratique, cela signifie un hachage qui commence par une longue chaîne de zéros: le hachage du bloc # 429818, par exemple, est 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Ce bloc contient 2 012 transactions impliquant un peu plus de 1000 bitcoins, ainsi que l’en-tête du bloc précédent. Si un utilisateur modifiait un montant de transaction de 0,0001 bitcoin, le hachage résultant serait méconnaissable et le réseau rejetterait la fraude.
Puisqu’un ensemble de données donné ne peut générer qu’un seul hachage, comment les mineurs s’assurent-ils qu’ils génèrent un hachage en dessous de la cible? Ils modifient l’entrée en ajoutant un entier, appelé nonce (« nombre utilisé une fois »). Une fois qu’un hachage valide est trouvé, il est diffusé sur le réseau et le bloc est ajouté à la blockchain.
L’exploitation minière est un processus concurrentiel, mais il s’agit plus d’une loterie que d’une course. En moyenne, quelqu’un produira une preuve de travail acceptable toutes les dix minutes, mais qui ce sera est une estimation de n’importe qui. Les mineurs se regroupent pour augmenter leurs chances de miner des blocs, ce qui génère des frais de transaction et, pour une durée limitée, une récompense en bitcoins nouvellement créés.
La preuve de travail rend extrêmement difficile la modification de tout aspect de la blockchain, car une telle modification nécessiterait de ré-extraire 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 exécuter les fonctions de hachage sont coûteuses.