Documentación Local2Coin

Rieles, Wallet, Servicios y Arquitectura

Gráfico en desarrollo

Documentación Local2Coin

Local2Coin está construido sobre la infraestructura de pago multi-canal open-source de P2Pagos.

P2Pagos utiliza:

  • /mono como el repositorio orquestador basado en Nuxt.
  • /wallet como la wallet de liquidación self-custodial móvil, basada en un fork de Aqua Wallet.
  • /dashboard como la mini app Nuxt integrada en /wallet para configuraciones y flujos.
  • /marketplace como la capa multi-usuario closed-source construida sobre /mono.
  • BTCPay Server como el backend para la infraestructura de liquidación.

El stack está diseñado alrededor de:

  • rieles de entrada
  • servicios modulares
  • liquidación self-custodial
  • arquitectura de pago multi-canal
  • movimiento de dinero transfronterizo práctico
  • dependencia reducida de un solo procesador, banco, país o canal

Roles de los repositorios

RepositorioLicenciaRolEstado
/monoMITOrquestador Nuxt para rieles, flujos, servicios y utilidades compartidasBase orquestadora inicial
/walletMITFork de Aqua Wallet para liquidación self-custodial móvil e integración /dashboardCapa wallet P2Pagos planificada
/dashboardMITMini app Nuxt integrada en /wallet para flujos de pago y configuraciónPlanificado
/marketplaceClosed-sourceCapa marketplace multi-usuario construida sobre /monoCapa comercial

Arquitectura


/mono

/mono es el repositorio orquestador de P2Pagos.

Ensambla rieles de pago, flujos de negocio, servicios de infraestructura y utilidades compartidas en un único workspace basado en Nuxt.

Este repositorio aún está siendo ordenado y debe leerse como una base orquestadora inicial, no como un producto terminado.

Estructura

/
├── nuxt.config.js      app Nuxt raíz — carga todos los módulos del workspace
├── app.vue
├── pages/
├── server/
├── rails/              módulos de rieles de pago
├── flows/              módulos de flujos de negocio
├── services/           módulos de servicios de infraestructura
└── utils/              utilidades compartidas

Lo que /mono no es

  • No es un marketplace terminado.
  • No es un SDK público pulido.
  • No está suficientemente estable para garantizar uso amplio en producción.

Módulos de /mono

Rieles

Los módulos de rieles de pago inyectan páginas, composables y handlers de servidor en la app host. También pueden ejecutarse de forma autónoma como servidores Nitro.

PaqueteRutaPáginaAPI
@p2pagos/templaterails/template/rails/template/api/rails/template
@p2pagos/peachrails/peach/rails/peach/api/rails/peach/*
@p2pagos/robosatsrails/robosats/rails/robosats/api/rails/robosats/*

Flujos

Módulos de funcionalidades de alto nivel con páginas y componentes UI.

PaqueteRutaPáginas
@p2pagos/bookingflows/booking/flows/booking, /flows/booking/embed

Servicios

Módulos de infraestructura que funcionan tanto como apps Nitro autónomas como módulos Nuxt integrables.

PaqueteRutaRutasNotas
@p2pagos/ipservices/ipLimitación de velocidad y geolocalización IP, deshabilitado por defecto
@p2pagos/torservices/tor/api/tor, /api/tor/**Proxy inverso Tor, deshabilitado por defecto
@p2pagos/marketservices/market/api/market/**Agregador de ofertas sin KYC para Bisq, RoboSats y Peach, deshabilitado por defecto

Rieles de entrada multi-canal

CanalEstadoMonedaMétodos de pagoLiquidaciónComisiónVerificaciónPrivacidad
BTCImplementadoSATSOn-chain y LightningBitcoin on-chainNingunaNingunaTotal
USDTImplementadoUSDLiquid y PolygonUSDT Liquid y PolygonNingunaNingunaTotal
Peach (p2p-api-integration)TestingGlobalCualquieraBitcoin on-chainAltaNingunaTotal
RoboSats (p2p-api-integration)TestingGlobalCualquieraBitcoin on-chainAltaNingunaTotal
MoonPay ACH USD (cex-api-integration)DiseñandoUSDACHUSDT(?)NingunaEstándarNinguna
Mostro (p2p-api-integration)EvaluandoGlobalCualquieraBitcoin on-chainAltaNingunaTotal
Guardarian (cex-api-integration)PlanificadoUSD, EUR, GBP, CAD, AUD, JPY, TRY, PLN, SEKTarjetas crédito/débito y Google/Apple PayBitcoin on-chainMediaNinguna o EstándarPosible con estructura RUC
Paygate (cex-api-integration)PlanificadoGlobalTarjetas crédito/débitoUSDT PolygonMediaNingunaTotal
DePix (cex-api-integration)PlanificadoBRLPixBRL en LiquidBajaNingunaTotal
Kamipay (cex-api-integration)PlanificadoBRLPixUSDT PolygonBajaEstándarNinguna
MtPelerin (cex-api-integration)PlanificadoEUR y CHFSEPABitcoin on-chain o USDT PolygonBajaReforzadaPosible con estructura RUC
Bitzed (cex-api-integration)PlanificadoZMWMobile moneyBitcoin on-chainBajaNingunaTotal
Matbea (cex+p2p-api-integration)PlanificadoRUBYandex Pay, Sberbank, Tinkoff, YooMoney, SBP P2P, móvilBitcoin on-chainBajaNingunaTotal

Módulos de servicio

ServicioEstadoAlcancePropósitoPor defecto
ipTestingGlobalGeolocalización IP, detección de país y moneda, limitación de velocidadDeshabilitado por defecto
torTestingGlobalProxy inverso Tor para integraciones onionHabilitado si lo consume un canal activo
corsTestingGlobalProxy inverso CORS para APIs destinoHabilitado si lo consume un canal activo
marketTestingGlobalAgregación de ofertas sin KYC y ofertas externasHabilitado si lo consume un canal activo
invoicePlanificadoMúltiples países, muchos en LATAMGeneración programática de facturas electrónicas al liquidar el pago, basado en Invopop, con integración SIFEN Paraguay planificada a través de módulos TIPS SADeshabilitado por defecto

Desarrollo local de /mono

pnpm install
pnpm dev
pnpm build
pnpm preview

Carga de módulos en /mono

La app Nuxt raíz carga los módulos del workspace a través de nuxt.config.js.

Agregar un módulo requiere:

  1. Añadir "@p2pagos/<name>": "workspace:*" a las dependencias del package.json raíz.
  2. Añadir '@p2pagos/<name>' al array modules en nuxt.config.js.

flows/booking requiere @nuxt/ui. Debe estar presente en nuxt.config.js antes o junto al módulo de booking.


Variables de entorno de /mono

services/tor

VariableRequeridaPor defectoDescripción
NUXT_TOR_PROXY_SECRETSecreto compartido enviado en el header X-Tor-Proxy-Secret
NUXT_TOR_SOCKS_URLNosocks5h://127.0.0.1:9050URL SOCKS5h del daemon Tor local

rails/robosats

VariableRequeridaPor defectoDescripción
NUXT_ROBOSATS_COORDINATOR_URLNoOnion por defecto de RoboSatsURL onion base del coordinador
NUXT_TOR_PROXY_SECRETSecreto compartido para el proxy @p2pagos/tor integrado
NUXT_TOR_SOCKS_URLNosocks5h://127.0.0.1:9050URL SOCKS5h del daemon Tor local

rails/peach

VariableRequeridaPor defectoDescripción
NUXT_PEACH_BASE_URLNohttps://api.peachbitcoin.comURL base de la API de Peach
NUXT_PEACH_BITCOIN_MNEMONICMnemónico BIP39 para derivación de claves de wallet
NUXT_PEACH_PGP_PRIVATE_KEYClave privada PGP en formato armored
NUXT_PEACH_PGP_PUBLIC_KEYClave pública PGP en formato armored
NUXT_PEACH_PGP_PASSPHRASEFrase de contraseña de la clave PGP
NUXT_PEACH_REFERRAL_CODENoCódigo de referido de Peach
NUXT_PEACH_FEE_RATENohourFeeEstrategia de tarifa de comisión de Bitcoin
NUXT_PEACH_MAX_PREMIUMNo0Prima máxima aceptada en ofertas

services/ip

VariableRequeridaPor defectoDescripción
NUXT_IP_DETECTION_CURRENCYNofalseExpone la moneda derivada del header cf-ipcountry de Cloudflare en event.context.ipDetection
NUXT_IP_DETECTION_COUNTRYNofalseExpone el código de país en event.context.ipDetection
NUXT_IP_DETECTION_CLOUDFLARE_SECRETNoSecreto compartido para verificar que las solicitudes vienen a través de Cloudflare
NUXT_IPINFO_API_KEYNoAPI key de IPinfo
NUXT_IP_DETECTION_RATE_LIMITNo100Máximo de solicitudes por IP por minuto
NUXT_IP_DETECTION_LIMIT_PATHSNoLista de rutas API separadas por coma para limitar la velocidad

services/market

VariableRequeridaPor defectoDescripción
NUXT_TOR_PROXY_SECRETSecreto de autenticación para el handler del proxy Tor inline
NUXT_ROBOSATS_COORDINATOR_ONION_URLNoOnion por defecto de RoboSatsDirección onion del coordinador de RoboSats
NUXT_TOR_SOCKS_URLNosocks5h://127.0.0.1:9050URL SOCKS5h del daemon Tor local

Problemas conocidos de /mono

ProblemaDetalle
Incompatibilidad de versión de @nuxt/kitrails/peach, rails/robosats y services/tor declaran @nuxt/kit ^3.13.0, mientras que la app raíz, rails/template y flows/booking usan ^4.0.0. Los módulos funcionan en modo módulo a través de la instancia kit de Nuxt, pero la migración completa standalone a ^4.0.0 está pendiente.

/wallet

/wallet es la wallet móvil self-custodial de P2Pagos, basada en un fork de Aqua Wallet.

Este repositorio existe porque Aqua ya proporciona una base sólida para la capa de liquidación que P2Pagos necesita, al tiempo que permite extenderla hacia flujos de pago específicos de P2Pagos, gestión de configuración e integraciones con marketplaces.


Por qué Aqua Wallet

Aqua Wallet fue seleccionada como base de este fork porque ya ofrece:

FuncionalidadRazón
Self-custody de Bitcoin y LiquidSoporte self-custodial nativo con un único backup de seed phrase
Lightning a través de BoltzLos flujos swap-to-Liquid reducen la necesidad de que los usuarios gestionen la liquidez de canales directamente
Stablecoins en LiquidSoporte para múltiples stablecoins basadas en Liquid, actualmente USDT y DePix
Swaps integradosCapacidad de swap entre monedas soportadas
Modelo de marketplace externoPuede reemplazarse por la mini app integrada de P2Pagos para /settings o /dashboard
Múltiples walletsLas seed phrases separadas permiten al mismo usuario conectarse a /mono y a una o más cuentas /marketplace
Protocolo ShamrockPermite conexión simple a BTCPay Server
Expectativas de mantenimientoAqua tiene financiación sólida y buena reputación en el ecosistema

Cambios planificados en /wallet

El fork actual está pensado para evolucionar hacia la wallet móvil de liquidación y configuración de P2Pagos.

Los cambios planificados incluyen:

  • Añadir soporte de wallet Polygon self-custodial derivado de la seed phrase existente, para soportar USDT en Polygon.
  • Si es necesario para futuros rieles que liquiden en USDT en otras cadenas, extender soporte a través de interoperabilidad basada en USDT0, usando Polygon como red ancla principal.
  • Reemplazar la pestaña de marketplace de Aqua por una pestaña Pagos dedicada, impulsada por la mini app Nuxt /dashboard.
  • Integrar tasas de cambio de yadio.io, más representativas del precio real en mercados emergentes que fuentes solo de exchanges como Kraken.
  • Mejorar continuamente la funcionalidad base incorporando regularmente cambios upstream de Aqua.
  • Eliminar la distinción entre Saving Account para BTC y Spending Accounts para otros activos, para adaptarse mejor al modelo de producto orientado a pagos de P2Pagos.
  • Añadir ruso y eliminar idiomas innecesarios, alineando la wallet con el conjunto de idiomas por defecto: EN, ES, PT, FR, IT, RU.
  • Hacer un rebranding de la aplicación como parte de la familia de productos P2Pagos.

USDT en Polygon

Una de las principales incorporaciones planificadas es el soporte self-custodial de USDT en Polygon.

El objetivo es dar a los usuarios acceso a un activo de liquidación ampliamente usable en los rieles de pago integrables, preservando el mismo modelo de propiedad de wallet ya utilizado para Bitcoin y activos Liquid.

La implementación está diseñada en torno a:

  • derivar el soporte de wallet Polygon de la misma seed phrase existente;
  • soportar USDT en Polygon como activo de liquidación de primera clase;
  • usar un stack EVM en Flutter para derivación de cuentas Polygon, firma e interacción con contratos;
  • evaluar web3dart y onchainlabs_flutter;
  • minimizar la exposición del usuario a la complejidad operativa del token nativo;
  • gestionar las comisiones de red a través de un flujo ERC-4337 paymaster;
  • abstraer las comisiones de la experiencia normal del usuario;
  • cobrar comisiones en USDT en lugar de requerir gestión manual de MATIC.

Esto está pensado para hacer la liquidación en USDT operativamente más simple para usuarios que necesitan liquidación final en stablecoins sin fragmentación innecesaria de wallets.


Integración de la mini app /dashboard

La mini app /dashboard se integrará en la wallet mediante un enfoque basado en WebView.

Modelo de seguridad:

CapaResponsabilidad
FlutterCustodia de la seed phrase y claves privadas
App Nuxt integradaUI de pagos e interfaz de configuración
Puente de capacidadesComunicación limitada entre Flutter y WebView
Capa WebViewRecibe solo los datos y acciones requeridos

La app Nuxt integrada no recibe acceso directo a los secretos.

El puente está limitado a los datos y acciones requeridos para la UI de pagos:

  • direcciones de recepción
  • contexto básico de wallet
  • solicitudes de firma

Esto mantiene el material sensible de claves dentro de la capa nativa de wallet mientras permite construir flujos y configuraciones específicos de P2Pagos en Nuxt.


Alcance de /wallet

El repositorio /wallet debe leerse como la capa de wallet móvil de la arquitectura más amplia de P2Pagos.

No es solo un fork de wallet genérico.

Su propósito es proporcionar:

  • liquidación self-custodial para Bitcoin, activos Liquid y futuros rieles soportados;
  • conexión segura a BTCPay Server e infraestructura de pago relacionada;
  • una interfaz integrada para /dashboard y flujos relacionados con pagos;
  • una base móvil para usuarios que interactúan con instancias de /mono y entornos de marketplace conectados.

Resumen del flujo de liquidación


Modelo operativo

CapaFunción
Rieles de entradaAceptar o enrutar pagos a través de métodos de pago soportados
/monoEnsamblar rieles, flujos, servicios y handlers de API
BTCPay ServerBackend de liquidación e infraestructura de pago
/walletCapa móvil self-custodial de liquidación y configuración
/dashboardInterfaz Nuxt integrada para configuración y flujos de pago
/marketplaceCapa comercial multi-usuario construida sobre /mono

Estado actual

P2Pagos está en evolución.

Algunos componentes existen como integraciones funcionales. Otros son parciales, experimentales, planificados o aún siendo ensamblados en el orquestador principal.

Los repositorios deben leerse como trabajo de infraestructura activo, no como un conjunto de productos terminados.