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键。
大喊以下项目以获取灵感和参考: