😽

Decentraland のノード Catalyst

2022/12/25に公開

はじめに

これはno plan inc.の Advent Calendar 2022の21日目の記事です。

今回は、以前の記事に引き続き、分散型メタバースのDecentralandの現状、catalystと呼ばれるノードについてまとめます。

ノード(Catalyst)

Catalystとは

Catalystという英単語を直訳すると、"触媒"と出てきます。

この言葉の通り、ユーザーとランドをつなげるためのサーバーです。

また、複数のサービスを一つにまとめられているサーバーとしても運用されています。

運用数

2022/12 現在、このページでみると現状は11のノードが運用されています。

アーキテクチャ

GithubレポジトリのREADMEによれば、こんな感じ。


こういった感じ

Backend for Frontend (BFF)

主にクライアントとのP2P通信や、APIとしての役割を担っています。また、新機能の実装の繁栄をクライアントにダウンタイムなしで提供するために作られました。

Archipelago

P2Pを利用して、異なるトランスポートとの通信をするために必要なサービスです。
ランドから別のランドに移動する際に、それぞれのオーナーごとに決められた異なるルールや機能(音楽が再生される、NFT認証が走る等)をシームレスに適用させたりするときに必要です。それにより近くにいる他ユーザーや他シーンとのコミュニケーションが効率的になります。

NATS

サービス間ので通信されるメッセージの仲介役です。BFFや、ArchipelagoやLivekitとのやり取りを仲介しています。

LiveKit

P2PではなくWebRTC SFUを利用してスケーラブルで複数ユーザーによる映像や音声データのやりとりを可能にするOSSプロジェクトです。GatherやSpotifyでも使われています。また、ランド内が混雑している状態でも高いパフォーマンスとクオリティを保つためにも使われています。

Lambdas

複数のユーティリティの集まりです。主に、クライアントからのデータ取得やバリデーションを行います。
ブロックチェーンからのデータ取得はThe Graphを利用しているらしいです。

Content Server

Decentraland上で表示される3Dモデル等のエンティティと呼ばれるアセットを保存するためのストレージです。Content Serverは他のContent Serverの内容を自動で同期しており、またDecentraland DAOによってホワイトリストされたものが保存されています。SceneやWearables, Profileなんかもここに保存されています。

Nginx

トラフィックをルーティングするためのリバースプロキシです。

運用するには

運用する際には、このレポジトリのdocker-compose.ymlを利用するようです。

スペック

Catalystを運用するためのスペックは、

  • 4 vCPUs
  • 16 Gb RAM
  • 2TB SSD

AWSのEC2インスタンスで言うと、t2.xlarge

0.1856 USD/時間 のオンデマンド料金で運用するとすれば、

  • 1カ月 約 133.632 USD
  • 6カ月 約 801.792 USD
  • 1年 約 1603.584 USD

になります。高い。。

課題

  • コンテンツが数サーバーにでしか管理されておらず十分に分散されていない。
  • ブロックチェーンのデータ取得をTheGraph に頼っているので長期的に見てコスパ悪い

おわりに

メタバースにおける、UI/UXを求めていくと、やはり、トラストポイントや単一障害点になるような部分がどうしても増えてしまうのだなと感じました。

最近DecentralandのSDKのバージョン7がリリースされ書き方かなり変わったりと、まだまだ発展途上なコミュニティなので、これからも追っていきます。また、The SandboxやOthersideの開発にも手を出してみたいです。

no plan株式会社について

外部リンク・参考文献

Discussion