Tienes todo el conocimiento necesario en Solidity para desarrollar tu primer contrato profesional. Es hora de poner a prueba todo lo aprendido en este curso.
Desafió sobre CrowdFunding
Un CrowdFunding es un mecanismo colectivo de financiación de proyectos donde múltiples usuarios realizan aportes económicos a una cuenta con el fin de que esta reciba inversión y el proyecto se desarrolle.
Por lo general, y para evitar estafas, dichos proyectos se encuentran aprobados por una plataforma y poseen un libro blanco que describe el equipo y los objetivos del mismo. Los usuarios que aportan capital suelen recibir incentivos en forma de tokens que pueden ser más valiosos en el futuro si el proyecto tiene éxito y recuperar la inversión.
Tu objetivo será desarrollar un contrato inteligente que permita:
- Inicializar el contrato y crea una
struct para almacenar los datos de una proyecto y administra el estado de cada uno con un enum.
- Crear una función
fundProject() que permita enviar ETH a un proyecto.
- Crear la función
changeProjectState() que permita cambiar el estado de un proyecto.
- Utilizar
modifiers para que solo el creador de un proyecto pueda modificarlo su estado.
- Producir validaciones en tu contrato para que no pueda aportarse capital a un proyecto finalizado o evitar que se aporte 0 ETH.
- Almacenar los proyectos en un Array y guarda cada contribución que un proyecto reciba en un Mappings.
Al finalizar el reto, comparte tu primer contrato inteligente y compara tu solución con la de otros estudiantes. Recuerda que existen distintas maneras de resolver este reto.
Contribución creada por: Kevin Fiorentino (Platzi Contributor).