Volver a proyectos
Completado

MetLabs Bank

Sistema bancario completo con blockchain: autenticación segura, transacciones con tokens ERC-20 y wallets Ethereum automáticas

Descripción del Proyecto

Sistema bancario blockchain desarrollado como prueba técnica de 60 horas para MetLabs. Integra tecnología blockchain Ethereum con funcionalidades bancarias tradicionales, demostrando capacidad de desarrollo full-stack con tecnologías emergentes en tiempo limitado.

Características principales

  • Autenticación segura con JWT y encriptación de passwords
  • Transacciones P2P en tiempo real entre usuarios
  • Tokens ERC-20 propios desplegados en testnet Ethereum
  • Wallets Ethereum automáticas generadas para cada usuario
  • Smart Contract personalizado para gestión de tokens
  • Dashboard interactivo con historial completo de transacciones

Tecnologías utilizadas

Frontend:

  • Next.js con App Router y Server Components
  • TypeScript para desarrollo type-safe
  • TailwindCSS para UI responsive y moderna
  • SWR para manejo de estado y caché

Backend:

  • Node.js + Express para API RESTful
  • PostgreSQL con Prisma ORM
  • JWT para autenticación segura
  • Rate limiting y validaciones

Blockchain:

  • Ethereum Sepolia Testnet
  • Solidity para Smart Contracts
  • Ethers.js para interacción con blockchain
  • Metamask integration

Funcionalidades avanzadas

  • Registro de usuarios con generación automática de wallet Ethereum
  • Sistema de transacciones dual: fiat virtual + tokens ERC-20
  • Consulta blockchain en tiempo real del balance de tokens
  • Historial completo de todas las operaciones con timestamps
  • Panel administrativo para gestión de usuarios (opcional)
  • Validaciones robustas en frontend y backend

Arquitectura técnica

  • API RESTful con endpoints protegidos por autenticación
  • Base de datos relacional optimizada con índices
  • Smart Contract verificado y desplegado en testnet
  • Arquitectura modular con separación de concerns
  • Error handling robusto en toda la aplicación

Smart Contract (Solidity)

// Token ERC-20 personalizado para MetLabs Bank
contract MetLabsToken is ERC20 {
    constructor() ERC20("MetLabs Token", "MLB") {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}

Flujo de transacciones

  1. Usuario A inicia transferencia a Usuario B
  2. Backend valida saldos y permisos
  3. Base de datos registra transacción
  4. Smart Contract ejecuta transferencia de tokens (si aplica)
  5. Frontend actualiza balances en tiempo real
  6. Notificación a ambos usuarios

Retos Técnicos Superados

1. Integración blockchain con backend tradicional

Problema: Sincronizar estado entre PostgreSQL y blockchain Ethereum, manejando latencias de red y confirmaciones de bloque.

Solución: Implementé un sistema de “pending transactions” que marca operaciones como pendientes mientras se confirman en blockchain. Un worker en background verifica confirmaciones cada 30 segundos y actualiza el estado. Añadí rollback automático si la transacción blockchain falla.

2. Generación segura de wallets

Problema: Generar wallets Ethereum únicas para cada usuario sin exponer private keys, cumpliendo con estándares de seguridad.

Solución: Usé ethers.js para generar wallets con mnemonic phrases encriptadas con AES-256 antes de almacenar en base de datos. Las private keys NUNCA se almacenan en texto plano. Implementé un sistema de “encrypted vault” por usuario.

3. Rate limiting para transacciones blockchain

Problema: Las llamadas a blockchain son costosas (gas fees) y lentas, causando timeouts si usuarios hacen spam de transacciones.

Solución: Implementé rate limiting por usuario (máx 5 transacciones/minuto) y un sistema de cola con Redis que procesa transacciones de forma ordenada. Añadí feedback visual del estado de la transacción (“pending”, “confirming”, “completed”).

4. Tiempo límite de 60 horas

Problema: Implementar sistema completo blockchain + bancario en 60 horas requiere priorización extrema.

Solución: Planifiqué arquitectura en las primeras 4 horas, prioricé features críticas (auth, transfers, blockchain), usé bibliotecas maduras (Prisma, ethers.js) para acelerar desarrollo. Implementé testing manual focalizado en flujos críticos. Resultado: entrega completa con 2 horas de margen.


Resultado: Prueba técnica completada exitosamente demostrando capacidad de desarrollo full-stack con blockchain en tiempo limitado. Sistema funcional desplegado en producción con smart contract verificado en testnet.

Métricas del proyecto

  • Tiempo de desarrollo: 58/60 horas
  • Lines of code: ~3,500 líneas
  • Smart contract gas usage: Optimizado <50k gas por transferencia
  • Uptime: 99.9% en testnet
  • Código limpio: ESLint + Prettier configurados

Explorar más proyectos

Ver todos