Valtrackは、ジオロケーションおよび追跡イーサリアムバリデーターを対象とした一連のツールです。
CSVのサンプル出力:validator_metadata_events_sample.csv
Valtrackを開始するには、リポジトリをクローンして依存関係をインストールする必要があります。
git clone [email protected]:chainbound/valtrack.git
Valtrack:
go mod download
go build
ナット:
Valtrackは、 Sentry 、 Consumer 、Nats Jetstream Serverの3つの主要なコンポーネントで構成されています。 Sentryは、Ethereum Validatorsの発見と追跡を担当しますが、消費者はSentryによって公開されたデータを消費し、それを処理し、データベースに保存します(今のところParquet Files)。アーキテクチャの詳細をご覧ください。
歩sentを実行するには:
./valtrack --nats-url nats://localhost:4222 sentry
./valtrack --nats-url nats://localhost:4222 consumer
Server/Nats-Server.confのNATSサーバーの例の構成ファイルを提供します。 JetStreamを有効にしてNATSサーバーを実行するには、次のコマンドを実行できます。
nats-server --jetstream --config server/nats-server.conf
これにより、すべてのJetStreamデータを使用して、現在の作業ディレクトリにdata
ディレクトリが作成されます。
NAME:
valtrack - Ethereum consensus validator tracking tool
USAGE:
valtrack [global options] command [command options] [arguments...]
COMMANDS:
sentry run the sentry node
consumer run the consumer
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--log-level value, -l value log level (default: "info")
--nats-url value, -n value NATS server URL (needs JetStream) (default: "nats://localhost:4222")
--help, -h show help
Beacon Sentryは、Ethereum Discv5 DHTをcraり、ノードを発見し、着信接続のために耳を傾けるサービスです。発見された仲間に接続しようとし、そのStatus
とMetaData
のために握手をします。
並行して、ピアのGossipsubサブスクリプション、特にSubnetのトピックに特に測定しようとします。そのすべてのデータがあると、それをNATS Jetstreamサーバーに公開します。
ピアは、定期的に(すべてのエポック)がこのプロセスを再び実行するピーストアに保管されます。これにより、時間の経過とともに複数のデータポイントを取得することができ、ビーコンノードに接続されたバリデーターの数を決定する際の精度が高まります。
TODO:ビーコンセントリーは、ビーコンノードに接続されたバリデーターの数の推定を後で保存する必要があります。その後、APIに露出するはずです。
Consumerは、NATS JetStream ServerからSentryデータを消費し、Parquetファイル(データベースのまもなく)に保存するサービスです。 3つのテーブルを維持します。
discovery_events
:Sentryの発見イベントが含まれていますmetadata_events
:Sentryのメタデータイベントが含まれていますvalidator_metadata_events
:バリデーターのデータポイントを含むメタデータイベントの派生テーブルNatsはメッセージ指向のミドルウェアです。 Valtrackは、メッセージの永続性機能を可能にするNats Jetstreamを使用します。
NATSのインストール手順ドキュメントについては、公式NATSドキュメントを確認してください
NATS JetStreamサーバーを実行するには:
nats-server --jetstream
要件に応じて、適切な構成でストリームを作成することが重要です。ドキュメント
Valtrackは次の構成を使用します。
jetstreamCfg := jetstream. StreamConfig {
Name : "EVENTS" ,
Retention : jetstream . InterestPolicy ,
Subjects : [] string { "events.metadata_received" , "events.peer_discovered" },
}
Consumer Configuration Docs Valtrackは次の構成を使用します。
consumerCfg := jetstream. ConsumerConfig {
Name : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Durable : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Description : "Consumes valtrack events" ,
AckPolicy : jetstream . AckExplicitPolicy ,
}
消費者はAPIを公開して、データベースに保存されているデータを照会します。 APIはREST APIになります。
パブリックアクセス(通常のユーザー、鍵は不要):
curl http://localhost:8080/validators
管理者アクセス(APIキーが必要):
curl -H " X-API-KEY: <API-KEY> " http://localhost:8080/validators
APIキーはapi_keys.txt
ファイルに追加できます。
インスピレーションとリファレンスのために次のプロジェクトに叫ぶ: