Exercice - Écrire votre premier contrat

Effectué

Nous allons maintenant mobiliser tout ce que nous avons appris pour écrire un contrat intelligent complet.

Dans cet exemple, vous allez utiliser Solidity pour créer un contrat intelligent pour une place de marché en ligne simple. Ce contrat permet aux utilisateurs de lister un article en vente et d’acheter un article disponible. Deux rôles sont impliqués : vendeur et acheteur.

Exemple de place de marché simple

pragma solidity >0.7.0 <0.8.0;

contract Marketplace {
    address public seller;
    address public buyer;
    mapping (address => uint) public balances;

    event ListItem(address seller, uint price);
    event PurchasedItem(address seller, address buyer, uint price);

    enum StateType {
          ItemAvailable,
          ItemPurchased
    }

    StateType public State;

    constructor() public {
        seller = msg.sender;
        State = StateType.ItemAvailable;
    }

    function buy(address seller, address buyer, uint price) public payable {
        require(price <= balances[buyer], "Insufficient balance");
        State = StateType.ItemPurchased;
        balances[buyer] -= price;
        balances[seller] += price;

        emit PurchasedItem(seller, buyer, msg.value);
    }
}    

Intéressons-nous de plus près aux principaux composants de ce contrat intelligent :

  • à savoir :
    • Trois variables d’état : buyer, seller et balances
    • Deux événements : ListItem et PurchasedItem
    • Une énumération avec deux valeurs : ItemAvailable et ItemPurchased
  • Le constructeur affecte l’utilisateur vendeur en tant que msg.sender et définit l’état initial sur ItemAvailable. Ce constructeur est appelé quand le contrat est créé.
  • La fonction buy accepte trois paramètres : seller, buyer et price. Elle exige que l’acheteur ait suffisamment d’argent pour procéder à l’achat. Ensuite, elle transfère l’argent de l’acheteur au vendeur, puis un message est émis.

Étapes suivantes

Accédez à l’IDE Remix pour examiner d’autres exemples de contrat intelligent qui utilisent Solidity. Remix est un IDE dans le navigateur qui vous permet de démarrer tout de suite sans avoir à créer un compte ou à vous connecter. Vous pouvez immédiatement écrire, tester, compiler et déployer des contrats.

Copiez et collez ce contrat intelligent sur Remix dans un nouveau fichier nommé Marketplace.sol. Ensuite, compilez et déployez le contrat. Le contrat a une fonction pour acheter un article disponible, mais vous pouvez remarquer qu’il n’existe aucun moyen d’indiquer une devise pour l’acheteur afin d’effectuer l’achat. À titre d’exercice supplémentaire, utilisez ce que vous avez appris pour écrire une fonction qui donne un solde à l’acheteur, en fournissant une adresse de compte et un montant. Si vous voulez voir un exemple de la façon de faire cela, regardez Dr. G - Ajouter une fonction afin d’initialiser un solde pour les participants.