In the last two months of 2017, the madness hit the crypto market. The price of bitcoin broke record after record and reached a temporary high that was just above the twenty thousand dollar. The popularity made Bitcoin’s scalability problem visible.
The explosion of media attention led to millions of new users and millions of extra transactions with them. Then something that had been foreseen by connoisseurs for some time: the Bitcoin network ran against the limits of its capacity. With a maximum capacity of roughly seven transactions per second, the network became overloaded.
How does that work exactly? Bitcoin transactions are spread over the network and collected in a so-called local transaction pool. Subsequently, transactions in bundles of up to 1 MB are processed in a block and added to the blockchain. The blockchain is therefore simply a chronological chain of blocks with transaction data.
One such block has a maximum size of 1 MB and the average bitcoin transaction is roughly 250 kb, in addition, the network processes an average of 1 block per 10 minutes. This translates back to the aforementioned seven transactions per second. But what if dozens or hundreds of transactions are made per second?
Whoever pays determines or Bitcoin scalability problem
The Bitcoin network uses a kind of auction system. Users can bid against each other to have their transaction processed faster. The miners ultimately decide which transactions they include in a block and then add them to the blockchain. From the point of view of the miner, it is logical that he picks the transaction that pays the highest fee. This fee goes directly to the miner and is the only reason why there are miners besides the blockreward.
Nobody obliges you to pay a high fee. But if you refused to send a competitive fee with your transaction, it could happen that you had to wait days, or sometimes weeks, before a miner processed your transaction in a block and became ‘final’. If you bought bitcoins from one of the Dutch cryptocurrency brokers and had the coins sent to your wallet as a long-term investment, nothing was wrong. But many users sent their coins to an exchange and then actively started trading. Third parties always wait until your transaction has a number of confirmations because they can then only say with certainty that the transaction is irreversible.
So it could happen that you had to pay a fee of twenty dollars or more for a quick confirmation of your transaction at the end of December. This is still acceptable for transactions with a value of tens of thousands of euros, but absolutely not for small transactions.
This ‘network congestion’ caused some frustration for a number of users and Bitcoin’s opponents used the option to write off the digital currency as a serious alternative to the banking system. If the Bitcoin network already had problems with these relatively low numbers of transactions, how could it ever scale up to the capacity needed for a global payment network, they reasoned.
Chances are that these people will have to take their words back in a not too long time. In the background, out of sight of the spotlights and the rise in the price that everyone was working on, the software was (and is) updated every day to come up with solutions. This work is carried out by an ever-growing group of software developers who are not led by the issues of the day and often without having to pay for improving the Bitcoin software.
Which solutions address the scalability problem?
There are a number of possibilities for scaling up the transaction capacity. We can roughly subdivide these options into on-chain scaling and off-chain scaling.
With on-chain scaling, ways are looked for to be able to handle more transactions in the blockchain. This can be done in a creative and elegant way by processing more transactions in a block of 1MB, Segwit is an example of this. Or in a less elegant way simply by raising the blocksize, as Bitcoin Cash did.
SegWit is an abbreviation for Segregated Wittness, freely translated as a shared witness. This refers to the signature that is sent with each transaction in a block. That signature is part of the block and in that sense also includes bytes.
That is like this: one block on the blockchain is 1MB. A part of this is reserved for so-called overhead, the signature falls into that overhead. The rest of that 1 MB consists of information about the transaction itself.
What SegWit does is remove that overhead from the block. There is extra space for more data about the tran