By now, we all know the Magic the Gathering Online Exchange says it came undone because of a gap in the Bitcoin protocol called “transaction malleability”. Now, two ETH Zurich researchers have rubbished that claim.
In this paper at Arxiv, Christian Decker and Roger Wattenhofer analyse a year's worth of Bitcoin activity to reach their conclusion.
Mt Gox's complaint centred on how Bitcoin transactions are recorded by the exchange versus how they appear in the public blockchain, as follows:
“A user could request a withdrawal from Mt Gox to a Bitcoin address. The exchange would then create a corresponding transaction and publish it to the Bitcoin network. Due to the way MtGox tracked confirmation of these transactions it could be tricked, exploiting transaction malleability, into believing the transaction to have failed even though it was later confirmed by the network. MtGox would then credit the amount back to the user’s account.”
The paper also notes that “a malleability attack is said to be successful if the modified version of the transaction is later confirmed”.
The researchers were interested in such attacks long before Mt Gox got into trouble: they had created specialised Bitcoin nodes in January 2013, the purpose of which was to “trace and dump all transactions and blocks from the Bitcoin network. These include all double spending attacks that have been forwarded to any of the peers our nodes connected to.”
By extracting transaction keys from the transaction set, the researchers say, they were able to identify more than 35,000 transaction conflicts and more than 29,000 “confirmed attacks” covering more than 300,000 Bitcoins.
Successful attacks, they state, can be identified because they're eventually confirmed in a block – and this was much rarer:
“Out of the 28,595 malleability attacks that used an OP_PUSHDATA2 instead of the default OP_0 only 5,670 were successful, i.e., 19.46% of modified transactions were later confirmed. Considering the value in malleable transactions the success rate is comparable with 21.36%. This reduces the total profit of the successful attacks from 302,700 to 64,564.”
In the period from January 2013 to February 7 2014, when Mt Gox halted withdrawals (therefore blocking any transaction malleability attacks), the researchers say, there weren't enough “conflict sets” to account for the 750,000 Bitcoins the exchange said were lost. ®