# Construyendo un Criptobanco Para este proyecto, vamos a programar un banco por medio de un smart contract. El criptobanco debe poder manejar múltiples cuentas de usuarios, de forma segura y transparente. ## Funcionalidades del Criptobanco 1. Crear una cuenta. 2. Bloquear su cuenta. Al bloquear una cuenta, ésta no puede realizar transferencias a menos que se desbloquee. 3. Desbloquear una cuenta. 4. Depositarle fondos a una cuenta. 5. Consultar el balance de su cuenta. 6. Realizar transferencias a otra cuenta, siempre y cuando la cuenta esté desbloqueada. 7. Solicitar un préstamo simple. Los préstamos simples tienen un plazo de 30 días y una tasa de interés de 10%. Para solicitar el préstamo, se tienen que considerar las siguientes validaciones: - El criptobanco deberá tener los fondos suficientes. En caso de que el banco no tenga los fondos, el préstamo no se puede realizar. - El usuario no puede tener un préstamo activo. 8. Solicitar un préstamo sobrecolaterilazado. Para realizar un préstamo sobrecolateralizado, el usuario deberá dejar un colateral del 200% en garantía. Los préstamos sobrecolateralizados tienen un plazo de 30 días a una tasa de interés de 1%. El usuario no puede tener más de un préstamo activo. 9. Realizar un abono a un préstamo. 10. Cerrar la cuenta. Al cerrar la cuenta, se le regresan todos los fondos al usuario. ## Requerimientos * Diseña las funcionas para maximizar seguridad, minimizar consumo de gas y reutilizar código. * Cada acción que realice un banco, deberá emitir un evento. * Desarrolla código limpio -- utiliza la mayor cantidad de conceptos aprendidos durante la clase. ## Instrucciones de entrega 1. Lanza el contrato a Rinkeby. 2. Sube el código fuente de la aplicación con el formato `<matricula>.sol`. 3. Graba un pequeño video explicando el funcionamiento del smart contract o genera la documentación necesaria para interactuar con él. 4. Genera un README.md con un "About" del proyecto en donde expliques el raciocinio de diseño de tu smart contract y cualquier nota relevante. (No hay extensión mínima ni máxima).