Lider Cash
Ramp: proveedor on-ramp off-ramp 1% comisiones.
Optimist: red capa 2 ethereum comisiones por transaccion de $ 0.15 aproximadamente.
Lithic: Proveedor que me permite introducir tarjeta de debito o credito prepagada.
Hardhat: Framework para creacion de contratos inteligentes con typescript.
Firebase:
Angular:
1. Introducción
El presente informe detalla la arquitectura y el stack tecnológico completo para el desarrollo de LiderCash, una billetera digital bajo la división LiderFinance. El proyecto busca ofrecer una solución financiera robusta y simple, permitiendo a los usuarios gestionar activos digitales como USDT, así como interactuar con servicios de banca tradicional mediante tarjetas prepagas, todo dentro de una experiencia de usuario fluida y segura.
2. Filosofía de Desarrollo
La arquitectura de LiderCash se basa en las siguientes convenciones para garantizar un código de alta calidad, genérico y altamente optimizado:
Simplicidad y Eficiencia: Prioridad absoluta en el uso de tecnologías nativas y soluciones directas que eviten complejidad innecesaria.
Reusabilidad: Todos los servicios clave se encapsulan en el lidertechLibCentralModule para su uso en futuros proyectos de Lidertech.
Manejo de Estado: Uso exclusivo de Signals de Angular para la reactividad, erradicando el uso de RxJS.
Convenciones: Uso de métodos en español, CSS puro para los estilos y nombres de componentes y servicios que sigan las directrices de la biblioteca.
3. Stack Tecnológico de la Aplicación
Capa
Componentes Clave
Descripción y Uso
Frontend y Móvil
Angular (nueva sintaxis), Capacitor, ethers.js, Signals, CSS
Interfaz de usuario intuitiva. Capacitor permite la interoperabilidad de la PWA con el hardware del dispositivo. ethers.js se usa para la interacción con la blockchain.
Backend
Firebase (Authentication, Cloud Functions, Cloud Firestore)
Un backend serverless y totalmente integrado con el frontend. Firebase Authentication para gestión de usuarios. Cloud Firestore para la base de datos y Cloud Functions con TypeScript para la lógica de negocio.
Blockchain
Optimism, Solidity, Hardhat
Se utiliza Optimism como la única red blockchain para todas las transacciones de USDT. El contrato inteligente del token se desarrolla en Solidity y se despliega con Hardhat.
Exportar a Hojas de cálculo
4. Servicios Clave de la Aplicación
Todos los servicios residen en el lidertechLibCentralModule para garantizar su reusabilidad y alta calidad.
BilleteraService: Es el servicio orquestador. Actúa como el punto de acceso principal para todas las operaciones de la billetera, unificando las llamadas a los demás servicios.
RampService: Se encarga de las transacciones de entrada (on-ramp) y salida (off-ramp) de dinero fiduciario a USDT. Utiliza la API de Ramp para ofrecer tarifas competitivas y una experiencia fluida.
ReadOptimistService: Un servicio de lectura que interactúa directamente con la red de Optimism para obtener saldos, historial de transacciones y datos de la blockchain.
TransaccionService: Se utiliza para las operaciones de escritura en la blockchain, como el envío de USDT entre usuarios de la billetera.
TarjetaService: Es el servicio responsable de la emisión de tarjetas prepagas virtuales. Utiliza la API de Lithic para programar la creación y gestión de las tarjetas, permitiendo a los usuarios gastar sus activos digitales en el mundo real.
5. Flujo del Sistema y Procesos
El sistema opera en un flujo continuo y seguro:
El usuario inicia una recarga de fondos en la interfaz de Angular.
El BilleteraService llama al RampService.
El RampService se comunica con una Cloud Function que, de forma segura, utiliza la API de Ramp para procesar el pago.
Una vez completado el pago, el RampService transfiere los USDT a la billetera del usuario en la red de Optimism.
El ReadOptimistService monitorea la transacción para confirmar el saldo.
Si el usuario desea gastar sus fondos, puede solicitar una tarjeta prepaga a través del TarjetaService, que usa Lithic para emitir la tarjeta con el saldo deseado en dinero fiduciario.
6. Conclusiones
La arquitectura de LiderCash de Copacabana es un modelo de desarrollo modular, eficiente y centrado en la simplicidad.
Al utilizar proveedores de API de alto nivel y una base de datos serverless, se minimiza la complejidad y el mantenimiento, permitiendo al equipo concentrarse en la experiencia de usuario.
Este stack está perfectamente posicionado para escalar y evolucionar, manteniendo la alta calidad y la filosofía de desarrollo de Lidertech.
Tu billetera LiderCash de Copacabana puede escalar a una cantidad considerable de usuarios mientras se mantiene en las escalas gratuitas de los proveedores, con la limitación principal siendo la capa de Firebase.
Ramp y Lithic: Estos proveedores no tienen un "plan gratuito" como tal, ya que su modelo es pago por uso. Esto significa que puedes integrar sus APIs de forma gratuita, y solo incurrirás en costos cuando un usuario final realice una transacción. Este modelo es perfecto para escalar, ya que los costos están directamente ligados a los ingresos o al uso del servicio, sin tarifas iniciales ni cuotas mensuales.
Optimism: El uso de la red es gratuito para ti. Los usuarios de tu billetera pagan las tarifas de gas directamente por cada transacción, las cuales son muy bajas. Esto no representa un costo para tu operación.
Firebase: Aquí es donde encontrarás el límite de tu escala gratuita. La capa gratuita de Firebase es generosa, pero tiene límites de uso diario que, una vez superados, empiezan a generar costos.
El factor limitante más probable es el uso de Cloud Firestore y Cloud Functions. Basado en sus límites de la capa gratuita, tu billetera puede soportar a una cantidad estimada de entre 50 y 500 usuarios activos al día sin incurrir en costos significativos.
Esta estimación se basa en un uso promedio diario por usuario, que incluye:
50,000 lecturas de documentos en la base de datos de Cloud Firestore.
20,000 escrituras de documentos.
2,000,000 de invocaciones de Cloud Functions al mes.
Esto significa que la arquitectura es robusta y escalable, permitiéndote probar la viabilidad del proyecto y crecer la base de usuarios de LiderCash antes de que necesites pasar a un plan de pago.
Aquí tienes un resumen simple de los costos de tu billetera LiderCash de Copacabana. Se dividen en dos categorías principales.
Estos costos están directamente relacionados con el uso de la billetera por parte de tus usuarios finales. Son un modelo de pago por uso sin tarifas fijas.
Ramp y Lithic: Estos servicios no tienen un costo mensual. Solo pagas una comisión cuando un usuario realiza una recarga, un retiro o emite una tarjeta prepagada. El usuario final es quien paga esta tarifa por transacción.
Optimism: La red de la blockchain no tiene costo para ti. Los usuarios pagan una tarifa de gas extremadamente baja (~$0.15) por cada transacción que realizan, como un envío de USDT.
Estos son los costos de la plataforma que aloja tu aplicación. Son fijos hasta que superas el límite de uso gratuito.
Firebase: La plataforma completa de backend tiene un plan gratuito muy generoso. Puedes tener una base de usuarios considerable (entre 50 y 500 usuarios activos al día) sin incurrir en costos. Los costos solo se activan cuando tu aplicación sobrepasa los límites de lecturas, escrituras o invocaciones de funciones de la capa gratuita.
En resumen, tu modelo de costos es muy eficiente y está optimizado para arrancar y crecer. No tendrás costos fijos de operación hasta que tu base de usuarios sea lo suficientemente grande como para generar ingresos.
BilleteraService: El servicio orquestador que unifica todas las operaciones de la billetera.
RampService: Gestiona las conversiones de dinero fiduciario a USDT y viceversa a través de la API de Ramp.
TarjetaService: Se comunica con la API de Lithic para la emisión de tarjetas prepagas virtuales.
ReadOptimistService: Lee los datos de la blockchain de Optimism, como saldos y transacciones.
TransaccionService: Maneja las operaciones de escritura en la blockchain, como el envío de USDT entre usuarios.
CalendarService: Gestiona la lógica para los pagos programados.
AuthService: Orquesta el flujo de autenticación, la gestión de sesiones y los roles de usuario, usando Firebase Authentication.
StatesService: Maneja el estado global de la aplicación para asegurar consistencia en todos los componentes.
StorageService: Administra la subida y descarga de archivos como documentos y reportes, utilizando Firebase Storage.
SnackBarService: Centraliza todas las notificaciones para el usuario.
GrafService: Se encarga de la lógica para visualizar gráficos de datos financieros.
AnalyticsService: Rastrea el comportamiento del usuario para el análisis de la aplicación.
DocumentAIService: Utiliza Document AI para leer y extraer información de documentos, como identificaciones.
AsistenteAIService: Se comunica con Firebase AI Logic y Vertex AI para ofrecer un agente de ayuda conversacional a los usuarios.
Aquí tienes un resumen completo de las librerías y SDKs que utilizarás para el desarrollo de la billetera LiderCash de Copacabana.
Angular: Framework principal para la interfaz de usuario.
Capacitor: Biblioteca para la interoperabilidad de la PWA con las funcionalidades nativas del dispositivo.
ethers.js: La biblioteca para interactuar con la blockchain de Optimism desde el frontend.
Firebase SDK: Incluye firebase-auth, firebase-firestore y firebase-functions para la autenticación, la base de datos y la lógica serverless.
pdf-lib: Biblioteca para la generación dinámica de documentos PDF en las Cloud Functions.
qrcode-generator: Biblioteca ligera para generar códigos QR en el frontend de tu aplicación.
googleapis: Librería oficial de Google para acceder a las APIs de Google Cloud, incluyendo Document AI y Vertex AI.
Hardhat: Entorno de desarrollo para compilar, probar y desplegar los contratos inteligentes.
OpenZeppelin: Librería con contratos inteligentes seguros y auditados, como el estándar ERC-20 para tu token nativo.
Ramp API: Para las conversiones de dinero fiduciario a USDT y viceversa.
Lithic API: Para la emisión y gestión de tarjetas de débito o crédito prepagadas.
Analytics 4 API: Para la analítica y el seguimiento del comportamiento de los usuarios.
Document AI API: Para la lectura y el análisis de documentos de identidad.
Vertex AI API: Para la implementación de un agente de IA en la aplicación.
Aquí tienes un resumen de los componentes principales que necesitas para tu billetera LiderCash de Copacabana, organizados por su función dentro de la arquitectura.
InicioComponent: El dashboard principal que muestra un resumen de la billetera, el saldo actual y los gráficos de actividad.
BilleteraComponent: El componente central para enviar, recibir y ver el historial de transacciones.
RecargaComponent: Permite a los usuarios recargar su billetera utilizando dinero fiduciario.
RetiroComponent: Facilita el proceso para retirar dinero de la billetera a una cuenta bancaria.
TarjetasComponent: Muestra y gestiona las tarjetas prepagas virtuales del usuario.
PagosProgramadosComponent: Permite a los usuarios configurar y administrar pagos recurrentes o futuros.
ReportesComponent: Muestra los reportes generados en PDF para su visualización y descarga.
AsistenteComponent: La interfaz para que los usuarios interactúen con el agente de ayuda de inteligencia artificial.
Todos estos componentes utilizarán el StatesEnum para gestionar su estado de manera particular y emplearán la nueva sintaxis de Angular.
Card: Un componente reutilizable que usará la propiedad @Input() conector para mostrar información de manera consistente en toda la aplicación.
GraficoComponent: Un componente genérico que se usará en InicioComponent para mostrar los gráficos generados por el GrafService.
NotificacionComponent: Un componente para mostrar notificaciones, gestionado por el SnackBarService.
El siguiente informe detalla los aspectos fundamentales que, aunque no forman parte de la funcionalidad central, son esenciales para la solidez, seguridad y profesionalismo de la aplicación LiderCash de Copacabana en un entorno de producción. Se presenta un enfoque claro para cada solución.
1. Despliegue y CI/CD
Análisis del Problema: Actualmente, el despliegue del frontend de Angular y el backend de Cloud Functions es un proceso manual. En un entorno profesional, esto genera ineficiencia y riesgo de errores humanos. Se necesita un proceso automatizado para garantizar la consistencia y la velocidad en la entrega de nuevas funcionalidades.
Plan de Solución: Implementar un pipeline de Integración Continua y Despliegue Continuo (CI/CD). La herramienta ideal para esto es GitHub Actions, ya que se integra perfectamente con tu repositorio de código y las herramientas de Firebase.
Pasos a seguir:
Configurar Workflows: Crear un archivo de workflow en GitHub Actions para cada entorno (desarrollo, producción).
Automatizar Pruebas: Configurar el pipeline para que, ante cada push o pull request, se ejecuten automáticamente las pruebas unitarias y de integración del código.
Despliegue Automatizado: Si las pruebas son exitosas, el pipeline usará el Firebase CLI para desplegar automáticamente la aplicación de Angular en Hosting y las Cloud Functions en Firebase, sin intervención manual.
2. Estrategia de Pruebas
Análisis del Problema: Aunque se mencionó el uso de Hardhat para pruebas de contratos inteligentes, la aplicación completa carece de una estrategia de pruebas sistemática. Una aplicación financiera sin pruebas exhaustivas es altamente vulnerable a errores funcionales y de seguridad.
Plan de Solución: Implementar una estrategia de pruebas en tres niveles para asegurar la calidad del software.
Pruebas Unitarias: Para verificar que cada unidad de tu código (servicios, componentes, funciones) funcione de forma aislada y correcta. Usarás Jest o Jasmine con Karma para tu aplicación Angular y Jest para tus Cloud Functions en TypeScript.
Pruebas de Integración: Para asegurar que los componentes y servicios se comuniquen entre sí de manera correcta. Por ejemplo, probar que el RampService se integre correctamente con tu Cloud Function.
Pruebas de Extremo a Extremo (E2E): Para simular el flujo completo del usuario en la aplicación, desde el inicio de sesión hasta la realización de una transacción. Herramientas como Cypress o Playwright son ideales para esta tarea.
3. Manejo de Errores y Registro
Análisis del Problema: En una aplicación de producción, los errores no detectados pueden afectar la experiencia del usuario y comprometer la seguridad. Se necesita un sistema centralizado para monitorear, diagnosticar y resolver problemas de forma eficiente.
Plan de Solución: Utilizar una solución de logging centralizada. Google Cloud Logging (integrado en Firebase) es la mejor opción.
Pasos a seguir:
Configuración: Habilitar Cloud Logging en tu proyecto de Firebase.
Registro de Eventos: En tus Cloud Functions, agregar código para registrar eventos críticos y errores. Por ejemplo, un registro si una transacción con Ramp falla o si un usuario no puede emitir una tarjeta.
Monitoreo: Usar el panel de Cloud Logging para ver los registros en tiempo real, filtrar errores y configurar alertas para ser notificado cuando ocurran problemas.
4. Reglas de Seguridad de Firestore
Análisis del Problema: Aunque las Cloud Functions protegen tus claves de API, la base de datos de Firestore necesita una capa adicional de seguridad. Sin reglas de seguridad, un usuario malintencionado podría leer, escribir o eliminar datos de otros usuarios, comprometiendo la privacidad y la integridad de la billetera.
Plan de Solución: Definir y aplicar reglas de seguridad de Firestore para restringir el acceso a los datos de la base de datos.
Ejemplo de Regla: Para proteger los datos de un usuario, podrías tener una regla que solo permita a un usuario leer o escribir documentos en su propia colección.
match /usuarios/{userId}/billetera/{billeteraId} {
allow read, write: if request.auth.uid == userId;
}
Esta regla asegura que solo un usuario con el ID (uid) correcto pueda acceder a su propia información de la billetera.
Implementación: Las reglas de seguridad se escriben en un lenguaje específico y se despliegan junto con tus Cloud Functions usando el Firebase CLI. Son un pilar fundamental para la seguridad de tu aplicación.
Sí, se nos escapa un aspecto fundamental y es, de lejos, el más crítico para cualquier billetera digital: la seguridad a nivel del usuario y la gestión de la clave privada. Todo lo que hemos discutido hasta ahora protege la infraestructura, pero una billetera es tan segura como lo sea la gestión que se le dé a su clave privada.
1. Gestión de la Clave Privada
La billetera LiderCash es un sistema no custodial, lo que significa que el usuario tiene el control total de sus activos y de su clave privada. Por lo tanto, el aspecto más importante de la seguridad no es el código de tu aplicación, sino cómo el usuario maneja su clave. Tu aplicación debe ofrecer una solución robusta y clara para este fin.
Almacenamiento Seguro: La clave privada del usuario debe almacenarse de forma segura en el dispositivo. La mejor práctica es utilizar un almacenamiento encriptado a nivel de hardware, al cual puedes acceder fácilmente a través de plugins de Capacitor.
Frase de Recuperación (Mnemonic Phrase): Si el usuario pierde su dispositivo, su única forma de recuperar su billetera y sus activos es con una frase de recuperación (normalmente 12 o 24 palabras). Tu aplicación debe guiar al usuario a través de un proceso de creación y respaldo seguro de esta frase, con advertencias claras sobre los peligros de perderla o compartirla.
2. Autenticación Biométrica
Para proteger los activos del usuario, no basta con una clave de acceso. Para el día a día, la aplicación debe ofrecer una capa de seguridad adicional y conveniente.
Implementación: Debes integrar la autenticación biométrica (como huella dactilar o reconocimiento facial) mediante plugins de Capacitor. Esto permitirá a los usuarios firmar transacciones o acceder a la aplicación de forma segura sin tener que introducir contraseñas constantemente.
3. Seguridad a Nivel del Código
Aunque el framework de Angular tiene protecciones integradas contra ataques comunes como XSS y CSRF, es vital adoptar un enfoque proactivo en la gestión de dependencias.
Auditoría de Dependencias: Usar herramientas para auditar las librerías de tu proyecto en busca de vulnerabilidades conocidas. Esto es crucial, ya que un ataque a la cadena de suministro de software puede comprometer la seguridad de toda la aplicación.
4. Auditoría de Seguridad Final
Finalmente, antes de lanzar la billetera LiderCash de Copacabana, es imprescindible realizar una auditoría de seguridad profesional.
Smart Contract: Contratar a un auditor de blockchain para que revise el código de tu contrato inteligente en busca de vulnerabilidades. Un solo error en el código del contrato podría llevar a la pérdida de todos los fondos.
Aplicación Completa: También se debe auditar la aplicación completa (frontend, backend y la interacción entre ellos) para identificar posibles vulnerabilidades.
La seguridad en una billetera digital nunca es un punto final, sino un proceso continuo de vigilancia y mejora.
Este informe detalla el plan de auditoría completo y no negociable que debe llevarse a cabo para la billetera LiderCash de Copacabana. El objetivo es garantizar que la seguridad, la funcionalidad y la integridad de la aplicación estén al nivel más alto antes de su lanzamiento público, protegiendo tanto los activos de los usuarios como la reputación del proyecto.
Esta es la auditoría más crítica. Un solo error en el código de tu contrato ERC-20 podría resultar en la pérdida total de los fondos.
Objetivo: Revisar minuciosamente el código Solidity del contrato LiderCash Token en busca de vulnerabilidades de seguridad conocidas, errores lógicos y desviaciones de las mejores prácticas.
Aspectos a Auditar:
Vulnerabilidad de Reentrada (Reentrancy): Un tipo de ataque donde una función puede ser llamada repetidamente antes de que la primera llamada termine.
Desbordamiento Aritmético (Overflow/Underflow): Errores que ocurren cuando un valor excede el límite de su tipo de dato.
Control de Acceso Inseguro: Funciones que pueden ser llamadas por usuarios no autorizados.
Manejo de Gas y Bucle Infinito: Problemas que pueden llevar a un alto consumo de gas o a transacciones atascadas.
Ejecución: Esta auditoría debe ser realizada por una firma externa, reconocida y especializada en la seguridad de contratos inteligentes.
Esta auditoría se enfoca en toda la pila de tu aplicación para asegurar que no existan puntos de entrada inseguros.
2.1. Seguridad del Backend (Cloud Functions)
Objetivo: Validar que la lógica del backend sea segura y que no exponga datos ni credenciales sensibles.
Aspectos a Auditar:
Manejo de Claves de API: Verificar que las claves de Ramp y Lithic se manejen de forma segura dentro del entorno de las Cloud Functions y nunca se expongan al cliente.
Validación de Datos: Asegurar que todos los datos de entrada del frontend se validen correctamente en el backend para prevenir ataques de inyección.
Reglas de Seguridad de Firestore: Confirmar que las reglas de tu base de datos protegen el acceso a los datos de los usuarios, permitiendo solo que un usuario lea y escriba en su propia información.
2.2. Seguridad del Frontend (Angular/Capacitor)
Objetivo: Garantizar que la interfaz de usuario no sea vulnerable a ataques comunes y que el manejo de la clave privada del usuario sea a prueba de fallos.
Aspectos a Auditar:
Manejo de la Clave Privada: Este es el punto más importante. Se debe auditar cómo la aplicación genera, encripta y almacena la clave privada del usuario en el dispositivo, asegurando que se utilicen plugins de Capacitor para el almacenamiento seguro y la biometría.
Protecciones del Framework: Verificar que las protecciones integradas de Angular contra ataques como XSS (Cross-Site Scripting) y CSRF (Cross-Site Request Forgery) se estén utilizando correctamente.
Auditoría de Dependencias: Usar herramientas para escanear todas las librerías del proyecto en busca de vulnerabilidades conocidas.
Fase de Auditoría Interna: El equipo de desarrollo realiza una revisión de código exhaustiva y ejecuta todas las pruebas unitarias y de integración.
Fase de Auditoría Externa: Contratar a una empresa de auditoría de seguridad de confianza. El contrato de Solidity debe auditarse primero, ya que es la capa más crítica.
Fase de Remediación: Trabajar con el equipo de auditoría para corregir todas las vulnerabilidades encontradas. No se debe lanzar la aplicación hasta que todos los hallazgos hayan sido resueltos y verificados.
Este plan de auditoría completo y formal es el último y más importante paso para asegurar la integridad, confianza y éxito de tu proyecto LiderCash de Copacabana.