Bitcoin answers the question, “Which transaction to keep?”
The way Bitcoin answers this question is brilliant.
Here’s how…
Every node on the Bitcoin network shares information about new transactions.
Transactions made on the Bitcoin network are NOT directly added to the blockchain. They are first collected and stored in what’s called the”memory pool”.
EVERY computer running the Bitcoin program creates a temporary storage area for transactions called the “memory pool”. Also known as “mempool” for short.
Each Bitcoin node has its own mempool, where it stores the queue of transactions that it has checked and considers valid.
Broadly speaking, a mempool is an organized queue where transactions are stored and sorted before being added to a newly created block.
- The memory pool holds “fresh” or unconfirmed transactions (stored as individual transactions).
- The blockchain holds “archived” or confirmed transactions (packaged in “blocks”).
All bitcoin transactions are simply “unconfirmed” transactions and only exist in the mempool before they’re “confirmed” and added to the blockchain.
In the Bitcoin network, all full nodes have a memory pool.
Let’s say you initiate a transaction on this side of the network (purple transaction).
And then go over here, and use the same bitcoin and insert the red transaction in this computer.
If you notice, these two transactions are NOT written directly to the file. Both transactions are simply stored in the memory pool of each computer first.
So both transactions will propagate across the network.
This computer will REJECT the red transaction because they’ve already received the purple one.
So now BOTH transactions are on the network.
But they are NOT written to the file yet, so the file still hasn’t been updated.
What will happen then is all of these computers will work and try to get their transactions from their memory pool onto the file.
They will compete to be the first ones to get their memory pool transactions added to the top of the file.
Let’s say this computer (in yellow) is the first one to be able to do it.
It adds its transaction from the memory pool into the file:
And when it’s done that….
It will pass their updated copy of the file to everyone else they are connected to….
And they will update their copies.
In the illustration below, this node here receives the updated file that contains the purple transaction spending the same bitcoin.
What happens to the conflicting red transaction in its memory pool?
Since the same bitcoin has already been spent in the purple transaction, it will kick out the red transaction from their memory pool!
This node will then pass on the updated file.
And the other node(s) will do the same thing…it will kick out any conflicting transactions in its memory pool.
All computers now have the updated file.
So that’s how you solve the problem of having two conflicting transactions on the network.
You literally just have a “waiting area” (mempool) for pending transactions and nodes compete and try to add their transactions to the file.
In this example, the purple dude would receive the bitcoin…
But when yo shady self tries to spend the same bitcoin with the red dude, it’s not going to work.
This process of nodes competing to try and get their transactions from their memory pool onto the file (“the blockchain”) is called MINING.