user12311: 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?

user12422: 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.

user5406: 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.

user8717: 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.

12311: <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>
 12422: <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>
 5406: <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>
 8717: <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>
