3642efe76a
## Issue Addressed #3804 ## Proposed Changes - Add `total_balance` to the validator monitor and adjust the number of historical epochs which are cached. - Allow certain values in the cache to be served out via the HTTP API without requiring a state read. ## Usage ``` curl -X POST "http://localhost:5052/lighthouse/ui/validator_info" -d '{"indices": [0]}' -H "Content-Type: application/json" | jq ``` ``` { "data": { "validators": { "0": { "info": [ { "epoch": 172981, "total_balance": 36566388519 }, ... { "epoch": 172990, "total_balance": 36566496513 } ] }, "1": { "info": [ { "epoch": 172981, "total_balance": 36355797968 }, ... { "epoch": 172990, "total_balance": 36355905962 } ] } } } } ``` ## Additional Info This requires no historical states to operate which mean it will still function on the freshly checkpoint synced node, however because of this, the values will populate each epoch (up to a maximum of 10 entries). Another benefit of this method, is that we can easily cache any other values which would normally require a state read and serve them via the same endpoint. However, we would need be cautious about not overly increasing block processing time by caching values from complex computations. This also caches some of the validator metrics directly, rather than pulling them from the Prometheus metrics when the API is called. This means when the validator count exceeds the individual monitor threshold, the cached values will still be available. Co-authored-by: Paul Hauner <paul@paulhauner.com>
53 lines
1.8 KiB
TOML
53 lines
1.8 KiB
TOML
[package]
|
|
name = "http_api"
|
|
version = "0.1.0"
|
|
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
|
edition = "2021"
|
|
autotests = false # using a single test binary compiles faster
|
|
|
|
[dependencies]
|
|
warp = { version = "0.3.2", features = ["tls"] }
|
|
serde = { version = "1.0.116", features = ["derive"] }
|
|
tokio = { version = "1.14.0", features = ["macros","sync"] }
|
|
tokio-stream = { version = "0.1.3", features = ["sync"] }
|
|
types = { path = "../../consensus/types" }
|
|
hex = "0.4.2"
|
|
beacon_chain = { path = "../beacon_chain" }
|
|
eth2 = { path = "../../common/eth2", features = ["lighthouse"] }
|
|
slog = "2.5.2"
|
|
network = { path = "../network" }
|
|
lighthouse_network = { path = "../lighthouse_network" }
|
|
eth1 = { path = "../eth1" }
|
|
state_processing = { path = "../../consensus/state_processing" }
|
|
lighthouse_version = { path = "../../common/lighthouse_version" }
|
|
lighthouse_metrics = { path = "../../common/lighthouse_metrics" }
|
|
lazy_static = "1.4.0"
|
|
warp_utils = { path = "../../common/warp_utils" }
|
|
slot_clock = { path = "../../common/slot_clock" }
|
|
eth2_ssz = "0.4.1"
|
|
bs58 = "0.4.0"
|
|
futures = "0.3.8"
|
|
execution_layer = {path = "../execution_layer"}
|
|
parking_lot = "0.12.0"
|
|
safe_arith = {path = "../../consensus/safe_arith"}
|
|
task_executor = { path = "../../common/task_executor" }
|
|
lru = "0.7.7"
|
|
tree_hash = "0.4.1"
|
|
sysinfo = "0.26.5"
|
|
system_health = { path = "../../common/system_health" }
|
|
directory = { path = "../../common/directory" }
|
|
eth2_serde_utils = "0.1.1"
|
|
|
|
[dev-dependencies]
|
|
store = { path = "../store" }
|
|
environment = { path = "../../lighthouse/environment" }
|
|
sensitive_url = { path = "../../common/sensitive_url" }
|
|
logging = { path = "../../common/logging" }
|
|
serde_json = "1.0.58"
|
|
proto_array = { path = "../../consensus/proto_array" }
|
|
unused_port = {path = "../../common/unused_port"}
|
|
|
|
[[test]]
|
|
name = "bn_http_api_tests"
|
|
path = "tests/main.rs"
|