From d316305411cce7cd4df95abbcc575c9e2070f896 Mon Sep 17 00:00:00 2001 From: Mac L Date: Tue, 26 Jul 2022 08:50:16 +0000 Subject: [PATCH] Add `is_optimistic` to `eth/v1/node/syncing` response (#3374) ## Issue Addressed As specified in the [Beacon Chain API specs](https://github.com/ethereum/beacon-APIs/blob/master/apis/node/syncing.yaml#L32-L35) we should return `is_optimistic` as part of the response to a query for the `eth/v1/node/syncing` endpoint. ## Proposed Changes Compute the optimistic status of the head and add it to the `SyncingData` response. --- beacon_node/http_api/src/lib.rs | 5 +++++ beacon_node/http_api/tests/tests.rs | 1 + common/eth2/src/types.rs | 1 + 3 files changed, 7 insertions(+) diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index 31ae7486e6..c1980bee3d 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -1852,8 +1852,13 @@ pub fn serve( // Taking advantage of saturating subtraction on slot. let sync_distance = current_slot - head_slot; + let is_optimistic = chain + .is_optimistic_head() + .map_err(warp_utils::reject::beacon_chain_error)?; + let syncing_data = api_types::SyncingData { is_syncing: network_globals.sync_state.read().is_syncing(), + is_optimistic, head_slot, sync_distance, }; diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 37c267fd46..b4c29cae42 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -1281,6 +1281,7 @@ impl ApiTester { let expected = SyncingData { is_syncing: false, + is_optimistic: false, head_slot, sync_distance, }; diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index c78e2c6919..3e480e0827 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -552,6 +552,7 @@ pub struct VersionData { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct SyncingData { pub is_syncing: bool, + pub is_optimistic: bool, pub head_slot: Slot, pub sync_distance: Slot, }