Desafió para el contrato de CrowdFunding
Clase 18 de 21 • Curso de Introducción al Desarrollo Blockchain: Smart Contracts
Resumen
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 unenum
. - 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).