'Why is the network mining the next block, if the current block is not full?

Basically the title.

Isn't this inefficient? What am I missing?



Solution 1:[1]

on average one block is produced by the entire network every 12 seconds (ie., 12 s block time). This heartbeat basically punctuates the synchronisation of system state and guarantees that maintaining a fork (to allow double spend) or rewriting history is impossible unless the attacker possesses more than half of the network mining power (so called 51% attack).

Source: https://eth.wiki/fundamentals/mining

In this case, network security has a higher priority than 100% use of the block capacity.

Solution 2:[2]

After a block is found, it can't be changed.

Proof-of-work blockchain networks like Ethereum can't start mining the next block before the current block is found and broadcast. It's not possible to do since the contents of each block depend on the previous one.

When a miner finds a block they want to broadcast it immediately, since waiting would give other miners a chance to find and broadcast a valid block before them, thus invalidating their block and making it worthless. It is also not possible to add any transactions to a block that a miner has already solved, as doing so would change the hash of the block and make the already found proof-of-work solution invalid.

Not sure how this changes in proof-of-stake situations, perhaps someone else can chime in here.

Solution 3:[3]

You want to have your blockchain network to be predictable, e.g. you want to be able to reason how soon a transaction will be executed. As a result, the network should guarantee new blocks to be generated at some predictable rate; which includes cases when a block might not be full.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Petr Hejda
Solution 2 Billy Hudson
Solution 3 AndrewR