Why are there Bitcoin transaction fees? How much do I need to pay to get my transaction to go through quickly? What happens if I don’t pay enough of a fee? Can my transaction get stuck? Is there a way for me to pay less in fees than most other people do? If you’re looking for easy to understand answers, stick around, here on Bitcoin Whiteboard Tuesday, we’ll answer these questions and more. When talking about fees in the context of Bitcoin we usually are referring to the amount bitcoin
owners pay to bitcoin
miners whenever they send funds to another bitcoin
address. In order to truly understand fees in detail we first need to understand what happens when you send Bitcoins to another address. After you send a Bitcoin transaction, the first step it goes through is transaction verification. This means the transaction is checked by every computer holding a copy of the Bitcoin blockchain
for validity. These computers are called nodes. Basically, at this stage the nodes are checking Bitcoin’s history to make sure that you actually have the Bitcoins in your account balance that you want to spend. After a transaction is deemed valid it goes into the Mempool, short for Memory Pool. This is sort of a ‘waiting room’ where the transaction sits and waits for a miner to pick it up and pack it into a block of transactions. In other words, even though the transaction is valid, we still haven’t updated it into the global ledger of Bitcoin transaction. At this point the transaction is considered an “unconfirmed transaction” or a “zero confirmation transaction”. Finally, once a miner picks up the transaction and includes it in a successfully mined block the transaction is considered to be confirmed and the process of sending the funds is complete. Now here’s the thing – A block can only hold a finite amount of transactions, so at times when the network is crowded and there are a lot of transactions waiting to be confirmed the miner will prioritize which transactions to pick up based on the fee attached to the transaction. So fees are a way of signalling to the miner how urgent your transaction is. If you want to get confirmed faster you’ll attach a larger fee. If you’re not so time sensitive you can do with a smaller fee. One thing to keep in mind is that fees are always paid for by the sender of the transaction. In the past, fees had different rules than what they do today. You could send transactions for free if your transaction was small enough in size or if it had “priority”. Today however, things have changed, and every transaction requires a fee in order to get mined. Calculating the appropriate Bitcoin transaction fee isn’t as straightforward as it seems. Every transaction has a size, just like a file size on your computer. Since miners want to maximize their profit, they will prioritize transactions that have a larger fee to size ratio, or feerate for short. Let’s explain with an example from a different market. When shopping for a home or an apartment, the price of the home is calculated in terms of cost per square foot. While the apartment’s price is comparable to the total transaction fee you pay, in order to measure the apartment’s value, you need to calculate how much you would need to pay per square foot. Feerate is Bitcoin’s cost per square foot. Feerate is measured in Satoshis per byte. It basically means how many Satoshis or the smallest unit of account in Bitcoin that you are willing to pay for every byte or unit of size of your transaction. This rate varies depending on how much the network is crowded with transactions, much like the cost of an apartment varies depending on the demand for living space in the area you want to live. There are several websites that list the estimated feerate in order to get your transaction included into the next block. So how is the transaction size calculated? Well, a transaction size depends on a number of different factors, let’s go over the most significant ones. The first factor is the number of inputs. Each Bitcoin you own, at its core, is just a reference to past transactions that were sent to you, adding up to the amount you own. These references are known as inputs. When you send Bitcoins to someone you are basically selecting different inputs sent to you in the past and forwarding them to the recipient as outputs. The more inputs your transaction is comprised of, the bigger its size. For example, let’s say you own one Bitcoin. That Bitcoin is actually comprised of many references to transactions sent to you in the past, assuming you accumulated that one Bitcoin from several sources. When you send this one Bitcoin to someone else, your transaction will be composed of all of these previous references. The second factor is the number of outputs. Simply put, outputs are the number of addresses you’re paying to. For example, if you’re only paying to one address, it’s highly likely you’ll actually generate two outputs. One for the address you’re sending to, and another one to “pay yourself back” the change from your initial payment. For an explanation about change, take a look at our ‘Bitcoin change explained’ video. The last significant factor in determining your transaction size is the script complexity. Some transactions use special features which we won’t go into in this video like multisig. These features increase the transaction size. As you may imagine, it is very difficult for the average user to calculate the transaction size based on these factors. Luckily, your Bitcoin wallet will do this for you and suggest the fee you should pay, based on the average feerate at the moment of transaction. As a side note, you should know that the Bitcoin blockchain
doesn’t list the fee paid for each transaction explicitly. The only way to deduce what fee was paid by the sender is to calculate the difference between how many Bitcoins were sent minus how many were received and how many were returned as change. Here’s an example to illustrate this: In the transaction you see on the screen, the input is 10 Bitcoins. The outputs are 1.9995 Bitcoins for the receiving address and 8 Bitcoins have been returned as change. From this we can calculate that the missing amount or 0.0005 Bitcoins has been paid as a fee. Let’s move on and explore ways for paying less in transaction fees. For starters, you can avoid sending transactions when the network is busy. When the Bitcoin network is extremely busy, for example, when the price spikes and many people are looking to buy Bitcoin, users will bid up their fees in order to prioritize their transactions. This can cause fees to become ridiculously expensive. If you can delay a transaction to a time when the network is less crowded you may be able to save a lot of money on fees. Another option would be to use a wallet that supports SegWit. SegWit, short for Segregated Witness, is a Bitcoin protocol upgrade which configures the transaction’s data in such a way as to create a file that is smaller in size. Many wallets already support this feature and it can cut costs substantially. Grouping your inputs is a more advanced method for optimizing fees. The more inputs you need to create your transaction, the bigger its size, meaning the more fees you’ll need to pay for it. If you want to keep fees low, every once in a while you can consolidate your inputs. This is done by sending many small inputs to an address you own at a time when fees are low. This way, you will significantly reduce your future fees since you will only have one input. Aside from consolidating inputs you can also group multiple outputs or payments to one transaction. Not all wallets support this feature, but if your wallet allows this, you will be able to send payments to several addresses in one transaction which will reduce the required fee. Now let’s talk about how Bitcoin wallets deal with fees. Wallets attempt to recommend a reasonable fee, based on the current and recent levels of activity of the bitcoin
network. Some wallets and services manage fees poorly and overbid fees, which in turn drives up the fees for everyone else as well. Most wallets allow you to adjust your fees or at least set a general fee preference like low, medium, or high. As I mentioned earlier, to choose the right fee you’ll first need to know your transaction size. If your wallet supplies you with that info, you can then use a feerate estimation table to figure out how much you need to pay in order to be included in the next block. Here’s an example: If your transaction size is 16,000 bytes and at the moment of transaction the average feerate to be included in the next block is 10 Satoshis per byte, then you’ll need to pay 10 X 16,000 or 160,000 Satoshis as a transaction fee, for a good chance to be included in the next block. Up until now we’ve covered what happens if you pay enough fees, but what happens if you don’t? While what I’m sharing with you in this video sheds some light on the topic of fees, most Bitcoin users aren’t “fee experts”. Therefore, more often than not and especially when the price rallies, and the network is crowded, you’ll hear of people complaining that their transaction is stuck as unconfirmed or pending. There are two things that can get a transaction stuck, so to speak : #1 You didn’t pay a high enough fee so miners prioritize other transactions over your own. or #2 You are trying to send coins from a transaction you received that hasn’t been confirmed yet, and yes, some wallets allow this. So what can you do? Well, here are your options: The first option would be just to wait it out. If your transaction isn’t urgent, take a break, and forget about it for at least 72 hours. There’s a good chance that it’ll sort itself out one way or another. Another option would be to use the Replace By Fee feature or RBF. RBF allows a wallet to rebroadcast a transaction with a higher fee. Bear in mind that not all wallets support RBF, and in certain wallets RBF is an opt-in feature. If your wallet does support RBF, it can save you a lot of fee-related headaches, and there’s really no downside to using it. You can also try transaction accelerators. There are different transaction accelerators which are operated by mining pools. They’ll add your transaction to the next block they mine if they have the capacity to do so. Some are free, while others are free below certain size limits, some mining pools charge upfront, while there are others that request tips. If all else fails you are left with two final options: Try to double spend the transaction or use “Child Pays for Parent” Double-spending sends the same transaction again, but with a higher fee. It’s much like RBF, but with one big difference: RBF transactions conform to agreed rules, and are incorporated in several wallet designs. On the other hand, double-spending is explicitly considered something you shouldn’t do. It’s actually one of the major problems that Bitcoin was created to solve and that all wallets are designed to prevent. Child Pays for Parent or CPFP means you essentially spend coins that are incoming but are yet unconfirmed, which is something I previously advised against. The idea behind this is that the fees on a new outgoing transaction will be high enough to cover both themselves and the unconfirmed incoming transactions they depend on. A miner may be enticed to mine the old, low-fee unconfirmed transaction, in order to claim the new, high-fee CPFP transaction, as it’s impossible to claim the new transaction before the old one is confirmed. Both these processes are rather difficult procedures which may place your funds at risk and are not intended for the average user so we won’t go over them in this guide. Many people often ask us, can my transaction get stuck forever? Well the short answer is no. The Correct answer is probably not, but it depends. Earlier in this video I talked about the transaction waiting in the mempool to get picked up by a miner. Well, the mempool doesn’t exist in just one place. Each computer or node that validates transactions has a part in its hard drive that is dedicated for storing pending transaction. So different nodes have different versions of the mempool, depending on which transactions they know about and remember. If a transaction is not confirmed for a long period of time, it will eventually be erased from a node’s mempool. The current default time period for deletion is 72 hours but nodes may set their own duration. This is why waiting for at least 72 hours will probably yield one of two results: Either your transaction will get confirmed, or it will get erased from all of the mempools in the network and the funds will be returned to your wallet. Having said that, it’s possible that a certain node will never forget about your transaction, and may even occasionally rebroadcast it, which reminds other nodes about it. In that case, your transaction can be stuck forever unless you use some of the methods I’ve mentioned earlier. As you can see the issue of fees is pretty complex and can be a topic for a lot of controversy. Keeping fees low is important since having a cheap peer to peer payment system is one of the goals Bitcoin was created to achieve, but as always there are other considerations to take into account, aside of low fees. As Bitcoin grows in popularity, more and more people will begin using it and the network needs to find new solutions to handle the demand. One promising candidate for such a solution is the Lightning Network. While it’s not quite ready for mainstream adoption, the Lightning Network promises nearly instant, free transactions to all Bitcoiners but that’s a topic for a different video. Hopefully by now you better understand the topic of fees and how they act as a method of prioritizing Bitcoin transactions. You may still have some questions. If so, just leave them in the comment section below. And if you’re watching this video on YouTube, and enjoy what you’ve seen, don’t forget to hit the like button. Then make sure to subscribe to the channel and click that bell so that you’ll be notified as soon as we post new episodes. Thanks for joining me here at the Whiteboard. For 99Bitcoins.com, I’m Nate Martin, and I’ll see you… in a bit.