AA+W - Fotolia

La Blockchain au-delà du Bitcoin : les Smart Contracts

Si la première génération de plateformes de la Blockchain - comme le Bitcoin - a été caractérisée par les registres distribués basés sur les transactions, la génération suivante est clairement définie par l'avènement des contrats intelligents ou Smart Contracts.

Ces derniers sont de la logique sous forme de code informatique (dans des langages tels que Solidity, Go, Python, Java) qui définissent « comment » et « quand » un accord sera appliqué. Une fois qu’il est mis en place, toute interaction avec un smart contract est enregistrée comme une transaction sur la Blockchain.

Le terme a été inventé il y a plus de 20 ans par l'informaticien Nick Szabo, qui souhaitait concevoir un protocole de commerce électronique facilitant les transactions commerciales entre étrangers sur Internet - et cela sans intermédiaires de confiance.

Un soutien des plateformes

La Blockchain du Bitcoin rempli largement son rôle - faciliter les paiements. Mais elle ne prend pas directement en charge les smart contracts. Elle a consciemment décidé de ne maintenir que 250 codes opératoires. Elle omet l'utilisation des langages « Turing-complete » pour sa programmation.

Détectant l'intérêt du secteur, de nombreuses plateformes de la Blockchain ont commencé à exploiter les avantages des smart contracts. Certaines des plus populaires sont énumérées ci-dessous : Ethereum, Lisk, HyperLedger Fabric, R3 Corda

Comment fonctionnent les smart contracts?

Il s'agit d'un processus en trois étapes : la mise en place, la modification d'état, la consultation.

Pour expliquer le fonctionnement d'un smart contract, prenons l'exemple d'un simple système de vote basé sur la Blockchain. Il comporte trois entités principales : le scrutin, l'électeur et l’auditeur. Ces entités fonctionnent selon des règles opérationnelles données - par exemple, le scrutin doit dépouiller les votes exprimés dans chaque variante ; l'électeur doit être légitime et n’émettre qu’un seul vote par scrutin ; l’auditeur doit pouvoir vérifier le scrutin via le registre électronique.

Lors de la mise en place du système de vote, la première étape est de créer les entités - Scrutin, Électeur et Auditeur.

Le scrutin est « créé » sous forme de smart contract composé de deux aspects - son état et son fonctionnement. Ce dernier est la mise en œuvre des règles opérationnelles qui doivent être appliquées. L'acte de créer le scrutin est l'acte de mettre en place le smart contract. Une fois mis en place sur la plateforme Ethereum (la plus populaire), un smart contract peut être assimilé à une « classe » dans un système orienté objet. Mettre en place un contrat équivaut à instancier un objet depuis une classe : à partir d'une entité conceptuelle (classe), il se transforme en entité tangible (objet). Au moment de sa mise en place, un contrat reçoit une clé publique unique sur la Blockchain. Cette clé agit comme levier d’accès au smart contract.

L'électeur et les auditeurs sont des comptes valides sur la Blockchain, avec leurs propres clés publiques uniques. Les droits d'accès de ces comptes (encore une autre règle opérationnelle) peuvent être intégrés dans le smart contract du scrutin - ou dans un smart contract distinct, qui peut agir en tant que gestionnaire de vote.

Une fois le scrutin, l'électeur et l'auditeur mis en place, la deuxième étape est de voter.

« Émettre un vote sur un scrutin » s'apparente à changer l'état du smart contract mis en place. Cela peut être fait via une méthode exposée publiquement - par exemple, CastVote - sur le smart contract du scrutin. C’est l’équivalent d’une méthode publique pour une classe. La méthode enregistre le vote en modifiant l'état du scrutin, c'est-à-dire son nombre de votes par variante. En outre, elle exécute les règles opérationnelles : par exemple, un électeur ne doit voter qu'une seule fois sur un scrutin donné.

Chacune de ces interactions avec le smart contract est enregistrée comme une « transaction » sur le registre distribué de la Blockchain. De la manière habituelle, plusieurs de ces transactions sont groupées dans un arbre de Merkle et stockées dans un bloc sur la Blockchain. Ces transactions et ces blocs sont validés par le protocole de consensus réparti dans la plateforme de la Blockchain.

Maintenant que le vote a été exprimé, la dernière étape (facultative) consiste à auditer le système.

La liste des votes entrants est un registre électronique transparent, en temps réel et public, qui aide l’auditeur à vérifier l'intention de l'électeur. Dans Ethereum, les votes entrants sont exposés comme des « événements » qui peuvent être suivis en temps réel. Si un auditeur souhaite comparer les votes comptés à ce qui a été enregistré sur la Blockchain, il peut consulter le smart contract du scrutin afin d’obtenir le total des votes enregistrés. Notez que la consultation d'un smart contract n'est pas enregistrée sur la Blockchain en tant que transaction.

L'utilisation de smart contracts dans les registres distribués a donné un énorme coup de fouet à la technologie de la Blockchain, entraînant sa version 2.0.

Les sociétés constatent qu'elles peuvent réduire les coûts de rapprochement, les risques et la bureaucratie qui prévalent aujourd'hui dans les flux de travail. Elles espèrent remplacer le manque de confiance entre les contreparties par la nature déterministe du code informatique, réduisant/éliminant ainsi les intermédiaires. L’utilisation des smart contracts peut créer des écosystèmes économiques collaboratifs nouveaux et efficaces. Avant que la Blockchain ne mette en place des smart contracts, de tels accords entre les différents partenaires ne pouvaient pas être auto-exécutés/exécutés car leurs bases de données étaient distinctes.

Beaucoup de secteurs différents - tels que les Finances, le Divertissement, les Assurances et le Secteur Public - ont été attirés par le potentiel des smart contracts de la Blockchain. Étant donné le rythme actuel du développement des PoC et des prototypes, nous pensons que les smart contracts seront adoptés à court terme dans les milieux de production des sociétés.

Les avantages des smart contracts

Pour comprendre les avantages des smart contracts, prenons l’exemple de l’application actuelle des contrats - un acte de vente conclu entre l’acheteur d'une maison et son vendeur se présente sous la forme d'un document (numérique ou papier). L'exécution de l'acte de vente et la validation de ses conditions peuvent être soit manuelles, soit transposées sous la forme d'un code informatique. Ce système comporte plusieurs défauts. Le document est ouvert à la falsification ou à la destruction. Le code de transposition peut représenter correctement et exhaustivement - ou non - les termes de l'acte de vente. L'exécution du contrat peut être affectée par une erreur humaine, ou par une intention malveillante. L'exécution du contrat peut exiger l'aide de tiers, tels qu’une entreprise du secteur immobilier ou juridique.

En revanche, une fois qu’un acte de vente est approuvé et écrit sur la Blockchain sous forme de smart contracts, il devient non fongible. Il peut s’exécuter automatiquement et appliquer les termes convenus entre l'acheteur et le vendeur, augmentant ainsi l'exactitude et réduisant le temps, les coûts et le risque de manipulation. Cela remédie aux défauts des systèmes actuels, ouvrant la voie à la désintermédiation. Dans le cadre d'une mise en œuvre réelle, l'acte de vente serait représenté de façon hybride - une copie numérique/papier et un smart contract auto-exécutable sur la Blockchain.

Dans l'exemple du système de vote sur la Blockchain, les avantages ne sont pas limités à la vie privée, la transparence, la vérifiabilité publique et la résistance à la corruption. Ils comportent également une énorme rentabilité. Dans nos tests, un vote unique sur un système basé sur des smart contracts ne coûte en moyenne que 0,00077 Ether ou 0,0077 $ (en supposant que 10 $ valent 1 Ether). En ce qui concerne la réduction de temps obtenue pour mettre en œuvre le processus global, la conciliation des bulletins de vote est immédiate, puisque le comptage des votes se fait en temps réel.

Les défis à relever par les contrats intelligents

Comme tout autre système, les smart contracts peuvent nécessiter une modernisation. Vu la nature immuable des smart contracts, il n’est pas possible de les mettre à jour ou d’en produire une nouvelle version, ce qui constitue un véritable défi. En attendant l’évolution de systèmes appropriés, cette question peut être atténuée par la conception de smart contracts encapsulés en modules, de sorte que ceux qui stockent des informations d’état n'aient pas besoin de subir des changements.

Le déclenchement et l'auto-exécution de smart contracts peuvent nécessiter des données « hors chaîne ». Par exemple, un smart contract peut avoir besoin de connaître le sentiment actuel concernant un produit, comme on le voit sur Twitter. Actuellement, l'accès aux données hors chaîne se fait par l'intermédiaire de services appelés « oracles ». Comme ces services appartiennent à des entités centrales, il peut en résulter des manipulations. Décentraliser les oracles est donc nécessaire avant d’en voir une utilisation répandue.

Dans une Blockchain, le code d'un smart contract est visible pour toutes les entités du réseau. La confidentialité des smart contracts reste donc à résoudre.

Les systèmes en temps réel actuels ont de très faibles temps de latence. Étant donné la nature des protocoles de consensus réparti, tels que la Preuve de Travail, le temps de latence d'une exécution de smart contracts (c'est-à-dire l'enregistrement d'une transaction) peut être inadéquate pour la plupart des systèmes. Ce problème peut être résolu en passant à des chaînes autorisées et en choisissant des algorithmes de consensus appropriés.

L'évolutivité est un sujet de préoccupation notoire avec les plateformes Blockchain. Ce défi est moindre dans les blockchains privées, car l'utilisation et le débit du réseau peuvent être surveillés et contrôlés.

Pour les systèmes les plus complexes, il peut être nécessaire d'interagir entre différentes chaînes. Cet aspect n'a pas été complètement testé et approuvé. Cela dit, quelques modèles initiaux sont en place. Pour exemple : le BTCRelay, qui permet aux propriétaires de Bitcoin d'interagir avec des smart contracts Ethereum.

 

Pour approfondir sur Base de données

Close