Visión General del Sistema SwapBits
Entendiendo el ecosistema completo de SwapBits: microservicios, lambdas, datos y clientes.
¿Qué es SwapBits?
SwapBits es una plataforma completa de intercambio de criptomonedas que permite a los usuarios:
- Comprar y vender criptomonedas en múltiples blockchains
- Gestionar wallets de forma segura para diferentes redes
- Realizar transacciones de envío y recepción de criptoactivos
- Intercambiar entre crypto ↔ fiat mediante servicios bancarios integrados
- Verificar identidad (KYC) para cumplir con regulaciones
- Trading en tiempo real con datos de mercado actualizados
Ecosistema Completo
El sistema SwapBits está compuesto por 4 grandes bloques:
1. Docker Microservices (13 servicios)
El corazón del sistema está construido con microservicios en contenedores Docker, cada uno con una responsabilidad específica.
Core Services (Los fundamentales)
Auth Service
Propósito: Maneja toda la autenticación y autorización de usuarios.
Responsabilidades:
- Login/Registro de usuarios
- Generación de tokens JWT
- Verificación de 2FA (TOTP)
- Gestión de sesiones en Redis
Por qué es crítico: Sin este servicio, nadie puede entrar al sistema.
User Service
Propósito: Gestión completa de usuarios y sus datos.
Responsabilidades:
- CRUD de usuarios
- Rate limiting (control de abuso)
- Gestión de dispositivos vinculados
- Notificaciones de usuario
- Sistema de auditoría de acciones
Por qué es crítico: Centraliza toda la información de usuarios.
Wallet Service
Propósito: Gestión de carteras de criptomonedas multi-blockchain.
Responsabilidades:
- Crear wallets (invoca Lambdas)
- Consultar balances
- Enviar transacciones
- Historial de transacciones
- Gestión de múltiples blockchains (BTC, ETH, SOL, TON, TRX, etc.)
Por qué es crítico: Sin wallets, no hay forma de manejar criptomonedas.
Bank Service
Propósito: Servicios bancarios para convertir fiat ↔ crypto.
Responsabilidades:
- Depósitos fiat
- Retiros crypto → fiat
- Integración con Manteca y Bridge (proveedores)
- Procesamiento de webhooks
- Trading (compra/venta)
Por qué es crítico: Conecta el mundo tradicional con crypto.
Business Services (Lógica de negocio)
Exchange Service
Propósito: Trading de criptomonedas en exchanges.
Responsabilidades:
- Integración con Bybit Exchange
- Órdenes de compra/venta
- Market data en tiempo real
- Order book management
KYC Service
Propósito: Verificación de identidad de usuarios.
Responsabilidades:
- Iniciar sesiones KYC
- Integración con proveedores de verificación
- Gestión de estados (pending, approved, rejected)
- Almacenamiento de documentos
Admin Service
Propósito: Panel de administración completo.
Componentes:
- Backend: API REST para gestión
- Frontend: Dashboard administrativo React
- Sistema de permisos y roles
- Chat con usuarios
- Analytics y reportes
Communication Layer (Tiempo real)
WebSocket Service (WS)
Propósito: Comunicación bidireccional en tiempo real.
Responsabilidades:
- WebSocket connections
- Market data streaming (precios en vivo)
- Chat en tiempo real
- Notificaciones push
- Autenticación QR
- Redis Pub/Sub para coordinar mensajes
Por qué es crítico: Sin este servicio, no hay actualizaciones en tiempo real.
Webhook Service
Propósito: Recibir eventos de sistemas externos.
Responsabilidades:
- Recibir webhooks de Bybit
- Recibir webhooks de bancos (Manteca/Bridge)
- Verificar firmas de seguridad
- Procesar eventos en background
Blockchain Monitors (Detectores de transacciones)
Cada monitor es responsable de escuchar una blockchain específica y detectar cuando llega dinero a las wallets de usuarios.
- Solana Monitor: Detecta transferencias SOL y tokens SPL
- Ethereum Monitor: Detecta ETH y tokens ERC-20
- BSC Monitor: Detecta BNB y tokens BEP-20
- Tron Monitor: Detecta TRX y tokens TRC-20
- Bitcoin Monitor: Detecta transacciones BTC
Cómo funcionan:
- Consultan bloques nuevos cada X segundos
- Buscan transacciones hacia addresses de usuarios
- Guardan en MongoDB
- Notifican al usuario vía WebSocket
Shared Packages (Código compartido)
Un sistema de paquetes reutilizables que todos los servicios usan:
- Guards: JWT, KYC, PIN, Rate Limit, Device Auth
- Interceptors: Analytics, Auditoría
- Schemas: 30+ modelos de MongoDB
- Services: Notifications, Chat, Analytics, PIN
- Middleware: Rate limiting, Analytics
- Utils: Códigos de error, HTTP helpers
Por qué existen: Evita duplicar código entre servicios.
2. AWS Lambda Functions
Funciones serverless para tareas específicas:
Wallet Creation Functions
- CreateWalletEVM: Ethereum, BSC, Polygon, etc.
- CreateWalletBTC: Bitcoin
- CreateWalletSOL: Solana
- CreateWalletTON: TON Network
- CreateWalletTRX: Tron
- CreateWalletXRPL: Ripple
- Y más...
Por qué en Lambda: No necesitan estar corriendo 24/7, se ejecutan solo cuando se crean wallets.
Transaction Functions
- SendHotWalletGlobal: Enviar transacciones desde hot wallets
- SendHotWalletSol: Específico para Solana
- SendHotWalletTon: Específico para TON
- EncryptAndInverse: Utilidad de encriptación
Por qué en Lambda: Procesamiento bajo demanda, escalable automáticamente.
3. Data Layer (Persistencia)
MongoDB
Base de datos principal donde se guarda TODO:
- Usuarios, wallets, transacciones
- Órdenes, balances, logs
- Chat, notificaciones, auditoría
- Estados de KYC, sesiones
Redis
Cache y comunicación en tiempo real:
- Sesiones de usuarios (JWT tokens)
- Rate limiting (control de abuso)
- Pub/Sub para WebSocket
- Cache de datos frecuentes
Migration System
Sistema de migraciones de base de datos:
- Actualizar estructuras de datos
- Migración EVM (actualización de addresses)
- Hasheo de private keys
- Scripts automatizados
4. Client Applications
Flutter Mobile App
Aplicación móvil multiplataforma (iOS/Android) que consume todos los servicios via:
- REST APIs
- WebSocket para tiempo real
Admin Dashboard
Panel web administrativo (React) con:
- Gestión de usuarios
- Chat con clientes
- Analytics en tiempo real
- Sistema de logs
Stack Tecnológico Completo
Backend Framework: NestJS (Node.js + TypeScript)
Databases: MongoDB (principal), Redis (cache/sessions)
Containerization: Docker + Docker Compose
Cloud: AWS (Lambda, Secrets Manager, KMS)
WebSockets: Socket.io
Blockchain: Web3.js, Solana/web3.js, TronWeb, TONWeb
Mobile: Flutter/Dart
Admin: React + TypeScript
Flujo de Datos Simplificado
Decisiones Arquitectónicas Clave
¿Por qué microservicios?
- Escalabilidad independiente: Puedes escalar solo WS Service si hay mucho tráfico
- Despliegue independiente: Actualizar un servicio sin tocar los demás
- Separación de responsabilidades: Cada servicio hace una cosa bien
- Tolerancia a fallos: Si Exchange Service falla, los demás siguen funcionando
¿Por qué Docker?
- Consistencia: Funciona igual en desarrollo y producción
- Aislamiento: Cada servicio tiene sus dependencias
- Portabilidad: Se puede mover a cualquier servidor
- Orquestación: Docker Compose para gestionar todo
¿Por qué AWS Lambda para wallets?
- Costo: Solo pagas cuando se ejecuta
- Escalabilidad: AWS se encarga automáticamente
- Seguridad: Entorno aislado por ejecución
- Simplicidad: No necesitas manejar servidores
¿Por qué Redis además de MongoDB?
- Velocidad: Redis es 100x más rápido para cache
- Pub/Sub: Necesario para WebSocket multi-instancia
- Rate Limiting: Necesita ser ultra-rápido
- Sesiones: MongoDB no es ideal para datos temporales
¿Qué sigue?
Esta es la visión general. En las siguientes secciones profundizaremos en:
- Arquitectura detallada con diagramas completos
- Cada microservicio explicado a fondo
- Flujos de negocio críticos paso a paso
- Sistema de seguridad multicapa
- Estrategias de escalabilidad
Para Nuevos Desarrolladores
Si estás leyendo esto porque el creador original ya no está:
- No entres en pánico - El sistema está bien diseñado
- Lee esta documentación de principio a fin - Todo está explicado
- Empieza por los Core Services - Son los más críticos
- Los diagramas son tus amigos - Entiende el flujo visual
- Cada servicio tiene su README - Con detalles específicos
El sistema puede sobrevivir sin su creador. Esa es la idea.