Post
Topic
Board Pools
Merits 2 from 1 user
Re: Why not to mine on pools mining empty blocks, and why do pools mine empty blocks
by
mikeywith
on 23/12/2020, 22:39:28 UTC
⭐ Merited by ranochigo (2)
Ie a block solved 1 second after the last block won't have a lot of tx in it.

I don't think it's a matter of a lot of a few, it's either 0 or x, where the value of x is irrelevant in this subject, what happens is that when your pool solves a block and propagate it to me, I can do one of two things.

1- rush to start mining the next block:

all I need is to alter in my block template is the hash of your block which is in the header.

2- Download the whole block, see which transactions did you put in your block, verify them, and then delete them from my mempool so that if I solve the block I won't include something you have already included.

I think some pools are also directly connected and share their hashed blocks outside of the node concept, maybe using stratum API of some kind, where I don't even need to check the block header, I just need to see that you solved block x which has a hash of y value and without looking at anything else I  start mining the next block right away.

I don't know how long does it take to download, verify and deal with the mempool, but I know it's >0 in time, Kano would know better since he owns a mining pool, or perhaps someone else who owns a mining pool will know, it could be 10 ms, it could be 10 seconds, but no matter how short, that time you spend is a time that you could potentially solve a block in, so your loss will be the number of hashes you could have tried while going through that process.

This may cause a hard fork because if your block 10 has something wrong in it and I build block 11 on top of it and send it to another miner who builds block 12 on top of my block, the three of us could be mining on a different blockchain if the others rejected your block number 10 because it has an invalid transaction or a timestamp that is way back in the past or an invalid coinbase address or anything that renders a block invalid which I failed to verify.

But, mining pools seem to trust each other's work, and so they do mine blocks without verifying them knowing very well that could lose a huge amount of money if one of the blocks they build on is invalid (especially if they pay PPS).

Some people believe that some mining pools are refusing to add transactions just for the sake of it, i.e they could have included the transactions but they chose not to, it's like saying they left money on the table which is an irrational argument, with that being said, I do believe that antpool has probably done so in the past (the ratio of empty blocks was way too high around the blocksize-war, which could indicate that bitmain was purposely trying to prove that a 1MB block is too small and transactions were taking forever, but with things the way they are (and have been) for a few years, I don't think anybody does stuff like that, and empty blocks are just the results of fully utilizing every hash the pool has.