# Servicios de backend

Esta página ofrece una descripción completa de todos los servicios de backend de Decentraland, sus roles arquitectónicos y cómo interactúan dentro del ecosistema. Para especificaciones detalladas de la API y los endpoints, consulte el [Referencia de API](https://github.com/decentraland/docs/blob/main/apis/README.md) sección.

## Service Architecture

El backend de Decentraland está compuesto por microservicios distribuidos organizados en capas lógicas:

* **Capa Descentralizada** - Red Catalyst e infraestructura de entrega de contenido
* **Capa de Comunicaciones en Tiempo Real** - Descubrimiento de servicios y comunicaciones peer-to-peer
* **Servicios de Funcionalidad** - Funcionalidad orientada al usuario (contenido, economía, gamificación)
* **Servicios Core** - Infraestructura esencial de la plataforma (auth, marketplace, notificaciones)

***

## Capa Descentralizada

### Catalyst

**Propósito**: Red de entrega de contenido descentralizada

La red Catalyst forma la base de la infraestructura de contenido de Decentraland. Cada nodo Catalyst es un servidor completo que proporciona:

* **Content Server** - Almacenamiento y recuperación de entidades (scenes, profiles, wearables)
* **Servicio Lambdas** - Endpoints de utilidad y consultas de contenido
* **Servidor de Comunicaciones** - Transporte de mensajes en tiempo real

**Rol Arquitectónico**: Los nodos Catalyst están distribuidos geográficamente y son permissionless. La red proporciona redundancia y disponibilidad de contenido sin control central.

**Integraciones Clave**:

* Realm Provider - Publica la disponibilidad del nodo
* Asset Bundle Registry - Disparar la optimización de assets en el despliegue
* Archipelago Workers - Proporciona datos de isla/cluster

**Referencia de API**: [Catalyst API](https://github.com/decentraland/docs/blob/main/apis/catalyst/overview/README.md)

### Lamb2

**Propósito**: Utilidades Lambda y funciones serverless

Lamb2 proporciona endpoints de utilidad para el consumo de contenido y consultas que complementan el Content Server:

* Agregación y filtrado de scenes
* Consultas de profiles con mecanismos de respaldo
* Comprobaciones de estado y salud

**Rol Arquitectónico**: Actúa como una capa de conveniencia sobre el acceso bruto a entidades del Content Server, proporcionando patrones de consulta de alto nivel comúnmente requeridos por los clientes.

**Referencia de API**: [Lamb2 API](https://github.com/decentraland/docs/blob/main/apis/lamb2/overview/README.md)

***

## Capa de Comunicaciones en Tiempo Real

### Realm Provider

**Propósito**: Descubrimiento de servicios y selección de realm

El Realm Provider es el punto de entrada para todos los clientes de Decentraland. Implementa la selección inteligente de realm basada en:

* **Optimización geográfica** - Enruta a los usuarios hacia los nodos Catalyst más cercanos
* **Monitoreo de salud** - Filtra nodos no saludables o sobrecargados
* **Seguimiento de capacidad** - Proporciona recuentos de usuarios en tiempo real por realm
* **Agregación de escenas populares** - Identifica ubicaciones populares en todos los realms

**Rol Arquitectónico**: Fuente única de verdad para la infraestructura disponible. Los clientes lo consultan una vez al iniciar para descubrir todos los endpoints de servicio (Catalyst, Comms, BFF).

**Integraciones Clave**:

* Consulta todos los nodos Catalyst periódicamente
* Agrega estadísticas de Archipelago
* Proporciona una vista unificada de la red distribuida

**Referencia de API**: [Realm Provider API](https://github.com/decentraland/docs/blob/main/apis/realm-provider/overview/README.md)

### Comms Gatekeeper

**Propósito**: Control de acceso a voz y video

El Gatekeeper gestiona el acceso a servidores de media LiveKit para chat de voz y video:

* **Generación de tokens** - Crea tokens de acceso con tiempo limitado y permisos específicos
* **Administración de scenes** - Gestiona derechos de administrador de scene y baneos
* **Gestión de streams** - Controla el acceso a transmisiones en vivo y claves RTMP
* **Controles de privacidad** - Aplica permisos de chat de voz privado

**Rol Arquitectónico**: Capa de seguridad entre clientes e infraestructura de media. Evita accesos no autorizados mientras permite modelos de permisos flexibles (basados en scene, privados, comunitarios).

**Integraciones Clave**:

* LiveKit - Emite JWT tokens para acceso al servidor de media
* Worlds API - Valida la propiedad del world para derechos de admin
* Signed Fetch - Autentica todas las solicitudes mediante firmas de wallet

**Referencia de API**: [Comms Gatekeeper API](https://github.com/decentraland/docs/blob/main/apis/comms-gatekeeper/overview/README.md)

### Archipelago Workers

**Propósito**: Agrupamiento de comunicaciones y enrutamiento de mensajes

Archipelago implementa el protocolo de clustering basado en proximidad que agrupa a jugadores cercanos en "islands":

* **Transporte WebSocket** - Mantiene conexiones persistentes con los clientes
* **Seguimiento de posición** - Monitorea las ubicaciones de los jugadores en tiempo real
* **Formación de islands** - Agrupa dinámicamente a los jugadores según la distancia
* **Enrutamiento de mensajes** - Reenvía mensajes solo a los miembros de la island

**Componentes de Arquitectura**:

* **Conector WebSocket** - Maneja conexiones de clientes y autenticación
* **Archipelago Core** - Implementa el algoritmo de clustering y la gestión de islands
* **Servicio de stats** - Proporciona métricas de conexión y recuentos de usuarios
* **Integración con NATS** - Publica actualizaciones de posición y enruta mensajes

**Rol Arquitectónico**: Optimiza las comunicaciones peer-to-peer limitando el fanout de mensajes. En lugar de transmitir a todos los usuarios en un realm, los mensajes solo alcanzan a los jugadores dentro del rango de interacción.

**Integraciones Clave**:

* Broker de mensajes NATS - Enrutamiento de mensajes distribuido
* Realm Provider - Proporciona estadísticas de islands
* Places API - Datos de recuento de usuarios para escenas populares

**Referencia de API**: [Archipelago Workers API](https://github.com/decentraland/docs/blob/main/apis/archipelago-workers/overview/README.md)

***

## Servicios de Funcionalidad

### Worlds

**Propósito**: Alojamiento aislado de scenes fuera de la cuadrícula principal

Worlds permiten a los usuarios desplegar scenes en entornos aislados:

* **Worlds con nombre** - Accesibles mediante URLs personalizadas (p. ej., `world.dclworlds.com`)
* **Worlds privados** - Control de acceso mediante NFT
* **Permisos de Worlds** - Derechos de administrador y despliegue gestionados por el owner

**Rol Arquitectónico**: Extiende el modelo de contenido de Decentraland más allá de la cuadrícula fija de LAND. Cada world es una scene independiente con sus propios canales de comunicación y control de acceso.

**Integraciones Clave**:

* Consulta indexadores de blockchain para verificación de propiedad de NFT
* Publica actualizaciones del world en NATS para sincronización en tiempo real con los clientes
* Se integra con Comms Gatekeeper para salas de chat de voz
* Activa la canalización de procesamiento de assets en el despliegue

**Referencia de API**: [Worlds API](https://github.com/decentraland/docs/blob/main/apis/worlds/overview/README.md)

### Eventos

**Propósito**: Gestión y descubrimiento de eventos in-world

Gestiona el ciclo de vida completo de eventos virtuales:

* **CRUD de eventos** - Creación, actualizaciones y programación
* **Seguimiento de asistentes** - Participación de usuarios y RSVPs
* **Descubrimiento** - Consultas y filtrado por tiempo
* **Notificaciones** - Integración con Events Notifier

**Rol Arquitectónico**: Proporciona contexto temporal al metaverso. Los eventos impulsan el descubrimiento y la participación de usuarios al resaltar experiencias sensibles al tiempo.

**Referencia de API**: [Events API](https://github.com/decentraland/docs/blob/main/apis/events/overview/README.md)

### Places

**Propósito**: Descubrimiento y curación de puntos de interés

Agrega y selecciona ubicaciones interesantes en todo Decentraland:

* **Escenas populares** - Popularidad en tiempo real basada en recuentos de usuarios
* **Lugares destacados** - Ubicaciones seleccionadas editorialmente
* **Búsqueda y filtrado** - Descubrimiento por tags, categorías
* **Metadata de POI** - Descripciones, miniaturas, coordenadas

**Rol Arquitectónico**: Resuelve el problema del descubrimiento en un mundo abierto grande. Agrega datos de múltiples fuentes para ayudar a los usuarios a encontrar contenido atractivo.

**Integraciones Clave**:

* Catalyst - Metadata de scenes e información de despliegue
* Archipelago Stats - Recuentos de usuarios en tiempo real por scene
* Comms Gatekeeper - Disponibilidad y estado de realms

**Referencia de API**: [Places API](https://github.com/decentraland/docs/blob/main/apis/places/overview/README.md)

### Atlas Server

**Propósito**: Datos de mapa y visualización de parcelas

Proporciona datos completos del mapa mundial:

* **Propiedad de parcelas** - Datos de LAND indexados en blockchain
* **Metadata de scenes** - Nombres de scenes desplegadas y coordenadas
* **Tiles de mapa** - Imágenes de tiles prerenderizadas para visualización en UI
* **Consultas espaciales** - Encontrar parcelas por coordenadas u owner

**Rol Arquitectónico**: Proporciona el índice espacial para la cuadrícula de LAND de Decentraland. Esencial para UIs de mapa y navegación espacial.

**Referencia de API**: [Atlas Server API](https://github.com/decentraland/docs/blob/main/apis/atlas-server/overview/README.md)

### Camera Reel

**Propósito**: Gestión de capturas de pantalla generadas por usuarios

Gestiona capturas de pantalla e imágenes de usuarios:

* **Subidas de imágenes** - Almacenamiento autenticado de imágenes
* **Organización de galerías** - Colecciones de capturas de pantalla de usuarios
* **Metadata** - Ubicación de la scene, marca de tiempo, tags

**Rol Arquitectónico**: Habilita el intercambio de contenido y funciones sociales alrededor de la fotografía generada por usuarios.

**Referencia de API**: [Camera Reel API](https://github.com/decentraland/docs/blob/main/apis/camera-reel/overview/README.md)

### Exploration Games

**Propósito**: Gamificación de onboarding y tutoriales

Sistema de misiones interactivas para el onboarding de nuevos usuarios:

* **Seguimiento de misiones** - Progreso a través de misiones tutoriales
* **Finalización de desafíos** - Verificación de tareas
* **Integración de recompensas** - Conexión al sistema de recompensas

**Rol Arquitectónico**: Reduce la fricción para nuevos usuarios proporcionando una introducción estructurada y orientada a objetivos a las funcionalidades de Decentraland.

**Referencia de API**: [Exploration Games API](https://github.com/decentraland/docs/blob/main/apis/exploration-games/overview/README.md)

***

## Servicios Core

### Auth Server

**Propósito**: Autenticación basada en wallet y gestión de sesiones

Implementa el modelo de autenticación wallet-first de Decentraland:

* **Verificación de firmas** - Valida firmas de wallets Ethereum
* **Emisión de tokens JWT** - Genera tokens de sesión
* **Validación de tokens** - Verifica tokens para recursos protegidos
* **Ciclo de vida de la sesión** - Refresco y expiración de tokens

**Rol Arquitectónico**: Proporciona verificación de identidad descentralizada. Los usuarios se autentican mediante firmas de wallet en lugar de contraseñas, alineándose con los principios Web3.

**Flujo de Autenticación**:

1. El cliente solicita un challenge
2. El usuario firma el challenge con la wallet
3. Auth Server verifica la firma y emite un JWT
4. El cliente incluye el JWT en solicitudes API subsecuentes

**Referencia de API**: [Auth Server API](https://github.com/decentraland/docs/blob/main/apis/auth-server/overview/README.md)

### Servicio social

**Propósito**: Gráfica social y gestión comunitaria

Gestiona relaciones sociales y comunidades:

* **Sistema de amigos** - Solicitudes, aprobaciones, listas de amigos
* **Lista de bloqueo** - Bloqueo de usuarios y privacidad
* **Comunidades** - Membresía de grupos y descubrimiento
* **Estado en tiempo real** - Notificaciones de amigos online/offline vía NATS
* **Mensajería privada** - Infraestructura de mensajes directos

**Rol Arquitectónico**: Proporciona la capa social que transforma a Decentraland de un mundo virtual a un metaverso social.

**Integraciones Clave**:

* Catalyst Client - Recupera datos de profile para amigos
* NATS - Publica actualizaciones de estado de amigos
* Archipelago - Consulta estado online y ubicaciones

**Referencia de API**: [Social Service API](https://github.com/decentraland/docs/blob/main/apis/social-service/overview/README.md)

### Marketplace Server

**Propósito**: Integración con marketplace NFT

Backend para el marketplace de wearables y emotes de Decentraland:

* **Consultas de listados** - Navegar y buscar items del marketplace
* **Historial de transacciones** - Registros de compras
* **Datos de precios** - Precios de mercado y tendencias
* **Metadata de colecciones** - Colecciones de wearables y emotes

**Rol Arquitectónico**: Puentea los datos on-chain de NFT con una UI de marketplace amigable para el usuario. Indexa eventos de blockchain para consultas rápidas.

**Referencia de API**: [Marketplace Server API](https://github.com/decentraland/docs/blob/main/apis/marketplace-server/overview/README.md)

***

## Asset Services

### Registro de paquetes de assets

**Propósito**: Gestión optimizada de assets

Registro de bundles de assets optimizados para la plataforma:

* URLs de asset bundles por plataforma
* Versionado
* Distribución CDN

**Referencia de API**: [Asset Bundle Registry API](https://github.com/decentraland/docs/blob/main/contributor/apis/asset-bundle-registry/README.md)

**Componentes del Sistema**:

* **Asset Bundle Converter** - Construye bundles específicos por plataforma
* **Generador de LODs** - Crea variantes de nivel de detalle

**Flujo de Proceso**:

{% @mermaid/diagram content="sequenceDiagram
participant Catalyst
participant Queue as Deployments Queue
participant Converter as AB Converter
participant Registry

```
Catalyst->>Queue: New deployment
Queue->>Converter: Process assets
Converter->>Converter: Build bundles
Converter->>Registry: Register bundles" %}
```

### Camera Reel

**Propósito**: Gestión de capturas de pantalla e imágenes

Gestión de contenido generado por usuarios:

* Almacenamiento de capturas de pantalla
* Subidas de imágenes
* Organización de galerías

**Referencia de API**: [Camera Reel API](https://github.com/decentraland/docs/blob/main/contributor/apis/camera-reel/README.md)

### Credits Server

**Propósito**: Moneda virtual y economía

Gestiona el sistema de créditos virtuales de Decentraland:

* **Seguimiento de saldo** - Saldos de créditos de usuarios
* **Libro mayor de transacciones** - Transferencias y gasto de créditos
* **Integración de compras** - Conversión de fiat a credits
* **Sincronización con blockchain** - Consulta a indexadores para balances on-chain

**Rol Arquitectónico**: Proporciona una alternativa de moneda con menor fricción frente a tokens en blockchain para compras y funcionalidades dentro del mundo.

**Referencia de API**: [Credits Server API](https://github.com/decentraland/docs/blob/main/apis/credits-server/overview/README.md)

### Insignias

**Propósito**: Sistema de logros y gamificación

Premios de insignias impulsados por eventos:

* **Definiciones de insignias** - Logros disponibles
* **Inventario de usuario** - Insignias ganadas por usuario
* **Otorgamiento automático** - Premios de insignias activados por eventos

**Componentes de Arquitectura**:

* **Badges API** - Consultas de insignias e inventarios de usuarios
* **Badges Processor** - Escucha Events Notifier y otorga insignias

**Rol Arquitectónico**: Gamifica la participación del usuario mediante logros. Proporciona visibilidad y reconocimiento por las actividades del usuario.

**Referencia de API**: [Badges API](https://github.com/decentraland/docs/blob/main/apis/badges/overview/README.md)

### API de recompensas

**Propósito**: Distribución de recompensas NFT basada en campañas

Gestiona campañas promocionales de recompensas NFT:

* **Gestión de campañas** - Programas de recompensas por tiempo limitado
* **Verificación de elegibilidad** - Verificar la cualificación del usuario
* **Coordinación de airdrops** - Distribución de NFT a usuarios elegibles
* **Analytics** - Seguimiento de participación en la campaña

**Rol Arquitectónico**: Permite campañas de marketing y adquisición de usuarios a través de recompensas NFT.

**Referencia de API**: [API de recompensas](https://github.com/decentraland/docs/blob/main/apis/rewards/overview/README.md)

### Notifications Workers

**Propósito**: Sistema de entrega de notificaciones a usuarios

Infraestructura de notificaciones multicanal:

* **Notificaciones in-app** - Consultas de bandeja de notificaciones
* **Notificaciones por email** - Integración con SendGrid
* **Push notifications** - Alertas para móvil y escritorio
* **Seguimiento de estado de lectura** - Marcar notificaciones como leídas/no leídas

**Componentes de Arquitectura**:

* **Bandeja de notificaciones** - API para consultar notificaciones de usuario
* **Procesador de notificaciones** - Genera notificaciones a partir de Events Notifier

**Rol Arquitectónico**: Mantiene a los usuarios comprometidos mediante alertas oportunas sobre actividad de amigos, eventos, recompensas y actualizaciones del sistema.

**Referencia de API**: [Notifications Workers API](https://github.com/decentraland/docs/blob/main/apis/notifications-workers/overview/README.md)

### Events Notifier

**Propósito**: Bus de eventos para eventos de la plataforma

Sistema centralizado de publicación de eventos que desencadena acciones aguas abajo:

* **Eventos de usuario** - Login, compras, despliegues
* **Eventos del mundo** - Actualizaciones de scenes, acciones de admin
* **Eventos del sistema** - Mantenimiento, actualizaciones

**Rol Arquitectónico**: Desacopla a los productores de eventos de los consumidores. Los servicios publican eventos sin saber quién los procesa, permitiendo arquitecturas extensibles.

**Integraciones aguas abajo**:

* Procesador de notificaciones - Crea notificaciones de usuario
* Procesador de insignias - Otorga insignias de logro
* Rewards API - Rastrea elegibilidad para campañas

**Referencia de API**: [Events Notifier API](https://github.com/decentraland/docs/blob/main/apis/events-notifier/overview/README.md)

***

## Patrones de Interacción de Servicios

### Patrones Comunes de Integración

#### Catalyst Client Library

Muchos servicios de backend usan la **Catalyst Client** library para interactuar con la red descentralizada Catalyst:

* **Servicio social** - Recupera datos de profile de usuarios
* **Events API** - Consulta metadata de scenes
* **Places** - Agrega información de scenes
* **Registro de paquetes de assets** - Escucha eventos de despliegue

Esta library abstrae la lógica de consulta a múltiples nodos y failover.

#### Broker de Mensajes NATS

Actualizaciones en tiempo real y comunicación asíncrona fluyen a través de NATS:

* **Servicio social** - Publica cambios de estado de amigos
* **Worlds** - Difunde actualizaciones de configuración del world
* **Archipelago** - Enruta actualizaciones de posición entre islands
* **Events Notifier** - Publica eventos de la plataforma

NATS permite que los servicios se comuniquen sin acoplamiento directo.

#### Indexadores de blockchain

Los servicios consultan indexadores (no la blockchain directamente) por rendimiento:

* **Worlds** - Verifica la propiedad de NAME NFT
* **Atlas** - Recupera datos de parcelas LAND
* **Credits Server** - Comprueba balances de tokens
* **API de recompensas** - Verifica condiciones de elegibilidad

Las consultas directas a la blockchain serían demasiado lentas para APIs en tiempo real.

### Canalización de Despliegue de Contenido

Cuando un usuario despliega contenido en Catalyst, múltiples servicios aguas abajo lo procesan:

{% @mermaid/diagram content="flowchart TB
Deploy\[User Deploys Content]
Catalyst\[Catalyst Node]
Queue\[Deployment Queue]

```
subgraph Processing
    AB[Asset Bundle Converter]
    Profile[Profile Image Generator]
    Badges[Badges Processor]
    Events[Events Notifier]
end

Deploy --> Catalyst
Catalyst --> Queue
Queue --> AB
Queue --> Profile
Queue --> Events
Events --> Badges" %}
```

**Pasos de la canalización**:

1. **Catalyst** - Almacena datos de entidad en bruto
2. **Cola de despliegue** - Dispara procesamiento asíncrono
3. **Asset Bundle Converter** - Construye bundles optimizados de Unity
4. **Generador de Imagen de Perfil** - Renderiza miniaturas de avatar (para entidades de profile)
5. **Events Notifier** - Publica evento de despliegue
6. **Badges Processor** - Comprueba insignias por despliegue

### Matriz de Dependencias de Servicios

| Servicio                       | Dependencias Core            | Proporciona Datos A             |
| ------------------------------ | ---------------------------- | ------------------------------- |
| Catalyst                       | Ninguno (descentralizado)    | Todos los servicios             |
| Realm Provider                 | Catalyst, Archipelago Stats  | Todos los clientes              |
| Auth Server                    | Ninguno                      | Todos los servicios protegidos  |
| Archipelago Workers            | NATS, LiveKit                | Realm Provider, Places          |
| Comms Gatekeeper               | LiveKit, Worlds API          | Clientes (generación de tokens) |
| Worlds                         | Catalyst, NATS, Blockchain   | Gatekeeper, Clientes            |
| Servicio social                | Catalyst, NATS, Archipelago  | Clientes                        |
| Places                         | Catalyst, Archipelago, Comms | Clientes                        |
| Events Notifier                | Ninguno                      | Notificaciones, Badges, Rewards |
| Registro de paquetes de assets | Catalyst, Deployment Queue   | Clientes (assets optimizados)   |
| Notifications Workers          | Events Notifier, SendGrid    | Clientes                        |

***

## Documentación Relacionada

### Arquitectura

* [Descripción de la arquitectura](/contributor/contributor-es/arquitectura/architecture.md) - Arquitectura completa del sistema
* [Catalyst Network](/contributor/contributor-es/arquitectura/catalyst.md) - Entrega de contenido descentralizada
* [Infraestructura](/contributor/contributor-es/arquitectura/infrastructure.md) - Sistemas de soporte (NATS, LiveKit, bases de datos)

### Referencias de API

* [Documentación de API](https://github.com/decentraland/docs/blob/main/apis/README.md) - Especificaciones completas de la API
* [Autenticación](https://github.com/decentraland/docs/blob/main/contributor/auth/authchain.md) - Flujos de auth basados en wallet
* [Comunicaciones](https://github.com/decentraland/docs/blob/main/contributor/comms/overview.md) - Protocolos de mensajería en tiempo real

### Desarrollo

* [Guías para contribuidores](https://github.com/decentraland/docs/blob/main/contributor/contributor-guides/overview.md) - Flujos de trabajo de desarrollo
* [Guía de Pruebas](https://github.com/decentraland/docs/blob/main/contributor/practice/testing.md) - Prácticas de pruebas de servicios


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-es/arquitectura/services.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
