pragma solidity ^0.7.1; contract SupplyChain { // Struct pour stocker les informations sur un produit struct Product { string name; uint quantity; address owner; } // Table pour stocker tous les produits mapping(bytes32 => Product) products; // Event pour signaler l'ajout d'un produit event ProductAdded(bytes32 id, string name, uint quantity); // Fonction pour ajouter un produit function addProduct(bytes32 id, string memory name, uint quantity) public { // Vérifier que le produit n'existe pas déjà require(products[id].name == ""); // Ajouter le produit à la table products[id] = Product(name, quantity, msg.sender); // Signaler l'ajout du produit emit ProductAdded(id, name, quantity); } // Fonction pour transférer la propriété d'un produit function transferProduct(bytes32 id, address newOwner) public { // Récupérer le produit Product storage product = products[id]; // Vérifier que le produit existe require(product.name != ""); // Vérifier que l'appelant est le propriétaire actuel require(msg.sender == product.owner); // Transférer la propriété product.owner = newOwner; } }
0.7.1