From cd4025c827955e58c6966ed6e63a9f122b89b039 Mon Sep 17 00:00:00 2001
From: denis
Date: Tue, 28 Jul 2026 12:51:03 +0200
Subject: [PATCH] feat: SubscribeNodeGroupStatus for per-node-group chain
status
A dedicated RPC streams ChainDescription events per node group (tagged
with node_group_id); SubscribeChainStatus keeps the merged view and is
untouched.
Co-Authored-By: Claude Fable 5
---
proto/blockchain.proto | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/proto/blockchain.proto b/proto/blockchain.proto
index be04ca8..92bd5d2 100644
--- a/proto/blockchain.proto
+++ b/proto/blockchain.proto
@@ -9,6 +9,7 @@ service Blockchain {
rpc NativeCall (NativeCallRequest) returns (stream NativeCallReplyItem) {}
rpc NativeSubscribe (NativeSubscribeRequest) returns (stream NativeSubscribeReplyItem) {}
rpc SubscribeChainStatus (SubscribeChainStatusRequest) returns (stream SubscribeChainStatusResponse) {}
+ rpc SubscribeNodeGroupStatus (SubscribeNodeGroupStatusRequest) returns (stream SubscribeChainStatusResponse) {}
rpc Describe (DescribeRequest) returns (DescribeResponse) {}
rpc SubscribeStatus (StatusRequest) returns (stream ChainStatus) {}
@@ -314,6 +315,13 @@ message ExistsSelector {
message SubscribeChainStatusRequest {
}
+// SubscribeNodeGroupStatus streams the same ChainDescription events per node
+// group instead of the merged per-network view: full responses and deltas are
+// tagged with node_group_id, and a group's ChainStatus going unavailable is
+// its removal signal. SubscribeChainStatus is unaffected.
+message SubscribeNodeGroupStatusRequest {
+}
+
message SubscribeChainStatusResponse {
ChainDescription chain_description = 1;
BuildInfo build_info = 2;
@@ -323,6 +331,10 @@ message SubscribeChainStatusResponse {
message ChainDescription {
ChainRef chain = 1;
repeated ChainEvent chain_event = 2;
+ // Opaque node-group id (":"), set on
+ // SubscribeNodeGroupStatus streams; always empty on SubscribeChainStatus.
+ // Clients must not parse it.
+ string node_group_id = 3;
}
message HeadEvent {