From bf5f7ab96b8abea13496eb0235f0b991b12e8e24 Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:02:45 -0300 Subject: [PATCH 1/9] JDC vardiff keeps track of stable hashrate --- miner-apps/jd-client/src/lib/channel_manager/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/miner-apps/jd-client/src/lib/channel_manager/mod.rs b/miner-apps/jd-client/src/lib/channel_manager/mod.rs index 5ee7dc56f..8b72236c3 100644 --- a/miner-apps/jd-client/src/lib/channel_manager/mod.rs +++ b/miner-apps/jd-client/src/lib/channel_manager/mod.rs @@ -1184,9 +1184,12 @@ impl ChannelManager { }; let Some(new_hashrate) = new_hashrate_opt else { + channel_state.set_stable_hashrate(true); return; }; + channel_state.set_stable_hashrate(false); + match channel_state.update_channel(new_hashrate, None) { Ok(()) => { let updated_target = channel_state.get_target(); @@ -1227,6 +1230,7 @@ impl ChannelManager { }; if let Some(new_hashrate) = new_hashrate_opt { + channel.set_stable_hashrate(false); match channel.update_channel(new_hashrate, None) { Ok(()) => { let updated_target = channel.get_target(); @@ -1246,6 +1250,8 @@ impl ChannelManager { "Failed to update standard channel channel_id={channel_id} during vardiff {e:?}" ), } + } else { + channel.set_stable_hashrate(true); } } From 7d8d4b4cf01281a5f816c852160cbf597e046393 Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:03:04 -0300 Subject: [PATCH 2/9] Pool vardiff keeps track of stable hashrate --- pool-apps/pool/src/lib/channel_manager/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pool-apps/pool/src/lib/channel_manager/mod.rs b/pool-apps/pool/src/lib/channel_manager/mod.rs index 4d5ee2f92..1c5ae7b04 100644 --- a/pool-apps/pool/src/lib/channel_manager/mod.rs +++ b/pool-apps/pool/src/lib/channel_manager/mod.rs @@ -536,9 +536,12 @@ impl ChannelManager { }; let Some(new_hashrate) = new_hashrate_opt else { + channel_state.set_stable_hashrate(true); return; }; + channel_state.set_stable_hashrate(false); + match channel_state.update_channel(new_hashrate, None) { Ok(()) => { let updated_target = channel_state.get_target(); @@ -579,6 +582,7 @@ impl ChannelManager { }; if let Some(new_hashrate) = new_hashrate_opt { + channel.set_stable_hashrate(false); match channel.update_channel(new_hashrate, None) { Ok(()) => { let updated_target = channel.get_target(); @@ -600,6 +604,8 @@ impl ChannelManager { "Failed to update standard channel channel_id={channel_id} during vardiff {e:?}" ), } + } else { + channel.set_stable_hashrate(true); } } From 52e533816c09e49a84910f1c5e53b8ee17dec2ae Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:03:25 -0300 Subject: [PATCH 3/9] tProxy vardiff keeps track of stable hashrate --- miner-apps/translator/src/lib/sv1/downstream.rs | 11 +++++++++++ .../src/lib/sv1/sv1_server/difficulty_manager.rs | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/miner-apps/translator/src/lib/sv1/downstream.rs b/miner-apps/translator/src/lib/sv1/downstream.rs index 34cea115c..7f2e70666 100644 --- a/miner-apps/translator/src/lib/sv1/downstream.rs +++ b/miner-apps/translator/src/lib/sv1/downstream.rs @@ -77,6 +77,7 @@ pub struct DownstreamData { pub cached_notify: Option, pub pending_target: Option, pub pending_hashrate: Option, + pub stable_hashrate: bool, // Queue of Sv1 handshake messages received while waiting for SV2 channel to open pub queued_sv1_handshake_messages: Vec, // Stores pending shares to be sent to the sv1_server @@ -106,6 +107,7 @@ impl DownstreamData { cached_notify: None, pending_target: None, pending_hashrate: None, + stable_hashrate: false, queued_sv1_handshake_messages: Vec::new(), pending_share: None, upstream_target: None, @@ -127,6 +129,15 @@ impl DownstreamData { debug!("Downstream {downstream_id}: Set pending hashrate"); } + pub fn set_stable_hashrate(&mut self, stable_hashrate: bool, downstream_id: DownstreamId) { + self.stable_hashrate = stable_hashrate; + debug!("Downstream {downstream_id}: Set stable hashrate to {stable_hashrate}"); + } + + pub fn get_stable_hashrate(&self) -> bool { + self.stable_hashrate + } + pub fn set_upstream_target(&mut self, upstream_target: Target, downstream_id: DownstreamId) { self.upstream_target = Some(upstream_target); debug!( diff --git a/miner-apps/translator/src/lib/sv1/sv1_server/difficulty_manager.rs b/miner-apps/translator/src/lib/sv1/sv1_server/difficulty_manager.rs index 96ac35a8b..95b48684b 100644 --- a/miner-apps/translator/src/lib/sv1/sv1_server/difficulty_manager.rs +++ b/miner-apps/translator/src/lib/sv1/sv1_server/difficulty_manager.rs @@ -102,6 +102,7 @@ impl Sv1Server { _ = d.downstream_data.safe_lock(|data| { data.set_pending_target(new_target, d.downstream_id); data.set_pending_hashrate(Some(new_hashrate), d.downstream_id); + data.set_stable_hashrate(false, d.downstream_id); }); } // All updates will be sent as UpdateChannel messages @@ -141,6 +142,12 @@ impl Sv1Server { immediate_updates.push((channel_id, Some(*downstream_id), new_target)); } } + } else if let Ok(None) = new_hashrate_opt { + if let Some(d) = self.downstreams.get(downstream_id) { + _ = d.downstream_data.safe_lock(|data| { + data.set_stable_hashrate(true, d.downstream_id); + }); + } } } From b3b34a4b5941b8aec1a8a9c2faeef83839f2fa2c Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:09:18 -0300 Subject: [PATCH 4/9] stratum-apps::monitoring keeps track of stable_hashrate --- stratum-apps/src/monitoring/client.rs | 4 ++++ stratum-apps/src/monitoring/http_server.rs | 3 +++ stratum-apps/src/monitoring/sv1.rs | 2 ++ 3 files changed, 9 insertions(+) diff --git a/stratum-apps/src/monitoring/client.rs b/stratum-apps/src/monitoring/client.rs index 37b20d2db..a8b4a02b2 100644 --- a/stratum-apps/src/monitoring/client.rs +++ b/stratum-apps/src/monitoring/client.rs @@ -12,6 +12,7 @@ pub struct ExtendedChannelInfo { pub channel_id: u32, pub user_identity: String, pub nominal_hashrate: f32, + pub stable_hashrate: bool, pub target_hex: String, pub requested_max_target_hex: String, pub extranonce_prefix_hex: String, @@ -34,6 +35,7 @@ pub struct StandardChannelInfo { pub channel_id: u32, pub user_identity: String, pub nominal_hashrate: f32, + pub stable_hashrate: bool, pub target_hex: String, pub requested_max_target_hex: String, pub extranonce_prefix_hex: String, @@ -147,6 +149,7 @@ mod tests { channel_id, user_identity: format!("user-ext-{}", channel_id), nominal_hashrate: hashrate, + stable_hashrate: false, target_hex: "00ff".into(), requested_max_target_hex: "00ff".into(), extranonce_prefix_hex: "aa".into(), @@ -169,6 +172,7 @@ mod tests { channel_id, user_identity: format!("user-std-{}", channel_id), nominal_hashrate: hashrate, + stable_hashrate: false, target_hex: "00ff".into(), requested_max_target_hex: "00ff".into(), extranonce_prefix_hex: "bb".into(), diff --git a/stratum-apps/src/monitoring/http_server.rs b/stratum-apps/src/monitoring/http_server.rs index 67192e675..c213ade84 100644 --- a/stratum-apps/src/monitoring/http_server.rs +++ b/stratum-apps/src/monitoring/http_server.rs @@ -799,6 +799,7 @@ mod tests { channel_id, user_identity: format!("user-ext-{}", channel_id), nominal_hashrate: hashrate, + stable_hashrate: false, target_hex: "00ff".into(), requested_max_target_hex: "00ff".into(), extranonce_prefix_hex: "aa".into(), @@ -824,6 +825,7 @@ mod tests { channel_id, user_identity: format!("user-std-{}", channel_id), nominal_hashrate: hashrate, + stable_hashrate: false, target_hex: "00ff".into(), requested_max_target_hex: "00ff".into(), extranonce_prefix_hex: "bb".into(), @@ -890,6 +892,7 @@ mod tests { user_identity: format!("miner-{}", id), target_hex: "00ff".into(), hashrate, + stable_hashrate: false, extranonce1_hex: "aabb".into(), extranonce2_len: 8, version_rolling_mask: Some("ffffffff".into()), diff --git a/stratum-apps/src/monitoring/sv1.rs b/stratum-apps/src/monitoring/sv1.rs index f3ece51b9..374397777 100644 --- a/stratum-apps/src/monitoring/sv1.rs +++ b/stratum-apps/src/monitoring/sv1.rs @@ -15,6 +15,7 @@ pub struct Sv1ClientInfo { pub user_identity: String, pub target_hex: String, pub hashrate: Option, + pub stable_hashrate: bool, pub extranonce1_hex: String, pub extranonce2_len: usize, pub version_rolling_mask: Option, @@ -66,6 +67,7 @@ mod tests { user_identity: format!("miner-{}", id), target_hex: "00ff".into(), hashrate, + stable_hashrate: false, extranonce1_hex: "aabb".into(), extranonce2_len: 8, version_rolling_mask: Some("ffffffff".into()), From e96fc435930cc8e4d240158771459bf93f910355 Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:10:33 -0300 Subject: [PATCH 5/9] Pool monitoring API keeps track of channel's stable_hashrate property --- pool-apps/pool/src/lib/monitoring.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pool-apps/pool/src/lib/monitoring.rs b/pool-apps/pool/src/lib/monitoring.rs index 48be56dca..9d50660fd 100644 --- a/pool-apps/pool/src/lib/monitoring.rs +++ b/pool-apps/pool/src/lib/monitoring.rs @@ -29,6 +29,7 @@ fn downstream_to_sv2_client_info(client: &Downstream) -> Option { channel_id, user_identity: user_identity.clone(), nominal_hashrate: extended_channel.get_nominal_hashrate(), + stable_hashrate: extended_channel.get_stable_hashrate(), target_hex: hex::encode(target.to_be_bytes()), requested_max_target_hex: hex::encode(requested_max_target.to_be_bytes()), extranonce_prefix_hex: hex::encode(extended_channel.get_extranonce_prefix()), @@ -57,6 +58,7 @@ fn downstream_to_sv2_client_info(client: &Downstream) -> Option { channel_id, user_identity: user_identity.clone(), nominal_hashrate: standard_channel.get_nominal_hashrate(), + stable_hashrate: standard_channel.get_stable_hashrate(), target_hex: hex::encode(target.to_be_bytes()), requested_max_target_hex: hex::encode(requested_max_target.to_be_bytes()), extranonce_prefix_hex: hex::encode(standard_channel.get_extranonce_prefix()), From 8064e5219b44743615bd1313ccec6c982bdd858a Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:10:45 -0300 Subject: [PATCH 6/9] JDC monitoring API keeps track of channel's stable_hashrate property --- miner-apps/jd-client/src/lib/monitoring.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/miner-apps/jd-client/src/lib/monitoring.rs b/miner-apps/jd-client/src/lib/monitoring.rs index d0a665e48..0e4469af0 100644 --- a/miner-apps/jd-client/src/lib/monitoring.rs +++ b/miner-apps/jd-client/src/lib/monitoring.rs @@ -80,6 +80,7 @@ fn downstream_to_sv2_client_info(client: &Downstream) -> Option { channel_id, user_identity: user_identity.clone(), nominal_hashrate: extended_channel.get_nominal_hashrate(), + stable_hashrate: extended_channel.get_stable_hashrate(), target_hex: hex::encode(target.to_be_bytes()), requested_max_target_hex: hex::encode(requested_max_target.to_be_bytes()), extranonce_prefix_hex: hex::encode(extended_channel.get_extranonce_prefix()), @@ -108,6 +109,7 @@ fn downstream_to_sv2_client_info(client: &Downstream) -> Option { channel_id, user_identity: user_identity.clone(), nominal_hashrate: standard_channel.get_nominal_hashrate(), + stable_hashrate: standard_channel.get_stable_hashrate(), target_hex: hex::encode(target.to_be_bytes()), requested_max_target_hex: hex::encode(requested_max_target.to_be_bytes()), extranonce_prefix_hex: hex::encode(standard_channel.get_extranonce_prefix()), From b0dfa8db24dcf87b2d043c7f3e7fefb569f67df7 Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:11:21 -0300 Subject: [PATCH 7/9] tProxy monitoring API keeps track of channel's stable_hashrate property --- miner-apps/translator/src/lib/sv1_monitoring.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/miner-apps/translator/src/lib/sv1_monitoring.rs b/miner-apps/translator/src/lib/sv1_monitoring.rs index 32002ad75..6dab14c83 100644 --- a/miner-apps/translator/src/lib/sv1_monitoring.rs +++ b/miner-apps/translator/src/lib/sv1_monitoring.rs @@ -16,6 +16,7 @@ fn downstream_to_sv1_client_info(downstream: &Downstream) -> Option Date: Tue, 12 May 2026 18:59:06 -0300 Subject: [PATCH 8/9] generate-openapi --- stratum-apps/src/monitoring/openapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stratum-apps/src/monitoring/openapi.json b/stratum-apps/src/monitoring/openapi.json index 7e4c99906..96c69ec99 100644 --- a/stratum-apps/src/monitoring/openapi.json +++ b/stratum-apps/src/monitoring/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"SRI Monitoring API","description":"HTTP JSON API for monitoring SV2 applications","contact":{"name":"The Stratum V2 Developers"},"license":{"name":"MIT OR Apache-2.0","identifier":"MIT OR Apache-2.0"},"version":"0.1.0"},"paths":{"/api/v1/clients":{"get":{"tags":["clients"],"summary":"Get all Sv2 clients (downstream) - returns metadata only, use /clients/{id}/channels for\nchannels","operationId":"handle_clients","parameters":[{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"List of Sv2 clients (metadata only)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv2ClientsResponse"}}}},"404":{"description":"Sv2 clients monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/clients/{client_id}":{"get":{"tags":["clients"],"summary":"Get a single Sv2 client by ID - returns metadata only, use /clients/{id}/channels for channels","operationId":"handle_client_by_id","parameters":[{"name":"client_id","in":"path","description":"Sv2 Client ID","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Sv2 client metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv2ClientResponse"}}}},"404":{"description":"Sv2 client not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/clients/{client_id}/channels":{"get":{"tags":["clients"],"summary":"Get channels for a specific Sv2 client (paginated)","operationId":"handle_client_channels","parameters":[{"name":"client_id","in":"path","description":"Sv2 Client ID","required":true,"schema":{"type":"integer","minimum":0}},{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"Sv2 client channels (paginated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv2ClientChannelsResponse"}}}},"404":{"description":"Sv2 client not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/global":{"get":{"tags":["global"],"summary":"Get global statistics","description":"Returns aggregated statistics for the server (upstream) and clients (downstream).\nFields are omitted from the response if that type of monitoring is not enabled.\n\n**Typical responses:**\n- **Pool/JDC**: `server` + `clients` (Sv2 downstream)\n- **tProxy**: `server` + `sv1_clients` (Sv1 miners)","operationId":"handle_global","responses":{"200":{"description":"Global statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalInfo"}}}}}}},"/api/v1/health":{"get":{"tags":["health"],"summary":"Health check endpoint","operationId":"handle_health","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/api/v1/server":{"get":{"tags":["server"],"summary":"Get server (upstream) metadata - use /server/channels for channel details","operationId":"handle_server","responses":{"200":{"description":"Server metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerResponse"}}}},"404":{"description":"Server monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/server/channels":{"get":{"tags":["server"],"summary":"Get server channels (paginated)","operationId":"handle_server_channels","parameters":[{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"Server channels (paginated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerChannelsResponse"}}}},"404":{"description":"Server monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/sv1/clients":{"get":{"tags":["sv1"],"summary":"Get Sv1 clients (Translator Proxy only)","operationId":"handle_sv1_clients","parameters":[{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"List of Sv1 clients","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv1ClientsResponse"}}}},"404":{"description":"Sv1 monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/sv1/clients/{client_id}":{"get":{"tags":["sv1"],"summary":"Get a single Sv1 client by ID","operationId":"handle_sv1_client_by_id","parameters":[{"name":"client_id","in":"path","description":"Sv1 client ID","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Sv1 client details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv1ClientInfo"}}}},"404":{"description":"Sv1 client not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"ExtendedChannelInfo":{"type":"object","description":"Information about an extended channel","required":["channel_id","user_identity","nominal_hashrate","target_hex","requested_max_target_hex","extranonce_prefix_hex","full_extranonce_size","rollable_extranonce_size","expected_shares_per_minute","shares_accepted","share_work_sum","last_share_sequence_number","best_diff","last_batch_accepted","last_batch_work_sum","share_batch_size","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"expected_shares_per_minute":{"type":"number","format":"float"},"extranonce_prefix_hex":{"type":"string"},"full_extranonce_size":{"type":"integer","minimum":0},"last_batch_accepted":{"type":"integer","format":"int32","minimum":0},"last_batch_work_sum":{"type":"number","format":"double"},"last_share_sequence_number":{"type":"integer","format":"int32","minimum":0},"nominal_hashrate":{"type":"number","format":"float"},"requested_max_target_hex":{"type":"string"},"rollable_extranonce_size":{"type":"integer","format":"int32","minimum":0},"share_batch_size":{"type":"integer","minimum":0},"share_work_sum":{"type":"number","format":"double"},"shares_accepted":{"type":"integer","format":"int32","minimum":0},"target_hex":{"type":"string"},"user_identity":{"type":"string"}}},"GlobalInfo":{"type":"object","description":"Global statistics from `/api/v1/global` endpoint\n\nFields are `Option` to distinguish \"not monitored\" (`None`) from \"monitored but empty\" (`Some`\nwith zeros).\n\nTypical configurations:\n- **Pool/JDC**: `server` and `sv2_clients` are `Some`, `sv1_clients` is `None`\n- **tProxy**: `server` and `sv1_clients` are `Some`, `sv2_clients` is `None`","required":["uptime_secs"],"properties":{"server":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ServerSummary","description":"Server (upstream) summary - `None` if server monitoring is not enabled"}]},"sv1_clients":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Sv1ClientsSummary","description":"Sv1 clients summary - `None` if Sv1 monitoring is not enabled (e.g., Pool/JDC)"}]},"sv2_clients":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Sv2ClientsSummary","description":"Sv2 clients (downstream) summary - `None` if Sv2 client monitoring is not enabled (e.g.,\ntProxy)"}]},"uptime_secs":{"type":"integer","format":"int64","description":"Uptime in seconds since the application started","minimum":0}}},"HealthResponse":{"type":"object","required":["status","timestamp"],"properties":{"status":{"type":"string"},"timestamp":{"type":"integer","format":"int64","minimum":0}}},"ServerChannelsResponse":{"type":"object","required":["offset","limit","total_extended","total_standard","extended_channels","standard_channels"],"properties":{"extended_channels":{"type":"array","items":{"$ref":"#/components/schemas/ServerExtendedChannelInfo"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"standard_channels":{"type":"array","items":{"$ref":"#/components/schemas/ServerStandardChannelInfo"}},"total_extended":{"type":"integer","minimum":0},"total_standard":{"type":"integer","minimum":0}}},"ServerExtendedChannelInfo":{"type":"object","description":"Information about an extended channel opened with the server","required":["channel_id","user_identity","target_hex","extranonce_prefix_hex","full_extranonce_size","rollable_extranonce_size","version_rolling","shares_acknowledged","shares_submitted","shares_rejected","shares_rejected_by_reason","share_work_sum","best_diff","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"extranonce_prefix_hex":{"type":"string"},"full_extranonce_size":{"type":"integer","minimum":0},"nominal_hashrate":{"type":["number","null"],"format":"float","description":"None when vardiff is disabled and hashrate cannot be reliably tracked"},"rollable_extranonce_size":{"type":"integer","format":"int32","minimum":0},"share_work_sum":{"type":"number","format":"double"},"shares_acknowledged":{"type":"integer","format":"int32","minimum":0},"shares_rejected":{"type":"integer","format":"int32","minimum":0},"shares_rejected_by_reason":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":0},"propertyNames":{"type":"string"}},"shares_submitted":{"type":"integer","format":"int32","minimum":0},"target_hex":{"type":"string"},"user_identity":{"type":"string"},"version_rolling":{"type":"boolean"}}},"ServerResponse":{"type":"object","required":["extended_channels_count","standard_channels_count","total_hashrate"],"properties":{"extended_channels_count":{"type":"integer","minimum":0},"standard_channels_count":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"ServerStandardChannelInfo":{"type":"object","description":"Information about a standard channel opened with the server","required":["channel_id","user_identity","target_hex","extranonce_prefix_hex","shares_acknowledged","shares_submitted","shares_rejected","shares_rejected_by_reason","share_work_sum","best_diff","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"extranonce_prefix_hex":{"type":"string"},"nominal_hashrate":{"type":["number","null"],"format":"float","description":"None when vardiff is disabled and hashrate cannot be reliably tracked"},"share_work_sum":{"type":"number","format":"double"},"shares_acknowledged":{"type":"integer","format":"int32","minimum":0},"shares_rejected":{"type":"integer","format":"int32","minimum":0},"shares_rejected_by_reason":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":0},"propertyNames":{"type":"string"}},"shares_submitted":{"type":"integer","format":"int32","minimum":0},"target_hex":{"type":"string"},"user_identity":{"type":"string"}}},"ServerSummary":{"type":"object","description":"Aggregate information about the server connection","required":["total_channels","extended_channels","standard_channels","total_hashrate"],"properties":{"extended_channels":{"type":"integer","minimum":0},"standard_channels":{"type":"integer","minimum":0},"total_channels":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"StandardChannelInfo":{"type":"object","description":"Information about a standard channel","required":["channel_id","user_identity","nominal_hashrate","target_hex","requested_max_target_hex","extranonce_prefix_hex","expected_shares_per_minute","shares_accepted","share_work_sum","last_share_sequence_number","best_diff","last_batch_accepted","last_batch_work_sum","share_batch_size","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"expected_shares_per_minute":{"type":"number","format":"float"},"extranonce_prefix_hex":{"type":"string"},"last_batch_accepted":{"type":"integer","format":"int32","minimum":0},"last_batch_work_sum":{"type":"number","format":"double"},"last_share_sequence_number":{"type":"integer","format":"int32","minimum":0},"nominal_hashrate":{"type":"number","format":"float"},"requested_max_target_hex":{"type":"string"},"share_batch_size":{"type":"integer","minimum":0},"share_work_sum":{"type":"number","format":"double"},"shares_accepted":{"type":"integer","format":"int32","minimum":0},"target_hex":{"type":"string"},"user_identity":{"type":"string"}}},"Sv1ClientInfo":{"type":"object","description":"Information about a single SV1 client connection","required":["client_id","authorized_worker_name","user_identity","target_hex","extranonce1_hex","extranonce2_len"],"properties":{"authorized_worker_name":{"type":"string"},"channel_id":{"type":["integer","null"],"format":"int32","minimum":0},"client_id":{"type":"integer","minimum":0},"extranonce1_hex":{"type":"string"},"extranonce2_len":{"type":"integer","minimum":0},"hashrate":{"type":["number","null"],"format":"float"},"target_hex":{"type":"string"},"user_identity":{"type":"string"},"version_rolling_mask":{"type":["string","null"]},"version_rolling_min_bit":{"type":["string","null"]}}},"Sv1ClientsResponse":{"type":"object","required":["offset","limit","total","items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Sv1ClientInfo"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0}}},"Sv1ClientsSummary":{"type":"object","description":"Aggregate information about SV1 client connections","required":["total_clients","total_hashrate"],"properties":{"total_clients":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"Sv2ClientChannelsResponse":{"type":"object","required":["client_id","offset","limit","total_extended","total_standard","extended_channels","standard_channels"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels":{"type":"array","items":{"$ref":"#/components/schemas/ExtendedChannelInfo"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"standard_channels":{"type":"array","items":{"$ref":"#/components/schemas/StandardChannelInfo"}},"total_extended":{"type":"integer","minimum":0},"total_standard":{"type":"integer","minimum":0}}},"Sv2ClientInfo":{"type":"object","description":"Full information about a single Sv2 client including all channels","required":["client_id","extended_channels","standard_channels"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels":{"type":"array","items":{"$ref":"#/components/schemas/ExtendedChannelInfo"}},"standard_channels":{"type":"array","items":{"$ref":"#/components/schemas/StandardChannelInfo"}}}},"Sv2ClientMetadata":{"type":"object","description":"Sv2 client metadata without channel arrays (for listings)","required":["client_id","extended_channels_count","standard_channels_count","total_hashrate"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels_count":{"type":"integer","minimum":0},"standard_channels_count":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"Sv2ClientResponse":{"type":"object","required":["client_id","extended_channels_count","standard_channels_count","total_hashrate"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels_count":{"type":"integer","minimum":0},"standard_channels_count":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"Sv2ClientsResponse":{"type":"object","required":["offset","limit","total","items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Sv2ClientMetadata"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0}}},"Sv2ClientsSummary":{"type":"object","description":"Aggregate information about all Sv2 clients","required":["total_clients","total_channels","extended_channels","standard_channels","total_hashrate"],"properties":{"extended_channels":{"type":"integer","minimum":0},"standard_channels":{"type":"integer","minimum":0},"total_channels":{"type":"integer","minimum":0},"total_clients":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}}}},"tags":[{"name":"health","description":"Health check endpoints"},{"name":"global","description":"Global statistics"},{"name":"server","description":"Server (upstream) monitoring"},{"name":"clients","description":"Clients (downstream) monitoring"},{"name":"sv1","description":"Sv1 clients monitoring (Translator Proxy only)"}]} +{"openapi":"3.1.0","info":{"title":"SRI Monitoring API","description":"HTTP JSON API for monitoring SV2 applications","contact":{"name":"The Stratum V2 Developers"},"license":{"name":"MIT OR Apache-2.0","identifier":"MIT OR Apache-2.0"},"version":"0.1.0"},"paths":{"/api/v1/clients":{"get":{"tags":["clients"],"summary":"Get all Sv2 clients (downstream) - returns metadata only, use /clients/{id}/channels for\nchannels","operationId":"handle_clients","parameters":[{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"List of Sv2 clients (metadata only)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv2ClientsResponse"}}}},"404":{"description":"Sv2 clients monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/clients/{client_id}":{"get":{"tags":["clients"],"summary":"Get a single Sv2 client by ID - returns metadata only, use /clients/{id}/channels for channels","operationId":"handle_client_by_id","parameters":[{"name":"client_id","in":"path","description":"Sv2 Client ID","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Sv2 client metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv2ClientResponse"}}}},"404":{"description":"Sv2 client not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/clients/{client_id}/channels":{"get":{"tags":["clients"],"summary":"Get channels for a specific Sv2 client (paginated)","operationId":"handle_client_channels","parameters":[{"name":"client_id","in":"path","description":"Sv2 Client ID","required":true,"schema":{"type":"integer","minimum":0}},{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"Sv2 client channels (paginated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv2ClientChannelsResponse"}}}},"404":{"description":"Sv2 client not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/global":{"get":{"tags":["global"],"summary":"Get global statistics","description":"Returns aggregated statistics for the server (upstream) and clients (downstream).\nFields are omitted from the response if that type of monitoring is not enabled.\n\n**Typical responses:**\n- **Pool/JDC**: `server` + `clients` (Sv2 downstream)\n- **tProxy**: `server` + `sv1_clients` (Sv1 miners)","operationId":"handle_global","responses":{"200":{"description":"Global statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalInfo"}}}}}}},"/api/v1/health":{"get":{"tags":["health"],"summary":"Health check endpoint","operationId":"handle_health","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/api/v1/server":{"get":{"tags":["server"],"summary":"Get server (upstream) metadata - use /server/channels for channel details","operationId":"handle_server","responses":{"200":{"description":"Server metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerResponse"}}}},"404":{"description":"Server monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/server/channels":{"get":{"tags":["server"],"summary":"Get server channels (paginated)","operationId":"handle_server_channels","parameters":[{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"Server channels (paginated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerChannelsResponse"}}}},"404":{"description":"Server monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/sv1/clients":{"get":{"tags":["sv1"],"summary":"Get Sv1 clients (Translator Proxy only)","operationId":"handle_sv1_clients","parameters":[{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","description":"Limit for pagination (default: 25, max: 100)","required":false,"schema":{"type":["integer","null"],"minimum":0}}],"responses":{"200":{"description":"List of Sv1 clients","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv1ClientsResponse"}}}},"404":{"description":"Sv1 monitoring not available","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/sv1/clients/{client_id}":{"get":{"tags":["sv1"],"summary":"Get a single Sv1 client by ID","operationId":"handle_sv1_client_by_id","parameters":[{"name":"client_id","in":"path","description":"Sv1 client ID","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Sv1 client details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sv1ClientInfo"}}}},"404":{"description":"Sv1 client not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"ExtendedChannelInfo":{"type":"object","description":"Information about an extended channel","required":["channel_id","user_identity","nominal_hashrate","stable_hashrate","target_hex","requested_max_target_hex","extranonce_prefix_hex","full_extranonce_size","rollable_extranonce_size","expected_shares_per_minute","shares_accepted","share_work_sum","last_share_sequence_number","best_diff","last_batch_accepted","last_batch_work_sum","share_batch_size","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"expected_shares_per_minute":{"type":"number","format":"float"},"extranonce_prefix_hex":{"type":"string"},"full_extranonce_size":{"type":"integer","minimum":0},"last_batch_accepted":{"type":"integer","format":"int32","minimum":0},"last_batch_work_sum":{"type":"number","format":"double"},"last_share_sequence_number":{"type":"integer","format":"int32","minimum":0},"nominal_hashrate":{"type":"number","format":"float"},"requested_max_target_hex":{"type":"string"},"rollable_extranonce_size":{"type":"integer","format":"int32","minimum":0},"share_batch_size":{"type":"integer","minimum":0},"share_work_sum":{"type":"number","format":"double"},"shares_accepted":{"type":"integer","format":"int32","minimum":0},"stable_hashrate":{"type":"boolean"},"target_hex":{"type":"string"},"user_identity":{"type":"string"}}},"GlobalInfo":{"type":"object","description":"Global statistics from `/api/v1/global` endpoint\n\nFields are `Option` to distinguish \"not monitored\" (`None`) from \"monitored but empty\" (`Some`\nwith zeros).\n\nTypical configurations:\n- **Pool/JDC**: `server` and `sv2_clients` are `Some`, `sv1_clients` is `None`\n- **tProxy**: `server` and `sv1_clients` are `Some`, `sv2_clients` is `None`","required":["uptime_secs"],"properties":{"server":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ServerSummary","description":"Server (upstream) summary - `None` if server monitoring is not enabled"}]},"sv1_clients":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Sv1ClientsSummary","description":"Sv1 clients summary - `None` if Sv1 monitoring is not enabled (e.g., Pool/JDC)"}]},"sv2_clients":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Sv2ClientsSummary","description":"Sv2 clients (downstream) summary - `None` if Sv2 client monitoring is not enabled (e.g.,\ntProxy)"}]},"uptime_secs":{"type":"integer","format":"int64","description":"Uptime in seconds since the application started","minimum":0}}},"HealthResponse":{"type":"object","required":["status","timestamp"],"properties":{"status":{"type":"string"},"timestamp":{"type":"integer","format":"int64","minimum":0}}},"ServerChannelsResponse":{"type":"object","required":["offset","limit","total_extended","total_standard","extended_channels","standard_channels"],"properties":{"extended_channels":{"type":"array","items":{"$ref":"#/components/schemas/ServerExtendedChannelInfo"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"standard_channels":{"type":"array","items":{"$ref":"#/components/schemas/ServerStandardChannelInfo"}},"total_extended":{"type":"integer","minimum":0},"total_standard":{"type":"integer","minimum":0}}},"ServerExtendedChannelInfo":{"type":"object","description":"Information about an extended channel opened with the server","required":["channel_id","user_identity","target_hex","extranonce_prefix_hex","full_extranonce_size","rollable_extranonce_size","version_rolling","shares_acknowledged","shares_submitted","shares_rejected","shares_rejected_by_reason","share_work_sum","best_diff","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"extranonce_prefix_hex":{"type":"string"},"full_extranonce_size":{"type":"integer","minimum":0},"nominal_hashrate":{"type":["number","null"],"format":"float","description":"None when vardiff is disabled and hashrate cannot be reliably tracked"},"rollable_extranonce_size":{"type":"integer","format":"int32","minimum":0},"share_work_sum":{"type":"number","format":"double"},"shares_acknowledged":{"type":"integer","format":"int32","minimum":0},"shares_rejected":{"type":"integer","format":"int32","minimum":0},"shares_rejected_by_reason":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":0},"propertyNames":{"type":"string"}},"shares_submitted":{"type":"integer","format":"int32","minimum":0},"target_hex":{"type":"string"},"user_identity":{"type":"string"},"version_rolling":{"type":"boolean"}}},"ServerResponse":{"type":"object","required":["extended_channels_count","standard_channels_count","total_hashrate"],"properties":{"extended_channels_count":{"type":"integer","minimum":0},"standard_channels_count":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"ServerStandardChannelInfo":{"type":"object","description":"Information about a standard channel opened with the server","required":["channel_id","user_identity","target_hex","extranonce_prefix_hex","shares_acknowledged","shares_submitted","shares_rejected","shares_rejected_by_reason","share_work_sum","best_diff","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"extranonce_prefix_hex":{"type":"string"},"nominal_hashrate":{"type":["number","null"],"format":"float","description":"None when vardiff is disabled and hashrate cannot be reliably tracked"},"share_work_sum":{"type":"number","format":"double"},"shares_acknowledged":{"type":"integer","format":"int32","minimum":0},"shares_rejected":{"type":"integer","format":"int32","minimum":0},"shares_rejected_by_reason":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":0},"propertyNames":{"type":"string"}},"shares_submitted":{"type":"integer","format":"int32","minimum":0},"target_hex":{"type":"string"},"user_identity":{"type":"string"}}},"ServerSummary":{"type":"object","description":"Aggregate information about the server connection","required":["total_channels","extended_channels","standard_channels","total_hashrate"],"properties":{"extended_channels":{"type":"integer","minimum":0},"standard_channels":{"type":"integer","minimum":0},"total_channels":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"StandardChannelInfo":{"type":"object","description":"Information about a standard channel","required":["channel_id","user_identity","nominal_hashrate","stable_hashrate","target_hex","requested_max_target_hex","extranonce_prefix_hex","expected_shares_per_minute","shares_accepted","share_work_sum","last_share_sequence_number","best_diff","last_batch_accepted","last_batch_work_sum","share_batch_size","blocks_found"],"properties":{"best_diff":{"type":"number","format":"double"},"blocks_found":{"type":"integer","format":"int32","minimum":0},"channel_id":{"type":"integer","format":"int32","minimum":0},"expected_shares_per_minute":{"type":"number","format":"float"},"extranonce_prefix_hex":{"type":"string"},"last_batch_accepted":{"type":"integer","format":"int32","minimum":0},"last_batch_work_sum":{"type":"number","format":"double"},"last_share_sequence_number":{"type":"integer","format":"int32","minimum":0},"nominal_hashrate":{"type":"number","format":"float"},"requested_max_target_hex":{"type":"string"},"share_batch_size":{"type":"integer","minimum":0},"share_work_sum":{"type":"number","format":"double"},"shares_accepted":{"type":"integer","format":"int32","minimum":0},"stable_hashrate":{"type":"boolean"},"target_hex":{"type":"string"},"user_identity":{"type":"string"}}},"Sv1ClientInfo":{"type":"object","description":"Information about a single SV1 client connection","required":["client_id","authorized_worker_name","user_identity","target_hex","stable_hashrate","extranonce1_hex","extranonce2_len"],"properties":{"authorized_worker_name":{"type":"string"},"channel_id":{"type":["integer","null"],"format":"int32","minimum":0},"client_id":{"type":"integer","minimum":0},"extranonce1_hex":{"type":"string"},"extranonce2_len":{"type":"integer","minimum":0},"hashrate":{"type":["number","null"],"format":"float"},"stable_hashrate":{"type":"boolean"},"target_hex":{"type":"string"},"user_identity":{"type":"string"},"version_rolling_mask":{"type":["string","null"]},"version_rolling_min_bit":{"type":["string","null"]}}},"Sv1ClientsResponse":{"type":"object","required":["offset","limit","total","items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Sv1ClientInfo"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0}}},"Sv1ClientsSummary":{"type":"object","description":"Aggregate information about SV1 client connections","required":["total_clients","total_hashrate"],"properties":{"total_clients":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"Sv2ClientChannelsResponse":{"type":"object","required":["client_id","offset","limit","total_extended","total_standard","extended_channels","standard_channels"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels":{"type":"array","items":{"$ref":"#/components/schemas/ExtendedChannelInfo"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"standard_channels":{"type":"array","items":{"$ref":"#/components/schemas/StandardChannelInfo"}},"total_extended":{"type":"integer","minimum":0},"total_standard":{"type":"integer","minimum":0}}},"Sv2ClientInfo":{"type":"object","description":"Full information about a single Sv2 client including all channels","required":["client_id","extended_channels","standard_channels"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels":{"type":"array","items":{"$ref":"#/components/schemas/ExtendedChannelInfo"}},"standard_channels":{"type":"array","items":{"$ref":"#/components/schemas/StandardChannelInfo"}}}},"Sv2ClientMetadata":{"type":"object","description":"Sv2 client metadata without channel arrays (for listings)","required":["client_id","extended_channels_count","standard_channels_count","total_hashrate"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels_count":{"type":"integer","minimum":0},"standard_channels_count":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"Sv2ClientResponse":{"type":"object","required":["client_id","extended_channels_count","standard_channels_count","total_hashrate"],"properties":{"client_id":{"type":"integer","minimum":0},"extended_channels_count":{"type":"integer","minimum":0},"standard_channels_count":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}},"Sv2ClientsResponse":{"type":"object","required":["offset","limit","total","items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Sv2ClientMetadata"}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0}}},"Sv2ClientsSummary":{"type":"object","description":"Aggregate information about all Sv2 clients","required":["total_clients","total_channels","extended_channels","standard_channels","total_hashrate"],"properties":{"extended_channels":{"type":"integer","minimum":0},"standard_channels":{"type":"integer","minimum":0},"total_channels":{"type":"integer","minimum":0},"total_clients":{"type":"integer","minimum":0},"total_hashrate":{"type":"number","format":"float"}}}}},"tags":[{"name":"health","description":"Health check endpoints"},{"name":"global","description":"Global statistics"},{"name":"server","description":"Server (upstream) monitoring"},{"name":"clients","description":"Clients (downstream) monitoring"},{"name":"sv1","description":"Sv1 clients monitoring (Translator Proxy only)"}]} From f60050ed82ecb934536b56f0749457a79e9d7a90 Mon Sep 17 00:00:00 2001 From: plebhash Date: Tue, 12 May 2026 18:15:56 -0300 Subject: [PATCH 9/9] TMP: pin stratum-core to plebhash fork --- bitcoin-core-sv2/Cargo.toml | 2 +- integration-tests/Cargo.lock | 34 +++++++++++++++++----------------- miner-apps/Cargo.lock | 34 +++++++++++++++++----------------- pool-apps/Cargo.lock | 30 +++++++++++++++--------------- stratum-apps/Cargo.lock | 34 +++++++++++++++++----------------- stratum-apps/Cargo.toml | 2 +- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/bitcoin-core-sv2/Cargo.toml b/bitcoin-core-sv2/Cargo.toml index 98bad552e..8b66b36df 100644 --- a/bitcoin-core-sv2/Cargo.toml +++ b/bitcoin-core-sv2/Cargo.toml @@ -21,6 +21,6 @@ async-channel = "1.5.1" # fetching from github enables synchronizing development workflows across sv2-apps and stratum repos # it MUST be changed before bitcoin-core-sv2 is published to crates.io # with the proper version of stratum-core being fetched from crates.io as well -stratum-core = { git = "https://github.com/stratum-mining/stratum", branch = "main" } +stratum-core = { git = "https://github.com/plebhash/stratum", rev = "9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" } bitcoin-capnp-types = "0.2.0" diff --git a/integration-tests/Cargo.lock b/integration-tests/Cargo.lock index 067572280..e347a3d63 100644 --- a/integration-tests/Cargo.lock +++ b/integration-tests/Cargo.lock @@ -465,7 +465,7 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "binary_sv2" version = "5.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "buffer_sv2", "derive_codec_sv2", @@ -646,7 +646,7 @@ dependencies = [ [[package]] name = "buffer_sv2" version = "3.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", ] @@ -764,7 +764,7 @@ dependencies = [ [[package]] name = "channels_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -855,7 +855,7 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "codec_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -874,7 +874,7 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "common_messages_sv2" version = "7.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1132,7 +1132,7 @@ dependencies = [ [[package]] name = "derive_codec_sv2" version = "1.1.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" [[package]] name = "digest" @@ -1272,7 +1272,7 @@ dependencies = [ [[package]] name = "extensions_sv2" version = "0.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1338,7 +1338,7 @@ dependencies = [ [[package]] name = "framing_sv2" version = "6.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -1523,7 +1523,7 @@ dependencies = [ [[package]] name = "handlers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -1964,7 +1964,7 @@ dependencies = [ [[package]] name = "job_declaration_sv2" version = "7.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -2122,7 +2122,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mining_sv2" version = "9.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -2175,7 +2175,7 @@ dependencies = [ [[package]] name = "noise_sv2" version = "1.4.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", "chacha20poly1305", @@ -2331,7 +2331,7 @@ dependencies = [ [[package]] name = "parsers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -3107,7 +3107,7 @@ dependencies = [ [[package]] name = "stratum-core" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -3130,7 +3130,7 @@ dependencies = [ [[package]] name = "stratum_translation" version = "0.2.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -3155,7 +3155,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sv1_api" version = "4.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin_hashes 0.3.2", @@ -3214,7 +3214,7 @@ dependencies = [ [[package]] name = "template_distribution_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] diff --git a/miner-apps/Cargo.lock b/miner-apps/Cargo.lock index ffee01e62..c0f301882 100644 --- a/miner-apps/Cargo.lock +++ b/miner-apps/Cargo.lock @@ -273,7 +273,7 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "binary_sv2" version = "5.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "buffer_sv2", "derive_codec_sv2", @@ -428,7 +428,7 @@ dependencies = [ [[package]] name = "buffer_sv2" version = "3.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", ] @@ -540,7 +540,7 @@ dependencies = [ [[package]] name = "channels_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -610,7 +610,7 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "codec_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -638,7 +638,7 @@ dependencies = [ [[package]] name = "common_messages_sv2" version = "7.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -806,7 +806,7 @@ dependencies = [ [[package]] name = "derive_codec_sv2" version = "1.1.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" [[package]] name = "digest" @@ -935,7 +935,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "extensions_sv2" version = "0.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -996,7 +996,7 @@ dependencies = [ [[package]] name = "framing_sv2" version = "6.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -1131,7 +1131,7 @@ dependencies = [ [[package]] name = "handlers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -1534,7 +1534,7 @@ dependencies = [ [[package]] name = "job_declaration_sv2" version = "7.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1654,7 +1654,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mining_sv2" version = "9.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1694,7 +1694,7 @@ dependencies = [ [[package]] name = "noise_sv2" version = "1.4.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", "chacha20poly1305", @@ -1818,7 +1818,7 @@ dependencies = [ [[package]] name = "parsers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -2460,7 +2460,7 @@ dependencies = [ [[package]] name = "stratum-core" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -2483,7 +2483,7 @@ dependencies = [ [[package]] name = "stratum_translation" version = "0.2.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -2508,7 +2508,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sv1_api" version = "4.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin_hashes 0.3.2", @@ -2555,7 +2555,7 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "template_distribution_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] diff --git a/pool-apps/Cargo.lock b/pool-apps/Cargo.lock index 8427c10b3..571fce1a5 100644 --- a/pool-apps/Cargo.lock +++ b/pool-apps/Cargo.lock @@ -273,7 +273,7 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "binary_sv2" version = "5.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "buffer_sv2", "derive_codec_sv2", @@ -419,7 +419,7 @@ dependencies = [ [[package]] name = "buffer_sv2" version = "3.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", ] @@ -531,7 +531,7 @@ dependencies = [ [[package]] name = "channels_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -601,7 +601,7 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "codec_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -629,7 +629,7 @@ dependencies = [ [[package]] name = "common_messages_sv2" version = "7.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -797,7 +797,7 @@ dependencies = [ [[package]] name = "derive_codec_sv2" version = "1.1.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" [[package]] name = "digest" @@ -926,7 +926,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "extensions_sv2" version = "0.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -987,7 +987,7 @@ dependencies = [ [[package]] name = "framing_sv2" version = "6.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -1122,7 +1122,7 @@ dependencies = [ [[package]] name = "handlers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -1524,7 +1524,7 @@ dependencies = [ [[package]] name = "job_declaration_sv2" version = "7.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1644,7 +1644,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mining_sv2" version = "9.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1684,7 +1684,7 @@ dependencies = [ [[package]] name = "noise_sv2" version = "1.4.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", "chacha20poly1305", @@ -1808,7 +1808,7 @@ dependencies = [ [[package]] name = "parsers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -2467,7 +2467,7 @@ dependencies = [ [[package]] name = "stratum-core" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -2534,7 +2534,7 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "template_distribution_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] diff --git a/stratum-apps/Cargo.lock b/stratum-apps/Cargo.lock index d50fe3b5a..cdb7bde04 100644 --- a/stratum-apps/Cargo.lock +++ b/stratum-apps/Cargo.lock @@ -202,7 +202,7 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "binary_sv2" version = "5.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "buffer_sv2", "derive_codec_sv2", @@ -332,7 +332,7 @@ dependencies = [ [[package]] name = "buffer_sv2" version = "3.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", ] @@ -404,7 +404,7 @@ dependencies = [ [[package]] name = "channels_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -428,7 +428,7 @@ dependencies = [ [[package]] name = "codec_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -441,7 +441,7 @@ dependencies = [ [[package]] name = "common_messages_sv2" version = "7.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "derive_codec_sv2" version = "1.1.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" [[package]] name = "digest" @@ -698,7 +698,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "extensions_sv2" version = "0.1.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -749,7 +749,7 @@ dependencies = [ [[package]] name = "framing_sv2" version = "6.0.1" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "buffer_sv2", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "handlers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -1226,7 +1226,7 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "job_declaration_sv2" version = "7.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1331,7 +1331,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mining_sv2" version = "9.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] @@ -1371,7 +1371,7 @@ dependencies = [ [[package]] name = "noise_sv2" version = "1.4.2" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "aes-gcm", "chacha20poly1305", @@ -1480,7 +1480,7 @@ dependencies = [ [[package]] name = "parsers_sv2" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "common_messages_sv2", @@ -2080,7 +2080,7 @@ dependencies = [ [[package]] name = "stratum-core" version = "0.3.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "stratum_translation" version = "0.2.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin", @@ -2122,7 +2122,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sv1_api" version = "4.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", "bitcoin_hashes 0.3.2", @@ -2190,7 +2190,7 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "template_distribution_sv2" version = "5.0.0" -source = "git+https://github.com/stratum-mining/stratum?branch=main#6ab03af290c94fb080419cb2a744bdd10e51c279" +source = "git+https://github.com/plebhash/stratum?rev=9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10#9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10" dependencies = [ "binary_sv2", ] diff --git a/stratum-apps/Cargo.toml b/stratum-apps/Cargo.toml index 9ba788d7b..317de6c1d 100644 --- a/stratum-apps/Cargo.toml +++ b/stratum-apps/Cargo.toml @@ -16,7 +16,7 @@ keywords = ["stratum", "mining", "bitcoin", "protocol", "sv2"] # fetching from github enables synchronizing development workflows across sv2-apps and stratum repos # it MUST be changed before stratum-apps is published to crates.io # with the proper version of stratum-core being fetched from crates.io as well -stratum-core = { git = "https://github.com/stratum-mining/stratum", branch = "main", optional = true } +stratum-core = { git = "https://github.com/plebhash/stratum", rev = "9edcc5f87b1a84af4acac8a48ca8d097c0bd0e10", optional = true } # External dependencies needed by the modules # Network helpers dependencies