# Rede Catalyst

A rede Catalyst é a infraestrutura descentralizada de entrega de conteúdo da Decentraland. Vários operadores independentes executam nós Catalyst que armazenam e servem conteúdo.

## Visão geral

A rede Catalyst opera como um sistema distribuído totalmente em malha, no qual os nós se comunicam diretamente entre si para sincronizar conteúdo e manter a saúde da rede.

![Topologia da rede Catalyst](/files/e01ca65c23b5095774f8b2ac176ccea3c22fdf6d)

## Componentes do Catalyst

Cada nó Catalyst consiste em:

### Content Server

**Propósito**: Armazenamento e recuperação de assets

Armazena e serve:

* Definições de scene
* Modelos 3D e textures
* Arquivos de áudio
* Scripts
* Avatares e wearables

**Referência da API**: [Catalyst API](https://github.com/decentraland/docs/blob/main/contributor/apis/catalyst/README.md)

### Lambdas

**Propósito**: Funções de consulta serverless

Fornece endpoints consultáveis:

* Pesquisas de entities
* Consultas de perfil
* Metadados de conteúdo
* Histórico de deployments

As Lambdas são executadas como serviços separados que consultam a base de dados do Content Server.

### Nginx

**Propósito**: Proxy reverso e balanceamento de carga

Encaminha requests para os serviços apropriados:

* Content Server para uploads
* Lambdas para consultas
* Serviço de assets estáticos

***

## Deployment de conteúdo

### Fluxo de deployment

```mermaid
sequenceDiagram
    participant CLI
    participant Content as Content Server
    participant Queue as Deployments Queue
    participant Services as Backend Services
    
    CLI->>Content: POST /entities
    Content->>Content: Validar e armazenar
    Content-->>CLI: Deployment aceito
    Content->>Queue: Novo evento de deployment
    Queue->>Services: Acionar processamento
```

### Etapas do deployment

1. **Compilar**: CLI agrupa a scene usando build-ecs
2. **Assinar**: Creator assina o deployment com a wallet
3. **Fazer upload**: CLI faz upload para qualquer nó Catalyst
4. **Validar**: Catalyst valida assinaturas e conteúdo
5. **Armazenar**: Conteúdo salvo no armazenamento
6. **Propagar**: Evento publicado na fila de deployment
7. **Processar**: Backend services processam o novo conteúdo

### Validação de conteúdo

Catalyst valida:

* Assinaturas digitais (prova de propriedade)
* Hashes de conteúdo (integridade)
* Permissões de Parcel (propriedade da land)
* Limites de tamanho de ficheiro
* Conformidade com a política de conteúdo

***

## Pipeline de deployments

Quando o conteúdo é implantado, vários sistemas reagem:

### Processamento de assets

```mermaid
flowchart LR
    Deploy[New Deployment]
    Queue[Deployments to SQS]
    AB[Asset Bundle Converter]
    Profile[Profile Images]
    Badges[Badges]
    
    Deploy --> Queue
    Queue -->|assets 3D| AB
    Queue -->|Alterações de Avatar| Profile
    Queue -->|Verificação de conquista| Badges
```

**Serviços acionados**:

* **Asset Bundle Converter** - Cria bundles otimizados
* **Profile Images Producer** - Gera miniaturas de avatar
* **Badges Processor** - Verifica conquistas de deployment

### Serviços de escuta

Serviços que monitorizam deployments:

* **Worlds** - Para deployments de Worlds
* **Comms Gatekeeper** - Para configuração de voz de World
* **Atlas Server** - Para atualizações do mapa

***

## Replicação de conteúdo

Os nós Catalyst replicam conteúdo para garantir a disponibilidade:

### Estratégia de replicação

* **Sincronização ativa**: Os nós sincronizam ativamente novos deployments
* **Baseado em pull**: Os nós obtêm conteúdo em falta sob demanda
* **Protocolo gossip**: Os anúncios de deployment propagam-se

### Endereçamento de conteúdo

Todo o conteúdo é endereçado por conteúdo:

* Ficheiros identificados por IPFS CID (Content Identifier)
* Imutável depois de implantado
* Deduplicação automática

***

## Archipelago Workers (Comms)

A infraestrutura de comunicações funciona em paralelo com o Catalyst:

### Componentes

#### WebSocket Connector

* Mantém as conexões com o client
* Tratamento de protocolo
* Autenticação de conexão

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

#### Archipelago Core

* **Formação de islands** - Agrupa jogadores próximos
* **Limites de peers** - Impõe o máximo de peers por island (tipicamente 100)
* **Atualizações de posição** - Transmite as posições dos players
* **Encaminhamento de mensagens** - Encaminha chat e emotes

#### Serviço de estatísticas

* Contagens de utilizadores ativos por scene
* Estatísticas de conexão
* Métricas de desempenho

***

## Integração com blockchain

### Subgraph Indexer

O Catalyst usa um indexer dedicado:

```mermaid
flowchart LR
    Blockchain[Ethereum/Polygon]
    Subgraph[Indexer]
    Catalyst[Catalyst]
    
    Blockchain -->|Eventos| Subgraph    
    Catalyst -->|Consultas| Subgraph
```

O **Indexer** indexa:

* Propriedade de land (LAND NFTs)
* Coleções de Wearable e Emotes
* Registos de NAME
* Transferências de NFTs

***

## Próximos passos

* Revê [Backend Services](/contributor/contributor-pt/arquitetura/services.md) para detalhes do serviço
* Vê [Infrastructure](/contributor/contributor-pt/arquitetura/infrastructure.md) para sistemas de suporte
* Consulta [Architecture Overview](/contributor/contributor-pt/arquitetura/architecture.md) para a visão completa


---

# 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-pt/arquitetura/catalyst.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.
