diff --git a/src/translator/proxy/bridge.rs b/src/translator/proxy/bridge.rs index ba8f49c4..db0b018b 100644 --- a/src/translator/proxy/bridge.rs +++ b/src/translator/proxy/bridge.rs @@ -123,7 +123,8 @@ impl Bridge { if let Some(Mining::OpenExtendedMiningChannelSuccess(success)) = message.next() { info!("New extended channel opened with id {}", success.channel_id); let extranonce = success.extranonce_prefix.to_vec(); - let extranonce2_len = success.extranonce_size; + let extranonce2_len = + success.extranonce_size - success.extranonce_prefix.len() as u16; self.target .safe_lock(|t| *t = success.target.to_vec()) .map_err(|e| { diff --git a/src/translator/upstream/upstream.rs b/src/translator/upstream/upstream.rs index f5b62d5a..5b1969c8 100644 --- a/src/translator/upstream/upstream.rs +++ b/src/translator/upstream/upstream.rs @@ -273,9 +273,8 @@ impl Upstream { miner_extranonce2_size, ); let range_0 = 0..prefix_len; // upstream extranonce1 - let range_1 = prefix_len..prefix_len + tproxy_e1_len; // downstream extranonce1 - let range_2 = prefix_len + tproxy_e1_len - ..prefix_len + m.extranonce_size as usize; // extranonce2 + let range_1 = prefix_len..tproxy_e1_len; // downstream extranonce1 + let range_2 = tproxy_e1_len..m.extranonce_size as usize; // extranonce2 let extended = match ExtendedExtranonce::from_upstream_extranonce( extranonce_prefix.clone(), range_0.clone(), range_1.clone(), range_2.clone(), ).ok_or( Error::InvalidExtranonce(format!("Impossible to create a valid extended extranonce from {:?} {:?} {:?} {:?}",