Passer

Blockchain, que se cache-t-il derrière ce concept ? (1/2)

Durant ces dernières années la blockchain est devenue un sujet de mode qui a fait parler tout le monde. Cet article revient sur ce concept avec une présentation du fonctionnement de la blockchain puis décrit les deux crypto-monnaies les plus connues Bitcoin et Ethereum.

Introduction

La blockchain peut être comparée à un livre de compte distribué à travers un réseau de telle sorte que chacun puisse s’assurer de son intégrité, de son authenticité et de l’historique de ses transactions. Par conséquence, une blockchain constitue un registre numérique de données partagées, transparent, sécurisé et qui enregistre tous les échanges effectués entre ses utilisateurs depuis sa création dans un réseau peer-to-peer (publique ou privé). Distribué à tous les nœuds membres du réseau, le grand livre enregistre de façon permanente, dans une chaîne séquentielle de blocs cryptographiques hachés, l’historique des échanges entre les pairs du réseau. Tous les blocs de transaction confirmés et validés sont liés et enchaînés du début de la chaîne au bloc le plus récent, d’où le nom blockchain.

La blockchain repose donc sur:

  • Un réseau: constitué d’une structure pair à pair. C’est un type d’architecture réseau couramment utilisé qui consiste à la participation de chaque utilisateur final via un échange avec les autres utilisateurs finaux sans passer par des serveurs centraux.
  • Un protocole de consensus: les protocoles à registres distribués comme la Blockchain ont recours à un algorithme de consensus pour valider de manière consensuelle l’ajout de blocs à la chaîne principale. La résolution de cet algorithme revient aux nœuds du réseau appelés mineurs. Un mineur rassemble ainsi des transactions dans un bloc et fait en sorte de résoudre l’algorithme de consensus ce qui lui permettra d’ajouter un bloc à la chaîne principale. Le mineur est ensuite récompensé en cas de succès et voit son bloc se propager à ses pairs.

Figure – Exemple de séquence de blocs liés au sein d’une blockchain

Il existe trois types de réseaux blockchain:

  • Publique: toute personne peut rejoindre le réseau pour y lire et/ou écrire des données sans autorisation d’une autorité quelconque.
  • Fédérée: des personnes avec les mêmes intérêts peuvent se rejoindre, former un collectif et décider des conditions pour y accéder.
  • Privée: l’adhésion et la capacité de lire et/ou écrire est réservée aux personnes ayant ce droit.

Comment ça marche ?

Au lieu de compter sur une partie tierce pour négocier des échanges, les nœuds membres d’un réseau blockchain (les mineurs) utilisent un protocole de consensus, comme décrit plus haut, intégrant haches cryptographiques et signatures numériques pour assurer l’intégrité et l’authenticité des transactions.

Les haches cryptographiques calculés par l’algorithme de hachage (par exemple SHA256 pour le Bitcoin), fournissent une empreinte et garantissent la consistance des données. C’est-à-dire que toute modification apportée à une donnée – même le changement le plus minuscule – entraîne le calcul d’une valeur de hachage différente. Ces signatures numériques garantissent que les transactions proviennent du bon expéditeur.

Malgré la formulation théorique de la blockchain dès 1991, c’est la naissance du Bitcoin qui a attiré les regards sur cette dernière en 2008. Aujourd’hui de nombreuses implémentations cryptographiques plus performantes existent comme : Ethereum, Zcash, Quorum, Ripple, Monero, …

Bitcoin

En 2008, un hacker anonyme du nom de Satoshi Nakamoto a dévoilé la première monnaie entièrement numérique, décentralisée et sans tiers de confiance: le Bitcoin. Une monnaie cryptographique, ou crypto-monnaie, est une monnaie électronique sur un réseau Peer-to-Peer ou décentralisé qui est générée et sécurisée par un protocole cryptographique (Proof-of-Work). A ce jour, c’est la blockchain la plus active avec 6 000 mineurs en moyenne.

Les transactions:

Toutes les transactions effectuées par les utilisateurs du réseau sont regroupées par blocs. Chaque bloc est validé par les mineurs à travers l’algorithme de consensus et celui en vigueur ici est le Proof-of-work.

Un exemple de transaction entre deux utilisateurs Alice et Bob s’opère comme suit:

Vérification de bloc:

L’algorithme utilisé pour vérifier si un bloc est valide est le suivant:

  1. On vérifie si le précédent bloc référencé par le bloc existe et est valide.
  2. On vérifie que l’horodatage du bloc est supérieur à celui du bloc précédent et inférieur à 2 heures après la parution du précédent bloc.
  3. On vérifie que la proof-of-work du bloc est valide (vérification des empreintes SHA256 de chaque bloc).
  4. Soit S[0] l’état à la fin du bloc précédent. On suppose que TX est la liste des transactions du bloc avec n transactions. On vérifie que tous les TX sont valides.
  5. Pour tout i dans 0 … n-1, on vérifie que l’état S [i+1] = APPLY(S[i], TX [i]). Si l’application renvoie une erreur, on sort et on renvoie faux.
  6. Retour vrai, et enregistre S[n] comme état à la fin de ce bloc.

Proof-of-work:

Les technologies à registres distribués comme le Bitcoin reposent sur la composante essentielle qu’est l’algorithme de consensus. Ce dernier permet au réseau de décider de façon consensuelle de l’horodatage et de l’ordre de parution des transactions.

Le Proof-of-work est l’algorithme de consensus en vigueur dans la plateforme Blockchain Bitcoin. Le principe est le suivant : les nœuds avec le rôle de mineur se lancent dans la résolution d’un puzzle mathématique complexe et le premier à résoudre le challenge reçoit la récompense associée.

Le Proof-of-Work possède les propriétés d’être difficile à compiler, d’avoir un coût paramétrable ainsi qu’une vérification triviale. Les mineurs sont en concurrence pour trouver le nonce qui convient pour avoir le bon entête et lier ainsi le bloc généré avec le dernier bloc de la chaîne. Ce nonce 32-bit doit être trouvé tel que le hash suivant soit plus petit ou égal au Target (qui est un nombre de 256 bit) actuel du réseau:

Pour avoir le bon entête du bloc, le nonce doit avoir un certain nombre de zéros et pour le trouver la recherche s’effectue comme suit:

Tout d’abord on peut commencer avec un nonce de zéros et tester toutes les valeurs tant que le hash du bloc ne correspond pas à la forme requise. Si aucun ne fonctionne, on change le nonce en extra dans la transaction coinbase (qui est la transaction par laquelle le mineur crée de nouveaux jetons) puis on recommence avec un nouvel entier de 32-bit.

Le niveau de difficulté associé à ce challenge est calculé toutes les deux semaines via la formule suivante:

Cette difficulté s’ajuste pour maintenir le temps de génération d’un nouveau bloc à un toutes les 10 minutes. Et c’est le taux de hachage qui permet de décider si la difficulté doit être augmentée ou pas. Le temps de propagation d’un bloc à travers le réseau étant relativement long, il est probable qu’un autre mineur trouve le bon nonce et génère un bloc. Cela crée une brèche avec la naissance de blocs orphelins qui sont des blocs qui ne finissent pas sur la chaîne la plus longue.

Le Bitcoin repose donc sur les mineurs pour:

  • Valider les nouvelles transactions
  • Stocker et diffuser la Blockchain
  • Voter (par puissance de hachage) sur le consensus

Cette compétition a abouti à une ère de minage « à outrance » avec la création de fermes de minage. Cet engouement est assez coûteux en matériel, refroidissement et électricité. L’opération consomme ainsi inévitablement plus d’énergie du fait de la non réversibilité de la fonction de hachage SHA-256.

Un exemple d’un bloc miné lors de la rédaction de cet article est disponible sur le lien: https://www.blockchain.com/btc/block-height/544275

Ethereum “What Bitcoin does for payments, ethereum does for anything that can be programmed”

Ethereum est une plateforme Blockchain dont le but est de créer une alternative au Bitcoin pour la conception et la distribution d’applications décentralisées. Il s’agit d’applications sans « intermédiaire », où les utilisateurs interagissent avec des systèmes sociaux et financiers, des interfaces de jeux, etc… le tout dans une dynamique pair-à-pair.

Ethereum est une machine virtuelle décentralisée, qui exécute des programmes appelés «smart contracts» à la demande des utilisateurs. Les contrats sont écrits dans un langage de bytecode complet de Turing, appelé bytecode EVM. Un contrat est un ensemble de fonctions, chacune définie par une séquence d’instructions de bytecode.

Smart contracts:

Un smart contract est un programme autonome qui fonctionne de manière similaire à une instruction conditionnelle. Ce sont des programmes qui, après être définis par leurs créateurs et intégrés dans la plateforme Ethereum, s’auto exécute sans intervention externe possible. Ils sont écrits en Serpent ou Solidity puis compilés en code opération EVM (Ethereum Virtual Machine) tant que le réseau existe. Le contrat ne se voit détruit que lorsque ses conditions d’auto destruction sont réunies. Ainsi pendant sa durée de vie dans la plateforme Ethereum, un contrat pourra interagir avec d’autres contrats, prendre des décisions, stocker les données et envoyer de l’éther. L’Ether est la crypto monnaie en vigueur sur la plateforme Ethereum. Il est utilisé comme « carburant » pour opérer sur Ethereum dans le cadre des différentes applications.

Une caractéristique remarquable des smart contracts c’est qu’ils peuvent transférer de l’éther vers/depuis des utilisateurs et vers d’autres contrats. Les utilisateurs envoient des transactions au réseau Ethereum afin de:

  • créer de nouveaux contrats ;
  • invoquer les fonctions d’un contrat ;
  • transférer l’éther à des contrats ou à d’autres utilisateurs.

EVM:

L’EVM peut être vue comme un ordinateur distribué où les smarts contracts sont exécutés. En raison du caractère distribué, ces contrats sont exécutés sur toutes les machines dans le réseau. Des mécanismes doivent ainsi être mis en place pour limiter les ressources utilisables par un smart contract.

Ethereum utilise ainsi les deux champs STARTGAS et GASPRICE :

  • STARTGAS est une valeur représentant le nombre maximum d’étapes de compilation que l’exécution d’une transaction peut suivre.
  • GASPRICE est une valeur représentant les frais que paie l’émetteur par étape de compilation. Il s’agit du montant d’Ether par gaz que l’émetteur est disposé à payer.

Les comptes

Les comptes dans Ethereum sont constitués d’une adresse de 20 octets et un état transitoire permettant le transfert de valeurs et informations entre les comptes.

Ces derniers peuvent être de deux types:

  • comptes externes, contrôlés par les utilisateurs avec leurs clés privées ;
  • compte contrats contrôlés par le code qu’ils contiennent.

Chaque utilisateur, pour pouvoir interagir avec la plateforme Ethereum, procède à la création d’un portefeuille. Appelé Ethereum Wallet, c’est une passerelle vers les applications décentralisées de la plateforme Ethereum. Il permet ainsi de:

  • gérer & sécuriser son Ether ;
  • rédiger, déployer et utiliser des smarts contracts.

Des solutions diverses se sont développées sur plusieurs types de plateformes: hardware, mobile, client lourd ou léger et même en version papier.

Pour qu’un Wallet soit le plus « intéressant » possible indépendamment de la plateforme Blockchain, il doit regrouper des critères tels que:

  • La gestion de clés privées
  • Facilité d’utilisation
  • Backup et sécurité
  • Interopérabilité avec différents logiciels d’exploitation

Proof of Work:

C’est le même mécanisme que pour le Bitcoin. Les blocs produits par les mineurs ne sont valides que s’ils contiennent une Proof-of-Work d’une difficulté donnée. L’algorithme de hachage ici est appelé Ethash et la difficulté est ajustée automatiquement pour qu’un bloc soit produit toutes les 15 secondes. Contrairement au Bitcoin où la rémunération évolue tous les 210000 blocs, la rémunération en Ether est statique.

Pour résumer, les plateformes Bitcoin et Ethereum s’oppose et se rejoigne sur un certain nombre de critères comme indiqués dans le tableau suivant:

Plateforme BlockchainBitcoinEthereum
HistoireSatoshi Nakamoto (2008)Vitalik Buterin (2014)
Crypto-monnaieBitcoinEther
Type de BlockchainPubliquePublique
Mécanisme de consensusProof of WorkProof of Work
Temps moyen de génération de bloc10 minutes15 secondes
Transactions / sec715
Algorithme de hachageSHA256Ethash – KECCAK256
Algorithme de signatureECDSAECDSA
Outil de programmationAucun – ScriptSolidity
Personnalisation de Crypto-monnaieNon Turing completTuring complet
Volume de crypto-monnaie créé12,5 toutes les 10 minutes dans la limite de 21 M d’unités3 toutes les 15 sec sans limite de nombre d’unité
Coût de transactionStandard – Pareil pour toutesDépend de la complexité et l’utilisation des ressources des machines

Potentiels de la blockchain:

Avant la parution de registres distribués de type Blockchain, l’échange entre deux entités A et B nécessitait l’intervention d’une autorité de confiance pour garantir le déroulement de la transaction.

Aujourd’hui, la Blockchain s’intègre de façon disruptive dans la gestion des transactions en prônant la désintermédiation.

En dehors des capacités de paiements (et plus généralement la finance) pour lesquelles la Blockchain et plus particulièrement le Bitcoin est connu, on retrouve aussi plusieurs secteurs d’application tels que:

  • La santé
  • Le suivi logistique
  • La gestion de données
  • L’authentification / l’identification
  • Les droits de propriété intellectuelle
  • L’internet des objets
  • Etc…

Un certain nombre d’applications décentralisées aujourd’hui n’ont de raison d’être que la propriété de non altération de la Blockchain. Néanmoins, depuis la création d’Ethereum et notamment des Smarts contracts, les possibilités de conception d’application décentralisées ont de limite que l’imagination de potentiels cas d’usages.

Conclusion:

La blockchain est une technologie qui arrive aujourd’hui à maturité et au-delà des objectifs premiers de son exploitation apparaissent des idées nouvelles : le vote électronique, le cadastre en Honduras, la traçabilité alimentaire en Chine… La blockchain et ses applications peuvent aujourd’hui aider à supporter les mécanismes de la loi en permettant la traçabilité, l’authenticité et l’engagement contractuel. Dans le prochain article, les auteurs présenteront des applications modernes de la blockchain qui existent aujourd’hui.