Bitcoin Forum
November 09, 2024, 05:55:13 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: In-person Bitcoin purchases - no problem!  (Read 1036 times)
hacknoid (OP)
Sr. Member
****
Offline Offline

Activity: 418
Merit: 252


Proud Canuck


View Profile WWW
September 10, 2013, 01:34:01 AM
 #1


So I was thinking about the "problem" that everyone always brings up about spending Bitcoin in a face-to-face purchase.  Usually the argument is that since the confirmations take too long, that it will never be useful due to the double-spend risk.  There are solutions, such as all offline transactions (within a single wallet host service, for example).  I don't think the option of altcoins will do it (anything more than a few seconds is all the same, whether it be 1 minute, 2 minutes or 10 minutes).  The other solution that is often discussed is simply to watch the network for a second transaction shortly after the first, which would be viable.

However, I really don't think there is a problem after all.  And here's why:

The liklihood
How big of a risk is there for a double spend?  IIRC, Bitpay has said they have yet to encounter it in practice (I read this over the summer on this forum... somewhere)

The risk
Usually the face-to-face transactions that are talked about are pretty small, like a morning coffee or something.  As such, the value risk is small.

Logistics
This is the big thing I think that people are missing.  From what I have been reading recently, in order for a double-spend to even enter the network, the two transactions would have to happen quite close in time in order for the second to not be rejected outright by the network.  How would this happen in a face-to-face situation?
- Clearly the first user cannot perform a second transaction with the same vendor
- To coordinate a second person to spend within the short time window would require a more complicated scheme, maybe involving a signal, or someone remotely watching, etc.  This now gets quite cumbersome...

The wallet
(I might be wrong about this, but...) In order for a true double-spend to occur, the wallet must not contain enough BTC to cover both the initial and the subsequent transaction.  If it does, then the second transaction is valid anyways since the funds were there.  So the wallet would have to be planned specifically so that there was not enough to cover a first and a second spend, but would have to contain enough to cover each individually.


Bottom line
It seems to be getting to the realm of ridiculous to conceive that this really would be a danger in practice.  Much more unlikely than someone passing a counterfeit bill or a stolen/copied credit card.

What do you think?


BitcoinRunner : Side scroller game powered entirely by Bitcoin! 
Game (alpha): http://hacknoid.ca/bitcoinrunner
Discussion: https://bitcointalk.org/index.php?topic=907618.0
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
September 10, 2013, 01:50:07 AM
 #2

It all depends on the target risk.  A Bitcoin ATM machine (deliver BTC and get USD) where an exploit could rapidly be exploited and empty the machine?  You probably want confirmations unless you want to go broke.   A $6 combo meal for lunch where "delivery" is going to take a couple minutes anyways?  You are unlikely to be successfully double spent (or at least no more likely then customer using counterfeit or stolen CC).

However you are misunderstand that in a double spend there aren't two vendors. The second tx just sends funds back to the user.  A lot would depend on how sophisticated the merchant (or merchants provider) is.  If the merchant runs a network of nodes that connect to a large fraction of the Bitcoin network it is unlikely that the double spend could reach a miner without the merchant detecting it during the transaction.  0-confirm tx are also subject to finney attacks so the value of the transaction is going to matter a lot.  It isn't worth it to try and Finney attack a $5 transaction but a $50,000 one?  Well it certainly would be and the merchant would be unable to detect the threat.

TL/DR version:
There is no single risk level acceptable for all merchants under all scenarios.  0-confirm for low value in person transactions may certainly be viable but the merchant should either be sophisticated or use a sophisticated payment processor which actively monitors the risk.
hacknoid (OP)
Sr. Member
****
Offline Offline

Activity: 418
Merit: 252


Proud Canuck


View Profile WWW
September 10, 2013, 02:50:51 AM
 #3

It all depends on the target risk.  A Bitcoin ATM machine (deliver BTC and get USD) where an exploit could rapidly be exploited and empty the machine?  You probably want confirmations unless you want to go broke.   A $6 combo meal for lunch where "delivery" is going to take a couple minutes anyways?  You are unlikely to be successfully double spent (or at least no more likely then customer using counterfeit or stolen CC).

You are definitely right there.  And that sort of gets to what I was saying - I think a technological attack (via scripts, for example) is easier than a face-to-face initiated one.  The ATM would need special consideration for confirmations due to its increased untraceability (no person to see a face or just human reactions).  Again, I think its the overhead involved once one of the transactions takes place face to face that makes this issue harder to execute.

Quote
However you are misunderstand that in a double spend there aren't two vendors. The second tx just sends funds back to the user.

Not sure what you mean here... I know about the "change" transaction, but that doesn't say anything about the vendors involved.  I was meaning that the same person would not try to double-spend against the same vendor; the second spend would have to take place elsewhere physically, introducing the problem of coordination.

Quote
 A lot would depend on how sophisticated the merchant (or merchants provider) is.  If the merchant runs a network of nodes that connect to a large fraction of the Bitcoin network it is unlikely that the double spend could reach a miner without the merchant detecting it during the transaction.  0-confirm tx are also subject to finney attacks so the value of the transaction is going to matter a lot.  It isn't worth it to try and Finney attack a $5 transaction but a $50,000 one?  Well it certainly would be and the merchant would be unable to detect the threat.

Definitely.  One thing that relates to this though that I also think is interesting is that, in general, the length of time of the transaction (time spent in store) is proportionate to the value of the transaction.  A small purchase of a coffee or drive-through food is quite fast and also low dollar amount, while a $50k transaction would likelty be for a car or a boat, which involves significant time at a store.  In the latter case its no big deal to initiate the payment before the last of the papers are passed along, so that the transaction can have multiple confirmations before the customer leaves.

The middle case also applies - a few hundred dollars would be spent on a bug ticket item like electronics, furniture, etc.  Again, something that likely involves some amount of time (loading a vehicle, arranging delivery or something) which gives time for the transaction to be confirmed.  (There are of course exceptions to this rule of thumb, such as grocery or department stores, but then maybe BTC isn't suited to them?)

The only real "trouble" case is the low-dollar amount, and the question of whether it's worth it or not is really the issue.

Quote
TL/DR version:
There is no single risk level acceptable for all merchants under all scenarios.  0-confirm for low value in person transactions may certainly be viable but the merchant should either be sophisticated or use a sophisticated payment processor which actively monitors the risk.

Yup - again, good point.  Agreed that just using a sophisticated process to cover your bases should be enough that this isn't a concern for the low-dollar merchant.

BitcoinRunner : Side scroller game powered entirely by Bitcoin! 
Game (alpha): http://hacknoid.ca/bitcoinrunner
Discussion: https://bitcointalk.org/index.php?topic=907618.0
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
September 10, 2013, 02:55:49 AM
 #4

Not sure what you mean here... I know about the "change" transaction, but that doesn't say anything about the vendors involved.  I was meaning that the same person would not try to double-spend against the same vendor; the second spend would have to take place elsewhere physically, introducing the problem of coordination.

There is no second "spend" in a double spend.  Just a second tx.  For example I make a tx to pay you 100 BTC.  I use the same inputs to send 100 BTC to myself in a second tx.  No double spend involves 2 merchants.  Just a "legit" tx and a double sending the money back to the attacker.

The "double" can be setup ahead of time and triggered remotely.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
September 10, 2013, 10:09:19 AM
 #5

What do you think?

There's a feature that users have asked for ...  called "Replace by fee".   

This is a patch to Bitcoin-Qt/bitcoind available now to those miners who choose to use it.   A side effect of that is that it would make it significantly easier for those attempting to double spend since a replacement transaction will be recognized simply because it includes a higher fee.

No miners are using that patch today, at least that is publicly known, so this isn't a risk today but merchants who recognize payment on 0/unconfirmed should remain aware that double spending risk could grow in the future.  Today, there's very little risk of a double spend/race attack.

Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


will1982
Member
**
Offline Offline

Activity: 122
Merit: 10



View Profile
September 10, 2013, 11:37:14 AM
 #6

It probably won't be a problem. Double spends are extremely rare. However, if the item is valuable (5BTC+) then it may be a problem as the seller will want to wait
r3wt
Hero Member
*****
Offline Offline

Activity: 686
Merit: 504


always the student, never the master.


View Profile
September 10, 2013, 11:41:43 AM
 #7

It probably won't be a problem. Double spends are extremely rare. However, if the item is valuable (5BTC+) then it may be a problem as the seller will want to wait

i double spent a transaction once on complete accident in my early bitcoin days using blockchain.info some wierd glitch caused the transaction to be sent twice. the recipient confirmed that they received two transactions, but one never confirmed.

My negative trust rating is reflective of a personal vendetta by someone on default trust.
hacknoid (OP)
Sr. Member
****
Offline Offline

Activity: 418
Merit: 252


Proud Canuck


View Profile WWW
September 10, 2013, 01:50:49 PM
 #8

Not sure what you mean here... I know about the "change" transaction, but that doesn't say anything about the vendors involved.  I was meaning that the same person would not try to double-spend against the same vendor; the second spend would have to take place elsewhere physically, introducing the problem of coordination.

There is no second "spend" in a double spend.  Just a second tx.  For example I make a tx to pay you 100 BTC.  I use the same inputs to send 100 BTC to myself in a second tx.  No double spend involves 2 merchants.  Just a "legit" tx and a double sending the money back to the attacker.

The "double" can be setup ahead of time and triggered remotely.


Ahh.... I got you now.   

And very true - the double could be set up and triggered automatically, but somehow I (maybe naively) think that someone may be less likely to plan to do that when they are there in person.  At the very least I think it might be more enticing to try to do that when you are not standing in a store (more anonymity online).

BitcoinRunner : Side scroller game powered entirely by Bitcoin! 
Game (alpha): http://hacknoid.ca/bitcoinrunner
Discussion: https://bitcointalk.org/index.php?topic=907618.0
hacknoid (OP)
Sr. Member
****
Offline Offline

Activity: 418
Merit: 252


Proud Canuck


View Profile WWW
September 10, 2013, 01:53:22 PM
 #9

What do you think?

There's a feature that users have asked for ...  called "Replace by fee".   

This is a patch to Bitcoin-Qt/bitcoind available now to those miners who choose to use it.   A side effect of that is that it would make it significantly easier for those attempting to double spend since a replacement transaction will be recognized simply because it includes a higher fee.

No miners are using that patch today, at least that is publicly known, so this isn't a risk today but merchants who recognize payment on 0/unconfirmed should remain aware that double spending risk could grow in the future.  Today, there's very little risk of a double spend/race attack.

I assume that once the transaction has been confirmed though, that it is safe?  I can see this for the case of a transaction sent without a fee (or with a very low fee) that prevents it from getting confirmed in time, but certainly does increase the risk of the double spend.

BitcoinRunner : Side scroller game powered entirely by Bitcoin! 
Game (alpha): http://hacknoid.ca/bitcoinrunner
Discussion: https://bitcointalk.org/index.php?topic=907618.0
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
September 10, 2013, 02:04:49 PM
 #10

I assume that once the transaction has been confirmed though, that it is safe?

Safer.  Meni did an analysis of the cost to reverse transaction.  The higher the tx value the more confirmations that are necessary.  You really should search for his paper as I am not doing it justice but here is a simplified version.

Imagine an attacker has 20% of the network capacity.  They have a ~4% chance of building a longer alternate chain the rest of the network once they are 1 block behind.  4% doesn't sound bad and the cost for 20% of the network is pretty high but on a large purchase it may be worth it.  The attacker doesn't have a certainty but they can play the odds.  If the attacker loses $1,000 on each failed attempt, gains $50,000 on each successful one and has a 4% chance of success then in the long run he will nearly double his revenue by double spending.  

There is no "one size fits all" approach.  For some transactions zero confirm is probably viable, for some 1 confirm is good enough security for others anything less than multiple (3,4,5,6,20) confirms is too risky.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!