Comprendre le rôle de la cryptographie dans les blockchains
À l’heure actuelle, vous avez probablement vu des centaines d’articles sur la technologie blockchain, chacun tentant de décrire de quoi il s’agit et en quoi il s’agit de la prochaine grande révolution qui frappera le monde de la technologie. A la fin de l’article, beaucoup de gens restent encore perplexes car les auteurs effleurent beaucoup de concepts compliqués sans les expliquer.
Dans ce guide, nous vous donnerons unexplication de base de ce que sont les blockchains, de leur fonctionnement et des concepts cryptographiques clés qui les sous-tendent. Il est temps de dépasser le battage médiatique et les mots à la mode et de comprendre ce qui se passe réellement au niveau technique.
Ne vous inquiétez pas, car nous allons y aller lentement et examiner chaque élément en détail, en vous donnant des analogies qui vous aident à visualiser ce qui se passe réellement.
Une analogie simple avec les blockchains
Imaginez un village primitif, où ils n’ont pas d’argent au sens traditionnel du terme. Plutôt,ils gravent les détails de chaque transaction sur un bloc de pierre, puis cimentez-le en place au centre du village.
David échange quinze poules contre un des cochons de Sarah. Ils gravent ces informations sur un bloc, puis les cimentent sur la place de la ville. Désormais, tout le monde peut voir que David est le nouveau propriétaire des cochons de Sarah, tandis que Sarah est désormais propriétaire des quinze poules. Puisque l’information est publique, il ne peut y avoir aucun différend quant à savoir qui contrôle légalement quoi.
Le lendemain, Jessica échange à Mark 100 kilogrammes de maïs contre un canoë. Celui-ci est également gravé sur un bloc, qui est ensuite cimenté sur l'ancien bloc. Puisque tout le monde dans la ville pourra désormais vérifier publiquement que Jessica ne possède plus les 100 kilogrammes de maïs, elle ne pourra pas essayer de le revendre si Mark s'absente pendant quelques jours.
Dans les jours à venir, de plus en plus de transactions auront lieu et de plus en plus de blocs de pierre sur lesquels sont gravés les détails de la transaction seront cimentés. Au fil du temps, les pierres de transaction commencent à former une tour.
Tous les détails sont accessibles à tous et les utilisateurs ne peuvent pas modifier ou annuler les transactions antérieures., car un tas de blocs sont cimentés dessus.
Le système financier de ce village n’est peut-être pas le plus simple à utiliser, mais il permet à tous les habitants du village de suivre leurs transactions. Il s’agit d’un grand livre public qui conserve des registres permanents, qui ne peuvent être modifiés. L’un des aspects les plus importants est qu’il est décentralisé. Aucune banque centrale ni aucun gouvernement n’est responsable des transactions. Tout est fait par la communauté.
Il existe un certain nombre de différences entre les blockchains et l’analogie ci-dessus, mais cela reste un bon point de départ pour comprendre ce que sont les blockchains et pourquoi elles sont utiles.
L’un des principaux contrastes est que les blockchains ne sont pas exposées en public, mais que quiconque le souhaite peut stocker une copie d’une blockchain sur son ordinateur.Les blockchains utilisent la cryptographie, les ordinateurs et l'électricité pour construire les blocs, plutôt que de la pierre et du ciment.
Les aspects les plus importants des blockchains sont qu’ellesne peuvent pas être modifiés, ne sont contrôlés par aucune entité unique et tout le monde peut voir les transactions. Ces propriétés expliquent pourquoi les gens pensent que cette technologie a le potentiel d’être utilisée dans une vaste gamme d’applications.
L'histoire des blockchains
À la fin des années 1990 et au début des années 2000, il y a eu une série d’évolutions vers les monnaies numériques basées sur divers concepts cryptographiques. L’une des premières initiatives de type blockchain a été le mécanisme de Nick Szabo en 1998 appelé peu d'or . Bien qu’il n’ait jamais été réalisé, il impliquait une série d’énigmes cryptographiques, où chaque solution serait ajoutée à l’énigme suivante, formant une chaîne.
Ce n’est qu’en 2008 que l’idée des blockchains s’est pleinement développée, lorsque quelqu’un sous le pseudonyme de Satoshi Nakamoto a publié l’article suivant : Bitcoin : un système de paiement électronique peer-to-peer .
Cette personne s’est appuyée sur des travaux antérieurs dans le domaine, notamment ceux de Hal Finney. système de preuve de travail réutilisable , pour former la monnaie numérique Bitcoin, ainsi que le concept sous-jacent de blockchain. Ces blockchains ont depuis été appliquées de différentes manières, à la fois comme monnaies numériques et comme solutions à d'autres problèmes .
Le réseau Bitcoin a été lancé début 2009 et n’était à l’origine utilisé que par un petit groupe de cryptographes et d’amateurs. Ce n’est que lorsque le bitcoin a été adopté par les marchés du darknet tels que Silk Road que les blockchains ont commencé à être adoptées à grande échelle et de manière pratique.
À mesure que le bitcoin gagnait en popularité, un certain nombre de crypto-monnaies dérivées, connues sous le nom de altcoins tels que Litecoin et Peercoin ont été développés. Ceux-ci propagent davantage l’adoption et l’utilisation de la technologie blockchain.
Ethereum lancé en 2015 en tant que plate-forme informatique distribuée permettant à ses utilisateurs de développer des applications et conclure des contrats intelligents entre les parties . À cette époque, l’intérêt du public, des grandes entreprises et des gouvernements pour la technologie blockchain s’est accru, tant dans le domaine financier que dans d’autres cas d’utilisation. Cela a vu une vague de nouvelles activités, les blockchains étant proposées comme solutions à toute une série de problèmes différents.
Les usages des blockchains
Cela fait plus de 10 ans que la première blockchain a été lancée, avec un battage médiatique et des investissements intensifs au cours des cinq dernières années. Malgré le tourbillon d’activités, à ce stade, il y a eu relativement peu de mises en œuvre réussies de la technologie blockchain dans le monde réel.
Crypto-monnaies
Même si les crypto-monnaies ont vu leurs valeurs grimper et chuter, elles voient toujoursrelativement peu de transactions pour un usage quotidien. Le nombre d’entreprises qui les acceptent est limité, tandis que les coûts de transaction du bitcoin deviennent trop élevés lorsque la monnaie est fréquemment utilisée. De plus, le réseau Bitcoin ne peut pas gérer un volume de transactions comparable à celui du système Visa traditionnel.
Bien qu’il existe des crypto-monnaies qui semblent plus prometteuses que le bitcoin, celles-ci sont acceptées dans encore moins d’endroits. À ce stade, il semble que les crypto-monnaies soient principalement utilisées comme investissements spéculatifs ou pour acheter des produits illicites sur les marchés du darknet.
Applications décentralisées et contrats intelligents
Après Bitcoin, le projet basé sur la blockchain le plus connu est Ethereum, qui fournit une plate-forme pour développer des applications décentralisées et des contrats intelligents. Malgré le battage médiatique excessif, avoir une capitalisation boursière de 14 milliards de dollars (au moment de la rédaction), et plus de 2 300 applications décentralisées , il a très peu de résultats à montrer pour le moment.
L’un des projets les plus réussis du réseau Ethereum jusqu’à présent est probablement Cryptokitties , un jeu vidéo dans lequel les utilisateurs peuvent élever des chats. MakerDAO, l'application qui compte actuellement le plus de participants actifs quotidiennement, comptait moins de 1 000 utilisateurs au cours des dernières 24 heures (au moment de la rédaction). Considérant qu’Ethereum a été qualifié de « Révolution technologique financière », parmi ses nombreux éloges, ses applications actuelles semblent assez décevantes.
Autres initiatives basées sur la blockchain
Au cours des dernières années, d’innombrables startups basées sur la blockchain ont vu le jour, ainsi que de nombreuses initiatives soutenues par nos plus grandes entreprises technologiques et institutions financières.
De nombreux programmes pilotes et expériences visent à adapter la technologie pour une utilisation dansgestion de la chaîne d'approvisionnement, transactions financières, contrats intelligents, stockage décentraliséet plus.
Ceux-ci inclus Fiducie alimentaire IBM et Walmart incursion dans l'utilisation de la technologie pour gérer la logistique de l'approvisionnement alimentaire, des banques telles que UBS l'adaptation des blockchains pour les règlements financiers, et la Bourse australienne (ASX) visant à adopter la technologie du grand livre distribué.
Malgré cela, il est difficile de nommer un produit ou un service réussi et largement utilisé qui a émergé de tous les investissements et efforts. Cela ne veut pas dire que la technologie blockchain n’aura aucune utilisation future, mais simplement qu’elle n’est pas encore aussi fructueuse que beaucoup l’espéraient. Difficile à ce stade de savoir si certains de ces projets aboutiront ou non dans les années à venir.
Les concepts cryptographiques de base derrière les blockchains
Que les blockchains soient ou non actuellement largement utilisées dans le monde réel, elles restent des applications intéressantes de la cryptographie.
De nos jours, d’innombrables blockchains ont chacune leurs propres variantes. Puisqu’il n’est pas possible de couvrir chacun de leurs aspects individuels, nous nous concentrerons sur les concepts fondamentaux et sur leur relation avec la cryptographie. Nous nous concentrerons principalement sur le bitcoin, non pas parce que c’est la meilleure blockchain, mais parce que c’est la première, sur laquelle sont basées toutes les autres.
Qu’est-ce que la cryptographie ?
Avant d’approfondir, il est important de couvrir les bases.La cryptographie est l'étude et la pratique consistant à garder les informations secrètes hors de portée des adversaires.. Au début, cela se faisait simplement, en utilisant des techniques telles que remplacer chaque lettre d'un mot par la lettre qui le suit dans l'alphabet. Dans ce type de régime :
Bonjour
Devient:
Ifmmp
Si votre destinataire sait comment reconvertir le message codé dans sa forme originale et que votre adversaire ne le sait pas, vous pouvez alors supposer qu'il s'agit d'un moyen de communication sûr.
Au fil du temps, les gens se sont beaucoup améliorés dans leur capacité à déchiffrer les codes. Les progrès technologiques ont également amélioré considérablement nos capacités de décryptage. Afin de garantir la sécurité de nos informations de nos jours, nous devons désormais utiliser des codes beaucoup plus complexes.
Ces codes incluent des algorithmes incroyablement compliqués tels que AES ou RSA , dont chacun implique beaucoup de mathématiques. Ils utilisent des ordinateurs pour effectuer les processus de cryptage et de décryptage.
Bitcoin : la première blockchain
Maintenant que vous connaissez les bases de l’étude de la cryptographie, il est temps de commencer à examiner la structure sous-jacente du bitcoin, la blockchain originale. Bitcoin a été initialement proposé commeune monnaie basée sur la cryptographie qui pourrait éviter les inconvénients d'un système financier contrôlé par des institutions centrales.
Au cœur du Bitcoin se trouve l’idée detransférer de la valeur via une chaîne de signatures numériques, qui sont similaires aux signatures manuscrites. Cette idée en soi n’était pas révolutionnaire, mais il est important de comprendre comment elle fonctionne afin d’avoir une vue d’ensemble. Utilisons un exemple avec des signatures manuscrites pour expliquer comment ce processus peut fonctionner :
Sarah n'avait pas d'argent, alors elle a demandé 5 $ à Ann. Ann a dit d'accord, mais seulement si Sarah lui faisait un massage. Sarah ne pouvait pas le faire correctement à ce moment-là, mais Ann est très attachée aux règles et à leur application, alors elle a rédigé un contrat rapide.
Moi, Sarah, je dois au porteur de ce papier un massage de 10 minutes.
Ann a fait signer Sarah pour que le contrat soit légitime.
Plus tard, Ann a décidé qu'elle ne voulait pas de massage et a proposé de vendre le contrat à Jason pour 5 $. Jason a décidé de l'acheter parce qu'il voulait vraiment un massage. Ann l'a ensuite signé comme preuve qu'elle le donnait à une autre personne.
Bien que Jason soit désormais propriétaire du contrat, il y a un problème. Comment peut-il savoir si Ann a déjà profité du massage ? Peut-être que Sarah ne doit plus de massage à personne et que le contrat ne vaut rien.
Nous reviendrons sur la réponse à ce problème plus tard, dans le Comment les blockchains peuvent-elles empêcher les doubles dépenses ? section. Pour l’instant, parlons des signatures numériques et du hachage, deux des concepts les plus importants qui constituent les fondements des blockchains.
Signatures numériques
Avant de pouvoir expliquer les signatures numériques, nous devons revenir en arrière et parler de quelques principes de base en matière de sécurité. Lorsque nous transmettons des données précieuses en ligne, nous avons souvent besoin de quatre propriétés importantes :
- Confidentialité – La possibilité de cacher les données aux tiers non autorisés.
- Authentification – Cette propriété implique de pouvoir vérifier que l’autre partie est bien celui qu’elle prétend être, et non un imposteur ou un espion.
- Intégrité – Si les données conservent leur intégrité, cela signifie qu’elles n’ont été ni modifiées ni altérées par quelqu’un d’autre.
- Non-répudiation – Cette propriété signifie essentiellement que l’individu ou l’entité responsable d’une action ne peut pas prétendre qu’il n’y est pas impliqué. Dans la vie de tous les jours, nous utilisons nos signatures manuscrites comme une forme de non-répudiation. Il est difficile pour vous de nier que vous avez accepté un contrat lorsque votre signature a été utilisée pour le signer.
Sans chacune de ces propriétés, comment pourrions-nous être sûrs que les données importantes représentent réellement ce qu’elles sont censées représenter et que nos ennemis n’y ont pas accédé ni modifié ?
Normalement, nous utilisons des algorithmes de cryptage tels que AES pour garantir la confidentialité. Pour les trois autres propriétés, on se tourne vers les signatures numériques.
Il existe deux grands types de cryptage :
- Chiffrement à clé symétrique – Dans le chiffrement à clé symétrique, la même clé est utilisée pour chiffrer et déchiffrer les données. Il s'agit d'une méthode efficace utilisée partout en matière de sécurité des informations, du cryptage de votre disque dur à la sécurisation de votre connexion à un site Web HTTPS. L'algorithme à clé symétrique le plus couramment utilisé est AES .
- Clé publique (asymétrique) chiffrement – Cryptographie à clé publique utilise des clés distinctes pour les processus de cryptage et de déchiffrement. Il s’agit de la clé publique, qui est partagée ouvertement, et de la clé privée, qui doit rester secrète. Il s'appuie sur des propriétés mathématiques intéressantes et permet à deux parties qui ne se sont jamais rencontrées auparavant d'échanger des informations en toute sécurité. C’est relativement inefficace, donc en pratique, la cryptographie à clé publique n’est utilisée que pour chiffrer la clé symétrique, qui à son tour est utilisée pour chiffrer les données.
Les signatures numériques ressemblent beaucoup aux signatures normales . Nous signons un reçu pour vérifier que les informations qui y figurent sont correctes et conservent leur intégrité. Il est très difficile de répudier nos signatures manuscrites, car elles sont très difficiles à copier. Puisque nous avons nos signatures sur nos cartes bancaires et d’identité, elles servent également de forme d’authentification. N’importe qui peut vérifier si une signature correspond à l’identité émise par le gouvernement.
Les signatures numériques reposent sur chiffrement à clé publique . Si Alice veut prouver qu'une donnée est authentique, conserve son intégrité et qu'elle ne veut pas pouvoir la répudier, elle peut envoyer une signature numérique à côté des données.
Pour créer une signature numérique, Alice prend d'abord les données et les soumet à un algorithme de hachage pour former une chaîne unique de nombres (ceci est expliqué en détail dans le Hachage section). Ces numéros sont ensuite signés numériquement à l'aide de l'algorithme ECDSA et de sa clé privée.
Essentiellement, le hachage et la clé privée d’Alice sont combinés à l’aide d’une formule mathématique complexe. Le résultat est la signature numérique, qui peut être vérifiée avec la clé publique d’Alice pour prouver qu’elle est la véritable propriétaire de sa clé privée correspondante, et non un imposteur.
Les signatures numériques permettent aux individus de prouver qu'ils sont propriétaires de la clé privée sans avoir à la révéler à l'autre partie. . Pour en savoir plus sur le fonctionnement de ce processus, consultez notre guide complet sur signatures numériques .
Une fois qu'Alice a créé sa signature numérique, elle l'envoie à son destinataire, Bob, avec les données. Lorsque Bob reçoit les données, il peut vérifier leur authenticité, vérifier si elles conservent leur intégrité et voir si elles sont non répudiables, le tout en utilisant la clé publique d'Alice.
Alice aura très probablement partagé sa clé publique avec Bob à l'avance, sinon Bob pourra la trouver sur un serveur de clés (il s'agit d'un serveur sur lequel de nombreuses personnes hébergent leurs clés publiques, afin que d'autres puissent les trouver et les contacter dans de manière sécurisée).
Bob prend la signature numérique et celle d'Alice Clé publique et les calcule ensemble en utilisant l'inverse de l'algorithme utilisé par Alice.
En raison des propriétés mathématiques uniques de ce calcul, le résultat sera le même que le hachage des données d'Alice provenant de avant de le signer numériquement avec sa clé privée .
Bob exécute ensuite le message qu'il a reçu via le même fonction de hachage qu'Alice a utilisée. Si ce message n’a pas été modifié depuis qu’Alice l’a signé, alors la fonction de hachage donnera à Bob le même résultat que celui obtenu lors du calcul qu’il a effectué avec la clé publique d’Alice.
Si les deux valeurs sont différentes, cela signifie que les données ont été modifiées, qu’elles n’ont pas été signées par la véritable clé privée d’Alice ou qu’il y a eu un autre problème. Pour le bien de notre exemple, disons que les deux valeurs correspondent et que les données sont en fait légitimes.
Dans Bitcoin et d’autres blockchains, les signatures numériques sont principalement utilisées dans le processus de transaction pour permettre à quelqu’un de prouver sa propriété, sans avoir à révéler sa clé privée.
Hachage
Hachage est le processus d'envoi de données via une fonction de hachage pour produire un hachage spécifique, essentiellement unique, d'une longueur fixe. Dans les applications blockchain, nous utilisons fonctions de hachage cryptographique telles que SHA-256 .
Les fonctions de hachage cryptographique présentent plusieurs caractéristiques importantes qui les rendent utiles :
- Ils sont déterministe – une entrée donnée aura toujours la même sortie.
- Chaque sortie est essentiellement unique . Les chances que deux entrées distinctes aient le même résultat sont si faibles que nous ne nous en inquiétons pas vraiment.
- Il est impossible de déterminer l'entrée d'origine à partir de la sortie (dans le cadre des techniques et technologies actuelles).
- Les hachages peuvent être calculés rapidement .
- Un léger changement dans l'entrée entraîne une sortie significativement différente .
À titre d’exemple, si nous mettons « Dînons » dans un fonction de hachage en ligne , cela nous donne :
a754edc281dfb28ca15fa0662de2e238550151a6c49514491eb1f60ac725bf65
Chaque fois que nous le ferons, cela nous donnera le même résultat. Mais si nous modifions ne serait-ce qu’un seul caractère, il renvoie une valeur complètement différente. « Mangeons le dîner » nous donne :
c323ef87e6a9e4fe8fede20738a7e3c7122f5ffa504bdf6c5541a33e76949812
Nous avons donc cette fonction mathématique avec une gamme de propriétés intéressantes, mais en quoi est-elle utile dans les applications blockchain ?
Les propriétés des hachages nous permettent de :
- Prouver que nous possédons certaines informations, sans avoir à révéler cette information.
- Empêcher la modification des transactionspar des adversaires.
- Vérifier la confirmation des transactionssans avoir une connaissance complète d'un bloc.
- Réduisez la bande passante des transactions.
- Réalisez des puzzles cryptographiques, qui font partie du processus d’exploitation minière.
Ces différentes fonctionnalités des hachages sont utilisées dans quatre domaines principaux du système Bitcoin :
- Lorsqu'une transaction est effectuée,les données des transactions précédentes sont hachéeset inclus dans la présente transaction.
- Lorsqu'une nouvelle transaction est effectuée,les données sont également hachées pour former un identifiant de transaction(txid), qui est un identifiant qui peut être utilisé pour localiser les détails de la transaction sur la blockchain.
- Un hachage de la clé publique est utilisé comme adresseoù les utilisateurs peuvent envoyer des fonds. Cela rend les adresses plus courtes et plus pratiques, tout en offrant certains avantages en matière de sécurité.
- Dans le cadre du Bitcoinsystème de preuve de travail(ceci est discuté plus tard dans le Preuve de travail section).
Processus de transaction de base de Bitcoin
Maintenant que nous avons expliqué quelques-unes des principales techniques cryptographiques derrière la blockchain Bitcoin, nous pouvons examiner comment elles sont utilisées dans une transaction.
La première chose dont vous devez être conscient est queles transactions Bitcoin ne se déroulent pas de manière intuitive. Tous les bitcoins que quelqu'un possède ne sont pas tous mélangés, et ils ne peuvent pas être simplement récupérés dans le montant exact nécessaire à une transaction (plus les frais de transaction).
Plutôt,le solde total est conservé séparément dans des allocations en fonction de la manière dont il a été reçu. Disons qu'Alice dispose d'un solde total de 12 bitcoins, qu'elle a reçus au cours de trois transactions distinctes. Ses bitcoins seront stockés dans les montants distincts dans lesquels elle les a reçus lors des transactions précédentes.
Disons que son solde est composé d’une transaction précédente de trois bitcoins, d’une transaction précédente de quatre bitcoins et d’une transaction précédente de cinq bitcoins. Cela fait un total de 12 bitcoins. Chacun de ces montants est le résultat des transactions précédentes, et ils sont désormais sous le contrôle d’Alice.
Supposons maintenant qu'Alice souhaite effectuer une transaction de dix bitcoins pour acheter une voiture à Bob.Pour couvrir le coût total, elle devrait utiliser les bitcoins de chacune des trois transactions précédentes.Ces résultats des transactions passées deviendraient désormais les intrants de la nouvelle transaction.
Cela peut paraître étrange, mais comme les transactions précédentes ne représentent pas exactement 10 bitcoins, Alice ne peut pas simplement envoyer 10 bitcoins et en laisser deux dans son portefeuille. Puisque la seule façon de constituer les 10 bitcoins est de combiner les trois transactions passées comme entrées,elle devrait envoyer l'intégralité des trois lots, totalisant 12 bitcoins, pour couvrir la valeur totale de la transaction.
Heureusement, cela ne signifie pas qu’Alice perd les deux bitcoins supplémentaires. Ils sont traités dans le cadre de la transaction, maisils lui sont rendus en guise de monnaie(moins les frais de transaction).
Le processus de transaction pour l'achat d'une voiture à 10 bitcoins
Entrées Sorties
3 (d’une des transactions précédentes d’Alice) > 10 (à Bob)
4 (d'une des transactions précédentes d'Alice) > 2 (retour à Alice comme monnaie)
5 (d’une des transactions précédentes d’Alice) >
Normalement, les frais seraient également prélevés avant de restituer la monnaie à l'expéditeur. Étant donné que le montant des frais serait négligeable par rapport aux montants des transactions, nous avons laissé les frais de côté pour garder les chiffres bien rangés.
Examiner plus en profondeur la transaction
Pour la transaction ci-dessus, chacune des entrées aurait eu sondonnées de transaction précédentes hachées, et il aurait alors été inclus dans la transaction en cours. De plus, Alice doit prouver qu’elle est propriétaire des trois entrées distinctes (qui sont les sorties de transactions précédentes – nous le savons, c’est déroutant !).
Alice fait cela en utilisant la signature scénario , qui est un script de déverrouillage. Ce script est composé de deux aspects, la clé publique d'Alice et sa signature numérique. La clé publique indique l'adresse des sorties des transactions précédentes (qu'elle souhaite utiliser comme entrées pour la nouvelle transaction), tandis que sa signature numérique montre qu'elle est la véritable propriétaire.
Comme nous en avons discuté dans le Signature numérique ci-dessus, sa signature prouve qu'elle en est la propriétaire, car la signature numérique n'a pu être réalisée qu'à l'aide de sa clé privée. La propriété d'Alice est vérifiée avec sa clé publique à l'aide d'un script à clé publique .
Ce diagramme montre comment les transactions forment une chaîne. Dans la deuxième transaction, le propriétaire 2 combine sa clé publique avec les données du bloc précédent. Le propriétaire 2 crée également une signature numérique avec sa clé privée pour prouver sa propriété de la pièce. Ceci est vérifié avec la clé publique du propriétaire 2. Visuel de transaction Bitcoin par Inkscape sous licence CC0
Comment les blockchains peuvent-elles empêcher les doubles dépenses ?
Nous espérons que vous avez désormais une idée raisonnable des processus cryptographiques sous-jacents que Bitcoin et d’autres blockchains utilisent dans leurs transactions. Cela nous ramène là où nous nous sommes arrêtés dans notre exemple précédent : HComment Jason peut-il savoir si le massage a déjà été utilisé ou non ?Nous appelons cela le problème de la double dépense.
Sur tout réseau décentralisé et pseudonyme,on s'attend à ce que certaines personnes trichent pour essayer de s'enrichir. Bitcoin et d'autres blockchains résolvent ce problème grâce à un processus de vérification par les pairs appelé minage.
Pour expliquer comment cela fonctionne, étendons un peu plus notre analogie précédente :
La meilleure façon de visualiser le processus d'extraction de blockchain est d'envoyer une copie du contrat à chaque fois qu'une transaction est effectuée à tous les membres du groupe d'amitié.
Après qu'un certain nombre de transactions aient été effectuées,chaque personne combinerait les détails de la transaction dans un seul dossier. Tous les membres du groupe d'amitié prendraient alors le résultat du dossier de transactions précédent, le combineraient avec les détails de la transaction en cours, puisessayer de résoudre un problème mathématique complexe en utilisant ces entrées.
La première personne à trouver la solution la diffuserait ensuite à tous les autres membres du groupe d'amitié., qui sont capables de vérifier rapidement s'ils ont inclus les bonnes transactions et s'ils ont la bonne réponse ou non.
Si la réponse est correcte,la personne qui a réussi en premier reçoit une récompense. Cette récompense est ce qui incite chacun à valider les transactions. Si quelqu’un essaie de tricher, le reste du groupe le découvrira, ce qui signifie que les tricheurs n’auront aucune chance de réclamer la récompense et que l’effort sera vain.
Une fois qu'une personne a réussi le problème mathématique et réclamé sa récompense, l'ensemble du groupe commence à collecter de nouvelles transactions dans un autre dossier. Une fois qu'ils en ont assez, ils les combinent avec le résultat du dossier précédent et ctenter de résoudre un nouveau problème mathématique dans l'espoir de remporter la prochaine récompense.
Le résultat du dossier précédent est inclus dans le nouveau et une chaîne de résultats est formée, ce qui permet aux utilisateurs de vérifier l'historique des transactions etvérifier que tout le long de la chaîne est légitime.
Étant donné que tout le monde conserve une copie comprenant l’historique des transactions et que la seule incitation financière efficace est de contribuer honnêtement au processus de validation, cela évite les doubles dépenses.
L’ensemble de ce processus peut sembler inefficace, mais heureusement, tous ceux qui effectuent une transaction blockchain ne sont pas obligés de le faire. La tâche est laissée aux mineurs et elle est automatisée, elle n’implique donc pas autant de travail que notre exemple.
L’analogie ci-dessus est imparfaite, car il s’agit d’une simplification d’un processus relativement complexe. L’objectif principal est de vous donner une idée visuelle de ce qui se passe réellement. Nous discuterons de la façon dont les choses fonctionnent réellement à un niveau plus technique dans les sections suivantes.
Nœuds et mineurs
Un nœud stocke une copie de la blockchain, tandis qu'un mineur crée et valide les blocs . Les nœuds complets stockent l’intégralité de l’historique des transactions blockchain, tandis que les mineurs ne s’intéressent qu’au bloc précédent et à celui sur lequel ils travaillent actuellement.
En plus de stocker les données de la blockchain, les nœuds servent de relais réseau , aidant à diffuser des informations aux utilisateurs et aux mineurs. Les nœuds vérifient également les blocs générés par les mineurs en s'assurant que les hachages correspondent aux données de transaction.
Au début du Bitcoin, il n’y avait pas de séparation entre les nœuds et les mineurs. Les termes étaient utilisés de manière interchangeable pour désigner les entités qui étaient en concurrence pour valider les transactions dans un bloc et stockaient également la blockchain utilisée pour vérifier les transactions passées.
Ces jours,il est possible d’héberger un nœud sans réellement exploiter.Un nœud complet peut être utilisé à la fois comme portefeuille et pour vérifier la chaîne de transactions, car il contient une copie complète de la blockchain. Dans le même ordre d’idées, les mineurs ne sont pas techniquement obligés d’héberger un nœud, même si en réalité beaucoup le font.
Horodatage
La première étape pour éviter les doubles dépenses consiste à publier largement un relevé des transactions antérieures. Si tout le monde dispose d’une copie des enregistrements de transactions précédentes, il sait si certaines pièces ont déjà été dépensées.
Dans le protocole Bitcoin, les blocs de données de transaction sont hachés, puis le hachage est réparti sur tout le réseau. Ce hachage agit comme un horodatage, prouvant que les données devaient exister au moment où le hachage a été créé, sinon le hachage ne pourrait pas exister.
Chaque nouvel horodatage est un hachage qui combine les données de transaction du bloc actuel et l'horodatage du bloc précédent. Cela crée une chaîne d'horodatages, les futurs horodatages solidifiant ceux qui les ont précédés.
Ce diagramme montre comment les transactions sont hachées pour former un bloc et comment les données du bloc précédent sont hachées dans un nouveau bloc. Données de bloc Bitcoin parMatthieu Wandersous licence CC0
Réseaux blockchain
L'un des principaux objectifs d'une blockchain est de créer unsystème décentralisé qui peut se vérifier sans avoir recours à des tiers. Ceci est généralement réalisé via un processus de vérification peer-to-peer, dans lequel le réseau offre des incitations financières pour valider honnêtement les données de transaction. De nombreuses blockchains appellent ce processus le minage.
Dans le protocole Bitcoin, chaque fois qu'une transaction est effectuée,les détails sont envoyés via un relais de nœuds jusqu'à ce que chaque nœud du réseau reçoive les données.
Les mineurs collectent ensuite chacune de ces transactions et les regroupent en bloc. Chaque mineur tente ensuite de résoudre l’énigme cryptographique du bloc. Lorsqu'un mineur réussit, il envoie le bloc à tous les nœuds du réseau.
Les nœuds n'accepteront le bloc que si toutes les transactions qu'il contient sont vérifiées et n'ont pas déjà été dépensées.Lorsque les nœuds acceptent un bloc, ils prennent son hachage et le distribuent aux mineurs, qui l'intègrent ensuite dans le prochain bloc de transactions qu'ils tentent de résoudre.
Si deux mineurs distincts résolvent un bloc en même temps, les autres mineurs prendront les données du bloc qu'ils ont reçu en premier et les incorporeront dans le bloc suivant sur lequel ils travaillent. Ils sauvegarderont également les données du deuxième bloc, juste au cas où ils en auraient besoin plus tard.
L’ensemble du réseau travaillera sur un bloc ou sur l’autre jusqu’à ce que le bloc suivant soit résolu. À ce stade, ceux qui travaillaient sur l’autre bloc l’abandonneront. En effet, les mineurs accepteront toujours la chaîne la plus longue comme étant la bonne. Ils concentrent leur travail sur l’extension de la chaîne la plus longue, car c’est le moyen le plus probable pour eux d’obtenir une récompense.
Preuve de travail
Le protocole Bitcoin utilise un concept appelé preuve de travail pour valider ses transactions. C’est basé sur celui d’Adam Back plus tôt Schéma Hashcash . D'autres blockchains utilisent psystèmes de toit de piquet, de preuve de stockage ou de preuve d'espace, mais nous n’aborderons pas les deux derniers dans cet article.
Afin d'ajouter un horodatage au réseau, un mineur doit être le premier à résoudre un puzzle cryptographique, puis diffuser le résultat aux nœuds du réseau, qui vérifient la réponse. Le puzzle cryptographique nécessite une quantité importante de ressources informatiques, et les mineurs le terminent dans l’espoir de résoudre le blocage et de recevoir la récompense. La récompense est actuellement fixée à 12,5 bitcoins .
Si un mineur crée un bloc qui ne correspond pas aux résultats du reste du réseau, le bloc sera laissé pour compte et les ressources dépensées auront été gaspillées. Hors circonstances exceptionnelles (telles qu'un 51% d'attaque ), il est plus rentable pour un mineur d'agir honnêtement , plutôt que de tenter de perturber le réseau ou de publier des résultats frauduleux.
Ce mécanisme de preuve de travail est ce qui maintient le réseau honnête. Si quelqu’un voulait modifier ou altérer un bloc, il devrait refaire complètement le travail de résolution du bloc. Plus un bloc est placé en arrière sur une chaîne, plus il est difficile de le modifier. En effet, tous les blocs qui suivent devraient également être modifiés.
Ce système de preuve de travail est basé sur leAlgorithme SHA-256. Il convient aux besoins du système car il est relativement difficile de calculer la solution, mais facile de la vérifier.
Preuve de participation
Les algorithmes de preuve de travail nécessitent une puissance de traitement importante,ce qui les rend coûteux en termes d’infrastructures et de coûts énergétiques.
Des alternatives légères telles quedes preuves de participation ont vu le jour pour rendre le processus de vérification plus efficace.Les protocoles de blockchain de preuve de participation utilisent diverses techniques, mais ils impliquent généralement de choisir le créateur du bloc suivant en fonction d'une combinaison de caractère aléatoire et d'âge ou de richesse des pièces.
Le nombre de pièces dont dispose un utilisateur, ou bien la durée pendant laquelle les pièces sont détenues, constitue la mise de l’utilisateur. L'enjeu garantit que l'utilisateur est réellement engagé envers la santé globale du système.
Bien que ces facteurs soient importants dans la délégation du bloc suivant, ils sontcombiné avec le hasard pour éviter que le système soit centralisépar les utilisateurs les plus riches ou les plus anciens.
La sélection du bloc suivant via des systèmes de preuve de participation garantit que les transactions sont validées correctement, mais d'une manière beaucoup plus efficace que les calculs impliqués dans les systèmes de preuve de travail.
Ethereum s'oriente actuellement vers un algorithme de preuve de participation pour augmenter son efficacité, tandis que PeerCoin et NXT ont déjà mis en place des systèmes de preuve de participation.
Des énigmes cryptographiques
La seule façon de résoudre les énigmes cryptographiques SHA-256 et de gagner la récompense est de passer par Force brute . Cela implique de deviner des nombres au hasard jusqu'à ce qu'un mineur trouve la bonne réponse.
Pour compléter les énigmes, les mineurs prennent les données de transaction du bloc actuel et le hachage du bloc précédent dans leur entrée. Ils doivent ensuite deviner une entrée distincte, appelée nonce (un nombre arbitraire), de sorte que lorsque toutes ces entrées passent par la fonction de hachage, la valeur résultante commence par un nombre défini de zéros. Une solution pourrait ressembler à ceci :
0000000000000000009b85ea7f6a14ca3d23b928ec3817263a831a4fc39be92
À mesure que le réseau Bitcoin devient plus puissant, la difficulté des énigmes est augmentée de façon exponentielle en exigeant que les solutions incluent un plus grand nombre de zéros . Il est donc beaucoup plus difficile et plus long de trouver une réponse correcte.
Il peut être difficile de visualiser comment fonctionne ce processus. Heureusement, il existe un outil avec lequel vous pouvez jouer, cela vous donne une idée raisonnable de la façon dont les mineurs s'affrontent dans ces énigmes.
Avec cet outil, vous pouvez émuler le processus de minage en prenant un bloc donné de données de transaction ainsi que le hachage du bloc précédent, puisessayer de deviner lequel des cas occasionnels vous donnera un résultat commençant par quatre zéros. Normalement, la solution nécessite un nombre de zéros beaucoup plus grand, mais cet exemple n’est qu’une simplification.
Pour simplifier les choses, nous ferons comme si nos données de transaction, ainsi que le hachage du bloc précédent, sont simplement le chiffre « 1 ». Dans le monde réel, la saisie serait beaucoup plus complexe.
Dans l'exemple ci-dessous, nous avons le numéro de bloc 1 , avec un nonce deviné au hasard 72608 pour notre saisie de données de 1 :
Comme vous pouvez le voir, la supposition de 72608 n'a pas abouti , puisque le hachage en bas ne commence pas par quatre zéros. Si vous vous ennuyez, vous pouvez essayer de trouver manuellement une solution en entrant des chiffres pour le moment. Continuez à essayer jusqu'à ce que vous trouviez un résultat commençant par quatre zéros.
Alternativement, vous pouvez faire les choses de manière simple, en cliquant sur le bouton « Le mien ' bouton. Ce bouton génère automatiquement des suppositions pour essayer de trouver une solution. En appuyant sur le bouton et en attendant quelques instants, on obtient le résultat suivant :
Pour l'entrée donnée de 1 , une occasion de 64840 donne un hachage réussi qui commence par quatre zéros. Si nous étions le premier mineur de Bitcoin à dépenser la puissance de calcul nécessaire pour trouver cette réponse au bloc, nous recevrions la récompense du bloc.
Ces énigmes cryptographiques peuvent sembler compliquées, mais le système de preuve de travail est important pour maintenir l’intégrité des blockchains. Si la validation des transactions ne nécessitait pas une dépense importante de puissance de calcul, il serait beaucoup plus facile pour les attaquants de falsifier le système.
Blockchains : une technologie en pleine émergence
Tout au long de cet article, nous avons principalement évoqué le fonctionnement de ces processus dans le contexte du protocole Bitcoin. C'est simplement parce queBitcoin a été la première blockchain fonctionnelle, et la plupart des autres reposent fortement sur sa conception..
De nos jours, il existe des milliers de crypto-monnaies et de blockchains différentes, et il aurait été impossible d’aborder les distinctions techniques entre chacune d’entre elles. Malgré les différences qui existent entre eux, l’ensemble du monde de la blockchain repose sur des concepts cryptographiques tels que la cryptographie à clé publique, les signatures numériques et le hachage.
Les différentes blockchains ont simplement des structures légèrement différentes et appliquent ces concepts à leur manière. Ces différentes implémentations ont leurs propres avantages uniques, qui donnent aux blockchains le potentiel d’être utilisées dans une grande variété de situations.
Chaîne de blocs par xresch sous licence CC0