Bitcoin Transaction Fees and UTXO Management
When bitcoin blocks are full, highest fee transactions are confirmed first.
- bitcoin transaction fees limit network abuse by making usage expensive
- there is a cost to every transaction, set by a dynamic free market based on demand
- it is an incredibly robust way to prevent spam without relying on centralized entities that can be corrupted or pressured
- when bitcoin blocks are full, miners will often choose highest fee transactions first
- pending transactions sit in node mempools awaiting confirmation: can conceptualize mempools as a line to enter a restaurant sorted by who is willing to pay the most
- if you are willing to wait for your transaction to confirm you can pay significantly lower fees
- your bitcoin wallet may show a single balance but the reality is that it is made of many different unspent transaction outputs (UTXOs)
- when you make a bitcoin transaction your wallet will select as many UTXOs as necessary to reach the amount of bitcoin you wish to send
- onchain transaction fees are calculated based on size in bytes not the amount of sats sent
- the more UTXOs required on the input side the higher the fee paid
- from a cost perspective you want to consolidate UTXOs, fewer UTXOs with larger amounts
- consolidation has privacy tradeoffs though: you link any UTXOs you consolidate as owned by the same person + larger UTXOs mean you will dox more of your stack to anyone you pay in the future
Therefore you want to reduce the number of UTXOs you have while being mindful of the privacy concerns.
Lightning Transaction fees are calculated differently: based on the amount in sats sent. Opening lightning channels when fees are low can enable you to save money in the future when fees rise. 🤙
If you found this post helpful support my work with bitcoin.