Catégories
Présentations

Blockchain & Smart Contract (part 5)

Soyons très clairs dès le départ : un smart contract, n’est pas « intelligent » (smart) et est encore moins un contrat, au sens légal du terme !

Si vous ne l’avez pas déjà fait, je vous recommande de consulter les parties précédentes de cette présentation sur les bases de la Blockchain : part1part2part3part4

Synthétiquement, un smart contract est un bloc de code qui auto-exécute un ensemble d'instructions, dont le résultat est stocké sur une blockchain après vérification. Cliquez pour tweeter

C’est le principal composant technique des nombreuses applications décentralisées (dApps). En plus d’être autonome et transparent, l’un des points théoriques importants est qu’il fonctionne en mode « trustless », sans avoir recours à une tierce partie ou autre système garantissant la confiance.

2 vidéos (en anglais) pour débuter :

Smart contracts simply explained (4mn)
Code is Law? (16mn)

Un smart contract est en fait une évolution des contrats Ricardiens développés à partir de 1996 pour répondre à la question de la numérisation des contrats. Par l’utilisation de différentes technologies numériques (markup tags, hashing, cryptographie…), un contrat Ricardien permet qu’un système automatisé puisse « lire » un contrat entre 2 entités, afin de définir son objectif, avant de l’exécuter.

A l’opposé, les smart contracts, tels que définis dans le travail du chercheur Nick Szabo sont conçus de manière abstraite pour automatiser l’exécution d’un agrément que les parties ont déjà accepté et validé.

L’intégration de ce modèle logique au sein de diverses blockchains crée donc une version hybride du contrat Ricardien.

L’exemple le plus classique est nommé ERC20, sur la blockchain Ethereum, et il peut être étendu pour répondre à des besoins spécifiques. Il existe d’autres blockchains proposant des fonctionnalités proches ou similaires.

Smart contracts are awesome!
Autonomie, confiance, pertinence…

Pour simplifier, ce sont des contrats cryptés, des programmes autonomes qui s’exécutent seuls avec la garantie que les termes du « contrat » ne peuvent pas être modifiés. Notons malgré tout qu’ils n’ont pas d’autorité juridique réelle : ils sont juste une application technique d’une transaction, comme une « poignée de mains » numérique.

Ils s’exécutent obligatoirement au-dessus d’une blockchain, qui va stocker l’information correspondante.

En théorie, cela signifie une réduction des coûts, car il n’est pas fait appel à des tiers (avocat, notaire, banque…). Dans le même esprit, il est immuable : il ne peut pas être modifié (même en cas d’erreur détectée), à moins de faire un « fork »… avec toutes les conséquences que cela engendre sur les contrats antérieurs…

Usages d’un smart contract

Dans l’absolu, il peut ou pourrait servir à presque tout, dès lors que l’on souhaite automatiser des transactions digitales… Les solutions DeFi (Decentralized Finance) ou plus basiquement les NFTs (j’y reviendrai dans un autre billet) en font un large usage.

Pour exécuter de multiples tâches, la plupart des applications décentralisées dApps agrègent de multiples smart contracts, en synergie, pour créer un ensemble de fonctionnalités évoluées.

Les domaines concernés les plus courants aujourd’hui :

  • Finance : la majorité des services financiers ont été portés sur des solutions DeFi, que ce soit le fait de prêter, emprunter ou acheter/vendre des valeurs mobilières.
  • Gaming : le domaine des jeux en ligne dans sa version Blockchain vise à permettre aux joueurs de reprendre le contrôle d’une partie de la valeur des actifs qu’ils apportent, lorsqu’ils achètent des personnalisations ou des configurations spécifiques. Les NFTs dans ce contexte autorisent l’achat et la vente (théorique) de personnages, fonctionnalités etc. La rareté de certains tokens (jetons) crée une valeur potentielle et offre l’éventualité de plus-values.
  • Droit : l’un des domaines où de nombreux intervenants forment beaucoup d’espoir, est celui de donner une véritable valeur juridique aux smart contracts dans certaines industries. Maintenant que le principe de la e-signature est reconnu, beaucoup pensent que la prochaine étape à mi-chemin entre technologie et droit est la reconnaissance des smart contracts. Certains états américains ont déjà sauté le pas dans des contextes très précis (mariage par exemple).
  • Immobilier : à travers la possibilité de transformer un bien en « jeton » (token), simple ou multiple, un bien immobilier, un terrain… peut être créé, identifié, stocké et géré sur une blockchain. Certains pays ont commencé à tester cette solution pour leur cadastre par exemple. La théorie veut qu’une telle solution simplifie les transactions, limite les coûts (intermédiaires) et garantisse la sécurité et la confiance des intervenants.
  • D’autres champs sont évalués dans le même esprit : les chaines d’approvisionnement, le suivi de produits particuliers (pharmacie…), le vote électronique, la gestion des droits dans le domaine culturel etc.

Cas des DAOs : les Decentralized Autonomous Organizations (organisations autonomes décentralisées) sont des entités juridiques, des entreprises où l’actionnariat est représenté par des smarts contracts. Une telle structure fonctionne théoriquement de manière totalement automatisée quant à son environnement administratif, ne nécessitant pas ou peu d’intervention physique (locaux, embauches, salaires…).

Bien évidemment, la tendance naturelle actuelle est d’ajouter une couche d’Intelligence Artificielle (IA ou AI – Artificial Intelligence) dans la création et le traitement de smart contracts. Si ceux qui sont utilisés actuellement sont « relativement simples », l’IA pourrait permettre la création de smart contracts extrêmement complexes pour des besoins industriels précis.

L’hypothèse est que les smart contracts pourraient bénéficier de la puissance de calcul immense de l’IA et de ses capacités d’adaptation autonome. A l’inverse, l’IA tirerait partie des capacités d’auto-exécution et de stockage sécurisé des smart contracts sur une blockchain.


Au regard de toutes ces potentielles avancées, la pratique est souvent beaucoup moins « révolutionnaire » que les promoteurs de nouvelles solutions veulent bien nous le faire croire, voire carrément irréalistes sur le moyen ou long terme (e-voting, copyright…). De la théorie à la pratique, il y a encore de nombreux pas à faire… et d’expériences à tenter… D’où de nombreux échecs de projets qui sur le papier semblaient intéressants, mais pas forcément pertinents.

Car il convient de ne jamais oublier que l’usage d’une Blockchain nécessite des compétences dédiées et surtout a un coût, lorsque l’on utilise une validation PoW majoritairement. On le voit avec l’envol des frais en Gas sur Ethereum depuis un certain temps…

La question à laquelle il faut toujours essayer de répondre, est « quelle solution existante fait/ferait exactement la même chose ? »
Et en parallèle, il faut aussi répondre à « pour quel coût ? »

Si on oublie d’auditer (correctement)

« Smart contracts generate absolute confidence in their execution. The transparent, autonomous, and secure nature of the agreement removes any possibility of manipulation, bias, or error. »

Mais la réalité peut vous rattraper très vite, comme on le voit régulièrement… Exemple avec le hacking de Titan (qui s’est finalement bien terminé pour tout le monde a priori).

Si la théorie veut qu’une blockchain soit totalement sécurisée (?), du fait de la puissance de calcul massive utilisée par la validation PoW, et aussi immuable, les applications qui s’exécutent au-dessus peuvent l’être beaucoup moins…

L’audit d’un smart contract a pour objectif l’examen minutieux du code qui sous-tend les termes et conditions du smart contract, afin d’identifier toute vulnérabilité ou erreur (cf. ci-dessus un signe « > » là où il n’aurait pas fallu) avant son déploiement.

Les risques posés par un contrat mal conçu et non audité sont multiples :

  • résultats inadéquats,
  • vol de données, dont données personnelles,
  • hacking partiel ou total de la blockchain,
  • blocage de la blockchain,
  • etc.

Globalement, les auditeurs se consacreront à évaluer et rectifier les erreurs de conception, les failles de sécurité et les erreurs dans le code.

Un bon audit, par des développeurs spécialisés de préférence en analyse manuelle et automatisée du code, permettra éventuellement de :

  • optimiser le code,
  • améliorer la performance du smart contract,
  • mieux sécuriser les portefeuilles (wallets),
  • augmenter la sécurité potentielle contre les attaques.

Bien évidemment, il est aussi toujours préférable de penser à tester dans un environnement approprié (sandbox)…

Il faut donc penser à auditer son smart contract avant de le diffuser !

Ne jamais oublier que, dès qu’il est activé et mis en ligne sur une blockchain, il n’est plus modifiable… A bon entendeur…

Questions, remarques, commentaires ? Je suis à votre disposition.

Licence
Catégories
Présentations

Fonctionnement synthétique d’une Blockchain (part 4)

En cours d’écriture d’un sujet sur les NFTs, je me suis aperçu que je n’avais pas terminé la série que j’avais prévue sur la Blockchain et en particulier son fonctionnement. Ce billet correspond donc aux slides 9 à 14 de ma présentation au Meetup de Cotonou.

Part 1Part 2Part 3Part 5

Fonctionnement Blockchain simplifié

Introduction en vidéo, en anglais

Par exemple, 2 personnes interagissent sur une application, pour effectuer un paiement :

  1. La transaction, avec les références des intervenants, est ajoutée à un grand livre de transactions en ligne, horodatée, cryptée avec un code de sécurité digital (fonction de hachage cryptographiquehash) dans un format prédéfini.
  2. Le code de la transaction est envoyé vers le réseau distribué des utilisateurs (P2P, pair-à-pair), où il est confirmé sans compromettre les informations privées. Ceci élimine donc le recours à une autorité centrale.
  3. Une fois la transaction validée par plusieurs utilisateurs, elle apparait dans le grand livre de chacun sous la forme d’un enregistrement permanent et immuable, soit dans un bloc dédié ou dans un bloc plus large, selon la manière dont les blocs sont définis par l’application.
  4. L’information de la transaction étant enregistrée, elle est donc terminée.

Pour lire une description beaucoup plus détaillée en anglais : How does blockchain work in 7 steps — A clear and simple explanation (2018), qui prend comme référence un échange Bitcoin.

Dans l'absolu, toutes les blockchains ont le même type de fonctionnement, quelque soit leur usage ou destination. Cliquez pour tweeter

Remarques sur le fonctionnement

Les utilisateurs dans le réseau P2P qui reçoivent les transactions à valider sont nommés « nœuds » (nodes).

blockchain

Les validations sont effectuées selon des algorithmes connus (formules mathématiques majoritairement de type Proof of Work aujourd’hui – cf. ci-dessous), par des mineurs (miners) qui entrent en compétition (littéralement dans le cas du PoW) pour effectuer la validation, car ils sont rémunérés pour ce faire.

Une transaction Blockchain vérifiée va donc intégrer des données, qui peuvent être de type monnaie digitale (cryptomonnaie), contractuel (smart contract) ou théoriquement tout autre type d’information qui puisse tenir dans un bloc. Cliquez pour tweeter

Hachage cryptographique (hash)

Le hachage cryptographique, par exemple utilisé pour stocker de manière sécurisée les mots de passe d’un compte dans une application en ligne, est une formule mathématique complexe.

Elle permet, quelle que soit la quantité de données saisies en entrée (d’un mot à un texte entier), de générer une chaine unique de longueur fixe. Si je change ne serait-ce qu’un élément dans ma saisie, la chaine résultante est donc absolument différente. De même, 2 données différentes ne peuvent générer un résultat identique (pas de « collisions »).

Cette fonction est à « sens unique ». Ainsi, si je possède la chaine résultante, je n’ai aucun moyen de recréer les données qui ont servi à la générer.

Elle est aussi « déterministe » : si j’entre plusieurs fois les mêmes données, j’obtiens toujours le même résultat.

L’empreinte numérique (digest ou hash) ainsi générée sert donc à identifier les données incluses dans une blockchain et à créer le lien avec les blocs qui précédent et suivent.

Tester : SHA256 Hash Generator (utile pour générer un mot de passe en cas de besoin)

Cas des cryptomonnaies

Une monnaie digitale n’est en fait qu’une valeur d’échange (un jeton ou « token »), créée et stockée de manière électronique dans une blockchain, utilisant des techniques de cryptage pour contrôler la création d’unités monétaires et pour vérifier le transfert de fonds. Bitcoin est l’exemple le plus connu.

Une cryptomonnaie :

  • n’a pas de valeur intrinsèque (sauf exception comme les Stable Coins, elle n’a pas de cours d’échange basé sur un élément tangible comme l’or par exemple) et donc son cours dépend uniquement de l’offre et de la demande…
  • n’a pas de forme physique (pièces, billets…) et n’existe que via le réseau.

Sa disponibilité n’est pas déterminée par une banque centrale et son réseau est totalement décentralisé (en théorie).

Fonctionnement Proof of Work vs Proof of Stake

Pour valider un bloc, il convient d’obtenir un consensus authentifiant son existence. Il existe 2 méthodes principales actuellement qui font partie intégrante du fonctionnement d’une blockchain, le 1er (PoW) étant le plus répandu.

Fonctionnement POW vs POS
Image via BlockGeeks

Proof of Work (PoW) = Preuve de travail = être le 1er à résoudre une énigme mathématique pour être rémunéré.
Nécessite une puissance de calcul de plus en plus importante dans le temps (d’où l’apparition de « fermes » et d’ordinateurs ou composants dédiés, et un impact gigantesque en consommation électrique).

Proof of Stake (PoS) = Preuve d’enjeu ou de participation = affectation déterministe calculée sur des critères de quantité de jetons possédés.
Moins gourmand en énergie et pas de rémunération. C’est la personne qui a initié la transaction qui la finance, par un paiement de « frais » via des unités spécifiques (le « gas » pour Ethereum par exemple, mais pour l’instant cette blockchain utilise toujours le Proof of Work).

La blockchain Ethereum est par exemple actuellement basée sur des validations par PoW, mais dans sa version 2.0, passera sur PoS, permettant d’économiser la majeure partie de la consommation en énergie actuelle. Cette évolution offre théoriquement plus de rapidité de traitement et des frais moins élevés.

Pour en savoir plus (en anglais)


Voilà, c’était une version très simplifiée, et non exhaustive du fonctionnement théorique d’une blockchain. N’hésitez pas à commenter et à poser des questions dans les commentaires ou sur Twitter, mes DMs sont ouverts.

Le prochain billet traitera des Smart Contracts (contrats intelligents).
A suivre !

Licence