title | slug | description |
---|---|---|
Decentraland Platform Architecture |
/contributor/architecture/platform |
Comprehensive overview of Decentraland's platform architecture, components, and services |
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.
- Core Infrastructure
- Communication Infrastructure
- Content Management
- User Services
- Development Tools
- Engagement Features
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.
-
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.
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
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
- 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).
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.
- 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: 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.
- 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: This service is designed to manage social interactions, including friendship lifecycle management, connectivity status, and user blocking.
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 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.
The CLI provides tools and commands for scene development, including project scaffolding, local testing, and deployment to content servers.
Repositories:
This library facilitates interactions with Decentraland's Catalyst servers, enabling data fetching and entity deployment.
Repositories:
- 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 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: 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: 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: 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).