Exactly my point 2% is not much:
- There is a new block each 600 seconds (by design)
- Once the block changes, the pool needs CPU power (and time) to prepare a new list of transactions and send it to miners
- If the pool waits for that list before sending work to miners it will waste their resources - mining on old block and producing staled shares just to be rejected later
- Long pooling was introduced exactly for that - to reduce the staled shares by providing new block to work on, immediately when the old is solved from someone
- But the pool server needs time for that, except if it is empty block which is much faster and can be partially pre-calculated
OK, so we need to send such empty block and replace it later with a normal one ... now from the miner's perspective:
- New empty block is received - miner start working on it not wasting power on rejects
- New full block arrives (2-5 sec later, depending on pool power and miner connection speed) - the miner discards the work on empty block, BUT only those that are waiting for processing, because if the processing was started (i.e. sent to the ASIC chip) it may produce a valid block
- The jobs that were sent to the ASIC chip may take from 1 to 3 sec (depending on miner processing power and connection speed) to be returned as valid solution to the pool
OK, so an empty block may be returned for up to 10 sec - lets see how it compares to 600 sec - 1.66666%
How much is 2% - 12 sec and 2.5% is 15 sec
Q. What if the pool does not send an empty block to work on?
A. The miner works for 2-5 sec on stale block or about 1% stale and useless shares
Q. Which is better 2% empty blocks or 1% wasted work
A. ?
Hint: Note that solving an empty block strengthens the block chain and does not interfere with solving another one full of transactions few seconds later