The main problem to create a sustainable system of decentralized payments was the ability to copy payment transactions, which poses the risk of double spending. Centralized payment systems prevent the double spending of funds by the presence of a controlling server that checks all transactions using a specific mechanism.
Double spending is the process of funds re-spending. Often, double spending in decentralized systems occurs when one sender transfers the same amount of funds to multiple recipients during the period before the first transaction is included in the block.
In everyday life, double spending can also be present. For example, unscrupulous realtors can sell one property multiple times, and this opportunity is created because re-registration to a new owner can take a lot of time. And until the ownership is registered for the buyer, the property remains in the possession of the previous owner.
Double spending causes material damage to the seller who sent the goods and did not receive funds. It discredits cryptocurrencies as a means of payment and prevents widespread adoption. Also, the problem of double spending leads to a decrease in the value of a digital asset, as investors lose confidence in the security of the system.
It arises against the background of support for conducting transactions with zero confirmation. In this case, the fraudster just needs to create a payment for the same amount and send it to two retailers. As a result, only one retailer will receive coins. The one whose transaction will be added to the blockchain first.
Similar to the previous type, it occurs only when the services support transactions with zero confirmations. However, in this case, among the accomplices of the fraudulent scheme will be a miner whose mission is to send the copied transaction to a block.
Finney attack represents a false double spend, with the miner sending a second transaction after verifying the first. As a result, two chains are created, while only one will be recognized by miners. The bottom line is that most likely, as it was canceled, the sale of the goods has already taken place.
This occurs when deliberately forking the blockchain, allowing funds to be spent twice if only one confirmation is received. It is a combined attack of the two above: Race and Finney. The bottom line is that when you step by step including transactions in blocks, some miners consider the transaction valid, while others do not. To implement this type of attack, 10 minutes are enough. During this time the fraudster will have time to purchase a product (service) or cash out for both transactions.
If the seller requires more than one confirmation, then the realization of the previous attacks becomes meaningless. However, the fraudster found a way to realize double spending in such cases. However, to implement a Brute force, high computing power is required. For example, if the fraudulent hashrate is 10% of the network capacity, and the recipient requires 6 confirmations, then the percentage that the attack will be successfully implemented is 0.01%. The point is that the fraudster independently checks the blocks of transactions, which will include and sent personally to him.
As a result of the seller receiving the required number of confirmations, he implements the shipment of the goods, and the fraudster branches the chain and, thus, returns the coins to his address. If confirmation for another transaction cannot be received, then the coins will still be delivered to the seller’s address.
It is possible in the case when the fraudster owns most of the network capacity, judging by the name, at least 50%. Then the double spending of coins is realized according to the above scenario, only the guarantee of success is 100%. In this case, the fraudster can create blocks faster than others and create his own chains.
Double spending is possible because until the moment the transaction is confirmed, the funds remain in the sender’s account. At the same time, the creation of decentralized payment systems became possible because only transactions that received more confirmations are recorded in blocks, and the second branch with repeated spending is recognized as incorrect and rejected.
Nevertheless, there is still an opportunity to double spend in the blockchain, but this requires quite high computing powers. Without this condition, the seller can be deceived only if he sends the goods on payments with 0 confirmations.