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

Usages (futurs…) pour la technologie Blockchain (part 3)

Venant de m’apercevoir que j’avais omis de terminer ma série Blockchain (usages ci-dessous), je reprends là où je m’étais arrêté.
D’autant qu’avec l’engouement actuel en Afrique pour les cryptomonnaies (dont Bitcoin), il me semble judicieux de remettre certaines pendules à l’heure… tout en restant simple.

Partie 1Partie 2Partie 4Partie 5


Après avoir vu rapidement ce qu’était une blockchain, posons-nous maintenant la question des usages (théoriques) : à quoi ce ledger décentralisé peut-il bien servir ?

usages blockchain simple

Une Blockchain s’utilisera par exemple lorsque l’on a besoin d’un registre qui soit :

  • Immuable => information non modifiable, outil de base pour la désintermédiation (élimination des intermédiaires)
  • Crypté => pour sécuriser
  • Transparent => publique
  • Distribué => partagé entre les utilisateurs
  • Programmable => piloté par un ensemble de formules mathématiques et programmes informatiques (contrats intelligents  « smart contracts »)
  • Consensuel => partage « démocratique » de l’utilisation, de la validation (PoW, PoS…), de la vérification et des prises de décision

A noter : Il existe des blockchains publiques, des blockchains privées ou encore des blockchains de consortium.

Il faut donc faire très attention dans les projets présentés sur le type de blockchain utilisé et la gouvernance considérée…
Il existe aussi des projets (nombreux) qui ne sont que des pseudo-blockchains…

usages blockchain complexe

Une Blockchain peut s’utiliser en théorie dans tous les contextes où l’on a besoin de :

  • Traçabilité
  • Transparence
  • Vérifiabilité
  • Sécurité
  • Collaboration
  • Efficacité

Les Blockchains sont pour l’instant considérées comme l’un des blocs de base pour de nombreuses innovations et usages à venir, que ce soit dans les métiers de la banque ou de l’assurance, dans la gestion financière (prêts…), les chaines d’approvisionnement etc. Bien évidemment, si l’on peut en plus ajouter de l’Intelligence Artificielle derrière (AI), les potentiels sont encore plus grands.

A mon humble avis, le futur du web sera d’une manière ou d’une autre décentralisé et distribué, avec un minimum, voire plus, d’intermédiaires. Ainsi les DAOs, pour Decentralized Autonomous Organizations (Organisations Décentralisées Autonomes) pourraient un jour perturber la manière dont la gouvernance est conçue et appliquée aujourd’hui à tous les niveaux (en général, du haut vers le bas).

La première DAO qui a réussi ? Le Bitcoin bien sûr…

A suivre…

Et n’oubliez pas de commenter, faire toute remarque et critique, ici bien sûr ou via Twitter.