InicioExplorarGuíasIngresar
Whitepaper Técnico v1.0

Enrrutadores × LAMDA

Marketplace de turismo local + neobanco crypto-native. Pagos on-chain con USDT-L, comisión automática, staking DeFi y bot WhatsApp unificado.

01

Enrrutadores — Marketplace de Turismo Local

Plataforma digital que conecta viajeros con experiencias auténticas, creadas y guiadas por personas locales en México. Sin intermediarios: el local marca la ruta y el beneficio del viaje se queda con quien lo crea.

Stack Tecnológico

FrontendNext.js 14 + TypeScript + Tailwind
BackendNode.js 20 + Express
DatabasePostgreSQL 16
AuthJWT (8h expiry, bcrypt)
UploadsMulter (10MB, jpg/png/webp)
Bot AIGroq (Llama 3.3 70B) + Baileys
ContainerDocker Compose (4 servicios)

Roles y Permisos

turistaReservar, favoritos, reviews, pagar
guia_localCrear experiencias, gestionar, cobrar
adminUsuarios, experiencias, blog, dashboard

Estados de reserva

pendingconfirmedcompletedcancelledno_show

Endpoints principales

POST/api/auth/registerturista | guia_local
POST/api/auth/logintodos
GET/api/experiencespúblico (filtros, paginación)
GET/api/experiences/:slugpúblico (detalle + reviews)
POST/api/reservationsturista (crear reserva)
PUT/api/reservations/:id/statusguia | admin
POST/api/reviewsturista (req reserva completada)
POST/api/favoritesturista (toggle)
GET/api/admin/dashboardadmin (stats globales)
POST/api/uploadsauth (imagen, 10MB max)

Schema de base de datos

users

id, email, password_hash, name, role, phone, bio, avatar_url, city, lamda_email, lamda_wallet_address

experiences

id, title, slug, price_min/max, location, lat/lng, category_id, guide_id, status, is_featured, max_group_size, rating_avg

reservations

id, experience_id, tourist_id, guide_id, date, people, total_price, status, payment_status, commission_rate

reviews

id, experience_id, tourist_id, rating (1-5), comment, is_verified

favorites

id, user_id, experience_id (unique pair)

lamda_payments

id, reservation_id, tourist_id, guide_id, amount_total/net, commission, tx_hashes, status

notifications

id, user_id, type, title, message, data (JSONB), is_read

blog_posts

id, title, slug, excerpt, content, tags, status, author_id

guide_conversations

id, guide_id, role, message (bot AI)

02

LAMDA — Neobanco Crypto-Native

Neobanco construido sobre blockchain propia (LAMDA Chain). Combina la UX de un banco digital con el poder de Web3: wallets non-custodial, stablecoin USDT-L, transferencias instantáneas on-chain, staking con yield híbrido de 3 capas.

LAMDA Chain

Chain ID20260707
ConsensusPoA (Clique)
Block time3 segundos
Epoch30,000 blocks
ClientGo-Ethereum (Geth) v1.13
EVM compatible100%
Validators2 (PoA signers)

Smart Contracts

USDT-L0x8c63...EEE44
Faucet0xD302...b11e0
Treasury0x863F...d1145
Solidity0.8.20
USDT-L supply100M (18 decimals)
EncriptaciónAES-256-GCM
Web3 libethers.js 6.x

Staking DeFi — Yield híbrido de 3 capas

Pool USDT-L: 9% APY

  • Capa 1: Aave (4% — DeFi real)
  • Capa 2: Revenue plataforma (2% — fees + spreads)
  • Capa 3: LAMDA boost (3% — token nativo)

Pool MXN: 6% APY

  • Capa 2: Revenue plataforma (3%)
  • Capa 3: LAMDA boost (3%)
Flexible (1x)30 días (1.3x)90 días (1.8x)180 días (2.5x)Epochs: 7 días

Endpoints LAMDA (relevantes para integración)

POST/api/auth/registerCrea user + wallet + faucet (100 USDT-L)
POST/api/auth/loginJWT 7d
POST/api/user/transferTransfer on-chain (USDT-L o MXN)
GET/api/user/walletWallet address + balance on-chain
POST/api/user/faucetReclamar 100 USDT-L (24h cooldown)
GET/api/staking/poolsListar pools (público)
POST/api/staking/stakeCrear stake
POST/api/staking/claimClaimear yield
POST/api/service/registerService: crear cuenta (X-Service-Key)
POST/api/service/payService: pago split con comisión
GET/api/service/balance/:emailService: balance on-chain
03

Interconexión Enrrutadores ↔ LAMDA

Enrrutadores no tenía procesador de pagos. LAMDA es un neobanco crypto con USDT-L stablecoin. La integración usa LAMDA como rail de pago: el turista paga reservas con USDT-L, el guía recibe on-chain, y la comisión de plataforma se envía automática al treasury de LAMDA.

┌─────────────────────────────────────────────────────────────┐
│  Enrrutadores (Marketplace Turismo)                         │
│                                                             │
│  Turista ── POST /api/payments/reservation/:id/pay ──┐     │
│                                                        │     │
│  backend/services/lamdaService.js ────────────────────┤     │
│  (cliente HTTP, header X-Service-Key)                 │     │
└────────────────────────────────────────────────────────┼─────┘
                                                         │
                    HTTP (X-Service-Key)                 │
                                                         ▼
┌─────────────────────────────────────────────────────────────┐
│  LAMDA (Neobanco Crypto-Native)                             │
│                                                             │
│  POST /api/service/pay                                      │
│    ├─ Transfer 1: turista → guía (neto)     [on-chain]     │
│    └─ Transfer 2: turista → treasury (comisión) [on-chain] │
│                                                             │
│  walletService.js → LAMDA Chain (Geth PoA, ID 20260707)    │
│  USDT-L: 0x8c63...EEE44    Treasury: 0x863F...d1145        │
└─────────────────────────────────────────────────────────────┘

Pago split on-chain

Cada pago genera 2 transacciones reales en LAMDA Chain: neto al guía y comisión al treasury. Ambas verificables en Blockscout.

Wallet automática

Al vincular LAMDA, el usuario obtiene wallet ETH + 100 USDT-L gratis (faucet). Sin fricción, sin seed phrases, keys encriptadas AES-256-GCM.

Staking del guía

Los guías pueden stakear sus ingresos USDT-L en LAMDA y ganar 9% APY. Yield de 3 capas: Aave + plataforma + LAMDA boost.

Auth service-to-service

# Enrrutadores → LAMDA (header shared secret)
X-Service-Key: lamda-service-key-2026-enrrutadores

# No requiere JWT de usuario
# El backend de Enrrutadores actúa como proxy
# El turista se autentica con JWT de Enrrutadores (8h)
# Enrrutadores valida y luego llama a LAMDA con X-Service-Key

Comisión automática

Default 10% configurable via envLAMDA_COMMISSION_RATE

// Reserva: $1,000 MXN

neto guía: $900 (90%)

comisión: $100 (10%) → treasury

// 2 txs on-chain, 1 llamada API

Treasury address

0x863FE791C6dEa5cAD260857c5ce2A2daa4Fd1145

Cada comisión se envía on-chain a esta address. Audit trail completo en tabla lamda_payments con commission_tx_hash.

04

API Reference — Endpoints de Integración

LAMDA Service API (/api/service/*)

MétodoEndpointDescripción
POST/api/service/registerCrear cuenta LAMDA + wallet + faucet 100 USDT-L
GET/api/service/user/:emailLookup user (wallet address + balance)
GET/api/service/balance/:emailBalance on-chain USDT-L + LAMDA
POST/api/service/transferTransfer USDT-L simple (sender → recipient)
POST/api/service/payPago split: neto → guía + comisión → treasury
GET/api/service/staking/poolsListar staking pools activos

Enrrutadores Payments API (/api/payments/*)

MétodoEndpointDescripción
POST/api/payments/link-lamdaVincular cuenta LAMDA existente
POST/api/payments/ensure-lamdaAuto-crear cuenta LAMDA + wallet + faucet
GET/api/payments/lamda-statusEstado del link + balance actual
GET/api/payments/lamda-balanceBalance USDT-L del user
POST/api/payments/reservation/:id/payPagar reserva con USDT-L (split on-chain)
GET/api/payments/reservation/:idEstado del pago de una reserva
GET/api/payments/staking-poolsProxy a staking pools LAMDA

Ejemplo: pago de reserva

// 1. Turista crea reserva
POST /api/reservations
{ "experience_id": "uuid", "reservation_date": "2026-08-15", "number_of_people": 2 }
→ { reservation: { id: "res-uuid", total_price: 1000, payment_status: "pending" } }

// 2. Turista vincula/crea cuenta LAMDA
POST /api/payments/ensure-lamda
{ "password": "turista123" }
→ { ok: true, wallet_address: "0xabc...", faucet: { amount: 100, tx_hash: "0x..." } }

// 3. Turista paga con USDT-L
POST /api/payments/reservation/res-uuid/pay
{ "commission_rate": 0.10 }
→ {
    ok: true,
    amount_total: 1000,
    amount_net: 900,        // → guía
    commission: 100,        // → treasury
    tx_hashes: {
      payment: "0xabc...",    // on-chain: turista → guía
      commission: "0xdef..."  // on-chain: turista → treasury
    },
    explorer: "http://159.223.147.7:3062/tx/0xabc..."
  }

// 4. Reserva actualizada
reservation.payment_status = "paid"
// Guía recibe notificación automática
05

Flujos de Pago End-to-End

Flujo 1: Turista paga reserva con USDT-L

  1. 1Turista crea reserva en Enrrutadores (POST /api/reservations)
  2. 2Turista click "Crear wallet LAMDA" en dashboard → auto-crea cuenta + wallet + 100 USDT-L faucet
  3. 3Turista click "Pagar con USDT-L" → Enrrutadores valida reserva + balances
  4. 4Enrrutadores llama LAMDA POST /api/service/pay (X-Service-Key)
  5. 5LAMDA ejecuta 2 txs on-chain: neto al guía + comisión al treasury
  6. 6Enrrutadores actualiza reservation.payment_status = "paid"
  7. 7Guía recibe notificación en dashboard + WhatsApp
  8. 8Ambas txs verificables en Blockscout (http://159.223.147.7:3062)

Flujo 2: Guía stakea sus ingresos

  1. 1Guía recibe USDT-L por reservas pagadas
  2. 2Guía entra a LAMDA (lamda.lightinnovationlab.com) con mismo email
  3. 3Guía ve su balance USDT-L en dashboard
  4. 4Guía selecciona pool (USDT 9% APY o MXN 6%)
  5. 5Guía elige lock period (flexible, 30d, 90d, 180d)
  6. 6Yield se acumula por epoch (7 días)
  7. 7Guía claima yield cuando quiera (POST /api/staking/claim)

Flujo 3: Guía consulta saldo vía WhatsApp

  1. 1Guía envía "SALDO" al bot de WhatsApp de Enrrutadores
  2. 2Bot busca lamda_email del guía en DB
  3. 3Bot llama LAMDA GET /api/service/balance/:email
  4. 4Bot responde: "USDT-L: 450.00 | LAMDA: 0.5 | Wallet: 0xabc..."
  5. 5Si no tiene cuenta LAMDA, bot le explica cómo vincular
06

Bot WhatsApp Unificado

El bot de Enrrutadores (Groq + Baileys) ahora se conecta a LAMDA para consultas de saldo, historial de pagos y opciones de staking. El guía no necesita salir de WhatsApp.

SALDOBalance USDT-L + LAMDA (gas) + wallet address
PAGOSÚltimos 10 pagos recibidos en USDT-L con detalle
STAKINGOpciones de yield: APY, lock periods, multipliers
EXPORTARExporta todos los datos del guía (GDPR)
REPORTEReporte semanal: reservas, views, reviews
AYUDAMenú completo de comandos disponibles

Stack del bot

WhatsApp

@whiskeysockets/baileys

AI Model

Llama 3.3 70B (Groq)

Knowledge

knowledge-base.md (10 temas)

Cron

node-cron (reportes dom 8pm)

DB

PostgreSQL (guide_conversations)

HTTP

Node native (status, QR, reports)

LAMDA

API client (saldo, pagos, staking)

Session

Persistente en ./session/auth

07

Infraestructura y Deploy

Enrrutadores

Droplet159.223.147.7
Frontend:3071 (Next.js)
Backend:3072 (Express)
Bot:3073 (WhatsApp)
PostgreSQL:5432 (interno)
Containers4 (postgres, backend, frontend, bot)

LAMDA

Droplet159.223.147.7
Frontend:3060 (Vite/React)
Backend:3061 (Express)
Chain RPC:3063 (Geth)
Explorer:3062 (Blockscout)
Containers5 (pg, backend, chain, explorer, frontend)

Variables de entorno (integración)

# Enrrutadores backend + bot
LAMDA_API_URL=http://159.223.147.7:3061
LAMDA_SERVICE_KEY=lamda-service-key-2026-enrrutadores
LAMDA_COMMISSION_RATE=0.10

# LAMDA backend
LAMDA_SERVICE_KEY=lamda-service-key-2026-enrrutadores
JWT_SECRET=lamda-jwt-secret-2026-bladerunner
LAMDA_CHAIN_RPC=http://lamda-chain:8545
LAMDA_TREASURY_ADDR=0x863FE791C6dEa5cAD260857c5ce2A2daa4Fd1145
LAMDA_USDTL_CONTRACT=0x8c63719a07B586F4a7197a3888C04D0eba3EEE44
08

Roadmap

Fase 1 — MVP Integración (actual)

Implementado
  • Srvice API en LAMDA (/api/service/*) con X-Service-Key
  • Pgo de reservas con USDT-L (split on-chain)
  • Cmisión automática al treasury (10% default)
  • Ato-creación de wallet LAMDA desde Enrrutadores
  • Bt WhatsApp: SALDO, PAGOS, STAKING
  • Fontend: LamdaPayButton en dashboard del turista

Fase 2 — SSO y UX unificada

Planificado
  • Sngle Sign-On: un login sirve para ambas plataformas
  • Rdirect automático a LAMDA para staking (sin re-login)
  • Wdget de balance LAMDA embebido en dashboard del guía
  • Hstorial de transacciones on-chain en dashboard

Fase 3 — Features avanzadas

Futuro
  • Rembolsos on-chain (burn USDT-L al turista)
  • Pgos parciales (deposit + balance al completar)
  • Ecrow: pago retenido hasta que guía confirme experiencia
  • NT de experiencia completada (comprobante on-chain)
  • PP Binance integrado: guía convierte USDT-L a MXN

¿Listo para aceptar pagos en crypto?

Si eres guía local, vincula tu cuenta LAMDA desde tu dashboard y empieza a recibir USDT-L por tus experiencias. Sin comisiones bancarias, sin intermediarios.