Rav3n's Bitcoin simplified: Transaction fees (take two)
My last article about transaction fees has been found too difficult...
This time my goal is, that every Bitcoin user was able to understand, why he need to pay more than he want to.
ReminderIn examples below, to make it simpler, I have omitted some calculations. For detailed numbers refer to my previous article.
How much it is in $$$?Because transaction fee is calculated in satoshi (1/100000000BTC), BTC/USD exchange rate highly affect fee rate shown in USD. In same time, if we also calculate value in USD of BTC we sent (ie $100 in BTC), we can see fee as percent of value we are sending. But sometimes, those calculations are not correct.
Why?There is no correlation between amount (of BTC) we send and transaction fee (in satoshi or BTC) we pay. We can send 100BTC or 0.01BTC and pay exactly the same transaction fee. It's also possible, that in some cases we should pay MORE than we want to SEND. It is possible even when we send from one address in wallet.
Say WHAT?Biggest impact on transaction size (its complexity) has number of times we RECEIVE coins, that we are spending.
If we are sending 0.1BTC that we receive "in one part" (in one transaction) transaction fee will be lower than when we spending 0.1BTC received in 10 transactions per 0.01BTC. If we receive 0.1BTC in 100x 0.001BTC transactions, spending this 0.1BTC will cost us A LOT.
WHY???Spending every incoming transaction have to be cryptographically confirmed, that WE have keys to that address (we are owners of that BTC). That confirmation (digital signature - we are confirming by signing using private key) - transaction input - is 148 bytes long. At current* fee rates (300 satoshi per byte) this give us cost of 0.00044400BTC, and when BTC cost $4500* it give us $2.00 per input.
FOR EVERY INPUT?Lets say, we are proud owners of big/fat cloud mining account. We put lots of USD in it. It pay us every day BTC worth $10. After month we want to cash out BTC on exchange. What will happen?
We have 30 inputs (we get BTC on daily basis). For EVERY input we have to pay $2. In total, we have $300. How much this transaction cost us? Round $60.
WAAT?Yes, in this case you have to pay about 20% of value. And in current* costs and rates - you have no choice.
Now get real, you not earn $10 daily but $1.
How much transaction cost us?
Wait, you have only $30 in account...
I HAVE TO PAY TWICE MORE THAN I WANT TO SEND???
YesAnd you have no choice, if you want to do it NOW.
In above situation, you are unable to spend coins you own. Receiving less than $2 in one transaction you have to spend entire value as transaction fee.
Now third option: you earn $2.5 daily. After month you earn $75. You want to send them. How much it costs?
YOU TELL MEAlso $60, of corse. In fact you send only $15, so you pay four times more than you are sending.
WHY SO EXPENSIVE?You cant do anything witch transaction size (in bytes). Numbers are fixed and determined by construction of transaction, cryptography used etc. If we do above calculations in BTC the result will be identical: smaller amount we get - greater amount of coins we have to spend on fees. If we receive less than 0.00044400BTC it turns out, that we can not spent them. If we receiving only bit more - the lions share we pay for fee.
But WHY 300sato per byte?Because blocks are full. More and mooar BTC users means more and mooar transactions daily. But block size is fixed and limited, so network can confirm specific amount of transactions daily. If there is more transactions - they have to wait in line.
Miners/mining pools are choosing transactions to confirm by earnings they get. Firstly they take transaction that have biggest fee per byte. More you pay - they take your transaction more eagerly. You pay less - wait in line. You pay a lot - you get 1st incoming block.
When it be cheaper?The only way to make transactions cheaper is make Bitcoin higher throughput - allow it to confirm more transactions daily.
First step to it is segregated witness transaction (SegWit), where signatures are not count in transaction size. SegWit transactions also have higher priority than standard ones (for miners). So if we send "by SegWit" we can pay even few times lower fee than standard transaction. Unfortunately, it need to be on segwit address already, and it is still not supported by light wallets nor most of services we use.
Second step will be lighting network (LN), in which transactions will cost single satoshis. But again - to cost so low it has to be in LN already. To send coins in LN we need o use "normal" (or segwit) transaction.
Third option would be increase block size 2x, but despite the simplest - this step is still big unknown...
So, if you have address/wallet in which you have coins gathered from many small inputs you have to pay a lot now, or wait (few moths?) when new stuff be deployed and/or when number of "standard" transactions decrease and allow users pay less fee per byte.
Hopefully, in this article I was able to simplify and dispel all doubts about transaction fees ;]
My previous post abut fees (witch links and numbers): https://steemit.com/bitcoin/@rav3n/rav3n-s-bitcoin-simplified-transaction-fees
*like I said earlier, some numbers are rounded and can not be accurate at time of reading