En esta sección, presentaremos dos funciones nuevas: removeItemFromSale y updateItemPrice. Estas funciones permitirán al vendedor retirar su artículo de la venta y actualizar el precio de su artículo, respectivamente.
Marketplace mejorado:Solidez
// Identificador de licencia SPDX: solidez pragma del MIT
^0.8.6;
contract Marketplace {
// Definir una nueva estructura para los artículos
struct Item {
string name;
uint price;
address payable seller;
bool forSale;
}
// Matriz para contener todos los artículos
Item[] public items;
// Definiciones de eventos omitidas por brevedad
// Otras definiciones de funciones omitidas por brevedad
// Función para eliminar un artículo de la venta
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;
}
// Función para actualizar el precio de un artículo
función actualizarItemPrice(uint _itemId, uint _newPrice) público {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can update the price");
item.price = _newPrice;
}
}
En la función removeItemFromSale , primero recuperamos el artículo con el _itemId proporcionado. Luego verificamos que la persona que llama a la función (msg.sender) sea el vendedor del artículo. Si este es el caso, configuramos la propiedad forSale del artículo en false, eliminándolo efectivamente de la venta.
De manera similar, en la función updateItemPrice , recuperamos el artículo con el _itemId proporcionado, verificamos que msg.sender sea el vendedor y, de ser así, actualizamos el precio del artículo al _newPrice proporcionado.
Después de mejorar el contrato Marketplace , compílelo e impleméntelo tal como lo hizo en las lecciones anteriores. Recuerde seleccionar el contrato correcto en el menú desplegable del complemento del compilador Solidity antes de compilar e implementar.
Una vez que se implemente el contrato, aparecerá en la sección Contratos implementados en el complemento Implementar y ejecutar transacciones. Aquí puede interactuar con el contrato.
Para eliminar un artículo de la venta, ingrese el ID del artículo en la función removeItemFromSale y haga clic en el botón. Para actualizar el precio de un artículo, ingrese el ID del artículo y el nuevo precio en la función updateItemPrice y haga clic en el botón.
Con esto, ahora ha creado un mercado descentralizado básico pero funcional en la cadena de bloques Ethereum. Puede crear, enumerar, comprar, eliminar y actualizar artículos con este contrato inteligente. ¡Gran trabajo!
En la próxima lección, analizaremos cómo manejar posibles vulnerabilidades de seguridad en nuestro contrato e introduciremos modificadores para optimizar aún más nuestro código. ¡Manténganse al tanto!