Partagez "Introduction aux Smart Contracts" Et parlez-en avec vos amis.

Introduction aux Smart Contracts

Les Rentiers
22 décembre 2021
Difficulté : moyenne

Sous ce terme anglais se cache la technologie qui a permis à la blockchain de passer d’un simple stockage passif d’informations à un élément actif de ce que certains appellent le web décentralisé.

Les Smart Contracts (contrats intelligents en français) sont des programmes mettant en oeuvre une clause, permettant de calculer un résultat, stockés et validés par la blockchain. Celle-ci est donc garante de l’immuabilité du contrat ainsi que de la validité de son résultat.

Origines du fonctionnement

La première fois que le fonctionnement des smart contracts a été évoqué était en 1994 par Nick Szabo, un informaticien américain. Il avait par la suite imaginé la technologie nécéssaire au fonctionnement d’une cryptomonnaie dès 1998, soit plus de 10 ans avant la créaction du Bitcoin.

Nick Szabo en 2008

Il a donné la définition suivante : « a computerized transaction protocol that execute terms of a contract » (un protocole de transaction informatisés qui exécute les termes d’un contrat).

Il avait alors proposé l’exécution de contrats sur des actifs synthétiques, comme les produits dérivés et les contrats à terme. Szabo écrit : « Ces nouveaux titres sont formés en combinant des titres (tels que des obligations) et des dérivés (options et contrats à terme) de diverses manières. Des structures de termes très complexes pour les paiements peuvent désormais être intégrées dans des contrats standardisés et négociées avec de faibles coûts de transaction en raison de l’analyse informatisée de ces structures terminologiques complexes. »

L’apport d’Ethereum

Contrairement à Bitcoin, la blockchain Ethereum permet l’éxécution de smart contracts. C’est même une des principales raisons de son succès, puisque c’est la première supportant à la fois cette technologie et une monnaie largement utilisée.

Sur Ethereum, les smart contracts sont un type à part entière. Ils ont donc un solde et ils peuvent envoyer des transactions sur le réseau. A la différence des comptes classiques, ils ne sont pas contrôlés par un utilisateur mais entièrement automatisés pour être exécutés seuls. Les comptes d’utilisateurs classiques peuvent ensuite interagir avec eux à travers des transactions qui lancent une fonction définie sur le smart contract.

Les smart contracts définissent des règles comme pour n’importe quel contrat. Ces règles sont programmées via un langage dédié. Ils ne peuvent en général pas être supprimés et les interactions avec eux sont irréversibles car enregistrées dans la blockchain, par définition immuable.

Un langage de programmation

Tout le monde peut créer un smart contrat et le déployer sur le réseau. Il faut pour cela apprendre un des langages permettant son implémentation et avoir suffisamment d’ETH (la monnaie utilisée sur le réseau Ethereum) pour le déployer. Le déploiement d’un smart contrat est techniquement une transaction, vous devez donc payer des frais de la même manière que pour n’importe quel transfert de ETH. Ces frais sont cependant plus élevés que pour une transaction simple.

Ethereum a développé deux principaux langages pour les Smart contracts :

Il s’agit de langages compilés, le code doit donc être envoyé sur la blockchain dans sa version binaire. Afin de garantir la décentralisation des programmes, ils ne peuvent pas interagir avec le monde extérieur.

Voici un exemple de code Solidity :

pragma solidity 0.8.7;

contract VendingMachine {

    // Declare state variables of the contract
    address public owner;
    mapping (address => uint) public cupcakeBalances;

    // When 'VendingMachine' contract is deployed:
    // 1. set the deploying address as the owner of the contract
    // 2. set the deployed smart contract's cupcake balance to 100
    constructor() {
        owner = msg.sender;
        cupcakeBalances[address(this)] = 100;
    }

    // Allow the owner to increase the smart contract's cupcake balance
    function refill(uint amount) public {
        require(msg.sender == owner, "Only the owner can refill.");
        cupcakeBalances[address(this)] += amount;
    }

    // Allow anyone to purchase cupcakes
    function purchase(uint amount) public payable {
        require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
        require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
        cupcakeBalances[address(this)] -= amount;
        cupcakeBalances[msg.sender] += amount;
    }
}

Applications

Les applications possibles des smart contracts sont presque infinies. N’importe quel contrat existant dans la vie réelle et aujourd’hui validé par un avocat peuvent se voir retranscrit de façon électronique via cette technologie.

Une des applications les plus évidentes est l’assurance, où le smart contract s’assurerera d’avoir reçu la cotisation avant une date définie, ce sans quoi il mettra automatiquement fin au contrat. Il gèrera aussi le cas inverse afin de débloquer automatiquement des fonds en cas de sinistre.

Les Rentiers n'est pas reconnu comme un acteur professionnel de la gestion de patrimoine ou comme conseiller en investissement. Dès lors, tous les conseils et recommendations donnés sont réservés à un usage exclusif de divertissement.
Vous devez toujours réaliser vos propres recherches avant toute décision d'investissement.