Why empty blocks are sometines mined, from mempool.space: "When a new block is found, mining pools send miners a block template with no transactions so they can start searching for the next block as soon as possible. They send a block template full of transactions right afterward, but a full block template is a bigger data transfer and takes slightly longer to reach miners.
In this intervening time, which is usually no more than 1-2 seconds, miners sometimes get lucky and find a new block using the empty block template."
Alternatively, could a pool paricipant be set to use a list of older waiting mempool transactions, which they may already have and thus would not have to wait the propagation delay? Ocassionaly it would clear older transactions and collect more fees than an empty block.
Nice idea! It could work, but there's also the risk of mining an invalid block as you need to be very certain that there are no transactions in the new block that are also in the previous one. Taking the lowest fee transactions would reduce that risk, but also reduce the reward.
reply
Exactly. By the time you check all that in some seconds you would already have the new template filled with transactions.
reply
Pools construct a future template while the current template is being mined then all that needs to be supplied when a block is found is a hash pointer to the previous block and any adjustments to the future template.
reply
Excellent, thanks. I imagined I hadn't thought of something new, but empty blocks persist. Hopefully more implement that.
reply