# Catalyst Network

La red Catalyst es la infraestructura descentralizada de entrega de contenido de Decentraland. Múltiples operadores independientes ejecutan nodos Catalyst que almacenan y sirven contenido.

## Resumen

La red Catalyst opera como un sistema distribuido totalmente interconectado donde los nodos se comunican directamente entre sí para sincronizar contenido y mantener la salud de la red.

![Topología de la red Catalyst](https://1243972940-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6k7p2WCueah7nUnaQYV6%2Fuploads%2Fgit-blob-2292da3f43ef493114d2d1926700386ae161073d%2Fcatalyst.png?alt=media)

## Componentes de Catalyst

Cada nodo Catalyst consiste en:

### Content Server

**Propósito**: Almacenamiento y recuperación de activos

Almacena y sirve:

* Definiciones de Scene
* Modelos 3D y texturas
* Archivos de audio
* Scripts
* Avatares y wearables

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

### Lambdas

**Propósito**: Funciones de consulta serverless

Proporciona endpoints consultables:

* Búsquedas de Entity
* Consultas de profile
* Metadatos de contenido
* Historial de deployment

Las Lambdas se ejecutan como servicios separados que consultan la base de datos del Content Server.

### Nginx

**Propósito**: Reverse proxy y balanceo de carga

Enruta solicitudes a los servicios apropiados:

* Content Server para uploads
* Lambdas para queries
* Servicio de assets estáticos

***

## Deployment de contenido

### Flujo de deployment

{% @mermaid/diagram content="sequenceDiagram
participant CLI
participant Content as Content Server
participant Queue as Deployments Queue
participant Services as Backend Services

```
CLI->>Content: POST /entities
Content->>Content: Validate & store
Content-->>CLI: Deployment accepted
Content->>Queue: New deployment event
Queue->>Services: Trigger processing" %}
```

### Pasos de deployment

1. **Compile**: CLI empaqueta la scene usando build-ecs
2. **Sign**: El creator firma el deployment con la wallet
3. **Upload**: La CLI sube a cualquier nodo Catalyst
4. **Validar**: Catalyst valida firmas y contenido
5. **Store**: Contenido guardado en el storage
6. **Propagate**: Evento publicado en la cola de deployment
7. **Process**: Servicios backend procesan el nuevo contenido

### Validación de contenido

Catalyst valida:

* Firmas digitales (prueba de propiedad)
* Hashes de contenido (integridad)
* Permisos de parcela (propiedad de LAND)
* Límites de tamaño de archivo
* Cumplimiento de la política de contenido

***

## Pipeline de deployments

Cuando se despliega contenido, múltiples sistemas reaccionan:

### Procesamiento de assets

{% @mermaid/diagram content="flowchart LR
Deploy\[New Deployment]
Queue\[Deployments to SQS]
AB\[Asset Bundle Converter]
Profile\[Profile Images]
Badges\[Badges]

```
Deploy --> Queue
Queue -->|3D assets| AB
Queue -->|Avatar changes| Profile
Queue -->|Achievement check| Badges" %}
```

**Servicios desencadenados**:

* **Asset Bundle Converter** - Crea bundles optimizados
* **Profile Images Producer** - Genera miniaturas de avatar
* **Badges Processor** - Verifica logros de deployment

### Servicios que escuchan

Servicios que monitorean los deployments:

* **Worlds** - Para deployments de world
* **Comms Gatekeeper** - Para la configuración de voice de world
* **Atlas Server** - Para actualizaciones del mapa

***

## Replicación de contenido

Los nodos Catalyst replican contenido para asegurar la disponibilidad:

### Estrategia de replicación

* **Sincronización activa**: Los nodos sincronizan activamente nuevos deployments
* **Basado en pull**: Los nodos obtienen contenido faltante bajo demanda
* **Protocolo Gossip**: Se propagan anuncios de deployment

### Direccionamiento por contenido

Todo el contenido está direccionado por contenido:

* Archivos identificados por IPFS CID (Content Identifier)
* Inmutable una vez desplegado
* Dedupliación automática

***

## Archipelago Workers (Comms)

La infraestructura de comunicaciones se ejecuta junto a Catalyst:

### Componentes

#### Conector WebSocket

* Mantiene conexiones de clientes
* Manejo de protocolo
* Autenticación de conexión

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

#### Archipelago Core

* **Formación de islands** - Agrupa jugadores cercanos
* **Límites de peers** - Hace cumplir el máximo de peers por island (típicamente 100)
* **Actualizaciones de posición** - Difunde posiciones de jugadores
* **Enrutamiento de mensajes** - Enruta chat y emotes

#### Servicio de stats

* Cuentas de usuarios activos por scene
* Estadísticas de conexión
* Métricas de performance

***

## Integración con blockchain

### Subgraph Indexer

Catalyst usa un indexador dedicado:

{% @mermaid/diagram content="flowchart LR
Blockchain\[Ethereum/Polygon]
Subgraph\[Indexer]
Catalyst\[Catalyst]

```
Blockchain -->|Events| Subgraph    
Catalyst -->|Queries| Subgraph" %}
```

El **Indexer** indexa:

* Propiedad de land (LAND NFTs)
* Colecciones de wearable & Emotes
* Registro de names
* Transferencias de NFTs

***

## Siguientes pasos

* Revisar [Servicios backend](https://docs.decentraland.org/contributor/contributor-es/arquitectura/services) para detalles del servicio
* Ver [Infraestructura](https://docs.decentraland.org/contributor/contributor-es/arquitectura/infrastructure) para sistemas de soporte
* Comprobar [Descripción de la arquitectura](https://docs.decentraland.org/contributor/contributor-es/arquitectura/architecture) para la imagen completa
