Since Bitcoin is basically a digital file it’s easier to duplicate than actual money – this means some people can manipulate their way to paying more than once with the same bitcoin. This is what is known as “double spending”…so how can this be avoided ?
Let’s say I have only 1 Bitcoin and I decide to send it to you. This transaction (let’s call it transaction A) goes into the unconfirmed transactions pool and is waiting to be confirmed.
At the same time I send 1 Bitcoin to Bob, this transaction (let’s call it transaction B) also goes into the unconfirmed transactions pool. So I sent out one Bitcoin twice – once to you and once to Bob.
When the transactions are taken out of the unconfirmed transactions pool and put into the blockchain they are checked for their validity. So let’s say transaction A is pulled out of the pool. It seems to be valid (since I have one Bitcoin) and it is inserted into the blockchain.
Now transaction B is pulled out of the pool. It is invalid since I don’t have anymore Bitcoins to spend and it does not get confirmed.
But what if the validation process of A and B happened simultaneously ? Meaning both transaction will show that I have the money needed. Well in this case we will have 2 branches of the blockchain and a race will begin – the first one to achieves the next block of confirmations will win.
If they reach the next block simultaneously as well, we will have another race and so on.
This is why it’s recommended to wait until 6 confirmation before considering a transaction complete – Since it’s highly unlikely (like super highly unlikely) that this race will happen more than 6 times. So in the end we will have a clear winner and only one transaction will be confirmed. Until this race is resolved both transactions are in risk of getting canceled.
Now you know what double spending is and how to avoid it’s risks…