Ethereum : Premiers pas sur la blockchain

La blockchain est un mot à la mode ces derniers temps, d’autant plus après les annonces d’IBM de Canonical et de Samsung, et avec le développement de solutions comme Rubix ou Ethereum, ce nom cache pourtant une technologie qui pourrait autant révolutionner la société que ne l’ont fait la démocratisation d’Internet ou de l’avènement de la base de données.

Qu’est-ce que la blockchain ?

Comme déjà décrite dans mon article sur les cryptomonnaies, la blockchain est une succession d’ensembles de transactions, appelés blocs, où chaque bloc s’ajoutant apporte une somme de contrôle relative aux blocs le précédant. Ainsi, plus le temps passe, plus les vieilles transactions sont considérées comme authentiques, car la moindre modification à leur niveau engendrerait une toute autre blockchain, contenant des sommes de contrôle radicalement différentes.
La distribution pair-à-pair de ces blocs vient enfin partager l’information entre les nœuds, afin d’assurer une résilience et une sécurité véritablement démocratique.

La blockchain est donc la technologie au cœur des cryptomonnaies, comme le Bitcoin, et le caractère immuable et irréfutable des ses transactions en font un modèle unique pour le stockage d’informations authentiques.

Pourquoi la blockchain ?

En effet, la blockchain n’a pas pour but premier l’efficacité de son modèle, ni la confidentialité. Il n’est donc pas question ici de stocker des documents professionnels, ou des programmes gourmands en ressource. Cependant, ces documents peuvent être signés par des applications de la blockchain, et les programmes peuvent déporter une fraction critique de leur exécution ici également.

Un document signé de cette façon disposera d’une preuve mathématique de cette signature, tout comme le résultat d’une fonction exécutée par la blockchain sera validé par l’intégralité de ses nœuds. La blockchain se mue ainsi d’une série de transactions en une longue file d’informations et procédures se sécurisant les unes après les autres.

Ethereum : Rendre la blockchain intelligente

La première application de la blockchain a été le Bitcoin. Les instructions déployées sur la blockchain se limitaient à des transactions.

Ethereum est un projet ambitieux, qui dispose d’une cryptomonnaie propre (l’Ether), mais qui vise également à développer une blockchain programmable. Il est ainsi possible d’exécuter tout type de programme au sein de la blockchain, celui-ci étant alors exécuté quasi simultanément sur tous les nœuds. Attention, il ne s’agit pas ici d’un programme découpé pour être exécute sur plusieurs processeurs pour le rendre plus rapide ; chaque instruction du programme est exécuté sur l’ensemble des nœuds de la blockchain, dans une machine virtuelle appelée EVM (Ethereum Virtual Machine).

Bien entendu, la monopolisation d’une telle quantité de ressources ne se fait pas gratuitement, il est nécessaire de rétribuer les mineurs qui vont sécuriser l’exécution pour nous. Cela se fait en leur envoyant du Gas (Essence en anglais). Le Gas est une jeton dont la valeur est directement convertie en Ether lors de l’utilisation (on ne stocke donc pas de Gas), mais dont la valeur est ajustée afin d’éviter des coûts de fonctionnement trop variables par rapport à la vie réelle.

La consommation en Gas d’un programme sera directement liée à son coût en temps de processeur dans l’EVM, à son utilisation de la mémoire, ainsi qu’a la quantité d’informations stockées dans la blockchain.

Le Gas dispose d’une limite haute, que l’on ne peut pas dépasser pour une seule transaction. Cela permet ainsi d’empêcher une personne très riche de monopoliser la blockchain, ou encore à un attaquant de tenter d’envoyer une boucle infinie qui paralyserait tout le réseau. Cette limite est variable et dépend de la puissance de calcul fournie par le réseau de mineurs.

Une estimation de la consommation en Gas d’une transaction ainsi qu’une limite maximale permettent d’évaluer le coût réel et de garantir qu’une transaction sur la blockchain ne dépassera pas un certain montant en Ether, auquel cas, la transaction sera annulée et les sommes engagées rendues.

Programmer la blockchain

Les programmes au sein d’Ethereum porte le nom de Contract. Chaque contrat dispose de son propre code EVM. Ce code peut cependant être compilé depuis:

  • un langage derivé de JavaScript : Solidity, il est le plus couramment utilisé, je ne m’intéresserai qu’à celui-ci dans cet article
  • un autre dérivé de Python : Serpent
  • ou encore depuis du LISP : LLL

Un contrat est considéré comme un compte (il dispose ainsi de sa propre balance d’Ether) qui peut être administré par un autre compte. Les contrats sont publiques : tout le monde peut voir leur code et leur solde, et il est également possible de leur appliquer des fonctions.

Une fois déployé au travers de la blockchain d’Ethereum, les contrats peuvent recevoir des transactions (de l’Ether) ou des messages (des appels aux fonctions).

Ses messages peuvent être envoyés non seulement au travers d’un porte-feuille (Wallet), mais également au travers de la ligne de commande (geth) ou encore d’applications (Đapps) au travers d’une API JavaScript.

Des applications infinies

L’engouement que suscite la blockchain vient en grande partie de la variété d’applications que celle-ci peut supporter, avec un investissement en infrastructure nul et un coût d’utilisation très modeste.

Voici quelques exemples:

  • La blockchain pourrait remplacer facilement un réseau de notaires, ou chaque bien serait un jeton que des utilisateurs pourraient s’échanger. La transaction est ainsi inviolable et perenne : impossible de revendre un bien plusieurs fois ou de tricher sur sa propriété comme un notaire peu scrupuleux pourrait l’envisager (je ne vise absolument personne, je ne fais qu’imaginer un exemple).
  • On pourrait entièrement dématérialisé les passeports, ceci pourraient être communiquer verbalement à l’agent des douanes sous la forme d’un nom, prénom, date et lieu de naissance, ainsi qu’une clef. Ces informations seraient « hashées » sous la forme d’une somme de contrôle, qui accèderait ainsi à un fichier de photos et d’empreintes digitales stocké dans la blockchain. Ces enregistrements dans ce fichier seraient signés par un bureau de citoyenneté (mairie, préfecture, …) auquel le bureau des douanes choisirait de faire confiance ou non. Un passeport volé serait ainsi facilement repéré, et les passeports issus de bureaux compromis pourraient être interceptés très facilement. Enfin, un voyageur pourrait s’identifier sans document, ou tout au plus avec un simple QR-code.
  • Une organisation très répartie sur un territoire (parti politique, coopérative, …) pourrait organiser des élections très facilement, en autorisant les comptes de ses membres à utiliser un contrat de la blockchain. Les résultats sont ainsi infalsifiables, et chacun peut vérifier les méthodes d’accès au vote et de calcul dans le code, tout en garantissant l’anonymat des participants.
  • Un service de noms de domaines pourraient être implémentés très facilement. Sa décentralisation accorderait une haute résilience au service, et il serait possible de gérer la réservation et l’expiration sans aucune intervention humaine.

Cet article s’est surtout intéressé à une blockchain publique, mais il est toujours possible de créer sa propre blockchain. Il sera alors nécessaire de fournir soi-même des mineurs, et l’infrastructure aura un coût que la vente d’Ether ne pourra pas amortir (l’Ether privé n’intéressera personne, contrairement à la blockchain publique). Cependant la robustesse de cette technologie en fait une candidate toute trouvée pour de nombreuses applications dans les domaines financiers.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *