Empty blocks have turned into a controversial topic in the Bitcoin community over the past few months. This renewed attention on the topic has been sparked by the number of nearly-empty blocks mined by Antpool recently.
An empty block is one that only contains a coinbase transaction. This may seem counterproductive, but there are incentives in place that make mining empty blocks a practical endeavor from the perspective of a miner.
Why Do Miners Mine Empty Blocks?
The first issue had to do with a mining pool letting the network know that a new block had been found. This was especially problematic when a miner in China was trying to let nodes on the other side of the Great Firewall know about a newly mined block. Other nodes would essentially be notified of a new block’s existence but would still need to download the entire block over a slow connection.
Block relay time between peers was also a problem in the past, but Corallo’s FIBRE network has mostly negated this issue. FIBRE is a protocol used to relay blocks around a network of nodes with essentially no delay.
Lastly, it takes time for a miner to figure out which transactions are in a block and validate them. The process of validating the previous block’s transactions and removing them from the mempool is the main culprit behind the majority of the empty blocks that are still being mined on the network.
The Decline of Empty Blocks
In 2015 and early 2016, empty blocks were quite common on the network. According to data from Bitfury, a total of 264 empty blocks were mined in November 2015. At an average of 1,994 transactions per block (the average transaction count in completely full blocks up to this point), that’s the equivalent of over 525,000 transactions worth of unused block space. That is many more transactions than the entire network has processed on any single day of its existence.
December 2016, the most recent month for which data is available, only 34 empty blocks were mined. So what happened?
For one, the issue of empty blocks was brought up at the inaugural Bitcoin Roundtable meeting between the Bitcoin mining community and a few Bitcoin Core contributors.
According to Mow, BTCC’s mining pool was able to reduce the number of empty blocks they produced through various architecture improvements involving bandwidth reduction and data broadcast improvements.
Antpool has also made improvements to its own systems.
“We developed a new block broadcast system,” an Antpool representative told Bitcoin Magazine. “Blocks can be broadcast to the world in one to three seconds through this system, the recent system is the final testing, and now there will be some empty or small blocks, but after we finished the test, the probability of [an] empty block appears to be minimum, and we will open source system.”
BitFury, on the other hand, has never mined an empty block.
“Bitfury started to use special techniques to avoid empty blocks because it is against the community,” Bitfury CIO Alex Petrov told Bitcoin Magazine. “We support more transaction processing, and the easiest way to do that is just avoiding empty blocks mining.”
Petrov says he has offered to help other mining pools avoid empty blocks since 2014, but many pools only became interested in avoiding empty blocks in late 2015 as Bitcoin had to deal with full blocks for the first time.
Besides being the driving force behind FIBRE, Corallo implemented compact blocks in Bitcoin Core. In his view, a variety of different factors have led to the decline in empty blocks mined on the Bitcoin network. “It's a question of which things have improved block propagation where, and I think there are a lot of things,” he told Bitcoin Magazine. “FIBRE has made a difference, certainly, but also individual pools optimizing their own stacks makes a big difference.”
Empty Blocks Will Continue to Decline
Of course, there are still more relay improvements on the way, so there is no reason to think the number of empty blocks mined on a monthly basis won’t continue to decline in 2017.
“We're making massive strides in relay in Bitcoin Core in 0.13 [and] 0.14, and were miners to upgrade to some of the last-minute improvements going into 0.14 and use FIBRE, we'd see [empty blocks] once a month purely because the time between when one pool finds a block and when the rest have validated it is so short,” said Corallo.
Corallo is currently working with others on a system similar to weak blocks that is point-to-point rather than across the whole network.
For some pools, it takes less than 500 milliseconds to validate a newly mined block. To this point, Corallo stated, “I'm working on decreasing that 500 milliseconds for everyone so even those who do mine empty blocks only do them for shorter periods of time.”
One final point worth mentioning is that the incentive to mine empty blocks declines as transaction fees take over the block reward as the main source of revenue for miners. A miner will only want to mine a block with transactions in it if the fees associated with those transactions are the source of revenue.