Ajouter un commentaire

Par :
Rachid OUSLARI

ven, 07/09/2018 - 15:17

Introduction

La technologie phare de ces dernières années est bien la blockchain. Certains la décrivent comme une avancée aussi importante que l’était Internet à la fin du XXe siècle. Si vous n’en avez jamais entendu parler, vous avez probablement dû entendre parler de cryptomonnaie comme par exemple le Bitcoin. L’objectif de cet article est de comprendre l’avancée technologique que procure la Blockchain, puis de s’intéresser aux nouvelles générations de cryptomonnaies. Dix années après l’apparition de la première blockchain mondialement connue, le Bitcoin, nous allons voir quelles sont les avancées dans ce domaine.

Histoire de la blockchain

Afin d’introduire le concept de la blockchain nous avons besoin de nous situer dans le contexte de la crise bancaire et financière de l’automne 2008. Cette crise a provoqué un problème de confiance vis-à-vis des intermédiaires et plus précisément des institutions bancaires. Ces intermédiaires dictent leurs lois, abusent parfois de leurs autorités et, plus important, concentrent les risques.

C’est dans ce climat de méfiance que sont nées les cryptomonnaies. La première et de loin la plus célèbre est le Bitcoin. Elle a été créée en 2008 par Satoshi Nakamoto et repose sur plusieurs principes. L’idée de base était de créer une monnaie d’échange entre utilisateurs en se passant des institutions bancaires afin de transférer des biens et des services de façon plus libre et indépendante. Néanmoins ce principe introduit plusieurs problématiques :

  • L’échange d’argent se fait d’utilisateurs à utilisateurs
  • ll faut assurer l'unicité de l'attribution d'un même bitcoin
  • Et il faut garantir que la monnaie se gère sans autorité supérieure ou centrale

Pour répondre à ces problématiques, le Bitcoin utilise la technologie de la blockchain et plus précisément la combinaison innovante de trois mécanismes : les réseaux Peer-to-peer, la cryptographie asymétrique et la preuve de travail.

Les réseaux Peer-to-peer

Le réseau pair à pair est un protocole de transfert de données proche du modèle client-serveur où chaque client est lui-même un serveur. De cette manière un utilisateur du réseau, appelé un noeud, met à la disposition des autres noeuds, un fichier. Ce fichier est copié par tous les noeuds de proche en proche jusqu’à ce que l’ensemble du réseau en possède une copie. Dans le cas du Bitcoin, les utilisateurs échangent un registre et à chaque fois qu’un noeud apporte un changement à ce registre tous les noeuds du réseau mettent à jour leur registre local.

La cryptographie asymétrique

La cryptographie asymétrique est une méthode de chiffrement de message. Elle permet de générer mathématiquement deux nombres. Ces deux nombres sont appelés clé privée et clé publique. La clé publique peut être diffusée à quiconque souhaite chiffrer un message, mais la clé privée est gardée secrète.

Ce système peut être utilisé pour :

  • Chiffrer un message à envoyer : imaginons Bob qui utilise la clé publique d'Alice afin de crypter un message. Alice va alors déchiffrer ce message à l’aide de sa clé privée qu’elle est la seule à détenir. Le message est alors totalement confidentiel et seul Alice pourra consulter le contenu de ce message.

  • S’assurer de l’authenticité de l’expéditeur : le rôle des clés est interchangeable. Une clé privée peut aussi servir à chiffrer un message pour qu’une clé publique le déchiffre. Alice qui souhaite authentifier un message va utiliser sa clé privée pour crypter celui-ci et tous les détenteurs de la clé publique d’Alice peuvent valider qu’elle est bien l’auteur du message.

Dans notre cas, afin d’éviter la possibilité qu’un même bitcoin soit attribué deux fois, la technologie Bitcoin va utiliser l’authenticité de l’expéditeur grâce à la cryptographie asymétrique. Si Alice veut devenir membre du réseau Bitcoin, elle va alors générer une clé privée et une clé publique. La clé privée va rester en sa possession et elle va diffuser la clé publique à tous les utilisateurs du réseau. Afin d’effectuer une transaction, elle va signer celle-ci avec sa clé privée. De cette manière, tous les utilisateurs du réseau sont sûrs que c’est Alice qui a créé cette transaction. Tant que Alice ne dévoile pas sa clé privée, elle sera la seule personne à pouvoir effectuer une transaction avec ses bitcoins. Maintenant que les transactions sont sécurisées, comment peut-on savoir que l’émetteur possède réellement le bitcoin à transférer ?

La preuve de travail

Afin de s’assurer qu’un utilisateur possède réellement le bitcoin à transférer et que la monnaie se gère sans autorité supérieure et/ou centrale, il va falloir trouver une astuce et mettre tous les noeuds du réseau d’accord sur l’ordre des transactions. Si l’ordre des transactions est la même pour tous les noeuds du réseau, on peut remonter dans les blocs et savoir si un émetteur possède réellement un bitcoin. C’est le concept de la preuve de travail (Proof-of-Work en anglais).

Toutes les transactions sont groupées dans des blocs et chaque bloc référence le bloc précédent. De cette manière il n’y a qu’une seule chaîne de blocs qui est répliquée sur tous les noeuds du réseau. Nous pouvons alors affirmer qu’une transaction qui se trouve dans un bloc sera obligatoirement postérieure aux transactions présentes sur tous les blocs précédents. Les transactions sont donc ordonnées selon une suite chronologique.

La question maintenant est de savoir comment créer de nouveaux blocs contenant les nouvelles transactions. Avant d’être incluses dans un bloc, les transactions sont dites en attente et doivent être confirmées. Pour créer un nouveau bloc tous les noeuds du réseau font appel au minage.

Le minage

Le concept du minage est simple. Chaque bloc est identifié par une clé de hachage, et l’objectif des noeuds du réseau qui minent est de créer un identifiant (une clé de hachage) valide pour le nouveau bloc. Toutes les transactions en attente seront alors regroupées dans le nouveau bloc alors disponible dans la blockchain.

Afin de trouver un identifiant valide, les noeuds du réseau font appel à une fonction de hachage. Grâce à cette fonction, les noeuds hachent l’identifiant du bloc précédent, les identifiants des transactions du bloc que l’on essaie de former et une chaîne de caractères aléatoires. Un noeud pourra créer le nouveau bloc si le hash qu’il vient de créer est valide; c’est-à-dire s’il comporte un grand nombre de zéro dans ses premiers chiffres. Le noeud met alors à jour la blockchain et propage cette dernière de proche en proche dans le réseau Peer-to-peer.

Sachant que le hash est généré aléatoirement, un noeud a besoin de beaucoup de tentatives pour en trouver un qui soit valide. Ces tentatives génèrent beaucoup de travail d’où le nom preuve de travail. Dans l’exemple du bitcoin, la probabilité de trouver un noeud valide est de 9,18x10^-22 et un bloc est créé toutes les 10 minutes. Cette énorme quantité de travail est assurée par la puissance de calcul du matériel des mineurs (serveur, GPU, etc..). Pour les récompenser, une somme de 12,5 bitcoins leur est reversée lorsqu’une clé de hachage valide est trouvée.

De cette manière les transactions sont vérifiées et stockées dans des blocs et si quelqu’un de mal intentionné veut changer une transaction dans un bloc; il doit changer l’identifiant de ce bloc (sa clé de hachage). Sachant que chaque bloc référence le bloc précédent, il doit aussi changer cette référence et donc l’identifiant des blocs suivants et ainsi de suite. Sachant que trouver un seul identifiant de bloc est extrêmement coûteux, frauder le système est presque improbable.

Les réseaux peer-to-peer, la cryptographie asymétrique et la preuve de travail (PoW) qui permet de trouver un consensus distribué sont les trois mécanismes qui constituent la blockchain.

Prise de recul

Aujourd’hui les cryptomonnaies pèsent des centaines de milliards de dollars et prouvent au quotidien la fiabilité de la blockchain. Cette technologie est en application dans le domaine de la finance, il est temps de voir si elle est assez mature pour s’étendre à d’autres types d’informations.

La blockchain s’appuie sur trois idées fondamentales décrites dans le chapitre précédent :

  • La « désintermédiation » : nous pouvons nous passer des intermédiaires de confiance grâce au réseau peer-to-peer ce qui entraîne une diminution des coûts.
  • La traçabilité : l’utilisation d’un registre permet de rendre traçable chaque transaction car elles sont publiques. Cette traçabilité nous apporte une preuve numérique d’existence non effaçable. Néanmoins, malgré le fait que les transactions soient publiques, elles sont signées avec les clés de hachage privées des utilisateurs.
  • Un Consensus distribué : permet la conservation du registre par tous les utilisateurs et la vérification permanente des transactions, qui a pour effet de faciliter le travail ensemble et d’augmenter la sécurité.

C’est dans ce contexte que certaines personnes se sont posées une question simple mais cruciale : Est-il possible d’exécuter un code? Le bitcoin est une excellente innovation, mais est-il possible d’effectuer un virement à une certaine date par exemple. C’est de cette idée qu’est né le contrat intelligent (smart contract en anglais). C’est ce que je considère comme étant la deuxième génération de blockchain et de cryptomonnaie. Cette deuxième génération a été introduite par la technologie Ethereum.

Un smart contract est la distribution sur le réseau de petits programmes avec une mini-base de données sur la blockchain. De cette manière il ne peut pas y avoir de litige, l’exécution du programme est garantie par la blockchain. Actuellement il existe plusieurs applications qui se basent sur un smart contract. Ces applications sont appelées les dApps pour « decentralized application ». Une application dApp s’exécute sur la blockchain au lieu de s’éxécuter localement sur un appareil.

Néanmoins les dApps regroupent un grand nombre de contraintes. La première et la plus dangereuse selon moi c’est qu’un code déployé sur une blockchain est immutable. C’est-à-dire qu’il n’est pas modifiable. Lorsqu’il est déployé sur la blockchain il y sera présent pour toujours. Au vue de la maturité de la technologie, il est quasiment sûr que du code déployé sur une blockchain contient du bug. Pour corriger ces bugs il faut déployer un nouveau contrat sur la blockchain et récupérer les informations du contrat précédent. Il existe plusieurs scandales, où des hackers ont détourné des montants énormes (plusieurs millions de dollars) sur des dApps en exploitant du code bugé.

Une autre contrainte, les réponses sont très lentes. Lorsque l’on appelle une méthode d’un contrat via une transaction, il faut attendre que cette dernière soit vérifiée, donc qu’un bloc soit miné afin de pouvoir la stocker. Dans l’exemple de Ethereum, un bloc est miné chaque minutes.

Troisième génération

Les limites des blockchains de première et deuxième génération ont introduit l’arrivée de blockchain de troisième génération. Elles ont pour objectif de répondre aux problèmes rencontrés dans les versions précédentes tout en introduisant des innovations. C’est le cas par exemple de la technologie Cardano qui, selon moi, propose un tournant majeur dans le monde des cryptomonnaies.

Cardano a été lancée en septembre 2017 et se présente comme la blockchain de troisième génération. Cette technologie reprend les idées de base du Bitcoin et de l’Ethereum, et répond partiellement aux problèmes soulignés précédemment. Selon ses créateurs, elle offrirait une solution scalable, interopérable et durable.

Scalabilité

La scalabilité recouvre trois problématiques :

  • Le nombre de transactions par seconde,
  • Sachant que ces transactions manipulent des données, nous rencontrons un questionnement sur la fiabilité du réseau,
  • Etant donné que chaque transaction est stockée sur la blockchain, celle-ci grossit de jour en jour. Actuellement la blockchain du bitcoin pèse plus de 150 Go. Nous allons donc rencontrer un problème de stockage de data car chaque noeud du réseau doit stocker le registre en intégralité afin de vérifier les transactions.

Nous avons vu précédemment que la première génération de blockchain (Bitcoin) permettait de trouver un consensus distribué grâce à la preuve de travail (PoW). Pour répondre au problème du nombre de transactions par seconde, Cardano utilise lui un algorithme de Proof-of-Stake (PoS) afin de parvenir à un consensus. La preuve de travail, pour le minage, consiste à effectuer des calculs mathématiques afin de créer des nouveaux blocs dans la chaîne ou de valider des transactions. Le problème identifié précédemment, est que la création de bloc était très lente (par exemple 10min pour le bitcoin), et donc la vérification de transaction de même. Sans rentrer dans les détails, le protocole utilisé par Cardano permet de générer des blocs et vérifier les transactions de manière beaucoup plus rapide.

Ensuite, afin de réussir à effectuer des milliers de transactions par seconde, il est impossible de maintenir une topologie de réseau homogène. Tous les noeuds du réseau ne peuvent pas non plus étudier chaque transaction car ils n’auront pas une fiabilité du réseau suffisante. Cardano utilise l’architecture réseau RINA (Recursive InternetWork Architecture) http://irati.eu/the-recursive-internetwork-architecture/ afin de pallier à ce problème de support réseau.

Pour finir, tous les utilisateurs n’ont pas nécessairement besoin de toutes les données pour vérifier leurs transactions tout en ayant un niveau de sécurité élevé. Cardano n’a pas encore implémenté de solution pour réduire la taille de la blockchain, mais une réponse à ce problème est en cours de développement et devrait être disponible courant 2018. Cette réponse consiste en l’union de plusieurs méthodes : l’élagage, l’abonnement, la compression et la partition de données. Un noeud du réseau pourra alors manipuler une version « light » de la blockchain afin de valider une transaction ou de créer un bloc.

Voici comment Cardano répond au problème de scalabilité de la blockchain que rencontraient les deux premières générations.

Interopérabilité

L’idée d’interopérabilité est la même que dans le monde actuel de la finance. Le constat est qu’une seule monnaie ne peut pas gouverner le monde. Il existe une multitude de cryptomonnaies différentes, et l’idée ici est de pouvoir utiliser n’importe quelle autre monnaie avec Cardano. Chaque technologie comme le Bitcoin, l’Ethereum ou le système bancaire actuel possède son propre réseau mais il n’existe pas de standard permettant de communiquer entre eux. Il existe des plateformes d’échange, ce sont celles qui sont utilisées au quotidien pour échanger des devises en cryptomonnaie mais elles concentrent les risques. Il faut aussi avouer que c’est contradictoire de promouvoir une technologie de décentralisation totale sur des plateformes aussi centralisées.

L’objectif est de pouvoir utiliser n’importe quelle monnaie avec Cardano, c’est-à-dire une manière de pouvoir « lier » les blockchains de réseaux différents. Pour respecter l’idée générale de la blockchain, ces échanges devraient se faire sans l’utilisation d’un tiers de confiance (plateformes d’échanges). Pour répondre à ce problème, Cardano introduit les chaînes latérales. Le concept de base est que lorsqu’une transaction est faite d’une blockchain à une seconde blockchain différente, les chaînes latérales doivent regrouper un ensemble d’informations compressées qui nous donnent l’aptitude de savoir si la transaction est légitime. La transaction doit respecter les mêmes règles de base que les transactions des blockchains de première génération.

À ce stade les blockchains pourraient communiquer entre elles mais il est pertinent de constater qu’il reste une barrière entre le réseau bancaire et le réseau Blockchain. Cette barrière existe seulement car il y a un besoin, côté réseau bancaire, de traçabilité des transactions. Qui envoie à qui et pourquoi? Pour y répondre, Cardano ajoute un système de métadonnées dans les transactions que l’utilisateur aura le choix d’inclure ou non. La finance pourra alors exiger qu’une transaction soit transparente.

Cardano fournit donc un alliage astucieux entre l’anonymat de la cryptomonnaie et la nécessité de traçabilité du monde de la finance.

Durabilité

Pour que cette technologie soit durable dans le temps il est important de répondre à une question : Comment payer les choses?

En effet, il est nécessaire de développer un modèle économique permettant de  créer une trésorerie afin de rémunérer les personnes contribuant à l’évolution de cette technologie. De cette manière elle pourra perdurer dans le temps.

Pour anticiper cela, Cardano a pour objectif de mettre en place un système de trésorerie de la manière suivante. Auparavant, les mineurs des cryptomonnaies recevaient une récompense lorsqu’un bloc était miné. Avec Cardano les mineurs reçoivent également une récompense, mais une partie de celle-ci est redirigée vers une trésorerie, vers un compte bancaire décentralisé.

Lorsqu’un utilisateur à un projet qui pourrait faire avancer la technologie il le soumet à la trésorerie, ensuite tous les détenteurs de jeton pourront alors voter. Si l’utilisateur reçoit un montant élevé de vote, la trésorerie lui débloque une rémunération afin de développer son projet.

Ce modèle économique permet alors de faire évoluer la technologie de manière sûre et durable dans le temps par la communauté elle-même.

Conclusion

Le monde de la blockchain évolue de manière efficace mais pour l’instant les résultats sont encore trop immatures. Créée en 2008, la technologie a déjà bien avancé par rapport au stade initial mais elle est encore beaucoup trop marquée par des scandales et des exploitations de bugs par des hackers.

Les blockchains de troisième génération proposent des solutions permettant de démocratiser cette technologie. Je pense que Cardano est à suivre car selon moi, elle respecte entièrement la philosophie de la blockchain tout en répondant partiellement aux problèmes de scalabilité, d’interopérabilité et de durabilité liés aux générations précédentes. Néanmoins, il reste encore du chemin à parcourir car la technologie est encore très jeune.

Quelque soit l’issue de cette innovation, révolution totale ou flop, il est passionnant pour un jeune développeur comme moi de voir l’évolution en direct de cette technologie et ses impacts sur la société actuelle.

A propos de l'auteur

Rachid OUSLARI
Software Developer @PALO IT Toulouse

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 L     DDD   DDD       J  RRRR  
L D D D D J R R
L D D D D J RRRR
L D D D D J J R R
LLLL DDD DDD JJJ R RR