What is a Transaction Confirmation?
The term confirmation is very common in crypto currencies. For example, when you transfer a crypto currency to an exchange and you glance at the status of the transaction, you face the term confirmation. In whichever software you transfer to (exchange, wallet,…) you see your incoming transaction quickly, but the status says it is not through yet and a counter appears next to the transaction with a number like 2/4, where 2 stands for the current amount of confirmations so far and 4 the total amount of required confirmations.
What is a transaction confirmation?
Let’s boil it down, as to what a transaction confirmation really means. A transaction is confirmed as soon as one block, which contains the transaction, is attached to the blockchain. When you transfer 1 BTC from A to B, the transaction is spread out and firstly deposited in the big pot of unconfirmed transactions. Every miner will see all these transactions. As soon as they start to calculate the next block, they decide which transactions from the pot will be a part of it. As soon as a block containing your transaction has been solved and attached to the blockchain, the transaction has been written down forever in the chain. Thus, the transaction has been confirmed once. At first glance, one could assume that the other party can trust the chain that the transaction has been done. To understand why that is not 100% secure yet, we have to understand branches in the blockchain.
Branches in the Blockchain
In the case of Bitcoin, the blockchain is a chain of blocks containing transactions. Each block is chained to a previous, specific one with an identifier. However, it can happen that for the new block there are two valid solutions. Both have been found at exactly the same time and were spread on the web. Now, all chain elements are the same, except for the last one. We call this branching.
Assume that we have an attacker Eve, who sends a transaction into the network with 1 BTC to Alice in one branch and with 1 BTC to Bob in the other branch. The trick: Eve only had 1 BTC at the beginning. So, Eve sent more funds that she had. Now, let’s go further and assume that there was one block solution with the transaction from Eve to Alice and at exactly the same time, another block found the transaction Eve to Bob. If you check the blockchain, you will find both transactions to be confirmed once. But, if you accepted every transaction with one confirmation, you would accept both. However, Eve just had 1 BTC initially! The whole case will be solved as soon as the next block is solved and attached to the blockchain. Because, when branches occur, the whole network will always agree on one of the branches as soon as one branch is longer than the other. The shorter branch is dropped! So, better wait multiple confirmations.
But how long to wait?
I just explained that a single confirmation is not enough. The problem is, that in theory it could happen that for each branch, a solution for a new block is found again at the same time. In that case, we would have even longer branches, but both of them are equally long. Only as soon as one branch is longer than the other, the shorter one is dropped. The problem with this approach is: How can you know that you have waited long enough?
It is said, that for a normal transaction, two confirmations are good. If you wait up to five, you will be very, very sure about that the transaction is the real one. I am not even sure if there has been a case of two branches with each having a length of four. I guess the longest branching had the length of two. Ever.
Please also regard that a blocktime for Bitcoin is approximately 10 minutes. So, you also have to wait quite a bit, if you wait for more than two confirmations. The blocktime is by the way the same for most crypto currencies, which are using proof of work to confirm transactions.