From e0c3a615a8ad88b8c3110523d320ed33532dcca2 Mon Sep 17 00:00:00 2001 From: Matthias Wright Date: Mon, 12 Feb 2024 19:08:47 +0800 Subject: [PATCH] feat(rpc): add endpoints for node info and valid node with epochs attached --- core/rpc/src/api/flk.rs | 9 +++++++++ core/rpc/src/logic/flk_impl.rs | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/core/rpc/src/api/flk.rs b/core/rpc/src/api/flk.rs index bee4279f1..e8884818f 100644 --- a/core/rpc/src/api/flk.rs +++ b/core/rpc/src/api/flk.rs @@ -86,6 +86,12 @@ pub trait FleekApi { epoch: Option, ) -> RpcResult>; + #[method(name = "get_node_info_epoch")] + async fn get_node_info_epoch( + &self, + public_key: NodePublicKey, + ) -> RpcResult<(Option, Epoch)>; + #[method(name = "get_public_keys")] async fn get_public_keys(&self) -> RpcResult; @@ -139,6 +145,9 @@ pub trait FleekApi { #[method(name = "is_valid_node")] async fn is_valid_node(&self, public_key: NodePublicKey) -> RpcResult; + #[method(name = "is_valid_node_epoch")] + async fn is_valid_node_epoch(&self, public_key: NodePublicKey) -> RpcResult<(bool, Epoch)>; + #[method(name = "get_node_registry")] async fn get_node_registry(&self, paging: Option) -> RpcResult>; diff --git a/core/rpc/src/logic/flk_impl.rs b/core/rpc/src/logic/flk_impl.rs index d003614e9..aa1b0c97b 100644 --- a/core/rpc/src/logic/flk_impl.rs +++ b/core/rpc/src/logic/flk_impl.rs @@ -157,6 +157,20 @@ impl FleekApiServer for FleekApi { })) } + async fn get_node_info_epoch(&self, pk: NodePublicKey) -> RpcResult<(Option, Epoch)> { + Ok(( + self.data + .query_runner + .pubkey_to_index(&pk) + .and_then(|node_idx| { + self.data + .query_runner + .get_node_info::(&node_idx, |n| n) + }), + self.data.query_runner.get_epoch_info().epoch, + )) + } + async fn get_public_keys(&self) -> RpcResult { Ok(PublicKeys { node_public_key: self.data.node_public_key, @@ -283,6 +297,13 @@ impl FleekApiServer for FleekApi { Ok(self.data.query_runner.is_valid_node(&pk)) } + async fn is_valid_node_epoch(&self, pk: NodePublicKey) -> RpcResult<(bool, Epoch)> { + Ok(( + self.data.query_runner.is_valid_node(&pk), + self.data.query_runner.get_epoch_info().epoch, + )) + } + async fn get_node_registry(&self, paging: Option) -> RpcResult> { Ok(self .data