To fee or not to fee, that is the questionA fresh look at the Bitcoin block size
Author: Michael Pickens
Email: [email protected]Date: November 10th 2015
BIP: 100.2
Many thanks to Jeff Garzik's and his BIP 100. He is an outstanding Bitcoin contributor, and he's had a positive influence on the creation of this BIP.
The 1 MB block size discussion has highlighted the inherent limitations to decentralized and heavily distributed blockchain technology; especially Bitcoin as it is implemented on a global scale. The heated debate has also highlighted the virtue of centralized systems; they are fast, cheap, scale easily, and very efficient. How do you compete with that? At Bitcoin's foundational layer, you simply don't. This realization has created a great reflection point for bitcoiners world wide. So then, what is Bitcoin's greatest value? Well, it provides a (financial) communication channel that is uncensored, transparent, global, available to all, robust, and incorruptible! What a priceless and precious tool; yet, it does come at a cost. The originators of Bitcoin had a mechanism for creating fair trade between those that use this invaluable service and those that provide it. It is called the Miner's Fee.
“The fees go to the miners to incentivize them to keep mining, which in turn keeps the Bitcoin network secure. They already get a reward of 25 bitcoins for each block they mine, but this reward halves every 4 years. The plan is that as the block reward diminishes over time, it will be replaced by transaction fees.” - bitcoinfees.com
The reality is this; the method for assessing a “fair” fee is underdeveloped. There are no tools of communication between users and miners nor between miners themselves for deriving an appropriate fee value. Regardless of the fee paid, the same quality of service has been rendered almost every time (with the exception of spam transactions). As we look at this upper limit on the block size, does it not cause one to ponder over the current fee system? Isn't a “little” competition to get processed into the block chain in a “timely” manner a good thing? Not that we shouldn't increase the upper cap, because we should, but it should be done while taking a serious look into the nonexistent fee market. And maybe, just maybe, while improving the fee system the best solution for removing the cap size altogether will come into everybody's view.
So, it all boils down to defining a healthy yet simplistic relationship between the fee value, confirmation time, and the block size. The truth is bitcoin miners already have control over this relationship. It's just waiting for them to embrace it. They can already pick and choose what transactions to include and exclude from the blocks. So, the idea presented below is not a complete solution to the current block size issue; however, it is definitely a step in the right direction as it empowers the miners vs. simply giving them a few choices. Plus, there is no hard (or soft) fork involved!
Block3 InclusionThe cubic function can be a concise way of expressing a relationship between block size and fee price. It has 3 vital elements: number constant, linear slope, and exponential rise. The number constant can influence a stable fee value during low transaction volume. The linear portion determines a gradual increase in fee price as transaction volume gains which in turn demands larger block sizes. The exponential part can create a flexible wall of resistance as the block size approaches magnitudes that are not healthy for a decentralized/distributed network, yet theoretically, it wouldn't create a hard limit.
Y = aX3 + bX + c Y is the minimum
fee/kB ratio for block inclusion
X is the size of the block being mined
a, b, c are the parameters determined by the miner. The first two parameters,
a & b, are always
positive. Parameter
'c' can be positive or negative.
Now, on to implementation. It all starts with each miner determining the cubic function parameters a, b, and c that best express their perceived value of “Bitcoin as a service”. Then the following code will determine which transactions are included.
Pseudo Code:Order all non-confirmed transactions by their
fee/kB ratio into a list.
Reset block size
X to 0.
Get first transaction on the list;
Y = transactions'
fee/kB ratio
While the following is true
Y > (aX3 + bX + c ) Include transaction into block
Update the block size
X Get next transaction on the list;
Y = transactions'
fee/kB ratio
Example:Here's a “feel good” example with the following parameters for the cubic formula:
a = 3 x 10-12 b = 1.5 x 10-6 c = 3 x 10-4
The parameters that define this graph indicate that if the transaction volume can be satisfied with block sizes of 200 kB or less, then all transactions are included even those with no transactions fee. with block size demands between 200 kB and 600 kB there is a gradual almost linear increase, but afterward, the curvature of the parabola starts to kick in increasing the fees dramatically. Note, the parameters that the miners choose for this formula are dynamic; they can be adjusted often to accommodate external factors. What is really exciting about all this is that it adds meaning to the transaction fee. Before, it was more of an anti spam mechanism and a miner tipping service, but now, the fee can correlate with speed/quality of service.
It's a'block TimeThe following graph gives a good visual representation of the price for blockchain participation (speed vs. fee/kB). Notice that on the fee/kB axis, it is not quantified, for that is also a function of transaction volume or demand from the users. It will be updating continuously throughout each day.
The varying fee sizes per kB have been divided into several categories with descriptions of anticipated service quality. Again, this graph and these categories are more to convey a vision of how the fee market could develop into something healthy. The end result will more likely be some variation of what is understood here.
Fee Size: Speed (Service Quality)Cheapskate: May never make it into the blockchain.
Cheap: Could take a while. Small risk of indefinite exclusion.
Economy: Time doesn't matter. Processed during low volume. Good value.
Slow: Within one hour.
Fast: Within ½ hour.
Expedite: Next block.
Love those Miners: Next block. Showing some appreciation to the miners.
Just a “miner” Communication DetailThe parameters selected for determining fees should be broadcast with each block solved. Every miner is going to have different and varying parameters and it is essential that they be communicated to the customer base for a robust fee market. How? What's the preferred way? The parameter data could be included in the block itself or the block could simply contain a hash of that data where it is then broadcast later and maybe through different channels if so desired. As each miner states their voice using the hashing power they control, bitcoin users will have a solid understanding of the fair trade value to communicate on the blockchain.
Fee Sharing A powerful gesture of collaboration
The article “'Devastating' protocol flaw could paralyze Bitcoin system” written by Dan Goodin stated the following:
“As the currency grows into [full] maturity… the verification of other transactions will be Bitcoin's sole reward scheme. And therein lies the flaw that could represent a chief stumbling block.
With each participant rewarded only for verifying a proposed transaction, there will be little incentive for participants to broadcast transactions to others. Instead, they will want to keep the deals secret so they don't have to share the rewards with others.”
There is a nugget of truth from this article and the problem it highlights is echoed in the attempt to establish a relationship between block size, fee price, and quality of service. What miner in their right mind is going to limit the amount of transactions that are included in their block when money is on the line? The bitcoin mining network is not a homogeneous community, yet everyone has a vested interest in its overall success. What can be done?
There is only one solution to this! Short of a fork, I would be willing to share all the collected fees in a block with the coinbase addresses of the last 100 blocks. Are you up for doing the same? This would create a movement to reduce incentive for selfish mining. If enough miners join the movement to solidify a more homogenous community then that would be a powerful statement to all bitcoin developers scrambling for a non-existent bullet proof solution to the block size issue. In the end, there has to be a little bit of trust that enough miners want to do the right thing. Later, it could become protocol in the next update.
Artificially Decreasing the Block SizePathway to NO Block limit
Here's a novel suggestion. While “we the miners” demonstrate commitment to the overall success of the bitcoin/blockchain service, why not also demonstrate restraint in block size growth. For example, if enough miners select parameters that create exponential fee resistance around 0.5 MB block size, it wouldn't create a hard limit yet it would communicate confidence to the development community and the world that the block size growth issue is going to be handled just fine. Yes, this would contribute temporarily to higher fees, but is it not worth it to jump start the fee market and get this critical issue solved in a meaningful way?
So, is there a Fork?In this BIP, there was no demand for a Fork, not even a soft one. But rather, information was presented to inspire the creation of tools that would empower the miners with the ability to fully express themselves in how to deliver their service. Tools that would open communication between miners and between miners and bitcoin users. Information to provoke thought and perception of the block size issue from a new angle. Ideas to invigorate a more homogenous mining community. As mentioned before, this is not “The Solution”, but rather a potentially positive step in the right direction. In my personal opinion, it is a necessary step before the proper resolution can be found to the block size issue.
So far, the majority of the solutions out there appear to default to a small increase in the block size limit now while working on a better solution in the future. If it comes to this, I'm personally in favor of a modest increase to 2MB.
A big thank you to all persons contributing and engaging the community in a positive manner.
Slim's Bitcoin (
www.SlimsBTC.info)
Influential Leadership to Empower a New World