Why All These Empty Ethereum Blocks?
Recently, when looking at usage metrics for the Ethereum blockchain, I came across something surprising. An increase in empty blocks:
That is, blocks that don’t contain any transactions.
My first reaction was: this is not a good sign for the adoption of Ethereum. Are there really gaps of ~15 seconds where no-one in the whole world uses the Ethereum blockchain?!
I think it’s fair to say that Ethereum’s usage metrics generally do not match the interest from developers and investors (yet?), so this explanation didn’t seem all that unlikely.
At the same time, maybe there was something else going on.
If adoption had gone down, then presumably overall block utilization had gone down too?
Sure, a slight trend downwards the last few weeks, but nothing dramatic.
What if something had changed in the mining process itself? One thing to look at could be the number of blocks per day:
Looks pretty stable, churning out ~6,000 blocks per day. Or perhaps the average time between each block:
Again fairly stable, at ~15 seconds per day — as you’d expect from the first graph — with only a slight decrease the last few weeks.
But again nothing that seemed to be able to explain the boost in empty blocks.
A fellow Blockchain Data Triber gave me a clue (thanks Johannes Pfeffer): perhaps some of the miners were up to something?
Before I explain what’s going on here, let’s look at the data.
When we break down our metrics based on who mined the blocks in the last two weeks (which is when the empty blocks started increasing), we see a few outliers:
In particular, there are two miners that have a disproportionate amount of empty blocks (y-axis). The one up in the right corner is F2Pool — one of the biggest mining pools in the world. At the time of writing, it’s among the top 3 miners on the network:
Now, just to drive home the point that F2Pool is the cause of the surge in empty blocks, let’s look at their proportion of empty mined blocks in the last few weeks:
So why would F2Pool do this?
BitMEX Research has a great piece on empty blocks that explains this phenomenon in the case of Bitcoin. Here’s a key passage from their article:
In order to build on top of the previous block and extend the chain, mining pools need the hash of the previous block, but not necessarily the full block with all the transaction data. Mining pools are in a rush to make the chain as long as they can as fast as possible to increase profits. Therefore miners often have a policy of trying to find the next block before they have even had time to download and verify the previous block. If this occurs, a miner typically avoids putting any transactions in the block (apart from the coinbase transaction), as the miner may not know which transactions were in the previous block and including any transactions could result in a double spend, resulting in an invalid block rejected by the network. The term used to describe this type of activity is “SPV mining”.
To support the claim of miners being “in a rush”, empty blocks have indeed been mined ~1.4 seconds faster than non-empty blocks (~13.2 seconds vs ~14.6) over the last three months.
It’s worth nothing that F2Pool is by no means the only miner focusing on empty blocks. Decrypt Media just published a post which takes a closer look at Etherdig — another mining pool which is disproportionally mining empty blocks.
It’ll definitely be interesting to see how this plays out over the next weeks, and what impact these empty blocks will have on the Ethereum ecosystem.
Thanks to the Blockchain Data folks who provided input and insight in solving this little puzzle: Johannes Pfeffer, Evgeny Medvedev, Mats Olsen, and Nirmal Ak. If you work hands-on with blockchain data yourself, you should join our Slack.
The data used for the graphs throughout the article comes from the Ethereum blockchain itself via CoinFi.