Valtrack เป็นชุดเครื่องมือที่มุ่งเป้าไปที่การตรวจสอบทางภูมิศาสตร์และการติดตามผู้ตรวจสอบ Ethereum
ตัวอย่างเอาต์พุตใน CSV: validator_metadata_events_sample.csv
ในการเริ่มต้นกับ Valtrack คุณต้องโคลนพื้นที่เก็บข้อมูลและติดตั้งการอ้างอิง
git clone [email protected]:chainbound/valtrack.git
Valtrack:
go mod download
go build
นัตส์:
Valtrack ประกอบด้วย 3 องค์ประกอบหลัก: Sentry , ผู้บริโภค และเซิร์ฟเวอร์ NATS JetStream Sentry มีหน้าที่รับผิดชอบในการค้นพบและติดตามผู้ตรวจสอบ Ethereum ในขณะที่ผู้บริโภคใช้ข้อมูลที่เผยแพร่โดย Sentry ประมวลผลและเก็บไว้ในฐานข้อมูล (ไฟล์ Parquet สำหรับตอนนี้) อ่านเพิ่มเติมภายใต้สถาปัตยกรรม
เพื่อเรียกใช้ Sentry:
./valtrack --nats-url nats://localhost:4222 sentry
./valtrack --nats-url nats://localhost:4222 consumer
เราให้ตัวอย่างไฟล์การกำหนดค่าสำหรับเซิร์ฟเวอร์ NATS ในเซิร์ฟเวอร์/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: Beacon Sentry ควรจัดเก็บการประมาณจำนวนผู้ตรวจสอบที่แนบมากับโหนดสัญญาณ จากนั้นควรเปิดเผยผ่าน API
ผู้บริโภคเป็นบริการที่ใช้ข้อมูลยามจากเซิร์ฟเวอร์ NATS JetStream และเก็บไว้ในไฟล์ Parquet (ฐานข้อมูลเร็ว ๆ นี้) ดูแลรักษา 3 ตาราง:
discovery_events
: มีเหตุการณ์การค้นพบของยามรักษาการณ์metadata_events
: มีเหตุการณ์ข้อมูลเมตาของ Sentryvalidator_metadata_events
: ตารางที่ได้รับจากเหตุการณ์ข้อมูลเมตาซึ่งมีจุดข้อมูลของตัวตรวจสอบNats เป็นมิดเดิลแวร์ที่มุ่งเน้นข้อความ Valtrack ใช้ Nats Jetstream ซึ่งเปิดใช้งาน Funcionalities ข้อความ
ตรวจสอบเอกสารอย่างเป็นทางการของ 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 เพื่อสอบถามข้อมูลที่เก็บไว้ในฐานข้อมูล API จะเป็น REST API
การเข้าถึงสาธารณะ (ผู้ใช้ทั่วไปไม่จำเป็นต้องมีคีย์):
curl http://localhost:8080/validators
การเข้าถึงผู้ดูแลระบบ (ต้องการคีย์ API):
curl -H " X-API-KEY: <API-KEY> " http://localhost:8080/validators
ปุ่ม API สามารถเพิ่มได้ในไฟล์ api_keys.txt
ตะโกนไปยังโครงการต่อไปนี้เพื่อหาแรงบันดาลใจและการอ้างอิง: