Valtrack-это набор инструментов, предназначенных для геоизоляции и отслеживания валидаторов Ethereum.
Вывод вывода в CSV: Validator_metadata_events_sample.csv
Чтобы начать работу с Valtrack, вам нужно клонировать репозиторий и установить зависимости.
git clone [email protected]:chainbound/valtrack.git
Вальтрак:
go mod download
go build
Натс:
Valtrack состоит из 3 основных компонентов: Sentry , Sentry, потребителя и сервера Nats JetStream. Sentry отвечает за обнаружение и отслеживание валидаторов Ethereum, в то время как потребитель потребляет данные, опубликованные Sentry, обрабатывает их и хранит в базе данных (Parquet Files на данный момент). Читать больше под архитектурой.
Чтобы запустить часовой:
./valtrack --nats-url nats://localhost:4222 sentry
./valtrack --nats-url nats://localhost:4222 consumer
Мы предоставляем пример файла конфигурации для сервера NATS в Server/NATS-server.conf. Чтобы запустить сервер NATS с включенным JetStream, вы можете запустить следующую команду:
nats-server --jetstream --config server/nats-server.conf
Это создаст каталог data
в текущем рабочем каталоге со всеми данными JetStream.
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 и обнаруживает узлы и слушает входящие соединения. Он пытается подключиться к любым обнаруженным сверстникам и выполнять рукопожатие для их Status
и MetaData
.
Параллельно он попытается оценить подписки с GossipsUb в частности, в частности, на темы подсети аттестации. Как только он будет иметь все эти данные, он опубликует их на сервере Nats JetStream.
Сверки хранятся в Peerstore, который периодически (каждая эпоха) снова проходит через этот процесс. Это позволяет нам получить несколько точек данных с течением времени, которые обеспечат более точность при определении количества валидаторов, прикрепленных к узлу маяка.
TODO: Sentry Beacon должен позже хранить оценки по количеству валидаторов, прикрепленных к узлу маяка. Затем он должен разоблачить это через API.
Потребитель - это услуга, которая потребляет данные Sentry с сервера NATS JetStream и хранит их в паркете (в ближайшее время). Поддерживает 3 таблицы:
discovery_events
: содержит события Discovery Sentrymetadata_events
: содержит события метаданных часовых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" },
}
Документы на конфигурацию потребителей Вальтрак использует следующую конфигурацию:
consumerCfg := jetstream. ConsumerConfig {
Name : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Durable : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Description : "Consumes valtrack events" ,
AckPolicy : jetstream . AckExplicitPolicy ,
}
Потребитель выставит API для запроса данных, хранящихся в базе данных. API будет API REST.
Публичный доступ (обычный пользователь, ключ не требуется):
curl http://localhost:8080/validators
Доступ к администратору (требуется ключ API):
curl -H " X-API-KEY: <API-KEY> " http://localhost:8080/validators
Ключи API можно добавить в файл api_keys.txt
.
Выкрикивайте следующие проекты для вдохновения и ссылки: