In a recent interview with a news portal, David Schwartz, the CTO of Ripple, explained why jams occur during transactions in the blockchain. He also outlined the problems that could occur due to jams such as in the case of Mt. Gox and Bithumb. Schwartz said:
“Unfortunately, because of one design issue in Bitcoin, BTC is especially vulnerable to jams. If I send you 10 BTC and you want to spend two of them, you have to refer to the transaction in which I sent you the BTC. The Bitcoin platform doesn’t function like an account. The actual output is real in Bitcoin. So if I send you 10 BTC, that’s an output and you can claim to send BTC to someone else as well.”
According to Schwartz, the problem occurs when a user refers to the BTC that was sent to them because the user has to refer to them by transaction ID. Therefore, if the transaction ID is not what the user expects, their transaction becomes invalid.
Schwartz stated that if the user has a long chain of transactions that spent each other’s outputs and someone changes the transaction ID on one of them, the chain jams. Due to this, all the transactions that come after it become invalid and someone must manually reduce the congestion in the chain.
When Schwartz was asked about his views on Mt. Gox and how he thinks jams began to occur on the platform, he said:
“A user would think that they can safely spend the outputs of their own transactions because they know their own transactions are good. As long as some basic rules are followed.”
He further added:
“The user might then submit transaction one and five seconds later, submit transaction two which in turn spends the output of transaction one. But the user would have to spend the output of transaction one by transaction ID only.“
According to Schwartz, if somebody changes the signature as well as the transaction ID, transaction 2 will not go through. And if the user forms transaction 3, 4 and 5 based on the earlier transactions, the whole chain will be jammed. That is essentially what started happening to people, says Schwartz.
The cryptographer believes that anyone including a miner or a non-miner can create problems with the jamming issue. If a miner has 50 unconfirmed transactions that they want to include in the block, they could just add a zero byte to the end of every single signature. The transaction ID would then duplicate everything, he says.
Schwartz confirms that the network would jam only if the miner forms a transaction using the output based on transaction ID. A simple workaround to solve the issue is to try not to do that. He said:
“The problem is if you are someone like Mt. Gox where you are producing high volumes of transactions, there is a constraint that you cannot spend the output of any previous transactions. Until it is a 100% guaranteed that you know it is your transaction ID. That is a pretty difficult limit.”
He further added:
“What it means is that you have to have more coins in circulation because you have to wait longer to turn them around. From a security standpoint, you want to have as many coins as you can in cold storage where nobody can touch them. You do not want to have more coins in circulation because that increases your risk.”
Schwartz concluded by saying that what happened to Bithumb and Mt. Gox was because of the problem of malleability. As they were sending Bitcoins to people who wanted to withdraw, they lost track of what they were sending. The platform didn’t want to end up sending the same money twice, he said.