【完全保存版】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。
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コンポーネントが含まれています。
これらのコンポーネントは、Solanaバリデータデータを非常に高速かつ正確なAPIに集約する役割を担っています。
このAPIは、Metaplexプログラム上に洗練されたインターフェースを提供します。
ブロックチェーン上のバイトレイアウトを抽象化し、高速なクエリや検索を可能にし、圧縮NFTに必要なMerkle証明を提供します。
アプリケーションのメインフローを参照してください。
5 DAS APIアーキテクチャ
このプロジェクトは、クリーンアーキテクチャの原則に基づいて構築されています。
このプロジェクトの構造は、次のクリーンアーキテクチャ原則を反映しています。
1 フレームワーク独立性
アーキテクチャは特定のフレームワークやライブラリに依存せずに構築されています。
2 テスト可能性
ビジネスルールはUI、データベース、外部インターフェースから独立してテストできます。
3 UI独立性
UIの変更がコアアプリケーションロジックに影響を与えません。
4 データベース独立性
ビジネスロジックはデータベース技術に密接に結びついていません。
5 外部エージェンシー独立性
ビジネスルールはその範囲外のものに影響を受けません。
6 プロジェクト構造
1 entities
アプリケーション全体で使用されるドメインを表すビジネスモデルを含んでいます。
2 interface
レイヤー間を分離し、疎結合を確保するための公開インターフェースを定義するトレイトを格納しています。
3 usecase
アプリケーションのドメイン中心の核であり、ビジネスルールをカプセル化したユースケースが含まれています。
4 grpc
gRPCサービスの定義とその実装を格納しています。
5 digital_asset_types
以前のプロジェクトバージョンからのモデルとAPI定義を持つレガシーワークスペースです。
6 データ層の分散
6ー1 rocks-db
アプリケーションの主要なデータソースで、データベースクライアントの実装を含み、すべての永続的なデータの保存、取得、操作に使用されます。
6ー2 postgre-client
検索インデックス専用の二次データソースであり、クエリのパフォーマンスを最適化するためにインデックス作成と検索関連の操作に焦点を当てています。
SQLiteに置き換えて、自己完結型で展開が容易なソリューションにする可能性もあります。
7 コンポーネント
1 Ingester
バックグラウンド処理システムであり、Messengerからメッセージを取得し、BlockBuster Parsersを使用してMetaplexタイプの標準表現をストレージシステムに保存します。
このシステムは、圧縮NFTシステムをサポートするために必要なMerkleツリーも保持します。
2 Ingester -> Api
Metaplexオブジェクトを提供するJSON RPC API。
このAPIはMetaplexデータのフィルタリング、ページネーション、検索を可能にし、圧縮NFTシステムのMerkle証明も提供します。
このAPIはSolana RPCのすぐそばで動作するように設計されており、Solana RPCがバリデータからデータを取得して新しい形式で提供するのと同様に、このAPIもバリデータからデータを取得して提供します。
3 API仕様
仕様は、こちらにあります。この仕様は、このAPIを提供する者が従うべきものです。
8 インフラストラクチャとデプロイ例
これらのRustバイナリに加えて、このリポジトリはインフラ全体を実行するための例やベストプラクティス設定も維持しています。
例示的なインフラは以下の通りです。
1 Solana No-Vote Validator
このバリデータは、バリデータの元帳とコンセンサスに基づいたアカウントデータへのセキュアなアクセスのみを持つように設定されています。
2 Geyser Plugin (Plerkle)
上記のバリデータは、メッセージングシステム経由でPlerkleシリアライズメッセージを送信するこのGeyserプラグインを読み込むようにさらに設定されています。
3 Redisクラスター(ストリーム最適化済み)
メッセージングシステムとして使われる軽量なRedisデプロイメントで、ストリーミング構成をサポートします。
4 Kubernetesクラスター
APIとIngesterプロセスのオーケストレーションシステムです。
小規模なインストールには少しオーバースペックかもしれませんが、重要なソフトウェアにとって堅実なプラットフォームです。
このリポジトリには、例示的なインフラのデプロイを支援するためのHelmチャート、Dockerファイル、Terraformファイルも含まれています。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊