The Coinbase development team has been accused of “technical incompetence” after amassing millions of UTXOs through careless housekeeping. Unspent Transaction Outputs, or UTXOs, are the change that’s left after sending a bitcoin payment. Wallet providers are supposed to sweep these crumbs up and bundle them in with future transactions. Coinbase, it transpires, has been hoarding its, creating an expensive digital mess, and raising questions as to its readiness to implement scaling solutions.
Coinbase: Dust Collectors Par Extraordinaire
Unspent Transaction Outputs aren’t something individuals generally have to worry about. Every time a user sends a transaction, the wallet is supposed to package up the shrapnel in the most efficient way possible. Smart use of UTXOs is like using the change in your pocket to buy a beer. Conversely, if you were to break a $20 bill every time you bought a drink at the bar, you’d finish the night with pockets weighed down with change.
Coinbase seems to have accumulated an insane amount of UTXOs, which is consequently taking its toll on the bitcoin blockchain. The more UTXOs there are, the bigger the size of the transaction in bytes. This was well explained in a piece Jameson Lopp published on The Challenges of Optimizing Unspent Output Selection. In it, the Bitgo engineer wrote:
Although a bitcoin transaction can contain hundreds of inputs and hundreds of outputs, this comes at a cost. The more inputs and outputs a transaction has, the larger the data size of the transaction.
Lopp lists four reasons why it’s beneficial to optimize UTXOs: preventing blockchain bloat, supporting high transaction volume, privacy, and minimizing transaction fees. Inefficient use of UTXOs leads to fuller blocks, further exacerbating the scaling problems that have been blighting bitcoin. Coupled with Coinbase dragging its heels over Segwit, this latest revelation has caused some controversy.
Segwit’s defining feature is its ability to compress transaction data, thereby reducing fees by between 30 and 40%, but Coinbase has been conspicuously absent from the Segwit party. There’s been talk of them implementing Segwit in 2018, but that’s about as precise as they’ve got.
Going OTT with UTXOs
Coinbase has one wallet containing 265 BTC with 1.5 million UTXOs, and on several occasions in the past year has sent transactions where the fee was greater than the coins. One data analyst, LaurenMT, opines that neither Segwit nor Lightning Network would help here – the best solution, he advocates, is bigger blocks. That’s the model most famously used by bitcoin cash, and as anyone who’s been following the scaling debate knows, Coinbase isn’t big on big blocks.
To have over a million Unspent Transaction Outputs associated with one address – regardless of the amount of bitcoins it contains – is astonishing. LaurentMT pointed out that this would mean the combined transaction fees for all of the UTXOs would cost more than the value of the coins in the wallet.
Podcaster Trace Meyer was particularly scathing of Coinbase and its failure to batch transactions and consolidate UTXOs, concluding: “Bitcoin needs less whining & more competent coding”.
Coinbase has had a tough week, what with accusations of insider trading and the ire of traders who lost money when Gdax shutdown as bitcoin cash hit an all-time high. It is an exchange that moves at its own pace. This cautious approach often makes Coinbase last to the races: last to add Segwit, last to distribute bitcoin cash, and last to add altcoins.
“By being thoughtful blockchain engineers we can at least prevent the UTXO set from growing faster than is needed,” wrote Jameson Lopp in 2015. Coinbase seems to have missed the memo, and this failure to clean up its digital dust is costing the company money – while doing nothing for the blockchain that everyone relies on. Before Coinbase can look at Segwit, it needs to examine its existing codebase and put its house in order.