見出し画像

【完全保存版】MetaplexのAuraについて学ぼう!

この記事ではMetaplexのAuraのRead meファイル部分の一部を翻訳・編集しています。

1 概要

1 概要

Metaplex Aura Network は、Solana と Solana Virtual Machine (SVM) を拡張する、分散型インデックスおよびデータ可用性ネットワークです。

2 主要なコンポーネント

Metaplex Aura Network には、以下の3つの主要なコンポーネントがあります。

2ー1 デジタルアセットのデータ可用性

分散型のデータストレージと取得を提供し、デジタルアセットやメディアコンテンツが常にアクセス可能で、単一障害点に依存しないようにします。

2ー2 SVM 上のマルチプログラム一貫性インデックス

Solana および広範な SVM 上のプロトコルに対応する、高性能なインデックスを提供する拡張されたデジタルアセット標準 (DAS) API。

翻訳者注
全てのプログラムで一貫している
DASを強化している

2ー3 柔軟なステート管理

SVM アカウントスペースと異なるレベルの状態圧縮間でアセットをオンデマンドで移行できる能力があります。

これは、柔軟性を高め、アセットのパフォーマンスとスケーラビリティを最適化します。

翻訳者注
つまり、アカウントの状態を圧縮して別の部分に移行できるようですね。

詳細については、当社のブログをご覧ください。

2 Aura インフラストラクチャ

このリポジトリには、Metaplex Aura のマルチプログラム一貫性インデクサー、API、タイプが含まれています。

これらのコンポーネントは、Solana バリデータデータを非常に高速で正確な型付きの DAS API に集約する役割を担っています。

このAPIは、Metaplexプログラムの上に使いやすいインターフェースを提供し、チェーン上のバイトレイアウトを抽象化し、超高速のクエリや検索を可能にします。

また、圧縮されたNFTに対するメルクル証明も提供します。

アプリケーションのメインフローについては、こちらをご覧ください。

3 Aura インデックス

Aura インデックスは、以下の2つの主要なコンポーネントで構成されています。

1 RocksDB に保存されたプライマリデジタルアセットデータ

完全な情報を保持する高性能なキー値ストレージです。

2 リレーショナルDB (Postgres) に保存されたルックアップインデックス

複雑な検索条件に一致するアセットのキーを取得するために使用されます。

プライマリストレージとルックアップインデックスを同期させるために、バックグラウンドで同期プログラム(Synchronizer)が実行されます。

4 デジタル資産RPC APIインフラストラクチャ

このリポジトリには、Metaplex Digital Asset RPC APIのAPI IngesterおよびDatabase Typesコンポーネントが含まれています。

翻訳者注
API Ingester
は、Solanaブロックチェーン上のNFTやデジタル資産に関連するトランザクションデータを取得・フィルタリングし、効率的に保存・提供するためのバックグラウンドプロセスです。

これらのコンポーネントは、Solanaバリデータデータを非常に高速かつ正確なAPIに集約する役割を担っています。

このAPIは、Metaplexプログラム上に洗練されたインターフェースを提供します。

ブロックチェーン上のバイトレイアウトを抽象化し、高速なクエリや検索を可能にし、圧縮NFTに必要なMerkle証明を提供します。

翻訳者注
ここでの「バイトレイアウトを抽象化」とは、ブロックチェーン上に保存されているバイナリデータを人間やアプリケーションが理解しやすい形式(例えばJSON)に変換することを指します。

アプリケーションのメインフローを参照してください。

5 DAS APIアーキテクチャ

このプロジェクトは、クリーンアーキテクチャの原則に基づいて構築されています。

このプロジェクトの構造は、次のクリーンアーキテクチャ原則を反映しています。

1 フレームワーク独立性

アーキテクチャは特定のフレームワークやライブラリに依存せずに構築されています。

2 テスト可能性

ビジネスルールはUI、データベース、外部インターフェースから独立してテストできます。

3 UI独立性

UIの変更がコアアプリケーションロジックに影響を与えません。

4 データベース独立性

ビジネスロジックはデータベース技術に密接に結びついていません。

5 外部エージェンシー独立性

ビジネスルールはその範囲外のものに影響を受けません。

6 プロジェクト構造

1 entities

アプリケーション全体で使用されるドメインを表すビジネスモデルを含んでいます。

2 interface

レイヤー間を分離し、疎結合を確保するための公開インターフェースを定義するトレイトを格納しています。

3 usecase

アプリケーションのドメイン中心の核であり、ビジネスルールをカプセル化したユースケースが含まれています。

4 grpc

gRPCサービスの定義とその実装を格納しています。

https://grpc.io/docs/what-is-grpc/introduction/

5 digital_asset_types

以前のプロジェクトバージョンからのモデルとAPI定義を持つレガシーワークスペースです。

6 データ層の分散

6ー1 rocks-db

アプリケーションの主要なデータソースで、データベースクライアントの実装を含み、すべての永続的なデータの保存、取得、操作に使用されます。

6ー2 postgre-client

検索インデックス専用の二次データソースであり、クエリのパフォーマンスを最適化するためにインデックス作成と検索関連の操作に焦点を当てています。

SQLiteに置き換えて、自己完結型で展開が容易なソリューションにする可能性もあります。

7 コンポーネント

1 Ingester

バックグラウンド処理システムであり、Messengerからメッセージを取得し、BlockBuster Parsersを使用してMetaplexタイプの標準表現をストレージシステムに保存します。

翻訳者注
BlockBuster Parsersでは、
トランザクションから取得した生データを解析し、意味のある情報に変換します。

https://github.com/metaplex-foundation/blockbuster

このシステムは、圧縮NFTシステムをサポートするために必要なMerkleツリーも保持します。

2 Ingester -> Api

Metaplexオブジェクトを提供するJSON RPC API。

このAPIはMetaplexデータのフィルタリング、ページネーション、検索を可能にし、圧縮NFTシステムのMerkle証明も提供します。

翻訳者注
例えば「◯◯」という名前のプロジェクトの検索が容易にできそうですね。

このAPIはSolana RPCのすぐそばで動作するように設計されており、Solana RPCがバリデータからデータを取得して新しい形式で提供するのと同様に、このAPIもバリデータからデータを取得して提供します。

翻訳者注
ちょっとニュアンスがわかりにくいのですが、Solana RPCなどから常にトランザクションを常に取得して、反映しているというような内容だと思いました。

3 API仕様

仕様は、こちらにあります。この仕様は、このAPIを提供する者が従うべきものです。

8 インフラストラクチャとデプロイ例

これらのRustバイナリに加えて、このリポジトリはインフラ全体を実行するための例やベストプラクティス設定も維持しています。

例示的なインフラは以下の通りです。

1 Solana No-Vote Validator

このバリデータは、バリデータの元帳とコンセンサスに基づいたアカウントデータへのセキュアなアクセスのみを持つように設定されています。

翻訳者注
その名の通り、「No-Vote(投票なし)」のバリデータです。
ブロックを作成することを目的としておらず、あくまでもブロックチェーン上のデータを取得することを主眼としています。

2 Geyser Plugin (Plerkle)

上記のバリデータは、メッセージングシステム経由でPlerkleシリアライズメッセージを送信するこのGeyserプラグインを読み込むようにさらに設定されています。

https://docs.solanalabs.com/validator/geyser

翻訳者注
GeyserはSolanaバリデータが持つデータを外部に提供するためのプラグインシステムです。
そして、Plerkleは、Geyserプラグインの中でもデータのシリアライズと転送を担当する部分です

3 Redisクラスター(ストリーム最適化済み)

メッセージングシステムとして使われる軽量なRedisデプロイメントで、ストリーミング構成をサポートします。

4 Kubernetesクラスター

APIとIngesterプロセスのオーケストレーションシステムです。

小規模なインストールには少しオーバースペックかもしれませんが、重要なソフトウェアにとって堅実なプラットフォームです。


このリポジトリには、例示的なインフラのデプロイを支援するためのHelmチャート、Dockerファイル、Terraformファイルも含まれています。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊