Does anyone knows the root cause?
Considering is not systemic, I am assuming is a bug...
Block #821740 has a timestamp of 2023-12-18 07:52:26 UTC. Block #821741 has a timestamp of 2023-12-18 07:52:30 UTC.
So they were apparently four seconds apart. That's usually not enough time to fully load the previous block in order to see what transactions in the mempool are still valid. Rather than shutting down all their hardware, miners often just mine on an empty block during that time, as that is always valid and gives them a chance to at least get the block subsidy.
Interestingly, though, in this case both blocks were mined by AntPool, so in theory they could have prepared the transactions for their second block in advance while mining on the first block, thus earning a lot more in fees.
reply
It would increase their revenue
The increase would be, for a block thar AntPool mines just after their own,
(Block total fees) * (AntPool share of total hashrate)^2 * (time to get new block and prepare new template) / (10 minutes)
And that would always be a template that is valid.
For any previous block whatsoever (not mined by AntPool) we remove the "^2". But then, it's not a guarantee that we try to include already included TX. In this scenario they should try and mine TX that are further down in the mempool queue and thus have a higher probability not to be included in the block just mined.
Anyway, for the first scenario the number is around (I'm guessing some numbers)
2 * 0.25^2 * 5 sec / 10 min = 0.002 btc = 200 ksat
Per block (all blocks even the ones they don't find)
Now that I calculated it... It's actually very significant.. why don't they do this? I guess they will start doing it now that the fees are so high. It will take some work but seems definitely worth it to get a 200k * 1/.25^2 = 0.032 btc increase in revenue from blocks that they do find
reply
this is because stratum v1 pools send empty blocks containing the new prevhash, as this arrives faster than a message containing a full block.
oh and the fix is already here, with stratumv2. sv2 pools eliminate the empty block incentive by making full-block propagation equally efficient to empty block propagation
reply
Thanks, this was insightful
reply
you're welcome. happy to help
reply
You cannot stop mining for some seconds while you get the new block to mine. It would create a quick change in electricity demand which is not good.
I don't know why they don't always have two block templates ready. Is that difficult? we can already see the next blocks candidates in mempool.space
reply
Empty blocks and improvement ideas => #350605
Into The Mempool: Empty blocks - What Are They Good For ? Absolutely… Nothing ? => #355094
reply
Thanks for the links
reply
Probably a bug, you can open a ticket to that effect
reply