piasic_informs

The BTC UTXO problem

The BTC UTXO problem

Core Question

We know BTC as having some of the highest gas fees of all crypto. And that will hardly ever be solved, but why? 

 

Understanding the fees and network

When you perform a transaction, you pay a fee. For bitcoin, that is measured in sats (satoshis) per vbyte. A vbyte is how much data or space your transaction takes up. For a standard average transaction, that is about 200 to 250 vbytes. Each BTC block has 1,000,000 vbytes, which represent 4 million weighted units. Each block can contain an average of about 3,000 transactions. With current conditions, the block size is barely keeping up just on a normal basis. It needs a long period of low activity in order for miners to process transactions stuck in the mempool.

You may also be wondering why it is only 3,000, while 1,000,000 divided by 250 is 4,000. That is because the 250 is an average transaction, but there are transactions that take up more space due to multiple UTXOS, thus reducing how many transaction can fit in a block.

 

How does UTXO impact fees?

UTXO just means Unspent Transaction Output. This is basically the remaining balance after a transaction, so a hard limit.

So, for an example. Say you had 1 BTC. You need to pay your friend because they did something for you. You need to send him about $2000. So you send 0.0235 btc. After paying a fee of about 1 sat per vbyte for a high priority transaction because your impatient like me, you would pay 250 satoshis, which is 0.0000025 btc. After everything is all said and done, you've split your one balance of 1 BTC into 3 parts. The 0.0235 btc your friend gets, the 0.0000025 btc the miner gets, and the 0.9764975 left in your wallet. However, the fee you paid gets absorbed into the block, and so it combines with the base 3.125 btc plus any fees to be one UTXO.

Now, when your friend wants to send those .0235 btc, he will need to pay a standard transaction fee, while you also have to pay another transaction fee to move your remaining share of .9764975. Suddenly, in order to move 0.9999975 btc, you have to pay 2 times more fees and take up 2 times more space on an already congested block to move the same amount as before (this split between 2 people, which is you and your friend, but to the network, it doesn't matter that it originated from the same UTXO, it is 2 UTXOs the moment you hit send to your friend for the .0235 btc).

Now, imagine having accumulated say 100 individual transaction of .01 btc to reach your initial 1btc. Suddenly, when you had to send .0235 btc, you would take 3 of those UTXOs, pay 3 times more fees than the first example, and still have 98 UTXOs left in your wallet (because the third UTXO gets split between your wallet and your friend's). This is the core problem with bitcoin UTXO.

Over time, if everything stayed the same like demand and transactions, then fees would just skyrocket all the time. So people needed a way to sort of reconsolidate these small UTXOs and rejoin them one big balance, so that blocks hold more transactions and you pay less fees. This is why in our 100 UTXO example, the friend will not end up with 3 UTXOs due to the consolidation. Though we will have to pay for 3 UTXOs for the fees.

 

How do we reconsolidate UTXOs?

When you send multiple UTXOs from your wallet as one transaction, you do pay the higher fees and everything, however, once your friend receives the funds, it is automatically melted back into one UTXO instead of multiple. This is useful, as instead of having 100 UTXOs, you actually helped by reducing it to 98 UTXOs. However, now that .0235 btc is one UTXO, when your friend wants to pay .01 BTC to someone else, the moment they hit send and confirm, they just made 2 UTXOs from those .0235, starting the loop over again.

 

Should you request large payouts instead?

This is an interesting topic. In general, you should always request larger payouts over a smaller one. However if you are withdrawing from an earning platform, then you should the opposite. Yes you will pay higher fees to move it later, but you don't want $150 sitting as just a number on a screen that someone can just wipe, claim a terms of service violation on, ban, or run out of liquidity for. But, if doing between real people like family, friends, or big exchanges like Coinbase or Binance, then bigger will win every time. The person sending the crypto will be happy because less fees, and you will too because you have to pay less fees as well when sending (and if they subtract fees from the amount they sent you, then double win for you). 

However, if withdrawing via lightning, the rules go out the window and you should withdraw as frequently as possible.

 

Do other cryptos experience this too?

Well, there are multiple other cryptos that are UTXO such Litecoin (LTC), Dogecoin (DOGE), Zcash (ZEC), and many more. However, these cryptos don't have near the high fees as bitcoin because they have one or multiple of the following: larger/no cap blocks, faster block time, and/or lower adoption. Because people aren't fighting as aggressively for limited space on a block, the fee is way lower, which doesn't heavily penalize high count UTXO transactions as much. However, it is always good practice to look up your crypto, determine if it is a UTXO network, and follow the section just above to save on fees. 

 

Of course, you can be like me and barely use bitcoin, and rather use Account Model networks. These instead of tracking small pieces, function more like a bank balance. When you have say $100 (or 100 tokens for easy math), and someone sends you one token or $1, the network just updates your total as having $101 dollars or tokens. Networks like these include Ethereum, Solana, and BSC. This way, fees stay low and rather predictable.

How do you rate this article?

4


Piasic
Piasic

I love crypto, gold, silver, world news, and anything else happening.


piasic_informs
piasic_informs

Contains everything I write about...

Publish0x Publish0x

Reward the author with $0.01 in crypto, and earn yourself as you read!

20% to author / 80% to me.
Rewards are FREE. Publish0x pays them, not you.

Page not displaying correctly?