<p>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.</p>

<p>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. </p>

<p>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.</p>

CC BY-SA 3.0
2014-05-22T16:30:35.710Z
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
CC BY-SA 3.0
2015-01-09T10:05:58.813Z
not long. network propagation takes just a handful of seconds
Luca Matteis
CC BY-SA 3.0
2015-03-29T13:11:12.393Z
Hi @Alex Millar, if this or any answer has solved your question please consider [accepting it](http://meta.stackexchange.com/q/5234/179419) 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
CC BY-SA 3.0
2014-01-20T15:53:46.987Z
2014-01-20T21:50:00.500Z
2014-01-20T21:50:00.500Z
Luca Matteis
<p>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.</p>

CC BY-SA 3.0
2014-05-22T16:39:33.157Z
Btw, does transaction malleability have anything to do with this?
Pacerier
CC BY-SA 3.0
2014-01-20T15:12:58.597Z
2014-01-20T15:12:58.597Z
Frank Buss
<h2>It has become trivial to double-spend; do not accept zero-confirmation transactions!*</h2>

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

<p>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.<br>
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.</p>

<h2>Attack pattern</h2>

<p>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: <a href="https://www.mail-archive.com/bitcoin-dev@lists.linuxfoundation.org/msg00500.html" rel="nofollow">Significant losses by double-spending unconfirmed transactions</a></p>

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

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

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

CC BY-SA 3.0
2015-07-15T15:13:44.247Z
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
CC BY-SA 3.0
2015-07-15T15:16:19.003Z
Yeah, I don't see how payments in physical stores with Bitcoin are viable at the moment.
Murch
CC BY-SA 3.0
2015-07-15T14:40:03.757Z
2015-07-15T15:15:21.460Z
2015-07-15T15:15:21.460Z
Murch
<p>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.</p>

<p>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.</p>

CC BY-SA 3.0
2014-01-22T12:10:32.743Z
2014-01-22T12:10:32.743Z
Charlie M
<p>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.</p>

<p>What is the chance that this transaction could fail between the notification and the first confirmation? </p>

<p>Does it all depend on how well I try to double-spend?</p>

CC BY-SA 3.0
2014-01-20T17:51:13.523Z
Related: [How do I accept bitcoin payments at a real world store?](http://bitcoin.stackexchange.com/q/327/5406)
Murch
<zero-confirmation>
How secure is zero confirmations?
Alex Millar
# How secure is zero confirmations?

(Asked by: username_0 on 2014-01-20)

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?

**Tags:** zero-confirmation

> **Comments:**
> **username_1**: Related: [How do I accept bitcoin payments at a real world store?](http://bitcoin.stackexchange.com/q/327/5406)  

---

## 4 answers

### Answer by username_2 on 2014-01-20. Score: 9

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.

> **Comments:**
> **username_3**: 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)  
> **username_2**: not long. network propagation takes just a handful of seconds  
> **username_1**: Hi @username_0, if this or any answer has solved your question please consider [accepting it](http://meta.stackexchange.com/q/5234/179419) 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.  

---

### Answer by username_4 on 2014-01-20. Score: 4

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.

> **Comments:**
> **username_3**: Btw, does transaction malleability have anything to do with this?  

---

### Answer by username_1 on 2015-07-15. Score: 4

## 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](https://www.mail-archive.com/bitcoin-dev@lists.linuxfoundation.org/msg00500.html)

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.

> **Comments:**
> **username_5**: 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.  
> **username_1**: Yeah, I don't see how payments in physical stores with Bitcoin are viable at the moment.  

---

### Answer by username_6 on 2014-01-22. Score: 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.


---

