We all know that Bitcoin has been a huge success and that it is based on an innovative algorithm that allows a decentralized ledger to be constructed. However, not everything about the Bitcoin algorithm is perfect and now an attempt to make up for its biggest problem has the potential to cause a split.
Not everyone agrees as to what the biggest problem with the Bitcoin algorithm is. A lot depends on what you think Bitcoin is for.
Some think that Bitcoin is an alternative currency to be used for big infrequent transactions. Others think that you should be able to use it to buy your morning coffee.
Currently Bitcoin isn't really suited to high-volume, low-value transactions for many different reasons, but the main one is the rate at which transactions are processed.
The Bitcoin algorithm builds a ledger of transactions - the blockchain - using a proof-of-work authentication algorithm. Transactions which are candidates to be added to the ledger are grouped together into a block. Miners then verify the block and compete in a race to complete an algorithm. When a miner has solved the problem they have the right to validate the block and add it to the ledger. They also get a reward of newly minted Bitcoins for their effort. The miner who solves the problem can be considered as being picked at random (pseudo random to be closer to the truth). This means that it isn't possible to forge a block and self verify it. The proof of work algorithm means that miners have no incentive to cheat.
The problem is that the algorithm modifies the difficulty of the proof of work task so that it takes about ten minutes. Given that a block cannot be bigger than 1Mbyte you can see that that this limits the number of transactions per second. Currently is it around 3 per second, which needs to be compared to the VISA network which processes 20,000 plus transactions per second.
You can't change the proof-of-work algorithm easily, but increasing the block size would increase the number of transactions per second and this is what the argument is all about.
Gavin Andresen and Mike Hearn, two of the five core developers, have released Bitcoin XT, an alternative version of the core software that supports increasing the block size when required.
It is suggested that if XT is adopted then the default block size should go up to 8Mbytes, which would allow 24 transactions per second to be processed. There are other improvements in XT but the block size is the controversial issue.
Why could increasing the block size be something to object to?
There are some strange objections which are more to do with the very nature of the Bitcoin technology. Currently the complete ledger is over 40GBytes, which has to be downloaded in its entirety to operate a full node. Once downloaded the ledger is updated incrementally. It is argued that a bigger block size would deter smaller operators from dealing with Bitcoin. This doesn't seem to be a reasonable objection because the size of the ledger is a function of the total number of transactions.
The increased difficulty of the proof-of-work algorithm because of the bigger block size could mean that smaller mining operations give up, resulting in a centralization of the mining operation. However, as the time to complete the task is always adjusted to be ten minutes this seems unlikely.
A more serious complaint is that bigger blocks propagate more slowly and this might cause an increase in the orphan rate. An orphan block is one that has been mined but has been displaced from the blockchain because another miner had a block accepted by more nodes. If propagation times increase then orphan blocks become more common.
So how to resolve the issue?
Interestingly the same sort of decentralized voting characteristic of the Bitcoin algorithm is being used. The Bitcoin XT is currently compatible with Bitcoin core, making it possible for miners to adopt the new software without making the change to a larger block size. This will remain the state of things until January 11, 2016, when a change will occur if 75% of the mining operation is using XT. If this threshold isn't reached then the block size will stay at a 1MByte max.
If the threshold is reached the result will be an effective fork of Bitcoin. The 25% of miners not using XT will form one blockchain and the 75% using XT will form another. If good sense prevails then the minority will move over to XT and there will still only be one Bitcoin. Anything else is likely to damage the currency.
Bitcoin really is an ongoing experiment in distributed authentication and cooperation.
To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin, or sign up for our weekly newsletter.
When it first appeared on the scene, Github was one of a kind and a true visionary amongst its rivals still using Subversion, Bazaar or Mercurial as their source control system.
After an outcry from its existing customers when it announced a new a subscription service for its range of desktop developer tools, JetBrains has now settled on a pricing model that includes a Perpetual Fallback Licence. Is this enough?
- PowerShell Replaces Command Prompt
- Revealing the Who and Why of Node.js Use
- Uber Drivers Gaming the Algorithm
- Competitive Self-Play Trains AI Well
- Microsoft Showcases Key Value Store
- Top 10 From Around The Web: More Angular Resources
- Google Invests $22 Million In A Fork Of Firefox OS
- Microsoft Open Sources PowerShell And It Runs On Linux
- SQL Server Development Edition For Free
- Go 1.7 Goes Faster and in More Directions
- Help Choose Next EE4J Name
- Microsoft's Astoria Android Emulation Might Not Happen
- Algorithms & Data Structures MicroMasters