Sometimes miners produce empty, or rather "empty", blocks which only contain the coinbase transaction (paying new BTC to the miner) and the necessary headers. Example: https://mempool.space/block/0000000000000000000421b68859badd381d14c37e8b8fe938748db175f3ca5c
Here's mempool's description of the issue:
https://mempool.space/docs/faq#why-empty-blocks
It seems creating the new block template (for which transactions need to be validated) takes some time, and then after creation this template needs to be made available to the miners. If miners don't have a "proper" template, they might mine an "empty" block instead.
Wouldn't it be possible to always have another block template available, one that does not depend on the transactions confirmed (or not!) in the previous block?
I imagine mining pools to have access to lots of transactions they create themselves, for example to pay the individual miners. For these transactions they already know that they cannot conflict with whatever happened in the previous block, as they never made those transactions available to the rest of the network (and didn't mine these themselves).
Then there are transactions that, for technical reasons, are known to be "unmined", for example those spending from some coinbase output, or transactions using block height time locks. I believe miners could just add transactions spending (only!) from such outputs.
Incentives aside, would this work? Would this be (much) faster than waiting for the "proper" block template?