Valtrack هي مجموعة من الأدوات التي تهدف إلى توحيد Geo وتتبع صحة Ethereum.
عينة الإخراج في CSV: Valitator_metadata_events_sample.csv
للبدء في Valtrack ، تحتاج إلى استنساخ المستودع وتثبيت التبعيات.
git clone [email protected]:chainbound/valtrack.git
فالتراك:
go mod download
go build
ناتس:
يتكون Valtrack من 3 مكونات رئيسية: الحارس والمستهلك وخادم Nats JetStream. إن الحارس مسؤول عن اكتشاف وتتبع صحة Ethereum ، بينما يستهلك المستهلك البيانات التي نشرتها Sentry ، ومعالجتها وتخزينها في قاعدة بيانات (ملفات Parquet في الوقت الحالي). اقرأ المزيد تحت الهندسة المعمارية.
لتشغيل الحارس:
./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 الخاصة بـ Peer ، وتحديداً إلى موضوعات الشبكة الفرعية للتصديق. بمجرد أن يكون لها كل هذه البيانات ، ستنشرها على خادم Nats JetStream.
يتم تخزين أقرانهم في peerstore الذي سيقوم بشكل دوري (كل حقبة) بالمرور خلال هذه العملية مرة أخرى. يتيح لنا ذلك الحصول على نقاط بيانات متعددة بمرور الوقت والتي ستوفر المزيد من الدقة في تحديد عدد أخصائيات التحقق من العقدة منارة.
TODO: يجب على Beacon Sentry في وقت لاحق تخزين تقديرات على عدد المدققين المرفقين بعقدة منارة. يجب أن يعرضها بعد ذلك على واجهة برمجة التطبيقات.
المستهلك هي خدمة تستهلك بيانات Sentry من خادم Nats JetStream ويخزنها في ملف parquet (قاعدة البيانات قريبًا). يحافظ على 3 طاولات:
discovery_events
: يحتوي على أحداث اكتشاف الحارسmetadata_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" },
}
مستندات تكوين المستهلك تستخدم Valtrack التكوين التالي:
consumerCfg := jetstream. ConsumerConfig {
Name : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Durable : fmt . Sprintf ( "consumer-%s" , uniqueID ),
Description : "Consumes valtrack events" ,
AckPolicy : jetstream . AckExplicitPolicy ,
}
سيعرض المستهلك واجهة برمجة تطبيقات للاستعلام عن البيانات المخزنة في قاعدة البيانات. ستكون واجهة برمجة التطبيقات (API) هي واجهة برمجة تطبيقات REST.
وصول عام (مستخدم عادي ، لا يوجد مفتاح مطلوب):
curl http://localhost:8080/validators
وصول المسؤول (يتطلب مفتاح API):
curl -H " X-API-KEY: <API-KEY> " http://localhost:8080/validators
يمكن إضافة مفاتيح API في ملف api_keys.txt
.
يصرخ للمشاريع التالية للإلهام والمرجع: