How to Use Mempool.Space
Published: 2021-02-05 at block 669,215
Bitcoin Price: $38,100
Mempool.space is a Bitcoin block explorer and mempool explorer.
A block explorer (blockchain explorer) allows you to browse through all Bitcoin transactions. It’s useful for seeing address history, transaction status, etc.
A mempool (short for memory pool) stores unconfirmed transactions in a "waiting room" inside of a Bitcoin node.
A mempool explorer allows you to see the state of a mempool and its pending transactions. It’s useful for estimating fee rates and getting ETAs on unconfirmed transactions.
In this blog post, I’ll walk you through how to use Mempool.space.
Note: If you're looking to speed up your unconfirmed bitcoin transaction, then you might find this explainer on confirming stuck transactions helpful.
First let’s focus on the unconfirmed and confirmed blocks at the top of the page:
On the left side, you’ll see a queue of unconfirmed blocks:
The block that’s closest to the line is the next one to be confirmed:
Let’s break down its details:
Hold on a sec... did you notice anything different between this block and the one enclosed in red before it? If you compare the two, you’ll notice slight differences between them. This is because I took the screenshots a few minutes apart:
Why am I spending time highlighting this?
Because the contents of this unconfirmed block changed dramatically. Miners reprioritized certain transactions over others within this short time frame.
Miners must prioritize transactions because each block can only fit so many. If demand for block space is high, miners will focus on transactions with higher fee rates (though other factors like the age of the transaction and its size are also considered).
The higher your transaction's relative fee rate, the more likely miners will process your transaction ASAP.
Ok so now we understand why the figures in the same block changed. Now let’s break down what each of the figures within the block mean:
On the bottom, you’ll see “In ~10 minutes”.
It's an ETA. This means that we expect miners to confirm this upcoming block in 10 minutes, as expected. But this is an estimate - some blocks can take 1 second to mine, others can take hours… but on average, 10 minutes.
Mining confirmation times and difficulty adjustment / targeting is outside the scope of this blog post, but I’d recommend researching the topics. It will help you understand how the Bitcoin network processes transactions.
On top, you’ll see ~68 sat/vB.
This refers to the median fee rate paid by each transaction in that block. Again, the higher the relative fee rate a transaction has over others, the more likely a miner is to prioritize that transaction.
What are sat/vB?
You may have heard of terms like satoshis per byte, or satoshis per virtual byte. These are two ways of describing the same thing. They refer to the fee rate that a transaction is willing to pay miners to get confirmed.
In the numerator are satoshis (or sats for short).
The smallest denomination of a bitcoin is a satoshi (like cents in a dollar). 100,000,000 satoshis = 1 bitcoin.
So in the example above, the median fee rate is 68 satoshis (or 0.00000068 BTC) per virtual byte.
What are virtual bytes?
We know that a block has a limited amount of space and transactions are data that fill up that space, right?
Well, block space used to be measured and limited to their “blocksize” of 1 MB or 1,000,000 bytes.
But since 2017, we now measure and limit blocks to their “blockweight” of 4,000,000 weight units (WU). If you’re interested in learning more, you may want to research Segregated Witness (SegWit).
We use "virtual bytes" to convert weight units back to bytes by dividing by 4.
Ok so putting this fee rate concept (sats/vBytes) back into context…
Initially, the upcoming block was 1.18 MB in size with 2,886 pending transactions.
This means that the average size of each transaction was 409 virtual bytes. (1,180,000 virtual bytes / 2886 transactions).
We can get the median fee of each transaction by multiplying the average size by the median fee rate. In this case:
- Median fee rate = 15 sat/vB
- Average size = 409 vB
- Median fee = 15 sat/vB * 409 vB = 6135 sats or 0.00006135 BTC
Each transaction in this unconfirmed block was willing to pay 0.00006135 BTC in mining fees. At a $36k price point, this comes out to ~$2.20.
But suddenly, more unconfirmed transactions flooded the mempool with more competitive fee rates. Miners then reprioritized transactions with an median fee rate of ~68 sat/vB:
During this reshuffling, the block’s virtual size grew to 1.31 MB and the number of unconfirmed transactions fell to 2,555.
After running the same calculations, how much do you think each pending transaction in this same unconfirmed block was willing to pay? On average (median), 0.00034864 BTC in mining fees or about $12.55 at 1 BTC = $36,000.
If you’ve ever wondered why your bitcoin transaction got stuck in the past, it’s because of these dynamics. Miners prioritized more competitive transactions over yours in the fee rate market.
Finally, the 14 - 866 sat/vB figure refers to the range of fee rates included in this unconfirmed block, instead of the median.
Cool, so now you understand the unconfirmed blocks section. Let’s zoom back out and focus on the confirmed blocks on the right side:
From left to right, it reads from the most recently-confirmed block to older ones.
The higher the block height (eg. 667,306), the more recent the confirmation. The left-most block 667,306 received one confirmation, whereas block 667,301 has 6 confirmations.
Now let’s look at a confirmed block:
It’s really similar. The only difference is that instead of showing an ETA, it shows when the block was mined (12 minutes ago). It also assigns the block a formal block number (aka. Its block height).
Got it so far?
Great. So let’s imagine you’re about to send a transaction. You check the mempool and see something like this:
How high of a fee rate would you set in order to get confirmed in the next block?
Well the upcoming block is showing an median fee rate of 14 sat/vB. You can also see Mempool.space’s suggestions: the low, medium, and high fee rates.
But as demonstrated before, a 15 sat/vB estimate was quickly eclipsed by a 68 sat/vB median.
So these estimations can help you get your bearings. But you shouldn’t rely on these estimates when customizing your transaction fee rate.
How can you get a better estimate? Let’s look at these charts:
And let’s focus on the left side first:
What’s “Purging” mean?
It means that the mempool is so full that transactions with fee rates under 1.2 sat/vB are being ignored. These 1.2 sat/vB transactions are so uncompetitive that they’re getting dropped from the mempool.
“Memory usage” is exactly like it sounds like.
Transactions take up space. Each full node can fit 300 MB worth of unconfirmed transactions in their mempool storage by default. Assuming that each transaction is about 500 bytes, then a node’s 300 MB mempool holds about 600,000 unconfirmed transactions.
In the example above, the mempool is 327 MB big with 48,477 “unconfirmed” TXs (aka. TXNs, transactions). This means that on average, each unconfirmed transaction in the 327 MB mempool is about 6,745 bytes big.
But these 3 metrics (purging, memory usage, unconfirmed) don’t really help us optimize our fee rate. Even the estimates are showing 14 sat/vB.
This is where learning how to read the mempool evolves beyond just a science - it’s also an art.
Look at the chart below the 3 metrics - there are these different colored layers:
The chart itself represents the current mempool. The colored layers represent transaction fee rates.
You can click on this icon in the navigation bar to see the exact fee rate legend:
As you can see, the pink on the bottom represents unconfirmed transactions in the mempool with a 1 sat/vB fee rate.
In the layer above that, you see unconfirmed transactions with a 1 - 2 sat/vB fee rate. The layer above that, 2 - 3 sat/vB. And so on and so forth.
At the top you can see some yellow, representing 20 - 30 sat/vByte. And above that yellow, there are some spots of dark red representing transactions with up to 90 - 100 sat/vB fee rates. Further beyond that, there is probably a layer that goes all the way up to 690 sat/vB, as shown in the range earlier:
You can also toggle different views. The above image shows a 2 hour view of the mempool. The image below shows a 1-month view of the mempool:
You can see that on January 1st (01/01), the mempool almost fully cleared. Most transactions were able to confirm with a 1 sat/vB fee rate.
Then more unconfirmed transactions began to fill the mempool from the 9th of January (09/01). The demand for block space increased, likely from more speculative trading activity. This made 1 sat/vB fee rates (pink) less viable than more competitive 10 - 40 sat/vB fee rates (green, yellow).
So you can likely get away with a 1 sat/vB fee rate if you have the patience for it and if 1 sat/vB transactions aren't being purged. But if you’re trying to get your transaction confirmed ASAP, then you’ll need to pay a higher fee rate.
There’s one more metric we can look at to better estimate the ideal fee rate:
“Incoming transactions” shows the amount of unconfirmed transactions entering the mempool, measured in vBytes per second (vB/s).
So around 8:15 in this chart, you can see there was a sudden influx of unconfirmed transactions entering the mempool, around ~6,500 vB/s.
If we assume that each transaction is on average ~500 bytes, then the meter above tells us there are ~3 incoming transactions every second.
Now that we’re armed with all this data… let’s bring it back. In this scenario, what fee rate would you set to get mined ASAP? Let me know in the comments below.
I’d probably set a fee rate of 15 - 20 sat/vB to get confirmed in the next block.
Cool - so now we understand the different mempool explorer components.
Now let’s dive into the block explorer components:
Here, you’ll see a list of the latest blocks that have been mined. It's listed from most recently mined at the top, to less recently mined as you go down.
These correlate to the blocks you see on the top of the page:
Let’s click on a block:
Here’s what we see:
In block 667,306, we can see that
- It was first mined at 2021-01-23 08:47 (aka. Timestamp)
- Its size was 1.39 MB
- Its weight was 3.99 MWU (mega weight units)
- The total fees generated from the transactions in this block was 0.43 BTC (43,000,000 satoshis).
- The block subsidy was 6.25 BTC (as is expected for this reward era)
- The miner who found the block was SpiderPool
- From 2,074 transactions (2,075 minus the coinbase reward transaction), each transaction paid a median fee of 20,732 sats
Now let’s focus on the transactions themselves. Let’s click on the second transaction in that block:
Here’s a transaction whose transaction ID (TXID) is 71a37623a25d8c8b2c2517f90cbc9ab1e9c27d189da60d9dc054bcda36b89410
- It received 10 confirmations (as it was included and mined in block 667,306) and paid a total of 68,232 satoshis in transaction fees at a 623.1 sat/vB fee rate!
- If 1 BTC = $36k, they paid $24.56 in total txn fees to send 0.00009996 BTC (the "output", which is about ~$3.69)... this is what happens when you don’t know how to read the mempool and customize transaction fee rates!
- It sent bitcoin from a “bc1” address so it’s noted as a SegWit transaction.
- But the transaction did not opt-into Replace by Fee (RBF). So if the transaction’s fee rate was deprioritized by miners, the sender wouldn’t be able to replace this transaction with a new competitive one with a higher fee. The sender would need to wait for his transaction to get mined or dropped from the mempool.
- Below in the Details, you can see the transaction’s size, virtual size, and weight
Got it?
So then this should be easy to understand:
It’s just a list of the latest transactions joining the mempool. These transactions are unconfirmed - you can tell by clicking on the TXID:
If you’re looking for a specific transaction, address, or block, you can use the search feature on the top right:
But if you're privacy conscious, you should host your own block explorer. Also consider connecting to a block explorer using Tor.
Why? Because if you're typing unique addresses into an online service, they can map that to your device.
If you'd like a tutorial on hosting your own block explorer, let me know in the comments below.
Ok. There’s one thing I haven’t yet covered and it’s the difficulty adjustment:
This is Mempool.space’s prediction for how the network difficulty will increase or decrease based on the existing mining power.
If it shows a negative %, that means that miners are having a difficult time producing blocks every 10 minutes, so the difficulty will likely adjust downwards to make hitting that 10 minute target more feasible.
If it shows a positive %, that means that miners are easily producing blocks every 10 minutes or less, so the difficulty will likely adjust upwards to make it more difficult to mine bitcoin.
Again, explaining “Difficulty” is outside the scope for this blog post. If you’d like a detailed explanation of difficulty, let me know in the comments below.
So congrats! You’re now an expert on mempools and block explorers. Knowing how to use these tools is critical within the world of Bitcoin.
Now… before you send a transaction, you can look at the mempool to customize your fee rate accordingly. Once you’ve sent your transaction, you can see its status using a tool like Mempool.Space.
Hope this was helpful! If so, let me know what you've learned in the comments below, and feel free to share this post with other beginners who might also be struggling with these concepts!
You’re well on your way to becoming an expert Bitcoiner.
What did I miss? What else would you like to learn more about? Let me know on Twitter!