Desafió para el contrato de CrowdFunding

Clase 18 de 21Curso 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 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).