De nos jours, il semble impensable de pouvoir envoyer de la valeur à l’autre bout du monde, sans qu’un employé ou un algorithme d’une entité centralisée valide que vous avez bien les fonds sur votre compte bancaire avant de les transférer. Comment la blockchain, grâce aux procédés mathématiques, informatiques et algorithmiques, permettent d’évincer cette nécessité de centralisation ? Et surtout éviter la fraude à la double dépense. 

Est-il possible de copier l'or, ou de le reproduire ? Non.  Est-il possible de copier un billet d'un dollar ? Oui. Mais il vous faudra du matériel spécifique et un type de papier adéquat. Puis il sera impossible de donner un billet de 10 euros à un commerçant, puis de réutiliser ces mêmes 10 euros chez un autre commerçant (sauf si vous êtes un négociateur hors pair). 

Cependant, ce n'est pas le cas avec les actifs numériques. Un actif numérique est un ensemble de codes qui peuvent être copiés et envoyés à plusieurs destinataires. Si c’était le cas, les actifs numériques dans le cadre transactionnel pourraient être considérés comme une vaste supercherie. Surtout si aucun intermédiaire financier vient se placer entre deux individus pour contrôler les transactions. Fort heureusement la blockchain apporte la solution à ce problème de double dépense.  

La double dépense à la sauce blockchain

De manière conceptuelle, il s’agit d’éviter qu’un individu prétende qu’il détienne plus d’argent qu’il en a réellement, et surtout de dépenser plus d'argent qu'il en détient. Dans le cadre d’une blockchain, un processus de vérification est alors nécessaire pour se permettre d’outrepasser la nécessité de la vérification d’une banque centralisée. Ici, l’idée est que le réseau (les entités connectées avec leurs ordinateurs) décide à la majorité de la validité ou non d’une transaction. La finalité est la même : la transaction sera autorisée ou non. Cependant la différence se joue au niveau de la source de légitimation. C’est la majorité du réseau qui, en se substituant à l’institution bancaire centralisée, valide la transaction sur la base de la quantité (+50% des nœuds, autrement dit, des ordinateurs connectés sur le réseau sont d’accord que la transaction est légitime) plutôt que sur la qualité de l’autorité (une banque). 

Système centralisé vs décentralisé
Source : economie.gouv.fr

Ici nous voyons l'intérêt de la notion de “décentraliser” émerger. Plus des acteurs sont présents partout dans le monde sur le réseau pour vérifier les transactions, plus il y a de validateurs pour légitimer les blocs qui incluent les transactions, plus le réseau devient “sûr”. Avec quasiment 15 000 nœuds validateurs sur le réseau Bitcoin actuellement, si une dizaine deviennent défaillants, des milliers d’autres pourront prendre le relais sans problème (puisque chaque nœud possède le même historique de transactions que tous les autres). Contrairement à une entité centralisée qui peut être corrompue, un système décentralisé de grande ampleur devient difficilement corruptible. 

Dans les systèmes de monnaie numérique, s'assurer que les fonds ne sont pas dupliqués est d'une importance primordiale. Les systèmes de blockchain ne fonctionnent pas si X reçoit dix unités et les copie/colle dix fois pour créer un total de 100 unités. Les systèmes de blockchain ne fonctionnent pas non plus si X envoie les mêmes dix unités à Y et Z simultanément. En d'autres termes, il doit y avoir un mécanisme qui garantit que les fonds du système ne sont pas dépensés en double.

Schéma de la double dépense
Source : Digitemis.com

Dans cette logique, il est obligatoirement nécessaire que chaque propriétaire soit identifiable et que les transactions soient publiques afin qu’elles soient vérifiées. Autrement dit, il faut être en mesure d’enregistrer la première transaction d’un individu sur la blockchain (finalement un registre public et consultable par tous à tout moment). Exemple : Etienne achète pour la première fois de sa vie 10 bitcoins. Etienne rentrera dans l’historique de Bitcoin dès l’acquisition de ses BTC afin qu’on puisse vérifier et tracer ses prochains mouvements. Si Etienne envoie 4 bitcoins à un autre individu alors l’entièreté du réseau pourra tracer la transaction. A l’aide de protocoles cryptographiques, la communauté sera en mesure de dire si Etienne a le droit d’envoyer 10, 20 ou 100 bitcoins à quelqu’un d’autre sur le réseau (le concept de la double dépense). Dans le cas de la blockchain Bitcoin, nos informations personnelles sont cryptées afin de ne pas être identifiables directement sous notre propre nom. Cette notion fera l’objet d’un épisode entier.

Système de la double dépense
Source : Bitpanda


Nous comprenons qu’il va être difficile de mentir comme tout est visible et traçable sur livre public des transactions. Chaque transaction étant en plus irréversible. Ce qui est gravé sur la blockchain est définitif et infalsifiable. 

Bitcoin, la limite du temps. 

Imaginons qu’un utilisateur souhaite utiliser son bitcoin pour faire plusieurs achats à différents commerçants simultanément. En moyenne un bloc est vérifié et validé toutes les 10 minutes sur Bitcoin, ce qui permet à un escroc d’utiliser son bitcoin vers autant de commerçants qu’il le souhaite tant que la première transaction n’est pas validée par le réseau. Pour rappel un bloc contient environ 4000 transactions pour un poids de 1Mo.

Notre escroc détient donc 1 bitcoin. Il sait qu’il peut utiliser simultanément son bitcoin chez plusieurs commerçants (le principe de la double dépense). Les mineurs mettront X minutes pour valider la première transaction réalisée avec son bitcoin alors que les autres seront rejetées par le réseau. Les commerçants devront alors attendre le temps que la transaction soit vérifiée et validée par les mineurs pour éviter une escroquerie.

 

Schéma des transactions en attente
Source : oulasri.github.io/

Cette vérification demande des calculs mathématiques complexes pour vérifier ces transactions. C’est là que les mineurs (à l’aide des ordinateurs connectés au réseau) entrent en jeu pour vérifier les opérations. Imaginez des ordinateurs qui réalisent des calculs en permanence pour trouver une solution mathématique afin de valider le bloc, autrement dit le clôturer et passer au bloc suivant. Mais pour vérifier ces transactions et donc la débauche d’énergie engendrée, le mécanisme de  “preuve de travail” prévoit de rémunérer ces mineurs. 

La preuve de travail est un mécanisme de consensus utilisé pour confirmer que les participants au réseau, appelés mineurs, calculent des codes alphanumériques valides (appelés hachages) pour vérifier les transactions Bitcoin et ajouter le bloc suivant à la blockchain. Nous reviendrons sur "la preuve de travail" en long en large et en travers tout au long de la saga. Ici nous nous cantonnons au concept de double dépense qui est une caractéristique de cette “preuve de travail” (Proof-of-Work pour la version anglo-saxonne).

Le problème des généraux byzantins

Le problème des généraux byzantins est un problème d’informatique qui a été formalisé par Leslie Lamport, Robert Shostak et Marshall Pease en 1982. Il s’agit d’une métaphore faisant intervenir des généraux qui assiègent une ville ennemie. Un problème remis au goût du jour par le mystérieux Satoshi Nakamoto pour imager la solution apportée par Bitcoin.

Le problème des généraux byzantins peut être compris en imaginant une ville qu'il faut conquérir. Elle ne peut pas être conquise en attaquant simplement d'un côté car elle a une défense adéquate pour lutter sur un seul côté. Cependant, si deux armées attaquaient des deux côtés, la ville serait facilement vaincue. Sachant cela, les généraux décidèrent de diviser leur armée en deux afin que les armées puissent attaquer la ville des deux côtés à la fois. Cependant, la clé est que les deux groupes d'armées attaquent la ville simultanément. S'il n'y avait pas de communication numérique entre les deux généraux, il serait très difficile de s'assurer que les deux armées attaquent la ville en même temps. Même si les généraux utilisaient un messager pour coordonner les attaques, les généraux pourraient ne pas être en mesure de faire confiance au messager. Si la sécurité de la ville devait capturer le messager d'origine et en envoyer un faux de l'autre côté, par exemple, l'attaque échouera. Existe-t-il un moyen d'authentifier un message sans faire confiance au messager (tiers de confiance) ?

Des généraux à Satoshi

La solution au problème des généraux byzantins n'est pas simple. Peut-être qu'une sorte de cryptage aiderait les généraux à partager une phrase secrète qui décode et vérifie l'authenticité du message sous-jacent. Dans un monde informatisé, décoder des algorithmes simples est très facile. Pour cette raison, les algorithmes de hachage (fonction mathématique) proposés par Satoshi Nakamoto ont été extrêmement utiles pour augmenter la complexité de ces algorithmes.

Plus précisément, Satoshi Nakamoto a proposé une structure de données connue sous le nom de blockchain où les participants (nœuds) exécutent des algorithmes complexes pour résoudre divers problèmes mathématiques. Une fois un problème mathématique résolu, un bloc est créé et communiqué à l'ensemble du réseau.

De même, les transactions initiées par les utilisateurs sont également vérifiées par ces nœuds. En effet, une transaction n'est pas immédiatement ajoutée à la blockchain. Elle n'est ajoutée à la blockchain qu'après qu'un nœud a créé un bloc en utilisant une puissance de calcul. En échange, le nœud est récompensé par de la monnaie numérique. Et oui vous l’aurez compris, les calculs mathématiques de vérification des transactions nécessitent une grande quantité d’énergie (électricité), il a fallu imaginer un moyen pour récompenser ces nœuds pour les inciter à valider les transactions. La récompense en bitcoins a été alors apportée. Nous y reviendrons également plus tard, car ce sujet nécessite un article dédié.

De plus, les transactions sont communiquées sur le réseau en direct, ce qui signifie que chaque ordinateur du réseau connaît chaque transaction au fur et à mesure qu'elle se produit. Si un intrus essaie de communiquer une fausse transaction ou de dépenser deux fois les mêmes pièces sur le réseau, il sera rejeté car les autres nœuds l'invalideront. La blockchain via la preuve de travail est donc un moyen pratique de contourner le problème de la double dépense et le problème des généraux byzantins.

Schéma d’une blockchain
Source : Bitpanda

La blockchain utilise des algorithmes complexes qui empêchent la fraude et incitent les participants à agir honnêtement. En termes simples, plus il y a de participants et de blocs ajoutés sur la chaîne, moins il y a de probabilité qu'un faux bloc puisse être ajouté à la blockchain. Ou, selon les mots du mystérieux créateur Satoshi Nakamoto, « la probabilité qu'un attaquant rattrape son retard diminue de façon exponentielle à mesure que les blocs suivants sont ajoutés. ” Source : White Paper : Bitcoin : A Peer-to-Peer Electronic Cash System).

Force est de constater que Bitcoin s'est révélé inviolable depuis sa création il y a maintenant plus de treize ans. Le mécanisme de la "preuve de travail" prouve, pour l'instant, la possibilité de se passer d'un tiers de confiance pour réaliser une transaction sur la blockchain. Dans les prochains épisodes nous explorerons la façon dont nous sommes identifiés sur le réseau (clé publique et clé privée) et les différentes blockchains existantes (permissionnées, privées, publiques). Rendez-vous pour la suite de la saga dans les colonnes de Zonebourse très prochainement.