15

I sent a small amount of BTC to someone and she was notified within seconds. But the first confirmation did not happen for ten minutes or so.

What is the chance that this transaction could fail between the notification and the first confirmation?

Does it all depend on how well I try to double-spend?

8

For small amounts, like a cup of coffee, the double-spending risk is going to be negligible. If it's a person I know, I wouldn't mind receiving and accepting as valid a transaction with zero confirmations.

For shops that will start accepting bitcoin, a stronger security measure would be for them to have multiple bitcoin clients installed in multiple geographical locations. Once each of them has "seen" the transaction they can confirm it as valid, even though it hasn't been included in the blockchain yet.

The idea behind having several machines look and validate the transaction is that it becomes much harder for someone to propagate a double-spend against a transaction that has already been seen and propagated by several machines across the world.

  • You mentioned that shops should have multiple clients installed in multiple geographical locations, so that when x of them has seen the transaction, it can be confirmed as valid. But how many seconds would this take? (point-of-sales) usually can't afford to wait more than 10 seconds) – Pacerier May 22 '14 at 16:30
  • not long. network propagation takes just a handful of seconds – Luca Matteis Jan 9 '15 at 10:05
  • Hi @Alex Millar, if this or any answer has solved your question please consider accepting it by clicking the check-mark. This indicates to the wider community that you've found a solution and gives some reputation to both the answerer and yourself. There is no obligation to do this. – Murch Mar 29 '15 at 13:11
3

If you send BTC, your transaction will be broadcasted to the bitcoin P2P network. It is very unlikely that the transaction fails, if the receiver was notified, because then probably many miners already have the transaction and it is confirmed with the next mined block (that's the reason for the 10 minutes, because each 10 minutes a new block is mined). The only way that it could fail is if you double spend it, because then it is luck which of the two transactions are used for a new block. So if the receiver trusts you, she doesn't have to wait for a confirmation.

  • Btw, does transaction malleability have anything to do with this? – Pacerier May 22 '14 at 16:39
3

It has become trivial to double-spend; do not accept zero-confirmation transactions!*

Accepting zero-confirmation transactions today is not safe: Especially, with the full blocks of late, it is almost trivial to double-spend.

Only accepting the first seen transaction for the same inputs and discarding double-spending transactions had been a policy that made zero-confirmation viable for a while. However, it merely being a suggested policy, it had not been followed by all mining pools for some time.
Now, some clients also relay double-spending transactions, in order to make double-spend attempts more visible, which in turn however helps double-spend attempts to spread through the network, therefore enabling their success.

Attack pattern

Successful attacks have been performed by sending one transaction with low mining-priority due to "dust/low-fee/reused-address/large-size/etc." paying the merchant, then, even after receiving the goods, to send a normal transaction. The payment to the merchant will not get picked up quickly, especially with fairly full blocks, while the normal transaction gets picked up eventually by some mining pool that doesn't enforce the "first-seen transaction policy". See Simon Green on Bitcoin-Dev-Mailinglist: Significant losses by double-spending unconfirmed transactions

From what I have been reading, this has already caused e.g. Shapeshift, BitPay, and Coinbase trouble for accepting zero-confirmation transactions.

With full blocks, some clients relaying doublespending transactions, and miners choosing highest fee, it is easy to doublespend. Do not accept zero-confirmation transactions.*

*If a transaction pays a good fee and is highly relayable/minable, it may be safe, but you definitely need to check.

  • Depending on the merchant situation you might compare it to people walking out of your bar without paying for their drinks. Or the customer writing a check that later bounces. Or getting paid with a bank note that turns out to be fake. In some cases being face to face (and possibly face to security camera) is enough to avert most of potential fraud. (But make sure you have some warning system for transactions that don't confirm!) In other cases this is not true at all and the only solution is to wait for confirmations. – Jannes Jul 15 '15 at 15:13
  • Yeah, I don't see how payments in physical stores with Bitcoin are viable at the moment. – Murch Jul 15 '15 at 15:16
0

This depends entirely on if both parties trust each other. Its possible the actual transaction message broadcast to the BitCoin network could get lost or ignored. At which point your client should retransmit it. If the other party had a copy of the transaction they could retransmit, it anybody could in theory.

The network will only accept one spend of your coins. Theres a risk the sending party could spend them somewhere else at the same time. Theres then effectively a race in the network to get it included in the main line block chain. So one of the transactions will succeed and one will fail. Theres a risk the failing one could be yours. The higher the number of confirmations the less likely it will be rejected later.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.