Skip to content

Files

Latest commit

 Cannot retrieve latest commit at this time.

History

History
171 lines (112 loc) · 10 KB

dcl-architecture.md

File metadata and controls

171 lines (112 loc) · 10 KB
title slug description
Decentraland Platform Architecture
/contributor/architecture/platform
Comprehensive overview of Decentraland's platform architecture, components, and services

Decentraland Platform Architecture

This document provides a comprehensive overview of the Decentraland Platform architecture, detailing its core components, services, and their interactions. The platform is built on a decentralized infrastructure that enables a persistent, shared virtual world.

architecture

Table of Contents

Core Infrastructure

Catalyst (Decentralized Content)

Catalyst servers form the backbone of Decentraland's decentralized infrastructure, providing essential services for content storage and distribution. These servers are responsible for maintaining the persistent state of the virtual world.

Key Components

  • Lambdas (Repository): Provides utilities for Catalyst Server Clients/Consumers, including:

    • Data retrieval and validation
    • Blockchain ownership validations via Subgraph API
    • Service integration endpoints
  • Content Server (Repository): Manages decentralized storage for:

    • Scenes
    • Wearables
    • Emotes
    • User profiles
    • Automatic synchronization with approved servers
  • Archipelago Service (Repository): Optional service providing client communication capabilities. Most nodes utilize external Archipelago Workers for the default Decentraland realm.

  • Nginx (Documentation): Acts as a reverse proxy, managing traffic routing within Catalyst Services.

Note: For running a Catalyst server, refer to the Catalyst Owner repository. View available servers on the Catalyst Monitor.

Realm Provider

The Realm Provider service (Repository) implements ADR-110, providing realm descriptions that specify the services required for client connections. It:

  • Selects Catalyst and Lambdas services from the Catalyst Network
  • Manages access to the default MAIN realm
  • Coordinates with Archipelago Workers

Communication Infrastructure

Archipelago Workers

Archipelago Workers (Repository) support standalone realms in Decentraland by:

  • Implementing user clustering logic based on in-world positions
  • Providing WebSocket connections
  • Managing stats services
  • Enabling real-time user interactions

Communications GateKeeper

  • Comms Gatekeeper:The comms-gatekeeper service acts as the guardian of LiveKit tokens within Decentraland's communication architecture. It processes signed fetch requests from clients and generates tokens that grant access to LiveKit rooms dedicated to specific scenes-rooms or worlds. Notably, LiveKit rooms for Archipelago follow a separate communication channel, ensuring proper routing and isolation (more dtails about the comms architecture in ADR-204).

Content Management

Asset Bundles System

The Asset Bundle System generates optimized asset versions for the Catalyst network. Upon deployment of a scene, emote, or wearable, conversions are initiated for each platform (macOS, WebGL, Windows), with the Asset Bundle Registry updated to ensure the latest bundles are available.

  • Asset Bundle Registry: Gateway for clients to retrieve available Asset Bundles and LODs, ensuring optimized textures and preventing empty scenes.
  • Asset Bundle Converter: Processes deployments, uploads optimized versions to the CDN, and notifies the registry.
  • LODs Generator: Processes scenes to generate versions with varying detail levels for resource-efficient rendering.

Worlds Content Server

  • World's Content Server allows scenes to be uploaded using ENS NAMES instead of Genesis City LANDs. Worlds can be kept private or shared with others via a simple link. With the capacity to host up to 100 concurrent users, worlds can be utilized to host events, showcase work, or as a blank canvas to unleash creativity and experiment.

Atlas Server

  • Atlas Server: The Atlas service provides comprehensive information for the Atlas map, including details on roads, points of interest, land sales, and other essential data to enhance and beautify the Genesis City map.

User Services

Auth

  • Auth Server Server in charge of communication between the decentraland desktop client and the auth dapp on the browser. Allows the desktop client to execute wallet methods (eth_sendTransaction, personal_sign, etc.) using the wallet the user has on their browser by leveraging the auth dapp.

Social Service

  • Social Service: This service is designed to manage social interactions, including friendship lifecycle management, connectivity status, and user blocking.

Badges System

The Badges service manages user achievements in Decentraland, guiding users through platform activities.

  • badges-api: Exposes endpoints for badge interaction.
  • badges-processor: Listens to events, updates progress, grants badges, and handles notifications.

Camera Reel

  • Camera Reel The Camera Reel Service is a simple solution designed specifically for uploading and retrieving camera images taken from Decentraland Explorer. This service enables users to capture and store images with additional metadata, providing valuable context to enhance their visual content.

Development Tools

CLI

The CLI provides tools and commands for scene development, including project scaffolding, local testing, and deployment to content servers.

Repositories:

Catalyst Client

This library facilitates interactions with Decentraland's Catalyst servers, enabling data fetching and entity deployment.

Repositories:

Engagement Features

Exploration Games

  • Exploration Games: The exploration games server is designed to create engaging challenges for users in Genesis City, encouraging world exploration and enhancing user engagement. It allows players to participate in various games, complete challenges, and earn rewards. This service tracks user progress across all available challenges, links to specific scenes in Genesis City where these challenges are hosted, and provides rewards to users upon completion.

Rewards

  • Rewards: Rewards is a closed-source service available for public use that enables users to create campaigns featuring rewards, which can be claimed through dispensers added to various scenes. Content creators can utilize the rewards service to showcase their collections and reward users for attending events, completing challenges, participating in marketing campaigns, or simply for fun.

Events API

  • Events: This service integrates with the Events dApp, which is used to upload information about various happenings in Decentraland, providing visibility and discoverability for events such as the Metaverse Fashion Week, Metaverse Music Festival, Art Week, and any other user-hosted events.

Places API

  • Places: In addition to events, Places is another service focused on visibility and discoverability. It provides information about Decentraland scenes in both Worlds and Genesis City, allowing users to explore these scenes by category. Users can categorize and publish their own scenes, while the service also highlights the most active and popular locations based on user preferences.

Events Notifier

  • Events Notifier: This service is responsible for publishing blockchain events to internal systems. It runs cron jobs that analyze specific blockchain events and publish them to an event-driven architecture (SNS/SQS).