見出し画像

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

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


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

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

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

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

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

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

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

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

2 DAS APIアーキテクチャ

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

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

1 フレームワーク独立性

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

2 テスト可能性

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

3 UI独立性

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

4 データベース独立性

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

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

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

3 プロジェクト構造

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

4 コンポーネント

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を提供する者が従うべきものです。

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

これらの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ファイルも含まれています。

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