Dans cette section, nous présentons deux nouvelles fonctions : removeItemFromSale
et updateItemPrice
. Ces fonctions permettent au vendeur de retirer son article de la vente et de mettre à jour le prix de son article, respectivement.
marché
amélioré :Solidity
// SPDX-License-Identifier : MIT
pragma solidity ^0.8.6 ;
contract Marketplace {
// Définir une nouvelle structure pour les articles
struct Item {
string name;
uint price;
address payable seller;
bool forSale;
}
// Tableau pour contenir tous les articles
Item[] public items ;
// Définitions d'événements omises par souci de concision
// Autres définitions de fonctions omises par souci de concision
// Fonction permettant de retirer un article de la vente
function removeItemFromSale(uint _itemId) public {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can remove the item from sale");
item.forSale = false;
}
// Fonction permettant de mettre à jour le prix d'un article
function updateItemPrice(uint _itemId, uint _newPrice) public {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can update the price");
item.price = _newPrice;
}
}
Dans la fonction removeItemFromSale
, nous récupérons d'abord l'article avec l'identifiant _itemId
fourni. Nous vérifions ensuite que la personne qui appelle la fonction(msg.sender
) est bien le vendeur de l'objet. Si c'est le cas, nous attribuons la valeur false
à la propriété forSale
de l'article, ce qui a pour effet de le retirer de la vente.
De même, dans la fonction updateItemPrice
, nous récupérons l'article avec le _itemId
fourni, nous vérifions que msg.sender
est le vendeur et, si c'est le cas, nous mettons à jour le prix de l'article avec le _newPrice
fourni.
Après avoir amélioré le contrat Marketplace
, compilez-le et déployez-le comme vous l'avez fait dans les leçons précédentes. N'oubliez pas de sélectionner le bon contrat dans le menu déroulant du plugin du compilateur Solidity avant de compiler et de déployer.
Une fois le contrat déployé, il apparaîtra dans la section Contrats déployés du plugin Deploy & Run Transactions. Ici, vous pouvez interagir avec le contrat.
Pour retirer un article de la vente, saisissez l'identifiant de l'article dans la fonction removeItemFromSale
et cliquez sur le bouton. Pour mettre à jour le prix d'un article, entrez l'ID de l'article et le nouveau prix dans la fonction updateItemPrice
et cliquez sur le bouton.
Vous avez ainsi construit une place de marché décentralisée basique mais fonctionnelle sur la blockchain Ethereum. Vous pouvez créer, lister, acheter, supprimer et mettre à jour des objets avec ce contrat intelligent. Excellent travail !
Dans la prochaine leçon, nous verrons comment gérer les failles de sécurité potentielles dans notre contrat et nous introduirons des modificateurs pour rationaliser davantage notre code. Restez à l'écoute !
Dans cette section, nous présentons deux nouvelles fonctions : removeItemFromSale
et updateItemPrice
. Ces fonctions permettent au vendeur de retirer son article de la vente et de mettre à jour le prix de son article, respectivement.
marché
amélioré :Solidity
// SPDX-License-Identifier : MIT
pragma solidity ^0.8.6 ;
contract Marketplace {
// Définir une nouvelle structure pour les articles
struct Item {
string name;
uint price;
address payable seller;
bool forSale;
}
// Tableau pour contenir tous les articles
Item[] public items ;
// Définitions d'événements omises par souci de concision
// Autres définitions de fonctions omises par souci de concision
// Fonction permettant de retirer un article de la vente
function removeItemFromSale(uint _itemId) public {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can remove the item from sale");
item.forSale = false;
}
// Fonction permettant de mettre à jour le prix d'un article
function updateItemPrice(uint _itemId, uint _newPrice) public {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can update the price");
item.price = _newPrice;
}
}
Dans la fonction removeItemFromSale
, nous récupérons d'abord l'article avec l'identifiant _itemId
fourni. Nous vérifions ensuite que la personne qui appelle la fonction(msg.sender
) est bien le vendeur de l'objet. Si c'est le cas, nous attribuons la valeur false
à la propriété forSale
de l'article, ce qui a pour effet de le retirer de la vente.
De même, dans la fonction updateItemPrice
, nous récupérons l'article avec le _itemId
fourni, nous vérifions que msg.sender
est le vendeur et, si c'est le cas, nous mettons à jour le prix de l'article avec le _newPrice
fourni.
Après avoir amélioré le contrat Marketplace
, compilez-le et déployez-le comme vous l'avez fait dans les leçons précédentes. N'oubliez pas de sélectionner le bon contrat dans le menu déroulant du plugin du compilateur Solidity avant de compiler et de déployer.
Une fois le contrat déployé, il apparaîtra dans la section Contrats déployés du plugin Deploy & Run Transactions. Ici, vous pouvez interagir avec le contrat.
Pour retirer un article de la vente, saisissez l'identifiant de l'article dans la fonction removeItemFromSale
et cliquez sur le bouton. Pour mettre à jour le prix d'un article, entrez l'ID de l'article et le nouveau prix dans la fonction updateItemPrice
et cliquez sur le bouton.
Vous avez ainsi construit une place de marché décentralisée basique mais fonctionnelle sur la blockchain Ethereum. Vous pouvez créer, lister, acheter, supprimer et mettre à jour des objets avec ce contrat intelligent. Excellent travail !
Dans la prochaine leçon, nous verrons comment gérer les failles de sécurité potentielles dans notre contrat et nous introduirons des modificateurs pour rationaliser davantage notre code. Restez à l'écoute !