From e68f585cfd492ea0359a4aca4936a1da5c12e5b1 Mon Sep 17 00:00:00 2001 From: DmitriDmitriDmitri Date: Fri, 17 Oct 2025 11:34:25 +0300 Subject: [PATCH 1/2] Add clientId to getClusterNodes RPC response --- rpc-client-types/src/response.rs | 2 ++ rpc-client/src/mock_sender.rs | 1 + rpc/src/rpc.rs | 7 ++++--- version/src/lib.rs | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/rpc-client-types/src/response.rs b/rpc-client-types/src/response.rs index cc162b42a09..8f139208f8a 100644 --- a/rpc-client-types/src/response.rs +++ b/rpc-client-types/src/response.rs @@ -321,6 +321,8 @@ pub struct RpcContactInfo { pub feature_set: Option, /// Shred version pub shred_version: Option, + /// Client ID (0: SolanaLabs, 1: JitoLabs, 2: Firedancer, 3: Agave) + pub client_id: Option, } /// Map of leader base58 identity pubkeys to the slot indices relative to the first epoch slot diff --git a/rpc-client/src/mock_sender.rs b/rpc-client/src/mock_sender.rs index 76a9e3ed9e6..882edc0ea6d 100644 --- a/rpc-client/src/mock_sender.rs +++ b/rpc-client/src/mock_sender.rs @@ -398,6 +398,7 @@ impl RpcSender for MockSender { version: Some("1.0.0 c375ce1f".to_string()), feature_set: None, shred_version: None, + client_id: None, }])?, "getBlock" => serde_json::to_value(EncodedConfirmedBlock { previous_blockhash: "mfcyqEXB3DnHXki6KjjmZck6YjmZLvpAByy2fj4nh6B".to_string(), diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 9befdd977d7..54d128c7fdc 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -3646,12 +3646,12 @@ pub mod rpc_full { .map(|addr| socket_addr_space.check(&addr)) .unwrap_or_default() { - let (version, feature_set) = if let Some(version) = + let (version, feature_set, client_id) = if let Some(version) = cluster_info.get_node_version(contact_info.pubkey()) { - (Some(version.to_string()), Some(version.feature_set)) + (Some(version.to_string()), Some(version.feature_set), Some(version.client)) } else { - (None, None) + (None, None, None) }; Some(RpcContactInfo { pubkey: contact_info.pubkey().to_string(), @@ -3686,6 +3686,7 @@ pub mod rpc_full { version, feature_set, shred_version: Some(my_shred_version), + client_id, }) } else { None // Exclude spy nodes diff --git a/version/src/lib.rs b/version/src/lib.rs index 138e9ce6f1d..bdf086dc60e 100644 --- a/version/src/lib.rs +++ b/version/src/lib.rs @@ -45,7 +45,7 @@ pub struct Version { pub commit: u32, // first 4 bytes of the sha1 commit hash pub feature_set: u32, // first 4 bytes of the FeatureSet identifier #[serde(with = "serde_varint")] - client: u16, + pub client: u16, } impl Version { From af87ce18a3ef14f75dc8c37738598d8eb897197c Mon Sep 17 00:00:00 2001 From: DmitriDmitriDmitri Date: Sun, 19 Oct 2025 00:38:47 +0300 Subject: [PATCH 2/2] Update response.rs --- rpc-client-types/src/response.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpc-client-types/src/response.rs b/rpc-client-types/src/response.rs index 8f139208f8a..22f24b6c253 100644 --- a/rpc-client-types/src/response.rs +++ b/rpc-client-types/src/response.rs @@ -321,7 +321,7 @@ pub struct RpcContactInfo { pub feature_set: Option, /// Shred version pub shred_version: Option, - /// Client ID (0: SolanaLabs, 1: JitoLabs, 2: Firedancer, 3: Agave) + /// Client ID (0: SolanaLabs, 1: JitoLabs, 2: Firedancer, 3: Agave, 4: Paladin) pub client_id: Option, }