Would it require a hard fork to disallow empty blocks? I'm surprised this is being allowed.
Well, if all nodes decide they would reject empty blocks, that would take care of it without a fork, however, this would achieve nothing, say I own a pool and I want to deliberately mine empty blocks, I would simply include only my own made up transactions and wala! my blocks are no longer empty and you will have to accept them.
BTC already has a limited capacity (7 tx/sec), so there's no reason to waste blocks (no matter the pool).
...
Humorous analogy but not right.
Mining empty blocks has *always* been allowed for 1 main reason: to maintain the 10min avg time between blocks for the (now) rare occasions that the mempool is empty meaning there are literally no transactions to process for too long of a time. In the very early days that was almost common, but these days is VERY rare but still does happen.
Speaking of mempool...
If you checkout
https://mempool.space/ you will see *all* of the upcoming tx's in the que and what the expected composition of the block should be based on its profitability (fees paid). Note that while there is no one global mempool: every node on the network maintains its own mempool, so different nodes may hold different transactions in their mempools,
ALL pools can also see that information and at least in the case of Kanopool have already selected what tx's they will use and have that data cached for use when a new block-found msg is broadcast to the network. The 1st cached data includes (or should include) the id of the previous block found to propagate the chain. It's how Ocean pre-scans ((or should be pre-scanning) the tx's that they will use in the change of work sent when they see a new block.
Difference is Ocean chooses to not include any tx's related to ordinals whereas Kanopool and all the others accept all of them so scheduling the tx's is easy
@alani123, you said
Pretty much every pool* out there will point their hash to an empty block while they're waiting for the new one to fully propagate. Not doing that would mean wasting hashpower for a bit more of a handful of seconds every time there's a new block.
and use that as a reason to mine an empty block. Kano has repeatedly said here that the time for his pool to generate and broadcast new work to all the miners is under 100ms + time needed for the data packets to reach the miners (ping time). I'd think that for most other pools it should be about the same.
Um, for whatever reason(s) Luke's original Eligius pool software was exceeding slow at processing new work and because of that yes even back then he was doing empty blocks. As he has always been censoring tx's (back then casinos) methinks that possibly Ocean has the same issues for the same reason(s)?