VitalikPlace es un Marketplace de NFTs descentralizado construido en Ethereum. Permite a los usuarios listar, comprar, deslistar y actualizar los precios de sus NFTs. El contrato proporciona una forma segura y transparente de comerciar tokens ERC721.
- Listar NFTs para la venta
- Comprar NFTs listados
- Deslistar NFTs
- Actualizar precios de NFTs listados
- Ver precios de NFTs listados
- Smart Contracts: Solidity
- Entorno de Desarrollo: Foundry
- Front-end: React + Wagmi
- Tests: Pruebas unitarias con Foundry
Hemos implementado el ReentrancyGuard
de OpenZeppelin para proteger contra ataques de reentrada. Esto es crucial para funciones que involucran transferencias de Ether o tokens.
contract VitalikPlace is ReentrancyGuard {
// ...
}
Patrón Utilizado: Reentrancy Guard Razón: Previene que contratos maliciosos vuelvan a entrar en el contrato durante cambios de estado, mejorando la seguridad.
En funciones como buyNFT
, seguimos el patrón Checks-Effects-Interactions:
- Comprobar condiciones
- Actualizar estado
- Interactuar con contratos externos
Patrón Utilizado: Checks-Effects-Interactions Razón: Minimiza el riesgo de ataques de reentrada y asegura un flujo claro y lógico de operaciones.
Emitimos eventos para todos los cambios de estado significativos:
Patrón Utilizado: Event Emission Razón: Permite un seguimiento eficiente fuera de la cadena de los cambios de estado del contrato y proporciona una pista de auditoría clara.
Usamos comprobaciones simples de control de acceso para asegurar que solo usuarios autorizados puedan realizar ciertas acciones:
Patrón Utilizado: Access Control Razón: Asegura que solo el propietario legítimo de un NFT pueda modificar su listado o precio.
Hemos implementado un conjunto completo de pruebas unitarias utilizando el framework de testing de Foundry para asegurar la robustez y correcto funcionamiento de nuestro smart contract. A continuación, se describen tres pruebas clave que verifican las funcionalidades de "Listar NFTs para la venta" y "Actualizar precios de NFTs listados":
Esta prueba verifica que un usuario pueda listar correctamente un NFT para la venta en el marketplace.
Esta prueba verifica que el propietario de un NFT listado pueda actualizar su precio correctamente.
Esta prueba verifica que solo el propietario del NFT listado pueda actualizar su precio, previniendo actualizaciones no autorizadas.
La interfaz de usuario de VitalikPlace está construida con React y utiliza la biblioteca wagmi para una integración fluida con wallets y contratos de Ethereum. Esto proporciona una experiencia de usuario atractiva y fácil de usar para interactuar con el marketplace.