bb5a6d2cca
## Issue Addressed #3031 ## Proposed Changes Updates the following API endpoints to conform with https://github.com/ethereum/beacon-APIs/pull/190 and https://github.com/ethereum/beacon-APIs/pull/196 - [x] `beacon/states/{state_id}/root` - [x] `beacon/states/{state_id}/fork` - [x] `beacon/states/{state_id}/finality_checkpoints` - [x] `beacon/states/{state_id}/validators` - [x] `beacon/states/{state_id}/validators/{validator_id}` - [x] `beacon/states/{state_id}/validator_balances` - [x] `beacon/states/{state_id}/committees` - [x] `beacon/states/{state_id}/sync_committees` - [x] `beacon/headers` - [x] `beacon/headers/{block_id}` - [x] `beacon/blocks/{block_id}` - [x] `beacon/blocks/{block_id}/root` - [x] `beacon/blocks/{block_id}/attestations` - [x] `debug/beacon/states/{state_id}` - [x] `debug/beacon/heads` - [x] `validator/duties/attester/{epoch}` - [x] `validator/duties/proposer/{epoch}` - [x] `validator/duties/sync/{epoch}` Updates the following Server-Sent Events: - [x] `events?topics=head` - [x] `events?topics=block` - [x] `events?topics=finalized_checkpoint` - [x] `events?topics=chain_reorg` ## Backwards Incompatible There is a very minor breaking change with the way the API now handles requests to `beacon/blocks/{block_id}/root` and `beacon/states/{state_id}/root` when `block_id` or `state_id` is the `Root` variant of `BlockId` and `StateId` respectively. Previously a request to a non-existent root would simply echo the root back to the requester: ``` curl "http://localhost:5052/eth/v1/beacon/states/0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/root" {"data":{"root":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}} ``` Now it will return a `404`: ``` curl "http://localhost:5052/eth/v1/beacon/blocks/0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/root" {"code":404,"message":"NOT_FOUND: beacon block with root 0xaaaa…aaaa","stacktraces":[]} ``` In addition to this is the block root `0x0000000000000000000000000000000000000000000000000000000000000000` previously would return the genesis block. It will now return a `404`: ``` curl "http://localhost:5052/eth/v1/beacon/blocks/0x0000000000000000000000000000000000000000000000000000000000000000" {"code":404,"message":"NOT_FOUND: beacon block with root 0x0000…0000","stacktraces":[]} ``` ## Additional Info - `execution_optimistic` is always set, and will return `false` pre-Bellatrix. I am also open to the idea of doing something like `#[serde(skip_serializing_if = "Option::is_none")]`. - The value of `execution_optimistic` is set to `false` where possible. Any computation that is reliant on the `head` will simply use the `ExecutionStatus` of the head (unless the head block is pre-Bellatrix). Co-authored-by: Paul Hauner <paul@paulhauner.com>
48 lines
1.6 KiB
TOML
48 lines
1.6 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"
|
|
|
|
[dev-dependencies]
|
|
store = { path = "../store" }
|
|
environment = { path = "../../lighthouse/environment" }
|
|
tree_hash = "0.4.1"
|
|
sensitive_url = { path = "../../common/sensitive_url" }
|
|
logging = { path = "../../common/logging" }
|
|
serde_json = "1.0.58"
|
|
proto_array = { path = "../../consensus/proto_array" }
|
|
|
|
[[test]]
|
|
name = "bn_http_api_tests"
|
|
path = "tests/main.rs"
|