Valtrack adalah serangkaian alat yang ditujukan untuk validator Ethereum yang bertujuan geo dan pelacakan.
Contoh output dalam CSV: validator_metadata_events_sample.csv
Untuk memulai dengan Valtrack, Anda perlu mengkloning repositori dan menginstal dependensi.
git clone [email protected]:chainbound/valtrack.git
Valtrack:
go mod download
go build
NATS:
Valtrack terdiri dari 3 komponen utama: Sentry , konsumen dan server Nats Jetstream. Sentry bertanggung jawab untuk menemukan dan melacak validator Ethereum, sementara konsumen mengkonsumsi data yang diterbitkan oleh Sentry, memprosesnya dan menyimpannya dalam database (file parket untuk saat ini). Baca lebih lanjut di bawah arsitektur.
Untuk menjalankan penjaga:
./valtrack --nats-url nats://localhost:4222 sentry
./valtrack --nats-url nats://localhost:4222 consumer
Kami memberikan contoh file konfigurasi untuk server NATS di server/nats-server.conf. Untuk menjalankan server NATS dengan JetStream diaktifkan, Anda dapat menjalankan perintah berikut:
nats-server --jetstream --config server/nats-server.conf
Ini akan membuat direktori data
di direktori kerja saat ini dengan semua 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 adalah layanan yang merangkak DHT Ethereum Discv5 dan menemukan node dan mendengarkan koneksi yang masuk. Ia mencoba untuk terhubung ke teman sebaya yang ditemukan dan melakukan jabat tangan untuk Status
dan MetaData
mereka.
Secara paralel, ia akan mencoba mengukur langganan gosip peer, khususnya untuk topik subnet pengesahan. Setelah memiliki semua data itu, itu akan menerbitkannya ke Nats Jetstream Server.
Peers disimpan di peerstore yang secara berkala akan (setiap zaman) berjalan melalui proses ini lagi. Ini memungkinkan kami untuk mendapatkan beberapa titik data dari waktu ke waktu yang akan memberikan akurasi lebih dalam menentukan jumlah validator yang melekat pada node suar.
TODO: The Beacon Sentry nantinya harus menyimpan estimasi pada jumlah validator yang melekat pada node suar. Seharusnya itu harus mengeksposnya melalui API.
Konsumen adalah layanan yang mengkonsumsi data Sentry dari Nats Jetstream Server dan menyimpannya dalam file parket (database segera). Memelihara 3 tabel:
discovery_events
: berisi acara penemuan penjagametadata_events
: berisi peristiwa metadata dari penjagavalidator_metadata_events
: tabel turunan dari peristiwa metadata, yang berisi titik data validatorNats adalah middleware berorientasi pesan. Valtrack menggunakan Nats Jetstream yang memungkinkan fungsi -fungsi persistensi pesan.
Periksa dokumentasi NATS resmi untuk dokumen Instalasi Instalasi NATS
Untuk menjalankan server Nats Jetstream:
nats-server --jetstream
Penting untuk membuat aliran dengan konfigurasi yang tepat sesuai dengan persyaratan. Dokumen
Valtrack menggunakan konfigurasi berikut:
jetstreamCfg := jetstream. StreamConfig {
Name : "EVENTS" ,
Retention : jetstream . InterestPolicy ,
Subjects : [] string { "events.metadata_received" , "events.peer_discovered" },
}
Dokumen Konfigurasi Konsumen Valtrack menggunakan konfigurasi berikut:
consumerCfg := jetstream. ConsumerConfig {
Name : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Durable : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Description : "Consumes valtrack events" ,
AckPolicy : jetstream . AckExplicitPolicy ,
}
Konsumen akan mengekspos API untuk menanyakan data yang disimpan dalam database. API akan menjadi API REST.
Akses publik (pengguna biasa, tidak ada kunci yang diperlukan):
curl http://localhost:8080/validators
Akses Admin (membutuhkan kunci API):
curl -H " X-API-KEY: <API-KEY> " http://localhost:8080/validators
Kunci API dapat ditambahkan dalam file api_keys.txt
.
Shoutout ke proyek -proyek berikut untuk inspirasi dan referensi: