il y a 6 ans dans Business

Introduction

L’univers des crypto monnaies fait l’actualité ces derniers temps essentiellement à cause de la volatilité du bitcoin en particulier et des crypto devises dans l’ensemble. Le principe de fonctionnement de ces crypto devises suscite pourtant de plus en plus d’intérêt avec la promesse de l’émergence d’applications décentralisées (Dapp) voire d’organisations digitales autonomes (DAO). 

Deux technologies sont au cœur de ces nouveaux systèmes d’information : la blockchain et le smart contract. Nous allons donc commencer par définir dans cet article ce qu’est une blockchain puis un smart contract. Ensuite, pour être plus pratique, nous déroulerons le processus de mise en place d’Ethereum Wallet pour importer la blockchain Ethereum ; et nous finirons par installer un environnement qui permet de développer et de tester nos propres smarts contracts. L’avantage de l’environnement de développement est qu’il nous permet de créer plusieurs comptes fictifs et de leur attribuer un solde non nul d’Ether pour : 

  • Déployer le smart contract dans la blockchain de l’environnement de développement : il faut nécessairement une transaction en Ether pour déployer un smart contract ; et l’environnement de développement nous permet donc d’éviter, pour nous entraîner à développer des smarts contracts, de dépenser de vrais Ethers *
  • Une fois le smart contract déployé, il est peut être utile de simuler des transactions entre plusieurs comptes qui ont un solde non nul. L’environnement de développement permet d’effectuer ces tests avec des comptes fictifs

Qu’est-ce qu’une blockchain 

La Blockchain est une technologie qui est apparue en même temps que le Bitcoin. Le terme « blockchain »  a d’abord été utilisé pour décrire le principe de fonctionnement du Bitcoin. Il a ensuite connu des  applications diverses, tout d’abord pour d’autres crypto monnaies puis au-delà du champ des monnaies virtuelles.

Il est certainement plus simple de décrire la « blockchain » du Bitcoin en énumérant ses principales caractéristiques pour en percevoir les contours : 

  • On parle en français de « chaîne de blocs » : chaque nouvelle transaction de Bitcoin (Individu A qui transmet B Bitcoins à l’individu C) est enregistrée dans un répertoire où chaque fichier représente un bloc. 
  • Le snapshot ci-dessous présente des blocs de la blockchain Ethereum stockés sur le disque local (nous présentons actuellement la blockchain Bitcoin, mais nous pouvons faire le parallèle avec la blockchain Ethereum qui en est dérivée et que nous adresserons dans les lignes qui suivent) :

 

        

  • Chaque bloc contient, sur sa 1ère ligne, l’empreinte cryptée du bloc précédent ; d’où la notion de chaîne de blocs
  • Chaque nouvelle transaction de Bitcoin (Individu A qui transmet B Bitcoins à l’individu C) est cryptée par un système de cryptage asymétrique. Pour être publiée et visible, cette empreinte de la transaction doit être validée par la majorité des membres de la communauté.
  • La validation se fait  à deux niveaux : 

            o Pour une transaction donnée, l’historique des transactions de l’émetteur doit être vérifié pour confirmer qu’il possède bien les Bitcoins qu’il veut transmettre au récepteur : Par exemple si j’avais initialement 10 Bitcoins et que j’en ai déjà transmis 6 lors d’une ancienne transaction enregistrée dans la blockchain, je ne pourrai pas faire confirmer une nouvelle transaction de 5 Bitcoins car il ne m’en reste que 4. Ce sont les membres de la communauté Bitcoin qui doivent authentifier chaque transaction par consensus (la décision majoritaire de la communauté l’emporte)

            o Lorsque le nombre des transactions vérifiées  et confirmées par consensus (c’est la décision majoritaire évoquée juste avant) est suffisant pour remplir le dernier bloc de la Blockchain, celui-ci doit être crypté (et donc figé à jamais dans la Blockchain). Et la clé de cryptage du bloc qui vient juste d’être rempli sera la 1ère ligne du nouveau bloc à créer pour que la Blockchain continue à enregistrer les nouvelles transactions. 


  • L’une des spécificités de la Blockchain est que le processus de validation des blocs ne se fait pas au niveau d’un serveur central. Il est effectué par ceux qu’on appelle des « mineurs ». N’importe quel membre du réseau peut devenir mineur : le « Bitcoin core » qu’on installe sur sa machine pour être membre du réseau (et donc pouvoir transmettre ou recevoir des Bitcoins à son adresse cryptée) émet de nouveaux Bitcoins à chaque fois qu’un nouveau bloc doit être créé ; ces nouveaux Bitcoins servent à rémunérer le mineur qui sera le plus rapide à fournir l’empreinte d’un Bloc de transactions valides (c’est la clé de cryptage du bloc qui vient d’être rempli, évoquée au deuxième niveau de validation juste avant) et à relever un challenge de cryptage ( par exemple crypter le dernier bloc autant de fois que nécessaire pour obtenir une empreinte avec un certain nombre de zéros au début : c’est ce qu’on appelle la preuve de travail  )
  • Dans les faits, les mineurs qui comptent sur la puissance de leurs machines pour remporter la mise ne sont généralement plus de simples membres individuels du réseau mais plutôt de gros consortiums qui se sont spécialisés sur ces activités et qui disposent de gros  datacenters dédiés au minage.
  • Le principal avantage de la Blockchain est que chaque membre du réseau possède l’intégralité de la chaîne (l’ensemble des blocs validés). Il est donc dans la pratique impossible de supprimer ou modifier une transaction inscrite dans un bloc publié : cela impliquerait de corrompre au moins 51% du réseau ; ainsi, depuis sa création en 2009, la blockchain Bitcoin s’autocontrôle grâce aux mineurs et est de ce fait réputée inviolable. 

Qu’est-ce qu’un smart contract ? 

Un smart contract est un programme informatique qui associe des actions à des événements. Mais la spécificité d’un smart contract est que c’est un programme informatique rattaché à une blockchain. Cela implique que :

  • chaque nœud dispose d’une version du smart contract dans sa blockchain conservée en local. Le smart contract est donc aussi inviolable que la blockchain elle-même. Et on parle également de Dapp (Decentralized Application) car le programme informatique n’est ainsi plus centralisé sur un seul serveur à partir duquel il serait  interrogé par des clients-tiers 
  • une fois que le smart contract est déployé, la blockchain assure la bonne exécution des  termes du smart contract : si par exemple un évènement E déclenche une action ACT selon les termes du smart contract, ACT peut être assimilée à une transaction (Individu A qui transmet B Ethers à l’individu C). L’action ACT sera donc, avant d’être déclenchée, validée par la Blockchain au même titre qu’une transaction de cryptomonnaie. C’est pour cette raison au passage que chaque exécution d’une action va coûter pour son minage quelques dizaines de centimes d’euros.

Si la Blockchain est née avec le Bitcoin, c’est à Ethereum que l’on doit la 1ère mise en application des smarts contracts. Et c’est sur la blockchain Ethereum que nous allons développer un smart contract dans la suite de ce document. Le  principe des smarts contracts Ethereum est le suivant : en ouvrant un compte sur le réseau Ethereum ( ce que nous pouvons faire facilement après avoir installé Ethereum Wallet au début de la seconde partie de ce document), on a la possibilité de développer, puis déployer sur la blockchain Ethereum ses propres smarts contracts avec des langages dédiés : solidity (dérivé du langage Javascript), Serpent (dérivé du langage python), Mutan (dérivé du langage C); moyennant des fractions d'Ether (l'équivalent de dizaines de centimes d'euros selon les estimations rencontrées), les transactions du smart contract sont validées par les mineurs du réseau public d'Ethereum (ceux-là même qui valident les transactions d'Ether).