0

So currently only a tiny amount of empty blocks are mined

A total of 71 empty blocks were mined in the first five months of 2020,
accounting for 0.3% of the total blocks produced — less than half of the
0.79% figure from the same period last year

source: https://www.theblockcrypto.com/post/67928/bitcoin-miners-are-mining-fewer-empty-blocks-in-2020-and-it-may-not-all-because-of-chance

I agree that it does not make sense from a game theoretic perspective for anyone to just mine empty blocks all the time (which would mean we would be close to 100% of empty blocks). As a miner you want to sell your btc in other blocks etc.

But I think a fair question to ask is why this number is so low. My intuition here is that the bitcoin mining race is extremely competitive. And anything that could give you some sort of advantage is always used.

If you just ignore txs you do not have to validate them and do not have to include them in one block and therefore can same some amount of time for mining the new block. This would be a competitive advantage over miners that include txs. Therefore I was surprised that the number of empty blocks is so low.

2 Answers 2

2

The overhead of validating transactions is relatively insignificant. If it is felt desirable to do so, it can be performed by a separate machine from that performing the mining.

Say 2000 transactions need validating every 10 minutes. That is 3 or 4 transaction validations a second. Meanwhile the mining rig is performing billions of hashes a second.

So there is effectively no disadvantage and as halving of mining rewards continues, the transaction fees are increasingly significant

3
  • Hmm but I do not see how you can parallelize this. First you have to validate and decide which transactions you are going to include (takes some time) and then you can start mining this block. But yes with time txs are going to gain in importance because of the block reward halving. May 1 at 18:37
  • I see no reason why one computer can't continually be receiving and validating transactions, adding them to a mempool and assembling mempool entries into the next block template while another computer is controlling a set of ASICs that are searching for a nonce that produces an acceptable hash for a current block template. The workload for validating 3-4 transactions a second is low enough that most ordinary wallets like bitcoin-core do it in the background while the computer is primarily used for other tasks. May 1 at 19:11
  • Yes you are correct. The validation can be parallelized. But not the decision which txs you are going to include in the block, because you have to check for each new block, that the validated txs were not already included in the previous block. So every time a new mining "race" starts you have to at least filter out all txs that were already mined. May 2 at 9:45
0

There is some kind of relationship between empty blocks and difficulty increase/decrease that I have not been able to formulate properly. The fewer the empty blocks, the closer to the 10 minutes average per block we are, meaing that every set of 2016 blocks were closer to the estimated time of confirmation.

Last year, 2021, China banned those confirming blocks in their country and that had an impact on difficulty that reflected on the amount of empty blocks 'mined', in my humble opinion.

My theory is that every time a block is taking more than 40-60 minutes, there is a candidate block, with no transactions, waiting in the shadows to be 'mined' in order to be the first afterwards. When you analize a series of blocks, you can easily differ how many empty blocks follow those blocks that took a lot of time to confirm and you will realize that most, if not all, follow this pattern of being confirm just after a very slow and laggy one.

In a side note, it is true that renouncing to the fees is pointless because what @RedGrittyBrick said about the halving every 210,000 Blocks, but confirming that empty block would make sense if you have an edge at confirming the next immediate block afterwards for the full subsidy.

I would suggest a PR to the core developers in order to prevent the mining of empty blocks unless the mempool is empty, of course.

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.