In a candid discussion on Reddit, Bitcoin Developer Gregory Maxwell has provided some insight into the technical difficulties being faced by Mt.Gox and dismisses rumours of insolvency. His musings point to practical obstacles posed by Mt.Gox's use of the Bitcoin protocol and their custom wallet implementation.
Insolvency - "just hysteria"
First of all, it is noteworthy that Maxwell dismisses allegations of Mt.Gox's imminent insolvency as "just hysteria". But then, what exactly are the supposed causes of the massive disruption during the past few months and why the absolute lock-down this past Friday?
The explanation being offered by Mt.Gox, namely that "system issues" are causing random BTC transactions to fail, may very well turn out to be true. In his Reddit post made yesterday, Greg Maxwell described some potential issues in the custom Mt.Gox wallet implementation that he became aware of in the course of informal consultations. Three known issues had, over the course of the past four months, led to apparently random Bitcoin transaction failures.
Immature Coin Spend
The first issue, according to Maxwell, became apparent around September last year when an earlier version of the Mt.Gox wallet software had a bug whereby it was unintentionally spending immature coins. Newly mined BitCoins that are less than 100 blocks deep inside the blockchain cannot be spent, and any transaction involving them will fail. This matter was apparently addressed via a workaround that ensured the Mt.Gox wallet software spend the oldest coins first.
Signature Encoding Standard
Soon afterwards, security fixes being implemented by the core Bitcoin developers, again impacted Mt.Gox's Bitcoin transaction failure rate. The core developers were tightening the handling of transaction signature encodings which, in turn, required adaptation of the Mt.Gox wallet software.
The complex and, therefore time-consuming, coding changes at Mt.Gox meant that there was a period during which transactions with invalid signature encodings were being produced, but not being relayed by network nodes running the new version of the Bitcoin protocol. Of course, more transaction failures resulted and due to a complicated round of attempted "fixes" an unfortunate condition resulted whereby transactions, having originated from Mt.Gox but failing to relay, were reinserted into the Bitcoin network. They now had valid signature encodings but their transaction IDs had become mutated in the course of attempts to "fix" their previously unexplained failure to relay.
Maxwell believes that these malformed Bitcoin transactions had caused the exchange wallet to double-spend the affected coins - a condition made worse by the "spend older coins first" workaround mentioned previously. This is because older coins are more likely to have a non-standard signature encoding - something that the standard user wallet handles gracefully - but the cause of critical failure in custom wallets that have not been enabled to convert transaction signatures. Confirmation of what Maxwell suspects is made by in an unrelated blog comment, where the user independently arrives at the same conclusion:
Hence, the compound effect is that Mt.Gox experienced multiple BTC transaction failures for different reasons. In this context, their announcement of having to stabilize "the system" begins to make sense.
According to Maxwell, the software issues have been identified and fixed. Due to the sheer bulk of transactions flowing through Mt.Gox and the mission critical nature of their custom wallet, the task was neither quick nor easy. With the software bugs resolved, there now remains an accounting disaster to tease apart and clear up. Which BTC transactions belong to which clients? Which failed for legitimate reasons and which failed due to wallet software issues? Needles and haystacks come to mind...
Ongoing Operational Issues
Of course, the rumours of Mt.Gox being understaffed and their truly abysmal communication failures do not inspire much sympathy. Whether it is true that these technical issues are the cause of all BTC transaction troubles at Mt.Gox remains to be seen. Better customer service and communication could have clarified all of the above as they were identified. Mt.Gox must still face the ire of all those customers who had been locked out of their currency holdings with apparent impudence and no care for answers or explanation.
Be sure to visit CCN on Monday 10 February 2014 for coverage of the Mt.Gox public announcement.