Search on TFTC

Issue #373: Bitcoin, fungibility, and CoinJoins

Dec 5, 2018
Marty's Ƀent

Issue #373: Bitcoin, fungibility, and CoinJoins

It's been a minute since we dove into something a bit more technical here at the Ƀent. This is definitely a product of the fact that the editorial team at this here rag is not the most technically savvy team in this space. Though, I think today's subject should be an imperative focus of Bitcoiners the world over as I strongly believe fungibility will be the next big "war" we face as a nebulous movement of individuals running software to verify the rules of our money.

Remember when Steve-O snorted wasabi?

For those of you freaks who may not be too well versed on the concept of fungibility, it is the property of a good or commodity that makes it so each unit of said good or commodity is seamlessly interchangeable. One unit of said good is indistinguishable from another unit of the good e.g., $1 bills (unless you want to go full hardo and call out the serial numbers on the dollars that no one checks). Right now, Bitcoin's fungibility is not the best. Due to the nature of Bitcoin's UTXO-based accounting system, each UTXO is pretty unique, making them somewhat easily traceable on the blockchain throughout time using simple heuristics. If we expect Bitcoin to succeed in the long run, a large contingency of users (myself included) believe we'll have to make it so BTC is completely fungible in the future.

As with every decision associated with these distributed systems, there are inherent tradeoffs to take into consideration. While searching for the most optimal path forward in regards to making bitcoin more fungible, we must lay out the options and weigh the tradeoffs. At the moment, in my mind at least, there are two distinct paths which we can venture down to achieve the goal of fungibility; iterate at the wallet UX level with things like CoinJoin (as is doing), or implement something at the protocol layer that makes the UTXO-set inherently fungible.

When it comes to tradeoffs, attempting to achieve fungibility at the wallet level via CoinJoins comes with the burden of increased fees, though these fees could be greatly reduced in the future if Schnorr signatures are adopted by the Bitcoin network. If we decide to attempt to achieve fungibility at the protocol level via an upgrade, there comes a risk that we may not be able to verify that there hasn't been an inflation bug that has resulted in the minting of more bitcoins than has been agreed upon. Some people think there are certain things we could add to the protocol layer that would allow us to verify total supply when needed, but the likelihood of implementing these solutions seems to be low at the moment from what I can glean. What tradeoff do we make as users? Do we take on the burden of pricier transactions to ensure the supply cap is respected? Or do we enable complete fungibility at the protocol level, potentially taking away the ability to confirm the supply at any given point in time?

These are tough questions we should be asking ourselves right now. While I'm sure there may be some fudged details above, I think it's more important to get this ball rolling ASAP, so please correct me if you caught any inaccuracies.

What do you freaks think? How should we procede? Is fungibilty really that imperative?

Final thought...

When I was kid, my babysitter forced us to eat soft pretzels with mayo. I often wonder what insane asylum she's living in now.


Current Block Height

Current Mempool Size

Current Difficulty