> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/contributor/contributor-ko/architecture/catalyst.md).

# Catalyst 네트워크

Catalyst 네트워크는 Decentraland의 분산형 콘텐츠 전송 인프라입니다. 여러 독립적인 운영자가 콘텐츠를 저장하고 제공하는 Catalyst 노드를 운영합니다.

## 개요

Catalyst 네트워크는 노드들이 콘텐츠를 동기화하고 네트워크 상태를 유지하기 위해 서로 직접 통신하는 완전 메시형 분산 시스템으로 작동합니다.

![Catalyst 네트워크 토폴로지](https://3696408058-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6k7p2WCueah7nUnaQYV6%2Fuploads%2Fgit-blob-2292da3f43ef493114d2d1926700386ae161073d%2Fcatalyst.png?alt=media)

## Catalyst 구성 요소

각 Catalyst 노드는 다음으로 구성됩니다:

### 콘텐츠 서버

**목적**: 자산 저장 및 검색

저장하고 제공하는 항목:

* 씬 정의
* 3D 모델 및 텍스처
* 오디오 파일
* 스크립트
* 아바타 및 착용 아이템

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

### 람다

**목적**: 서버리스 쿼리 함수

쿼리 가능한 엔드포인트를 제공합니다:

* 엔티티 검색
* 프로필 쿼리
* 콘텐츠 메타데이터
* 배포 기록

람다는 콘텐츠 서버의 데이터베이스를 조회하는 별도의 서비스로 실행됩니다.

### Nginx

**목적**: 리버스 프록시 및 로드 밸런싱

요청을 적절한 서비스로 라우팅합니다:

* 업로드용 콘텐츠 서버
* 쿼리용 람다
* 정적 자산 제공

***

## 콘텐츠 배포

### 배포 흐름

```mermaid
sequenceDiagram
    participant CLI
    participant Content as 콘텐츠 서버
    participant Queue as 배포 큐
    participant Services as 백엔드 서비스
    
    CLI->>Content: POST /entities
    Content->>Content: 검증 및 저장
    Content-->>CLI: 배포 수락됨
    Content->>Queue: 새 배포 이벤트
    Queue->>Services: 처리 트리거
```

### 배포 단계

1. **컴파일**: CLI가 build-ecs를 사용하여 씬을 번들링합니다
2. **서명**: 제작자가 지갑으로 배포에 서명합니다
3. **업로드**: CLI가 임의의 Catalyst 노드에 업로드합니다
4. **검증**: Catalyst가 서명과 콘텐츠를 검증합니다
5. **저장**: 콘텐츠가 저장소에 저장됩니다
6. **전파**: 이벤트가 배포 큐에 게시됩니다
7. **처리**: 백엔드 서비스가 새 콘텐츠를 처리합니다

### 콘텐츠 검증

Catalyst는 다음을 검증합니다:

* 디지털 서명(소유권 증명)
* 콘텐츠 해시(무결성)
* 구획 권한(토지 소유권)
* 파일 크기 제한
* 콘텐츠 정책 준수

***

## 배포 파이프라인

콘텐츠가 배포되면 여러 시스템이 반응합니다:

### 자산 처리

```mermaid
flowchart LR
    Deploy[새 배포]
    Queue[SQS로의 배포]
    AB[자산 번들 변환기]
    Profile[프로필 이미지]
    Badges[배지]
    
    Deploy --> Queue
    Queue -->|3D assets| AB
    Queue -->|Avatar changes| Profile
    Queue -->|Achievement check| Badges
```

**트리거되는 서비스**:

* **자산 번들 변환기** - 최적화된 번들을 생성합니다
* **프로필 이미지 생성기** - 아바타 썸네일을 생성합니다
* **배지 처리기** - 배포 업적을 확인합니다

### 모니터링 서비스

배포를 모니터링하는 서비스:

* **월드** - 월드 배포용
* **통신 게이트키퍼** - 월드 음성 설정용
* **아틀라스 서버** - 지도 업데이트용

***

## 콘텐츠 복제

Catalyst 노드는 가용성을 보장하기 위해 콘텐츠를 복제합니다:

### 복제 전략

* **능동 동기화**: 노드가 새 배포를 능동적으로 동기화합니다
* **풀 기반**: 노드가 누락된 콘텐츠를 필요 시 가져옵니다
* **가십 프로토콜**: 배포 알림이 전파됩니다

### 콘텐츠 주소 지정

모든 콘텐츠는 콘텐츠 주소 지정 방식입니다:

* 파일은 IPFS CID(콘텐츠 식별자)로 식별됩니다
* 배포 후에는 불변입니다
* 중복 제거 자동 적용

***

## Archipelago Workers(통신)

통신 인프라는 Catalyst와 함께 실행됩니다:

### 구성 요소

#### WebSocket 커넥터

* 클라이언트 연결을 유지합니다
* 프로토콜 처리
* 연결 인증

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

#### Archipelago Core

* **섬 형성** - 인근 플레이어를 그룹화합니다
* **피어 제한** - 섬당 최대 피어 수를 제한합니다(보통 100)
* **위치 업데이트** - 플레이어 위치를 브로드캐스트합니다
* **메시지 라우팅** - 채팅과 이모트를 라우팅합니다

#### 통계 서비스

* 씬별 활성 사용자 수
* 연결 통계
* 성능 지표

***

## 블록체인 통합

### 서브그래프 인덱서

Catalyst는 전용 인덱서를 사용합니다:

```mermaid
flowchart LR
    Blockchain[이더리움/폴리곤]
    Subgraph[인덱서]
    Catalyst[Catalyst]
    
    Blockchain -->|이벤트| Subgraph    
    Catalyst -->|쿼리| Subgraph
```

이 **인덱서** 색인합니다:

* 토지 소유권(LAND NFT)
* 착용 아이템 및 이모트 컬렉션
* 이름 등록
* NFT 이전

***

## 다음 단계

* 검토 [백엔드 서비스](/contributor/contributor-ko/architecture/services.md) 서비스 세부 정보는
* 참고 [인프라](/contributor/contributor-ko/architecture/infrastructure.md) 지원 시스템은
* 확인 [아키텍처 개요](/contributor/contributor-ko/architecture/architecture.md) 전체 그림은


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-ko/architecture/catalyst.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
