Saltar al contenido principal

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:

  1. Consultan bloques nuevos cada X segundos
  2. Buscan transacciones hacia addresses de usuarios
  3. Guardan en MongoDB
  4. 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:

  1. Arquitectura detallada con diagramas completos
  2. Cada microservicio explicado a fondo
  3. Flujos de negocio críticos paso a paso
  4. Sistema de seguridad multicapa
  5. Estrategias de escalabilidad

Para Nuevos Desarrolladores

Si estás leyendo esto porque el creador original ya no está:

  1. No entres en pánico - El sistema está bien diseñado
  2. Lee esta documentación de principio a fin - Todo está explicado
  3. Empieza por los Core Services - Son los más críticos
  4. Los diagramas son tus amigos - Entiende el flujo visual
  5. Cada servicio tiene su README - Con detalles específicos

El sistema puede sobrevivir sin su creador. Esa es la idea.