You’ve probably heard Bitcoin lets you send money for free. You’ve also probably heard Bitcoin transactions are too expensive.

What’s going on here and why is there so much confusion around the cost to send Bitcoin? It’s kind of complicated, so let me break it down for you 👇
Technically it’s possible to make a Bitcoin transaction for free but in practice it’s really difficult. There’s nothing stopping miners from including transactions that do not pay a fee but most nodes on the network won’t relay transactions with a fee under a certain amount.
This means you either need to be a miner or somehow send your transaction directly to a miner. The latter case is still unlikely to work unless the miner is your friend because miner’s are incentivized to include transactions that pay them the most in fees.
Ok, so we’ve gathered that you almost definitely will have to pay a fee to send Bitcoin but how much is the right amount? You might think the fee should be correlated to how much money you're sending but in Bitcoin it’s actually based on the size of your transaction in bytes.
Why is that? Well, there’s sort of two related reasons...
First, each transaction consumes bandwidth, cpu, and storage proportional to the size of the transaction. Your tx needs to be sent to, processed, and stored forever by every node on the network. Resources cost money, so the more your tx uses the more you should have to pay
Second, there’s a limited amount of space in each block. This means each participant should pay a fee proportional to the amount of space they use up. If Alice’s transaction consumes 10% of the block and Bob’s only consumes 1%, it wouldn’t be fair if they paid the same in fees
Ok, so what determines the size of a tx? Well a tx is largely made up of a list of inputs ( what coins are being spent), signatures proving ownership of those inputs, and a list of outputs (where and how much to send). All of these factors contribute to the size of a tx.
Some wallets allow you to manually select how many and what inputs are used in your tx. Typically you’ll have two outputs. One for the recipient and one for the change. It’s possible to have just 1 input and 1 output if you are spending an entire output (minus miner fee).
Prior to segwit activation in 2017 all bytes of the tx were counted equally towards the total size. Segwit included a 25% discount on the witness bytes of a tx. What are witness bytes? A simplified answer is it’s the proof you provide that you own the coins being spent.
Ok so what does this practically mean for you? All it means is you can save some money on fees if you send money from native segwit addresses (hint: they start with bc1). Now we know fees are proportional to tx size and we know how tx size is calculated but how do we pick a fee?
We know there is limited space in a block and that miners are incentivized to include transactions that pay the most per unit of space (bytes). The more satoshis we pay per byte of our transaction the more likely a miner will be to include it in a block.
The default min fee most nodes will relay is 1 sat per byte. This is a great fee to use if you are not in a hurry. If you need the tx to confirm within a certain amount of time then you need to see how many people are making transactions and how much they are paying on average.
How can you get this info? Most wallets will estimate the going rate for you but my personal favorite way is to use the app built by @mempool

You can get great estimates for what fee rate you should use depending on how fast you want your tx to confirm.
I hoped this helped you gain a better understanding of how fees work and a little bit about why they work the way they do. If you want to learn more about how Bitcoin works then make sure to follow me. I write daily threads where I try to explain one concept in simple terms.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with John Cantrell

John Cantrell Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @JohnCantrell97

7 Jan
If you’ve spent any time researching Bitcoin then you’ve probably heard about the Lightning Network but…

Why does it exist?
What is it?
How does it help Bitcoin scale?

I’ve been working with it for years, let me help explain it in simple terms 👇
Bitcoin produces blocks every 10 mins and they can hold a limited number of transactions. This limited space creates a fee market where users can bid for their transactions to be included in a block. This means transactions take at least 10 minutes and must pay fees to miners.
The Lightning Network is a p2p network of payment channels

A payment channel is a contract between two people where they commit funds using a single onchain tx. Once the funds are committed they can make an unlimited amount of instant & free payments over the channel.
Read 14 tweets
6 Jan
The Fundamental Trade-Off Between Scalability and Decentralization And Why I’m Focused On Bitcoin

A core principle in Bitcoin is that every participant keeps a copy of the ledger and is able to verify every change made to that ledger. Without this we must trust someone else.
Decentralization is not a binary value but more of a sliding scale. It’s closely related to the number of participants in a system that can keep a copy of the ledger and are able to verify it. More participants, more decentralization. Less participants, less decentralization.
Like decentralization, scalability is also not a binary value. In monetary systems like Bitcoin, most people refer to scalability in terms of the number of transactions it can handle per time period. The more transactions it can process per second, the more scalable the system
Read 12 tweets
5 Jan
How Will We Onboard Earth’s 7.753 Billion People To The Lightning Network?

I ran the numbers, let’s see how we can onboard the entire population of Earth onto the Lightning Network, how long it might take, and what we can do to speed the process up 👇
To onboard onto the lightning network it requires sending btc into a 2-of-2 multisig funding transaction with your channel partner. To optimize space in this transaction we want 1 native segwit input and a single channel funding output. This produces a tx of roughly 121vbytes.
If 100% of the transactions in a block were these channel opening txs we could onboard about 8,264 people to lightning per block. With a global population of 7.753 billion people it would take roughly 938,166 blocks or 17.8 YEARS for everyone on Earth to have a channel.
Read 10 tweets
4 Jan
You probably saw the image of the Bitcoin genesis block with Satoshi’s hidden message in it over a thousand times yesterday (happy belated bday!).

If you were at all curious how Satoshi actually sent the hidden message in the genesis block then read more below 👇
The message is actually embedded in the first transaction ever made on the Bitcoin blockchain. It is part of a special transaction called a coinbase transaction (and no, nothing to do with the shitcoin casino company – though that is where their name came from!).
Every block mined *must* contain at least one transaction, the coinbase transaction, and it has the ability to generate up to the current block reward new bitcoins. Because it generates new coins, It’s the only transaction that must not spend another transaction’s output.
Read 5 tweets
3 Jan
Most of my career I worked on web tech using js and ruby. Typed, compiled languages were alien to me but I was intrigued by the reliability, performance, and usability Rust offers. The rust-bitcoin ecosystem finally motivated me to start my Rust journey. Here’s how I did it 👇
📕The Book - doc.rust-lang.org/book

The book is single handedly the best resource for starting out in Rust. I recommend reading through this at least once to get a good overview and then use it as needed as a reference when a specific topic comes up in your programming.
🧙‍♂️Rust Analyzer - rust-analyzer.github.io

The Rust compiler is known for producing errors that are actually helpful. Rust Analyzer is a plugin that brings this info to you in real time as you code. It also automatically surfaces docs, auto-completion, and so much more.
Read 6 tweets
19 Jun 20
I got a lot of great feedback and questions after posting my article about brute forcing yesterday

I wanted to address a question that came up over and over again because I think a lot of people extrapolated what I did to the false conclusion that Bitcoin isn't safe or secure /0
Q: Are my bitcoins stored in a wallet generated from a 12-word mnemonic safe?
A: Yes, just don't give out any of your words on Twitter.

Brute forcing @alistairmilne's wallet was only possible because he publicly exposed eight words from his twelve word mnemonic seed. /1
It would take the same system that brute forced the last 4 words of his mnemonic 837 quintillion millennium to brute force all possible 12 word mnemonics. /2
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(