0

If searching for the correct nonce can only be done once the world state has been computed, it would seem that if miners include no transactions in their blocks, they could begin searching for the nonce before those that do. As long as there is a fixed reward per block, this would be profitable. What is there in place to prevent miners from doing this? Relatedly, how do miners decide when to stop accepting transactions and start searching for the nonce? Even if miners are acting in good faith, they would still be penalized by accepting more transactions than their peers.

1 Answer 1

0

If there are transactions available to be included, there are no advantages in not including them, as miners earn fees from transactions.

If there are no transactions available long enough that a miner managed to mine a block without transactions, we can say they would have gained an advantage against miners that decided to stay idle an wait for new transactions (assuming block reward > mining costs of course).

Let's say for the sake of argument there were no transactions for an entire day, so Miner A decided to keep mining, but Miner B decided to wait for transactions. They have the same hashrate, same energy/hardware costs.

One day passes, and now the network got a bunch of transactions. Miner B begins mining, and now Miner A has two options:

  1. Include transactions in the hash function (reset the nonce).
  2. Ignore new transactions, continue mining from where they are (less nonces to check).

In this scenario, option 2 would seem to be more advantageous because you're not resetting the nonce, right?

Well, that only holds true if, and only if, the golden hash is guaranteed to be found in the remaining available nonces from Miner A, without resetting any inputs. As soon as Miner A has to change any other inputs, this advantage of starting "earlier" is lost. That would be the case if:

  • They ran out of nonces and couldn't find the target hash, so they need to change some other input (e.g. timestamp, transactions) to keep trying;
  • A new block was mined by Miner C, essentially forcing them to update the previous_hash which is used as input in the hash function of next block.

If Miner A ever founds themselves in this situation where changing any inputs is required, then there is no point in keep ignoring the new available transactions.


If you are interested to know why some blocks may have no transactions, it's not really because miners are looking for advantage, check this answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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