Skip to content

Commit

Permalink
Provide current block height via 'chain state info' extension
Browse files Browse the repository at this point in the history
  • Loading branch information
rafal-ch committed Feb 17, 2025
1 parent bd610e7 commit 3f3e971
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 20 deletions.
4 changes: 2 additions & 2 deletions crates/fuel-core/src/graphql_api/api_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,9 +299,9 @@ where
.extension(RequiredFuelBlockHeightExtension::new(
required_fuel_block_height_tolerance,
required_fuel_block_height_timeout,
block_height_subscriber,
block_height_subscriber.clone(),
))
.extension(ChainStateInfoExtension::new())
.extension(ChainStateInfoExtension::new(block_height_subscriber))
.finish();

let graphql_endpoint = "/v1/graphql";
Expand Down
27 changes: 22 additions & 5 deletions crates/fuel-core/src/graphql_api/extensions/chain_state_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,32 @@ use async_graphql::{

use crate::graphql_api::{
api_service::ConsensusProvider,
block_height_subscription,
database::ReadDatabase,
};

const CURRENT_STF_VERSION: &str = "current_stf_version";
const CURRENT_CONSENSUS_PARAMETERS_VERSION: &str = "current_consensus_parameters_version";
const CURRENT_FUEL_BLOCK_HEIGHT: &str = "current_fuel_block_height";

#[derive(Debug)]
pub(crate) struct ChainStateInfoExtension {
block_height_subscriber: block_height_subscription::Subscriber,
}

#[derive(Debug, derive_more::Display, derive_more::From)]
pub(crate) struct ChainStateInfoExtension;
impl ChainStateInfoExtension {
pub fn new() -> Self {
Self
pub fn new(block_height_subscriber: block_height_subscription::Subscriber) -> Self {
Self {
block_height_subscriber,
}
}
}

impl ExtensionFactory for ChainStateInfoExtension {
fn create(&self) -> Arc<dyn Extension> {
Arc::new(ChainStateInfoExtension::new())
Arc::new(ChainStateInfoExtension::new(
self.block_height_subscriber.clone(),
))
}
}

Expand Down Expand Up @@ -64,6 +73,14 @@ impl Extension for ChainStateInfoExtension {
}
}

let current_block_height =
self.block_height_subscriber.latest_seen_block_height();
let current_block_height: u32 = *current_block_height;
response.extensions.insert(
CURRENT_FUEL_BLOCK_HEIGHT.to_string(),
Value::Number(current_block_height.into()),
);

response
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ use tokio::time::Duration;
use crate::graphql_api::block_height_subscription;

const REQUIRED_FUEL_BLOCK_HEIGHT: &str = "required_fuel_block_height";
const CURRENT_FUEL_BLOCK_HEIGHT: &str = "current_fuel_block_height";
const FUEL_BLOCK_HEIGHT_PRECONDITION_FAILED: &str =
"fuel_block_height_precondition_failed";
/// The extension that implements the logic for checking whether
Expand Down Expand Up @@ -200,14 +199,6 @@ impl Extension for RequiredFuelBlockHeightInner {

let mut response = next.run(ctx, operation_name).await;

let current_block_height =
self.block_height_subscriber.latest_seen_block_height();
// Dereference to display the value in decimal base.
let current_block_height: u32 = *current_block_height;
response.extensions.insert(
CURRENT_FUEL_BLOCK_HEIGHT.to_string(),
Value::Number(current_block_height.into()),
);
if self.required_height.get().is_some() {
response.extensions.insert(
FUEL_BLOCK_HEIGHT_PRECONDITION_FAILED.to_string(),
Expand Down Expand Up @@ -243,10 +234,6 @@ fn error_response(
}),
)]);

response.extensions.insert(
CURRENT_FUEL_BLOCK_HEIGHT.to_string(),
Value::Number((**current_block_height).into()),
);
response.extensions.insert(
FUEL_BLOCK_HEIGHT_PRECONDITION_FAILED.to_string(),
Value::Boolean(true),
Expand Down

0 comments on commit 3f3e971

Please sign in to comment.