# Catalyst Network

A rede Catalyst é a infraestrutura descentralizada de entrega de conteúdo da Decentraland. Múltiplos 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 malhado onde os nós se comunicam diretamente entre si para sincronizar conteúdo e manter a saúde da rede.

![Topologia da Rede Catalyst](https://4188643014-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6k7p2WCueah7nUnaQYV6%2Fuploads%2Fgit-blob-2292da3f43ef493114d2d1926700386ae161073d%2Fcatalyst.png?alt=media)

## Componentes do Catalyst

Cada nó Catalyst consiste em:

### Content Server

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

Armazena e serve:

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

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

### Lambdas

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

Fornece endpoints consultáveis:

* Buscas de entidades
* Consultas de perfil
* Metadados de conteúdo
* Histórico de deploys

Lambdas executam como serviços separados que consultam o banco de dados do Content Server.

### Nginx

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

Encaminha requisições para serviços apropriados:

* Content Server para uploads
* Lambdas para consultas
* Servir ativos estáticos

***

## Deployment de Conteúdo

### Fluxo 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" %}
```

### Etapas do Deployment

1. **Compilar**: CLI empacota a cena usando build-ecs
2. **Assinar**: O Creator assina o deployment com a wallet
3. **Enviar**: 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**: Serviços backend processam novo conteúdo

### Validação de Conteúdo

Catalyst valida:

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

***

## Pipeline de Deployments

Quando o conteúdo é deployado, múltiplos sistemas reagem:

### Processamento de Ativos

{% @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" %}
```

**Serviços Acionados**:

* **Conversor de Bundle de Ativos** - Cria bundles otimizados
* **Produtor de Imagens de Perfil** - Gera miniaturas de avatar
* **Processador de Badges** - Verifica conquistas do deployment

### Serviços Ouvintes

Serviços que monitoram deployments:

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

***

## Replicação de Conteúdo

Nós Catalyst replicam conteúdo para garantir disponibilidade:

### Estratégia de Replicação

* **Sincronização Ativa**: Nós sincronizam ativamente novos deployments
* **Baseado em pull**: Nós buscam conteúdo faltante sob demanda
* **Protocolo Gossip**: Anúncios de deployment se propagam

### Endereçamento de Conteúdo

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

* Arquivos identificados por IPFS CID (Content Identifier)
* Imutável após o deployment
* Deduplicação automática

***

## Archipelago Workers (Comms)

A infraestrutura de comunicações roda junto com o Catalyst:

### Componentes

#### Conector WebSocket

* Mantém conexões de clientes
* Manipulação de protocolo
* Autenticação de conexão

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

#### Núcleo do Archipelago

* **Formação de ilhas** - Agrupa jogadores próximos
* **Limites de pares** - Impõe máximo de peers por ilha (tipicamente 100)
* **Atualizações de posição** - Transmite posições dos jogadores
* **Roteamento de mensagens** - Roteia chat e emotes

#### Serviço de Estatísticas

* Contagens de usuários ativos por cena
* Estatísticas de conexão
* Métricas de desempenho

***

## Integração com Blockchain

### Subgraph Indexer

Catalyst usa um indexador dedicado:

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

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

O **Indexer** indexa:

* Propriedade de land (LAND NFTs)
* Coleções de wearable & emotes
* Registros de nomes
* Transferências de NFTs

***

## Próximos Passos

* Rever [Serviços de Backend](https://docs.decentraland.org/contributor/contributor-pt/arquitetura/services) para detalhes do serviço
* Veja [Infraestrutura](https://docs.decentraland.org/contributor/contributor-pt/arquitetura/infrastructure) para sistemas de suporte
* Verificar [Visão geral da arquitetura](https://docs.decentraland.org/contributor/contributor-pt/arquitetura/architecture) para a imagem completa
