4

As a solo miner, you have the disadvantage of a minuscule hash rate compared to mining pools. Is it not possible to searching for only even nonces? Of course you risk the chance of missing the nonce, but you gain an effective 2x hash rate.

I wonder how this or other nonce searching methods might impacts your chance on average.

  • What if you search downwards for a nonce?
  • Skipping (even, odd, every third, etc).
12

A 2X rate with a 50% chance of missing a winning nonce is no advantage at all. Incrementing the nonce is the easiest mechanism of choosing the next nonce to try, so you try the most nonces per second that way. That's all that matters.

Perhaps you are under the mistaken impression that everyone is trying to mine the same block. That is not so. If you are a solo miner, you are the only one trying to mine a block that pays you the block reward. Nobody else is trying to mine the same block you are, so all that matters is how many tries you are able to accomplish. You aren't racing anyone else. If someone else finds a block, you don't care if they found it before you did or after you did (except in very rare instances where you both find a block at very close to the same time), you found a block either way.

  • I see, so a solution in a mining pool instance is just as rare as a solution found solo mining? For some reason I was under the impression that there was some partitioning within a mining pool. – aitee Jan 1 '18 at 21:41
  • @aitee Mining pools intentionally give you easier problems to solve so they can measure your hash rate. But finding a block is the same. – David Schwartz Jan 1 '18 at 22:12
  • Do you know of any information/documentation that contrasts pool mining with solo mining (from a technical perspective)? – aitee Jan 1 '18 at 22:39
  • 1
    You should see the Stratum protocol specification. This is the protocol used for communication between miners and pools. Althougth the protocol is not entirely specified anywhere, you may find some usefull information. You could also review the code some open-source pools (for example the UNOMP node merged pool). – Jules Lamur Jan 2 '18 at 10:58
2

You need to find any nonce, so that the block becomes valid.

It is of no regard, what algorithm you are using to chose a nonce, as long as the block meets or exceeds the difficulty target.

2

Alternative algorithms used for choosing the next nonce to hash will not improve upon a simple integer increment. You will still be checking the same number of hashes per second.

An increment of two instead of one will not double the hash rate. The hashing rate will be equal in both cases.

  • I understand it doesn't really change the rate. But if the solution happens to be near the end of the range, you would reach it at twice the rate because you are only checking half of the numbers. – aitee Jan 1 '18 at 21:43
  • @aitee Or you miss it entirely because you're only checking half the numbers. – David Z Jan 1 '18 at 23:28
1

Is it not possible to searching for only even nonces? Of course you risk the chance of missing the nonce, but you gain an effective 2x hash rate.

Yes. It is of course possible. You are allowed to modify the whole mining software if the resulting block is a valid bitcoin-block. But you don't gain a 2x hash rate. It doesn't make any difference wheather you try all numbers between 0 and 29 or you try all even numbers between 0 and 59 because they are still only 30 numbers.

What if you search downwards for a nonce?

As I said: You could do that. But it doesn't make any difference in average. The normal case: The difficulty is very high. So you need to try all the nonce-numbers (0-4.294.967.296). If no one else mined the block, you can change the timestamp or modifiy the coinbase-text and try all the nonces again and again because the hashes will be completly different then.

Skipping (even, odd, every third, etc).

There is no advantage. It's actually a little disadvantage because you need to calculate nonce++ 2 times instead of 1 time or you need to do the if statement if(nonce%30==0) or whatever instead of doing nothing. So you would waste energie, time and mining power instead of hashing a block.

  • Regarding your last paragraph: jumping by two can be implemented by nonce += 2. This would typically turn into a single instruction, in fact the same one used to implement nonce++ except with 1 replaced by 2. So in that particular case, there is no disadvantage in execution time. Of course an if statement would take extra time but that's a rather inefficient way to do it. – David Z Jan 1 '18 at 23:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.