# Building a Cryptobank
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.