Es decir, suena como si intentase resolver el bloque siguiente vacío en el ínterin hasta que arme su nuevo bloque con TXs, ambas instancias obviamente con hashes distintos. Si esto es así, no sé cómo se garantiza que el proceso de minado de un bloque vació se dé sólo en el ínterin aquí citado, y no de manera deliberada para intentar ganar tiempo sobre los demás mineros que sí arman su bloque con TXs.
LoyceV's notification bot notified me about the post by Don Pedro Dinero, so I used google translator to read the topic and found some interesting stuff, the last portion of your post which translates to the following (of course, assuming google translator is accurate)
I don't know how to guarantee that the mining process of an empty block occurs only in the interim mentioned here, and not deliberately to try to gain time over the other miners who do assemble their block with TXs.
You simply can't guarantee, it's just wild guesses unless you are the person himself, however, it's not really "deliberately to try to gain time" it's more like "trying not to waste time and hash power".
See, there is nothing in the protocol that prohibits users from mining empty blocks, it's just the fees incentives that ensure transactions are included in blocks, it makes no sense for any rational miner to leave money on the table "intentionally" unless they want to prove something (like the debate/war over block size when IMO bitmain was mining empty blocks on purpose just to prove a point), aside from that, empty blocks are just a part of the game, I don't think it's wrong or even unethical to mine empty blocks.
The only way you can avoid empty blocks (assuming there are pending transactions which is the case 99.99% of the time) is to intentionally waste money, pulling out the last block header and the details you need to start mining the next block takes less than downloading the whole block, checking the old transactions and creating a new block template that has transactions.
Kano ( a pool operator) said it takes less than 200ms to do that, you can find other sources who would claim 1 second or any other number, it actually doesn't matter because time = money, even going with the assumption that its 200ms, and as a pool, I am supposed to mine 20 blocks a day, by ensuring that I don't mine empty blocks it means I will be wasting 200ms*20 every day, there is no need to translate that to the actual
BTC earnings or $, we know for certain it's >0.
so despite it being a few seconds/minutes of "otherwise wasted hash power/time" what do I gain by not mining empty blocks? this is the question that needs to be addressed while keeping in mind that just because I mined an empty block, it has no effect on the time it takes to include your transaction, if I somehow hit a block during the first 200ms of receiving the previous block header, it doesn't mean I could have waited 300ms to include your transaction, it also doesn't mean that I or any other miner can't find a block 2 seconds later and include your transactions.
When all these things are put together, it seems very irrational not to mine empty blocks, not by actually doing it intentionally, but just as a result of not wasting a single hash you have.
Of course, the counterargument is that if you don't actually check all the transactions in the block, you could very well be mining on top of an invalid block (one transaction could be invalid and that block is invalid and so is yours), that's a great argument, but we need to keep in mind that me trying to solve am empty block while downloading and checking the previous blocks at the same time, so two scenarios:
1- The previous block is valid > I started and have not wasted time.
2- The previous block is invalid> I started and have not wasted time but if I hit a block it's useless.
Notice how it makes no difference in regards to wasting time because the other option is simply wasting time checking the block whether it was valid or not, I rather risk mining on top of an invalid block than seeing my hash power wasted doing nothing, also, it does make sense to trust the previous block for 200ms since it's for their best interest not to include an invalid transaction in their block or else they lose the whole block.
Of course, some people think this is unethical and everyone must check every transaction before mining the next block, to me, the theories and explanations just don't add up, but that is just me.