E.g. this block has 0 transactions
Is there any technical/ strategic reason for appending such a block to the blockchain?
To make my question more explicit: Why is the block created despite there is no transaction?
Cardano Stack Exchange is a question and answer site for users and developers of the Cardano cryptocurrency ecosystem. It only takes a minute to sign up.
Sign up to join this communityE.g. this block has 0 transactions
Is there any technical/ strategic reason for appending such a block to the blockchain?
To make my question more explicit: Why is the block created despite there is no transaction?
In order to understand this you have to understand how mining works and this is generally applicable to all blockchains. With mining there are two main types, PoW (proof of work) and PoS (proof of stake).
Regardless of the method employed miners compete to solve blocks. In the case of PoS miners stake funds and one is selected to solve or "mine" a block based on their stake. With PoW miners compete based on finding the lowest hash value below a certain threshold.
In both cases however miners get rewarded for solving a block. They usually get a portion or all of the transaction fees for the transactions included in that block so will include as many as they can or the highest paying ones but there is also usually a reward for solving the block so miners will try to solve it even if there are no transactions.
With solo mining a miner will get all of the block reward and eligible transaction fees for solving it. In the case of pooled mining miners get rewarded a portion of rewards based on their submitted shares out of all shares after a block is solved. But in both cases there's competition for solving blocks so miners will include empty blocks if no transactions are present.
This just means that no transactions happened between the previous block (5387367 at 02/25/2021 5:54:30 PM) and the actual block (5387367 at 02/25/2021 5:54:31 PM).
This behaviour does not affect rewards either: transaction fees are combined together at the end of the epoch and added to the amount of reserves that are being split among the stake pools. This way, it doesn't matter how many transactions a block has in it from a consensus protocol perspective.
I was just asked to review an answer to this question and thought a different viewpoint might be beneficial to new devs.
I'm sure that you will have heard of the block size wars at some point. This was an event in which the bitcoin community was divided into two camps to keep the same block size or increase it. The key point here is that in the bitcoin protocol blocks have a consent frequency at which they are made. If you multiply this frequency by the number of transactions in a block you get how many transactions a blockchain can process. The problem is that if each transaction takes up some space in a block and blocks have limited space in them meaning there's a cap on transactions. Increasing block size would up that limit.
Now Ethereum has a different approach in which the frequency of blocks is set but the size of blocks is variable (higher usage means bigger blocks). In Cardano we have a different approach in which we have slots and can put the blocks into the slots. Now it's possible to have empty slots i.e. slots with no blocks.
If you understand all that then its should be clear that always having empty blocks appended to the network would prevent transactions from happening and make the chain come to a halt. So it can be considered as an attack on the network.
There is another thing that would tell you why some actors are incentives to make blocks with no transactions in them. That is that in some networks miners are asked to make temporary blocks from the mempool which would be added to the chain if the node making the block wins the right to do so. All temp blocks by the nodes that did not win are discarded.
Now you should be able to conclude that these nodes would be incentivised to put less computational resources into processing the transactions in the mempool and more into winning the round.
That leads to the conclusion that when a block with no transactions is added it normly means one of 3 things:
No transactions in the mempool i.e. no accounts trading value;
An Attack on the Network Is occurring;
Someone gamed the system.
Note: this is in addition to the answer by @Prom not in spite of it. When you combine both answers you get the full picture.