Skip to content

fix: reset extranonce2 only if clean_jobs == true - #1694

Closed
blackmennewstyle wants to merge 8 commits into
bitaxeorg:masterfrom
blackmennewstyle:master
Closed

fix: reset extranonce2 only if clean_jobs == true#1694
blackmennewstyle wants to merge 8 commits into
bitaxeorg:masterfrom
blackmennewstyle:master

Conversation

@blackmennewstyle

Copy link
Copy Markdown

This PR improves the extranonce2 reset.
It is only performed if clean_jobs == true.
The previous code was triggering a cascade of duplicate shares after a varDiff change:

This PR improves the extranonce2 reset.
It is only performed if clean_jobs == true.
The previous code was triggering a cascade of duplicate shares after a varDiff change:
- mining.set_difficulty
- mining.notify with clean_jobs is set to false The behavior is described here: bitaxeorg#1587 (comment)
@warioishere

warioishere commented May 17, 2026

Copy link
Copy Markdown
Contributor

out of interest, where did you see this duplicated share burst? On what pools and modes.

I have never seen this, an dups after vardiff, that doesn't really makes sense to me. You should see maybe some lowDiff Shares on a vardiff change if the pool is very strict on workerdiff changes.

CK accepts the old diff until the a new template arrives.
public-pool is stricter here, doesnt accept an previous diff right after the vardiff changes
blitzpool uses now ck pool pattern.

@blackmennewstyle blackmennewstyle changed the title ix: reset extranonce2 only if clean_jobs == true fix: reset extranonce2 only if clean_jobs == true May 18, 2026
@blackmennewstyle

blackmennewstyle commented May 18, 2026

Copy link
Copy Markdown
Author

out of interest, where did you see this duplicated share burst? On what pools and modes.

I have never seen this, an dups after vardiff, that doesn't really makes sense to me. You should see maybe some lowDiff Shares on a vardiff change if the pool is very strict on workerdiff changes.

CK accepts the old diff until the a new template arrives. public-pool is stricter here, doesn't accept an previous diff right after the vardiff changes blitzpool uses now ck pool pattern.

Literally all stratum software using miningcore (https://github.com/oliverw/miningcore) are affected, as soon as they activate varDiff (variable difficulty).

I provided the reason multiple times with examples when i opened my bug: #1587 (comment) where i tracked it all down to the culprit and it is specifically the extranonce2

miningcore keeps track of all shares in temporary object tied to a class BitcoinJob: https://github.com/oliverw/miningcore/blob/a553f62301f44c6df80891e408b6526d1dd98692/src/Miningcore/Blockchain/Bitcoin/BitcoinJob.cs#L275

It is triggered by the naive reset of extranonce2, each time a job is received. Just doing it only when cleanJob == true and everything works just fine.

miningcore is a very popular and well-kwown open-source stratum software and it is used by several pools including big pools, which unfortunately do not share their source-code back, but that is a subject and topic for another day,

Screenshot_2026-05-18_07-18-46

With my patch over two days of mining, even on CKPOOL you do not get that clean statistics without a single rejected share in sight.

@shufps

shufps commented May 18, 2026

Copy link
Copy Markdown
Contributor

It is triggered by the naive reset of extranonce2

IMHO extranonce2 should never be reset. Until it overflows it would require more than 100 years 24/7 operation or so. And even then, it really doesn't matter, the counter would wrap around and starts again at 0.

@mutatrum

mutatrum commented May 19, 2026

Copy link
Copy Markdown
Collaborator

After 2 hours on bitcoin.cedric-crispin.com:
image
It seems it's doing a vardiff every 10 minutes or so, and haven't seen duplicates yet. How often does it happen?

7 hours in:
image

@blackmennewstyle

blackmennewstyle commented May 20, 2026

Copy link
Copy Markdown
Author

After 2 hours on bitcoin.cedric-crispin.com: image It seems it's doing a vardiff every 10 minutes or so, and haven't seen duplicates yet. How often does it happen?

7 hours in: image

My varDiff is actually resetting every 80 seconds, so the 10 minutes is a bit odd.

I actually have someone who is getting duplicated shares currently:

May 20 05:45:49 aegaeon Miningcore[1687954]: [2026-05-20 05:45:49.6862] [I] [btc1] Broadcasting job 00028dc5
May 20 05:45:55 aegaeon Miningcore[1687954]: [2026-05-20 05:45:55.7215] [I] [btc1] Detected new transaction(s) for block 950195 [POLL]
May 20 05:45:55 aegaeon Miningcore[1687954]: [2026-05-20 05:45:55.7215] [I] [btc1] Broadcasting job 00028dc6
May 20 05:45:58 aegaeon Miningcore[1687954]: [2026-05-20 05:45:58.4513] [I] [btc1] [0HNLCPI03JNP0] Share accepted: D=10459.146
May 20 05:45:58 aegaeon Miningcore[1687954]: [2026-05-20 05:45:58.4513] [I] [btc1] [0HNLCPI03JNP0] VarDiff update to 7579.091
May 20 05:45:58 aegaeon Miningcore[1687954]: [2026-05-20 05:45:58.9763] [I] [btc1] [0HNLCPI03IUIV] Share accepted: D=9870.433
May 20 05:46:01 aegaeon Miningcore[1687954]: [2026-05-20 05:46:01.4843] [I] [btc1] [0HNLCPI03JNP0] Share rejected: duplicate share [bitaxe/BM1370/v2.14.0b3-1-g7ab1024c]
May 20 05:46:01 aegaeon Miningcore[1687954]: [2026-05-20 05:46:01.6972] [I] [btc1] Detected new transaction(s) for block 950195 [POLL]
May 20 05:46:01 aegaeon Miningcore[1687954]: [2026-05-20 05:46:01.6972] [I] [btc1] Broadcasting job 00028dc7
May 20 05:46:05 aegaeon Miningcore[1687954]: [2026-05-20 05:46:05.2924] [I] [btc1] [0HNLCPI03JNP0] Share accepted: D=7579.091
May 20 05:46:13 aegaeon Miningcore[1687954]: [2026-05-20 05:46:13.7009] [I] [btc1] Detected new transaction(s) for block 950195 [POLL]

In miningcore, the error code for duplicated share is DuplicateShare = 22,: https://github.com/oliverw/miningcore/blob/a553f62301f44c6df80891e408b6526d1dd98692/src/Miningcore/Stratum/StratumError.cs#L7

I saw in the ESP-Miner source code, it was not that value which was expected apparently in order to be classified as duplicated share. They are definitely in your logs, 100%, maybe have a look.

When i check mine, they are all gone with the patch.

You are getting duplicated each time the varDiff resets and sends back a job mining.notify with cleanJob = false.

May 20 09:43:19 aegaeon Miningcore[1687954]: [2026-05-20 09:43:19.8761] [I] [btc1] Broadcasting job 000296c0
May 20 09:43:25 aegaeon Miningcore[1687954]: [2026-05-20 09:43:25.8572] [I] [btc1] Detected new transaction(s) for block 950219 [POLL]
May 20 09:43:25 aegaeon Miningcore[1687954]: [2026-05-20 09:43:25.8572] [I] [btc1] Broadcasting job 000296c1
May 20 09:43:27 aegaeon Miningcore[1687954]: [2026-05-20 09:43:27.9616] [I] [btc1] [0HNLCPI03JNP0] VarDiff update to 7513.478 [IDLE]
May 20 09:43:28 aegaeon Miningcore[1687954]: [2026-05-20 09:43:28.1678] [I] [btc1] [0HNLCPI03JNP0] Share accepted: D=7513.478
May 20 09:43:30 aegaeon Miningcore[1687954]: [2026-05-20 09:43:30.6987] [I] [btc1] [0HNLCPI03JNP0] Share rejected: duplicate share [bitaxe/BM1370/v2.14.0b3-1-g7ab1024c]
May 20 09:43:31 aegaeon Miningcore[1687954]: [2026-05-20 09:43:31.8685] [I] [btc1] Detected new transaction(s) for block 950219 [POLL]
May 20 09:43:31 aegaeon Miningcore[1687954]: [2026-05-20 09:43:31.8685] [I] [btc1] Broadcasting job 000296c2
May 20 09:43:35 aegaeon Miningcore[1687954]: [2026-05-20 09:43:35.0223] [I] [btc1] [0HNLCPI03IUJ0] Share accepted: D=14007.977
May 20 09:43:35 aegaeon Miningcore[1687954]: [2026-05-20 09:43:35.0223] [I] [btc1] [0HNLCPI03IUJ0] VarDiff update to 9594.943
May 20 09:43:37 aegaeon Miningcore[1687954]: [2026-05-20 09:43:37.8669] [I] [btc1] Detected new transaction(s) for block 950219 [POLL]
?duplicate                                                    17658,116     99%

Better if else structure, more pleasing for the eyes and logical code.
@mutatrum

Copy link
Copy Markdown
Collaborator

My varDiff is actually resetting every 80 seconds, so the 10 minutes is a bit odd.

It was from memory, could be 80 seconds as well. I blame the time dilution when watching logs.

@mutatrum

Copy link
Copy Markdown
Collaborator

You are getting duplicated each time the varDiff resets and sends back a job mining.notify with cleanJob = false.

I ran it for 20+ hours and not a single duplicate share. In that time it must have had 1000 or so varDiffs, so not sure what's different between my setup and this report?

@blackmennewstyle

Copy link
Copy Markdown
Author

You are getting duplicated each time the varDiff resets and sends back a job mining.notify with cleanJob = false.

I ran it for 20+ hours and not a single duplicate share. In that time it must have had 1000 or so varDiffs, so not sure what's different between my setup and this report?

In miningcore, the error code for duplicated share is DuplicateShare = 22,: https://github.com/oliverw/miningcore/blob/a553f62301f44c6df80891e408b6526d1dd98692/src/Miningcore/Stratum/StratumError.cs#L7

I saw in the ESP-Miner source code, it was not that value which was expected apparently in order to be classified as duplicated share. They are definitely in your logs, 100%, maybe have a look.

@mutatrum

Copy link
Copy Markdown
Collaborator

What's the format of a share reject message? As there's no formal format, there's a best effort in parsing them. Take a look at the test cases to see what's supported:

https://github.com/bitaxeorg/ESP-Miner/blob/7ab1024c8a6502ffc20e166a4d64156edb2c92de/components/stratum/test/test_stratum_json.c#L157..L218

@blackmennewstyle

blackmennewstyle commented May 20, 2026

Copy link
Copy Markdown
Author

What's the format of a share reject message? As there's no formal format, there's a best effort in parsing them. Take a look at the test cases to see what's supported:

https://github.com/bitaxeorg/ESP-Miner/blob/7ab1024c8a6502ffc20e166a4d64156edb2c92de/components/stratum/test/test_stratum_json.c#L157..L218

format should be:

{"jsonrpc":"2.0","error":{"code":22,"message":"duplicate share","data":null},"id":120} 

@mutatrum

mutatrum commented May 20, 2026

Copy link
Copy Markdown
Collaborator

format should be:

{"jsonrpc":"2.0","error":{"code":22,"message":"duplicate share","data":null},"id":120} 

The format is not supported, but if the parser fails it will report unknown as share rejection reason. so I can safely say there are no rejected shares in my test run.

I added support for this format in #1701, so if something is rejected then at least the proper message is shown.

@blackmennewstyle

blackmennewstyle commented May 22, 2026

Copy link
Copy Markdown
Author

format should be:

{"jsonrpc":"2.0","error":{"code":22,"message":"duplicate share","data":null},"id":120} 

The format is not supported, but if the parser fails it will report unknown as share rejection reason. so I can safely say there are no rejected shares in my test run.

I added support for this format in #1701, so if something is rejected then at least the proper message is shown.

Thank you very much. However don't make such affirmation i can easily refute, in my initial bug report made nearly two months ago - #1587 (comment) - I provided tremendous amount of data including my own LOG. Pay attention to the following:

Also i noticed with version `[bitaxe/BM1370/v2.13.1]`
```
₿ (8023450) stratum_api: tx: {"id":318,"method":"mining.submit","params":["tb1qtl9daftpqser8lt7uqdrg82ztn7kxw2t4rsgaj.portia","00000084","01000000","69b0e5c5","53900254","025c8000"]}
₿ (8023469) bm1370: Job ID: 30, Asic nr: 0, Core: 83/15, Ver: 026BE000
₿ (8023472) stratum_api: rx: {"jsonrpc":"2.0","error":{"code":22,"message":"duplicate share","data":null},"id":318}
```
Those rejected shares are not added anymore as `unknown` They are not even taken in account. Is it intentional?

My format was perfectly handled and the rejected shares were reported untill v2.13.1. It happened shortly after i started reporting the issue. My stratum is not lying, so please stop implying there is no issue when there is clearly a regression or a major change which clearly made it disappear. If my memory serves me well, it's because ESP-miner started to allow pool to specify their stratum rpc format. I saw CKPOOL own PR.

Please let's fix the bug, it will make a lot of people happy and ESP-miner even more awesome.

@mutatrum

mutatrum commented May 28, 2026

Copy link
Copy Markdown
Collaborator

My stratum is not lying, so please stop implying there is no issue when there is clearly a regression or a major change which clearly made it disappear. If my memory serves me well, it's because ESP-miner started to allow pool to specify their stratum rpc format. I saw CKPOOL own PR.

I'm not implying there is no issue. However, on my hardware, connecting to the same stratum, I get no duplicates. So, something is different and this is apparently not a bug that's happening on every device. This makes me believe there is something else at hand, and resetting extranonce_2 is either hiding that, or something else is different.

Having another look at your logs from #1595, why does the pool send the same work twice?

[2026-03-11 01:30:16.6969] [D] [btc1] [0HNJV0SGU7487] Sending: {"jsonrpc":"2.0","method":"mining.notify","params":["00000038","d00b00389a7e0bf8c2472a73dac9457fec4739b274276b300000b2a100000000","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff32035eea0104a8c5b06900","1f4d696e696e67636f72652f436564726963204352495350494e2f61735f544800000000020000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900f2052a010000001976a914b39a791bdaa16ec039fbabe4e46efb7cab150c5388ac00000000",[],"20000000","190327c4","69b0d391",true],"id":null} 
[...]
[2026-03-11 01:32:47.4307] [D] [btc1] [0HNJV0SGU7487] Sending: {"jsonrpc":"2.0","method":"mining.notify","params":["00000038","d00b00389a7e0bf8c2472a73dac9457fec4739b274276b300000b2a100000000","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff32035eea0104a8c5b06900","1f4d696e696e67636f72652f436564726963204352495350494e2f61735f544800000000020000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900f2052a010000001976a914b39a791bdaa16ec039fbabe4e46efb7cab150c5388ac00000000",[],"20000000","190327c4","69b0d391",false],"id":null} 

It's the exact same template, but well over 2 minutes later? This makes the miner start mining work that was already covered. The miner is deterministic, if you send the same job, it covers the same search space.

@warioishere

Copy link
Copy Markdown
Contributor

for me this als looks like a pool problem, not a bitaxe firmware problem. NTDH

@blackmennewstyle

blackmennewstyle commented May 29, 2026

Copy link
Copy Markdown
Author

My stratum is not lying, so please stop implying there is no issue when there is clearly a regression or a major change which clearly made it disappear. If my memory serves me well, it's because ESP-miner started to allow pool to specify their stratum rpc format. I saw CKPOOL own PR.

I'm not implying there is no issue. However, on my hardware, connecting to the same stratum, I get no duplicates. So, something is different and this is apparently not a bug that's happening on every device. This makes me believe there is something else at hand, and resetting extranonce_2 is either hiding that, or something else is different.

Having another look at your logs from #1595, why does the pool send the same work twice?

[2026-03-11 01:30:16.6969] [D] [btc1] [0HNJV0SGU7487] Sending: {"jsonrpc":"2.0","method":"mining.notify","params":["00000038","d00b00389a7e0bf8c2472a73dac9457fec4739b274276b300000b2a100000000","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff32035eea0104a8c5b06900","1f4d696e696e67636f72652f436564726963204352495350494e2f61735f544800000000020000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900f2052a010000001976a914b39a791bdaa16ec039fbabe4e46efb7cab150c5388ac00000000",[],"20000000","190327c4","69b0d391",true],"id":null} 
[...]
[2026-03-11 01:32:47.4307] [D] [btc1] [0HNJV0SGU7487] Sending: {"jsonrpc":"2.0","method":"mining.notify","params":["00000038","d00b00389a7e0bf8c2472a73dac9457fec4739b274276b300000b2a100000000","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff32035eea0104a8c5b06900","1f4d696e696e67636f72652f436564726963204352495350494e2f61735f544800000000020000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900f2052a010000001976a914b39a791bdaa16ec039fbabe4e46efb7cab150c5388ac00000000",[],"20000000","190327c4","69b0d391",false],"id":null} 

It's the exact same template, but well over 2 minutes later? This makes the miner start mining work that was already covered. The miner is deterministic, if you send the same job, it covers the same search space.

Such a weird question honestly.

It's how miningcore works, if there is no new blockTemplate available from the node. It rebroadcasts the latest blockTemplate it has record of when a new varDiff difficulty is available for the miner. What would you expect it to do? Creating a BlockTemplate out of thin air?

The problem is totally resolved if extranonce2 is only reset when CleanJob == true.

@mutatrum

mutatrum commented May 29, 2026

Copy link
Copy Markdown
Collaborator

It's the exact same template, but well over 2 minutes later? This makes the miner start mining work that was already covered. The miner is deterministic, if you send the same job, it covers the same search space.

Such a weird question honestly.

It's how miningcore works, if there is no new blockTemplate available from the node. It rebroadcasts the latest blockTemplate it has record of when a new varDiff difficulty is available for the miner.

It doesn't have to rebroadcast. A new vardiff will be in effect from the new job, there's no need to enforce this by resending the blocktemplate. Just send a new difficulty and wait until the node gives you a new template.

What would you expect it to do? Creating a BlockTemplate out of thin air?

Don't send it. That, or make new work: adjust ntime, adjust extranonce, adjust scriptsig, change a single bit, anything, but don't send the exact same job twice. If you can't change anything because every single bit is dictated by the node, then don't send anything and wait.

To put it differently: extranonce2 is controlled by the miner, nothing a pool can do should be affect that.

@warioishere

warioishere commented May 29, 2026

Copy link
Copy Markdown
Contributor

I went and checked the miningcore source on this. OnVarDiffUpdateAsync in BitcoinPool.cs really does send set_difficulty and then re-send the current job:

if (connection.Context.ApplyPendingDifficulty())
{
    await connection.NotifyAsync(BitcoinStratumMethods.SetDifficulty, new object[] { connection.Context.Difficulty });
    await connection.NotifyAsync(BitcoinStratumMethods.MiningNotify, currentJobParams);
}

So the mechanism @blackmennewstyle described is real — I was wrong to doubt that a vardiff change triggers a notify. It does.

That said, @mutatrum is right that the behaviour is genuinely weird. Re-sending a byte-for-byte identical job (same ntime, same coinbase, same merkle) is pointless — the new difficulty applies from the next job anyway, so there is no need to enforce it with a resend. If it wants to push work it should make it actually new work (roll ntime, bump extranonce, change the scriptsig, anything), otherwise just send the difficulty and wait for the node to hand over a new template.

But the part I would hang the fix on is mutatrum's other point: extranonce2 is the miner's to control, and nothing a pool sends should make us reset it.

Tracing create_jobs_task.c to make sure I read it right: the steady-state mining runs on the timeout path, generating a job from the stored current_work every timeout_ms and doing extranonce_2++. When a clean_jobs=false notify arrives it hits extranonce_2 = 0; and then continue; — so the resent job is not mined directly, but the counter is now back at 0, and the timer-driven generation re-mines the exact extranonce_2 values it already did on that same template. That is where the duplicates come from. Leaving the counter alone (or only resetting on clean_jobs == true) fixes it, and since it is truncated to extranonce_2_len bytes it only wraps after an absurd amount of runtime, so there is nothing to lose.

@mutatrum you are the eagle eye here — does that match how you read the create_jobs flow, or am I missing something?

@mutatrum

Copy link
Copy Markdown
Collaborator

Correct. If clean_jobs=false there is no urgent need to disturb the ASIC, as it's still valid work it's doing and pushing new jobs earlier can theoretically hinder it's performance. This is achieved by continuing the timer loop, and it assumes the job it did receive is new work, picked up in due time. If extranonce_2 is reset or not should be irrelevant. It might be reset, or keep it incrementing, or we might add funky algorithms for the user to control (see f.e. #824 and #939), it should all be irrelevant.

When clean_jobs=true it signals that whatever it's doing is wasted work and should switch as quick as possible, hence it cutting the timing loop short. This must be new work by definition, but that's besides the point here.

The assumption here is that when a mining.notify is received, it should be new work. If it's not new work (e.g. a bit-for-bit identical job) it is wasting bandwidth, processing power and worst-case, wasting hash.

The nuance here - and proper fix - is making both sides better:

  • The pool should not send the same job;
  • Have the miner detect if the jobID was already received and ignore it.

Only resetting extranonce_2 on cleanJobs=true is not the proper solution.

I've created #1731. Please test and let us know.

@blackmennewstyle

Copy link
Copy Markdown
Author

Just like i was suspected, you just did not want to accept my PR, you simply wanted to do your own fix, you just had to say it.

As long as the issue is fixed, i'm happy honestly, i will certainly not disturb a dev who always to be the only one who fixes things lol

@warioishere

warioishere commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Just like i was suspected, you just did not want to accept my PR, you simply wanted to do your own fix, you just had to say it.

As long as the issue is fixed, i'm happy honestly, i will certainly not disturb a dev who always to be the only one who fixes things lol

Could be said about you too? That you jst wanted ro land a PR? Why don't you unterstand that there is no need to reset the extranonce in your suggested way if the pool does his job right? mining-core obviously does some weird stuff which no other pool does and this is what you don't want to differentiate. Mutatrum patched it in the right way and you come up with more conspiracies and unappropriate forwards like in your whole conversation trying to tell one of the main devs he doesn't know how mining works.

@blackmennewstyle

Copy link
Copy Markdown
Author

Just like i was suspected, you just did not want to accept my PR, you simply wanted to do your own fix, you just had to say it.
As long as the issue is fixed, i'm happy honestly, i will certainly not disturb a dev who always to be the only one who fixes things lol

Could be said about you too? Why don't you unterstand that there is no need to reset the extranonce in your suggested way if the pool does his job right? mining-core obviously does some weird stuff which no other pool does and this is what you don't want to differentiate. Mutatrum patched it in the right way and you come up with more conspiracies and unappropriate forwards like in your whole conversation trying to tell the main dev he doesn't know how mining works.

The other mining software, including ASIC closed-source mining software, does not have that issue, they handle duplicate mining.notify without a singe issue.

Maybe also do not talk for the other pools (plenty of them actually send duplicate job as well), it's nothing uncommon and maybe also do not talk for mutatrum either.

Now if you think you are better than anyone in the space, good on you, i'm very happy for you but i honestly could not care less of what you think about me, i'm trying to find a solution to a problem, which i never experienced before with other mining software.

@mutatrum

mutatrum commented Jun 1, 2026

Copy link
Copy Markdown
Collaborator

Just like i was suspected, you just did not want to accept my PR, you simply wanted to do your own fix, you just had to say it.

As long as the issue is fixed, i'm happy honestly, i will certainly not disturb a dev who always to be the only one who fixes things lol

I'm sorry you got that impression, I'm not here to steal your glory. It's fine if you take the code of 1731 and apply the diff to your PR so we can merge it under your name, or as co-author, I don't care. The only thing I care about is that the issue raised is fixed in a proper way.

Let me add this, as I do care: I go out of my way to always make sure the correct authors are attributed to every PR that gets submitted. Contributions from external developers are super valuable, and they do a lot of great work. On every major release we have there are a few first-time contributors, and that makes me happy. So, please don't feel discouraged to not raise a new issue or PR. This was a difficult issue because for whatever reason it was not reproducible on my side, about a nuanced piece of logic and the perseverance on both sides made the firmware better for it.

@blackmennewstyle

Copy link
Copy Markdown
Author

Just like i was suspected, you just did not want to accept my PR, you simply wanted to do your own fix, you just had to say it.
As long as the issue is fixed, i'm happy honestly, i will certainly not disturb a dev who always to be the only one who fixes things lol

I'm sorry you got that impression, I'm not here to steal your glory. It's fine if you take the code of 1731 and apply the diff to your PR so we can merge it under your name, or as co-author, I don't care. The only thing I care about is that the issue raised is fixed in a proper way.

Let me add this, as I do care: I go out of my way to always make sure the correct authors are attributed to every PR that gets submitted. Contributions from external developers are super valuable, and they do a lot of great work. On every major release we have there are a few first-time contributors, and that makes me happy. So, please don't feel discouraged to not raise a new issue or PR. This was a difficult issue because for whatever reason it was not reproducible on my side, about a nuanced piece of logic and the perseverance on both sides made the firmware better for it.

I can report that after nearly 12 hours of mining with your fix which ignores duplicate mining.notify, the issue is totally gone so far.

I am closing my PR and my bug report. You can safely merge your fix. It is working.

Apologize as well for my franc-parler(outspokenness in English?), i'm French, it's in my culture but i know from experience not a lot of people are comfortable with it.

Thank you very much and sorry if i make you waste some of your precious time. Keep it up the great job 👍🏽
Screenshot_2026-06-02_01-05-47

@mutatrum

mutatrum commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

I can report that after nearly 12 hours of mining with your fix which ignores duplicate mining.notify, the issue is totally gone so far.

Excellent! Did you see it handle the duplicate mining.notify in the logs?

Apologize as well for my franc-parler(outspokenness in English?), i'm French, it's in my culture but i know from experience not a lot of people are comfortable with it.

Haha, all good. Franc-parler 🤜🤛 Dutch bluntness

@blackmennewstyle

Copy link
Copy Markdown
Author

I can report that after nearly 12 hours of mining with your fix which ignores duplicate mining.notify, the issue is totally gone so far.

Excellent! Did you see it handle the duplicate mining.notify in the logs?

Apologize as well for my franc-parler(outspokenness in English?), i'm French, it's in my culture but i know from experience not a lot of people are comfortable with it.

Haha, all good. Franc-parler 🤜🤛 Dutch bluntness

Yes i saw the yellow message about them in the log ;)

be4b25ec0314388ac00000000",["e98bd7880231234fd18d97065684abf3b06b12cd3089e6849de9161eb4ab6611","6ba8975d4e272ede0d107445e1ecc2876fafeccaab2f29af29edaec53813e0cf","3eec79815636fa10d4062446878dc8d0892450661afb0630fea42665bd569f34","7cadf4ce67cac7cb9bc701332d08f53d789d9c5430c35f532c4271382b3fc2f6","91b0acfe24bffc801ff1d5467b8b442836a658a35bc1a685ef87790cf7c79558","e7004799721ee2ad7d25d21ddb7be49a5fd204913d64dfe24c3118bf172dc7c2","b89e9e25502b97acbd25542875870749de5dc352617295ff2667be55c462dd59","3633bca96b4bb2646edde1a128550db9f0d7abb5fc2163d11592a27669a53b53","0c9678c842eff78c7221593d25abe76a1ed952f8f3f2408c26a4565bd2565f24","a45a9b4ee72772a5ae685ee76d67077d11ea8ade688b04d32ba4cddf85345631","11ba6b007bccb5b41c960af1100aff236ae497d4a956b9e4e5629cb696ed85cd","a069679d83ce0280be52170787157b328af5d6e194b958fb1b7747eefe4d5206","07a9788532a20962e520d276736d46ee2536be96b6f09e79fe3ee86bed248589"],"20000000","1702068f","6a20318c",false],"id":null}
₿ (167242469) stratum_v1_task: Ignoring duplicate notify for job 0002fb56
₿ (167244146) asic_result: ID: 0002fb56, ASIC nr: 0, Core: 94/14, ver: 2001C000 Nonce DB5B9DBC diff 1228.9 of 7066.65.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants