We have already installed your Bitcoin wallet and might have even tried to do your first transaction. If you succeeded - well done! If not, not to worry. All of us still have to learn about Satoshis, transaction bytes, how not to pay extra fees. Let's jump into it!
1 BTC = 1000 mBTC = 100 000 000 Satoshi
mBTC - literally means milliBitcoin (mBTC and BTC are like millimetres and meters in real life).
Satoshi - is 10-8 of Bitcoin. This is the smallest unit of Bitcoin. It is named after the creator of Bitcoin - Satoshi Nakamoto.
All current wallets are built around convenience so that users don't have to think about what is happening (but let's face it, it's a very long road before we can actually call them convenient). The way it works is users enter the wallet address where they want to send the money to, the amount they want to send, fee amount, their password to confirm the transaction and the transaction is processing on the network.
Let's user Electrum wallet as an example.
If you move the "Fee" slider the fee amount will change from 0.0166 mBTC to 1.0586 mBTC. In the meantime, you may notice that the transaction speed is changing from 1 block all the way up to 25 blocks.
You might have encountered the concept of transaction bytes before, but it's worth emphasising it again. If you click on the preview button in your Electrum wallet you'll see transaction details.
Highlighted in red is the size of the transaction. How is it calculated?
Bitcoin transactions work in a bit of a weird way. Say, your friend sent you 1BTC. You want to spend 0.5BTC on something, so you open your wallet, file a transaction and send it. However, instead of sending 0.5BTC you will send the whole Bitcoin (1BTC) and will receive 0.5BTC as "change". You can sort of compare this process to cash. If you have $100 and you want to spend $50 on something, you'll pay your $100 note and get $50 note back as change.
Every transaction is a piece of code which takes into account previous transactions and where the transaction is supposed to go. The more addresses partake in this process - the longer is that piece of code is.
For example, you received 1BTC from Robbie, 2BTC from Haydn and 5BTC from Simona. You decide to send all your Bitcoins (8BTC) somewhere else. That means that your transaction will take into account all 4 addresses that were used to send Bitcoin to you!
1. Each address from where you receive Bitcoins will equate to ±148 bytes.
2. Each address where the Bitcoin will go is ±34 bytes.
3. Additionally, each transaction takes ±10 bytes no matter the number of addresses involved.
In our Electrum wallet example, there are 2 input addresses and 2 output addresses. Therefore:
148×2 + 34×2 + 10 = 374 bytes
My estimation is pretty correct. Electrum is showing 372 bytes.
Let me make it clear. It doesn't matter what amount of Bitcoins you are transferring. The fee will stay the same. What matters is the number of addresses that are participating in the transaction. That's what impacts the fee.
Below, is an example transaction code. If you want to read more about how it is generated, I recommend reading this.
01000000 01 be66e10da854e7aea9338c1f91cd489768d1d6d7189f586d7a3613f2a24d5396 00000000 8c 49 3046022100cf4d7571dd47a4d47f5cb767d54d6702530a3555726b27b6ac56117f5e7808fe0221008cbb42233bb04d7f28a715cf7c938e238afde90207e9d103dd9018e12cb7180e 01 41 042daa93315eebbe2cb9b5c3505df4c6fb6caca8b756786098567550d4820c09db988fe9997d049d687292f815ccd6e7fb5c1b1a91137999818d17c73d0f80aef9 ffffffff 01 23ce010000000000 19 76 a9 14 a2fd2e039a86dbcf0e1a664729e09e8007f89510 88 ac 00000000
How do miners work?
Miners are not stupid, they want money! Never forget this. No matter if they are just talking about mining or forks - they are always thinking about money.
After you send the transaction to Bitcoin's network it really quickly spreads across the whole network and ends up in the mempool. Mempool is a queue of transactions. The best way to think of the mempool is as if it is a bottleneck.
As of the time of writing the Bitcoin block size is 1MB and the time it takes to find one block is 10 minutes. Each block may contain between 2000-3000 transactions.
I'll repeat myself again. The whole "thing" with cryptocurrencies is that everything is open and accessible. So, for example, you can take any block and look inside it to see what transactions it had, how many of them there were, how much the miners got, what the block size was, etc; https://blockchain.info/ is the service I'd recommend for that.
You can check the mempool size here:
At the time of writing, the mempool size is 26MB. This means that only 3.85% of transactions can be put on the block. The rest will be kept in the queue.
How is the queue determined? Whoever pays more is at the front! Important note, users are normally looking at the fee they will be paying for their transaction and miners are looking at how much each byte of the transaction costs!
That is why I was talking about addresses at the start of the post! If James pays 0.1mBTC for a transaction and his transaction only has 2 inputs (addresses that sent him BTC) then his transaction will go through quicker than Sarah's transaction who put his fee at 0.5mBTC but has 20 inputs instead.
How much should I pay for a Bitcoin transaction?
Before making a Bitcoin transaction it is always a good idea to check how large the mempool is. If the mempool is reasonably small then your transactions will go through pretty quickly, if not then it'll take longer.
I recently tested Bitcoin's network and transaction fees. If the mempool size is around 4MB our 225 bytes transaction with a fee of 1 Satoshi/byte got approved in 3 blocks. We paid 225 Satoshis = 0.00000225 BTC = 0.02USD.
From my experience, the wallets have always given me the wrong number of blocks (time) needed for the transaction to go through when I am choosing my fee. Why is it important? Let's assume there are 10,000 transactions in the mempool, the next block can only take 2500 and there are 9000 transactions sitting there with the 1 Satoshi/byte fees. In this scenario, there is no point for you to put your fee up to 10 Satoshi/Byte because even with the fee of 2 Satoshi/Byte you'll end up in the first block.
Look at http://bitcoinfees.21.co.
This service shows you what kind of commissions people paid in the last 24 hours and in the last 2 weeks. Under the chart, you will be able to see the optimal fee which you should set if you want your transaction to go through in the next few blocks.
At the time of me writing this post, the size of the mempool is 26MB. This is what the website has to say about that:
The fastest and cheapest transaction fee is currently 30 satoshis/byte, shown in green at the top.
For the median transaction size of 225 bytes, this results in a fee of 6,750 satoshis.
The size of the transaction is 225 bytes the website recommends you to pay 30 satoshis per byte. Therefore the total fee for the transaction would be 4500 satoshis (0.0450mBTC or 0.5USD). This isn't too bad, especially considering that it used to be around 450mBTC (2.5USD).
Normally, exchanges don't allow you to set the fee you'll be paying for the transaction. Each exchange has their own fixed fee. For example, Bitfinex Tx Fee = 0.0005 BTC (2.75$). The problem is that we don't know how much exchanges pay to the miners and how much they leave for themselves.
A few months ago my friend had to wait around 10 hours for his transaction to go through even though he paid quite a large fee.
- Bitcoin fees do not depend on the amount you are transferring (no matter if it is 0.001BTC or 10,000BTC).
- When you are choosing your fee it is best to calculate it as cost per byte.
- Before making a transaction it is best to look at the mempool and bitcoinfees.
- Exchanges don't let you set a fee. We don't know what fee they pay to miners and what fee they take for themselves.
Let's do some maths. Bitcoin is often compared to the payment systems like Visa, MasterCard, etc; or with the services like WesterUnion. Let's calculate everything for ourselves.
Number of transactions: 2823
Rewards to the miners: 12.5BTC + 0.54BTC = 13.04BTC (142,354USD)
On average a cost of 1 transaction is: 50.42USD
Whoah!! Whoah! Is everything ok? How can it be so high? What about Bitcoin replacing cash and Western Union? Os Bitcoin a bubble??
Maybe Ethereum is better?