<p>I'm running a pool for some friends and myself, where we mine both dogecoin and litecoin (and occasionaly some other flavor of the day).
The farms are pointing to a simple proxy: a C daemon that is connected to the stratums for easy socket switching.</p>

<p>When switching from one coin to the other, the stratum server immediately throws "Share is above target" errors.
When it switches back to the original coin, all shares are accepted again</p>

<p>Exactly what causes the 'share is above target' error?
Based on the logs below, is there a problem with the mining software or with the stratum sending the wrong data?</p>

<p>Both stratums are configured with a fixed diff level, vardiff is disabled.
Here's a log of data going back and forth between a mining farm and server</p>

<p><strong>step 1/5: litecoin stratum sends work to mining farm</strong></p>

<pre><code>{"params": ["ed84", "716a78103f53858c8baadc8179bdbc3012c981db2a41b552998cdc06b6bae287", "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff27034f0f08062f503253482f04398b1c5308", "0d2f7374726174756d506f6f6c2f0000000001a078072a010000001976a914238e80769414592ed96192e13cddf78953e84ff388ac00000000", ["a346c6f74e37f6528e9d34e35c530a79bf11487d5c9404574972ac652331943f", "117086b6331ecef97572a981b1d2a7baf269b163a0c252c03a9f8b93cf1fdc03", "fef9b6758f809b998ce072d7bddefa86657dbee2d0fe1d71fd8a6a5558fa4dce", "7caa16ac719103ea85494bf15ec0b27507fb7367b36c01ccea2151f2eebdc811", "bdf9a2879e8cee859d2510fa63c57411f5b2e32fe0e237f597d28e6add7a9923"], "00000002", "1b0dd506", "531c8b3c", true], "id": null, "method": "mining.notify"}
</code></pre>

<p><strong>step 2/5: mining farm sends 6 valid shares to litecoin stratum</strong></p>

<pre><code>{"params": ["FarmOne", "ed84", "04000000", "531c8b3c", "fef81f01"], "id": 2, "method": "mining.submit"}
{"error": null, "id": 2, "result": true}
{"params": ["FarmOne", "ed84", "01000000", "531c8b3c", "c97a2601"], "id": 3, "method": "mining.submit"}
{"error": null, "id": 3, "result": true}
{"params": ["FarmOne", "ed84", "02000000", "531c8b3c", "685efb00"], "id": 4, "method": "mining.submit"}
{"error": null, "id": 4, "result": true}
{"params": ["FarmOne", "ed84", "01000000", "531c8b3c", "bacb9201"], "id": 5, "method": "mining.submit"}
{"error": null, "id": 5, "result": true}
{"params": ["FarmOne", "ed84", "04000000", "531c8b3c", "a221ad01"], "id": 6, "method": "mining.submit"}
{"error": null, "id": 6, "result": true}
</code></pre>

<p><strong>step 3/5: system redirects mining farm to dogecoin stratum at this point</strong></p>

<p><strong>step 4/5: dogecoin stratum sends work to mining farm</strong></p>

<pre><code>{"params": ["2610", "bca4622ca0307fc2e3c2398f67b36a0d908306f62cc65761761c2faf1b488be8", "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2703fd0802062f503253482f04658b1c5308", "0d2f7374726174756d506f6f6c2f000000000100f473ed742b00001976a914c8b32869360584a4876c7d7617142e0f8dc4404988ac00000000", ["2adb1eabd5c3fcabeb5f75c073e6009dee136a3cf0ba6b6082a7ad2f8fe2a070", "1061486e8cebb27914e7d3e24c0ce90e8b1fc0606cb1bf8f4cc61c4e4dbad84d"], "00000002", "1b527845", "531c8b67", true], "id": null, "method": "mining.notify"}
</code></pre>

<p><strong>step 5/5: mining farm sends shares to dogecoin straum, but they are are above target</strong></p>

<pre><code>{"params": ["FarmOne", "2610", "04000000", "531c8b67", "f4be2e00"], "id": 7, "method": "mining.submit"}
{"error": [-2, "Share is above target", null], "id": 7, "result": null}
{"params": ["FarmOne", "2610", "01000000", "531c8b67", "45ca4700"], "id": 8, "method": "mining.submit"}
{"error": [-2, "Share is above target", null], "id": 8, "result": null}
</code></pre>

<p>Thanks!</p>

CC BY-SA 3.0
2014-03-09T17:18:15.567Z
When you switch from one coin to another, are the miners informed of that fact? At the very least, perhaps your proxy could disconnect all the miners and let them reconnect.
Greg Hewgill
CC BY-SA 3.0
2014-03-09T18:48:16.257Z
How can I inform the miners of the switch? As far as I can see, after the original communication (subscribe & authorize ) the stratums only send work related messages. Nothing that says "hey i'm a coin, please configure yourself with the following specific settings".
Jonathan Brown
CC BY-SA 3.0
2014-03-09T18:52:19.730Z
reconnecting does work but unfortunately results in many shares going lost, plus the miners have a delay before they check if they can connect again. Upon further research, there are several coin switching pools available, but alas no source on github for it.
Jonathan Brown
CC BY-SA 3.0
2014-03-09T21:21:15.563Z
How does the communication between your mining farm and the clients look like? And what are they using? If they use stratum as well, you can send them new suscription + work information. In the case of getwork/longpolling you will lose all shares until getwork is called from the client again
MatthiasB
<mining-pools><scrypt><stratum>
Share is above target when switching between stratums
Jonathan Brown
# Share is above target when switching between stratums

(Asked by: username_0 on 2014-03-09)

I'm running a pool for some friends and myself, where we mine both dogecoin and litecoin (and occasionaly some other flavor of the day).
The farms are pointing to a simple proxy: a C daemon that is connected to the stratums for easy socket switching.

When switching from one coin to the other, the stratum server immediately throws "Share is above target" errors.
When it switches back to the original coin, all shares are accepted again

Exactly what causes the 'share is above target' error?
Based on the logs below, is there a problem with the mining software or with the stratum sending the wrong data?

Both stratums are configured with a fixed diff level, vardiff is disabled.
Here's a log of data going back and forth between a mining farm and server

**step 1/5: litecoin stratum sends work to mining farm**

```
{"params": ["ed84", "716a78103f53858c8baadc8179bdbc3012c981db2a41b552998cdc06b6bae287", "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff27034f0f08062f503253482f04398b1c5308", "0d2f7374726174756d506f6f6c2f0000000001a078072a010000001976a914238e80769414592ed96192e13cddf78953e84ff388ac00000000", ["a346c6f74e37f6528e9d34e35c530a79bf11487d5c9404574972ac652331943f", "117086b6331ecef97572a981b1d2a7baf269b163a0c252c03a9f8b93cf1fdc03", "fef9b6758f809b998ce072d7bddefa86657dbee2d0fe1d71fd8a6a5558fa4dce", "7caa16ac719103ea85494bf15ec0b27507fb7367b36c01ccea2151f2eebdc811", "bdf9a2879e8cee859d2510fa63c57411f5b2e32fe0e237f597d28e6add7a9923"], "00000002", "1b0dd506", "531c8b3c", true], "id": null, "method": "mining.notify"}

```

**step 2/5: mining farm sends 6 valid shares to litecoin stratum**

```
{"params": ["FarmOne", "ed84", "04000000", "531c8b3c", "fef81f01"], "id": 2, "method": "mining.submit"}
{"error": null, "id": 2, "result": true}
{"params": ["FarmOne", "ed84", "01000000", "531c8b3c", "c97a2601"], "id": 3, "method": "mining.submit"}
{"error": null, "id": 3, "result": true}
{"params": ["FarmOne", "ed84", "02000000", "531c8b3c", "685efb00"], "id": 4, "method": "mining.submit"}
{"error": null, "id": 4, "result": true}
{"params": ["FarmOne", "ed84", "01000000", "531c8b3c", "bacb9201"], "id": 5, "method": "mining.submit"}
{"error": null, "id": 5, "result": true}
{"params": ["FarmOne", "ed84", "04000000", "531c8b3c", "a221ad01"], "id": 6, "method": "mining.submit"}
{"error": null, "id": 6, "result": true}

```

**step 3/5: system redirects mining farm to dogecoin stratum at this point**

**step 4/5: dogecoin stratum sends work to mining farm**

```
{"params": ["2610", "bca4622ca0307fc2e3c2398f67b36a0d908306f62cc65761761c2faf1b488be8", "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2703fd0802062f503253482f04658b1c5308", "0d2f7374726174756d506f6f6c2f000000000100f473ed742b00001976a914c8b32869360584a4876c7d7617142e0f8dc4404988ac00000000", ["2adb1eabd5c3fcabeb5f75c073e6009dee136a3cf0ba6b6082a7ad2f8fe2a070", "1061486e8cebb27914e7d3e24c0ce90e8b1fc0606cb1bf8f4cc61c4e4dbad84d"], "00000002", "1b527845", "531c8b67", true], "id": null, "method": "mining.notify"}

```

**step 5/5: mining farm sends shares to dogecoin straum, but they are are above target**

```
{"params": ["FarmOne", "2610", "04000000", "531c8b67", "f4be2e00"], "id": 7, "method": "mining.submit"}
{"error": [-2, "Share is above target", null], "id": 7, "result": null}
{"params": ["FarmOne", "2610", "01000000", "531c8b67", "45ca4700"], "id": 8, "method": "mining.submit"}
{"error": [-2, "Share is above target", null], "id": 8, "result": null}

```

Thanks!

**Tags:** mining-pools, scrypt, stratum

> **Comments:**
> **username_1**: When you switch from one coin to another, are the miners informed of that fact? At the very least, perhaps your proxy could disconnect all the miners and let them reconnect.  
> **username_0**: How can I inform the miners of the switch? As far as I can see, after the original communication (subscribe & authorize ) the stratums only send work related messages. Nothing that says "hey i'm a coin, please configure yourself with the following specific settings".  
> **username_0**: reconnecting does work but unfortunately results in many shares going lost, plus the miners have a delay before they check if they can connect again. Upon further research, there are several coin switching pools available, but alas no source on github for it.  
> **username_2**: How does the communication between your mining farm and the clients look like? And what are they using? If they use stratum as well, you can send them new suscription + work information. In the case of getwork/longpolling you will lose all shares until getwork is called from the client again  

---

## 0 answers

