Valtrack是一套旨在地理位置和跟踪以太坊驗證器的工具。
CSV中的示例輸出:validator_metadata_events_sample.csv
要開始使用Valtrack,您需要克隆存儲庫並安裝依賴項。
git clone [email protected]:chainbound/valtrack.git
Valtrack:
go mod download
go build
納特:
Valtrack由3個主要組件組成:哨兵,消費者和NATS Jetstream Server。 Sentry負責發現和跟踪以太坊驗證器,而消費者消耗了Sentry發布的數據,對其進行了處理,並將其存儲在數據庫中(目前是Parquet文件)。閱讀更多架構。
運行哨兵:
./valtrack --nats-url nats://localhost:4222 sentry
./valtrack --nats-url nats://localhost:4222 consumer
我們在服務器/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是一項爬網的服務,可爬行以太坊DISCV5 DHT,並發現節點並傾聽傳入連接的聆聽。它試圖連接到任何發現的同齡人,並為其Status
和MetaData
進行握手。
同時,它將嘗試評估Peer的八卦訂閱,特別是針對認證子網主題。擁有所有數據後,它將其發佈到NATS Jetstream Server。
同齡人存儲在一個會定期(每個時期)再次通過此過程的同伴中。這使我們能夠隨著時間的推移獲取多個數據點,這將在確定信標節點附加的驗證器數量方面提供更準確性。
TODO:Beacon Sentry應稍後存儲有關信標節點附加的驗證器數量的估計。然後,它應該將其暴露在API上。
消費者是一項服務,可消費來自NATS Jetstream Server的Sentry數據,並將其存儲在Parquet文件(即將數據庫)中。維護3張表:
discovery_events
:包含哨兵的發現事件metadata_events
:包含哨兵的元數據事件validator_metadata_events
:來自元數據事件的派生表,其中包含驗證器的數據點NATS是面向消息的中間件。 Valtrack使用NATS JETSTREAM,啟用消息持久性擬合。
檢查官方NAT的文檔中的NATS安裝說明文檔
運行NATS JETSTREAM服務器:
nats-server --jetstream
根據要求,使用正確配置創建流的流很重要。文件
Valtrack使用以下配置:
jetstreamCfg := jetstream. StreamConfig {
Name : "EVENTS" ,
Retention : jetstream . InterestPolicy ,
Subjects : [] string { "events.metadata_received" , "events.peer_discovered" },
}
消費者配置文檔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_keys.txt
文件中添加API鍵。
大喊以下項目以獲取靈感和參考: