You can already spend coins twice, it's just that one of the addresses you send the coins to ultimately won't get them. So people have to wait some time to ensure the transaction fully processes before they can give you the goods in full confidence that they have received payment.
At some point, if cryptocurrencies become more established, it might be financially beneficial for one blockchain if another blockchain becomes non-viable.
Re: "How likely is it that a valid transaction that is seen by a large part of the network won't be included in the blockchain?"
My understanding is that if you don't wait for multiple confirmations, then it's not particularly challenging to double spend bitcoins. That's why vendors don't accept a transaction as "good" until multiple transactions have occurred.
And waiting for 30 minutes to pay your restaurant bill would kind of suck.
I'm guessing that Coinbase monitors the Bitcoin network to detect double spends. A malicious double spender has to broadcast the second transaction very soon after the first. If you're processing Bitcoin transactions, you can just look for a second one. I think the chances of a second transaction succeeding if it's issued 30 seconds or more after the first are pretty low.
You can't spend Bitcoin without the public knowing, and that goes for double spending as well.
Not true. The transaction has to be verified by multiple other people before it can be trusted. If you spend the same bitcoin twice in a short time period, it's a toss-up as to which one gets accepted into the official blockchain.
The problem with waiting AFAIK is that it's vulnerable to attacks on the underlying peer-to-peer network.
Let's say you wait 1 hour to see whether there was a double spend. If an attacker wanted to, they could spend twice and somehow mess with the network for 1 hour.
For example, an attacker at the internet service provider could intercept packets from the Bitcoin network and just block the other spend transaction from getting to you. You wait 1 hour and consider the payment finalized, and you swap goods for Bitcoin.
It is theoretically possible to double-spend a bitcoin transaction in the first 20 minutes after you spend it.
However, the cost of doing so (in processing power) is high enough that it's not worth doing for small amounts. So long as amounts over $100 wait for confirmation you should be fine.
But again, at actual scale, there is no guarantee that the transactions that worked on your previous attempt will work on the next one, because lots of other people will also be attempting to use them.
To elaborate, a merchant can easily monitor (or pay someone to monitor) transactions being sent to miners in real time. The probability of a successful double spend decreases drastically as the time since the first spend increases. If someone hasn't tried to double spend in ten seconds or so, they'll likely fail if they try.
Not really. The transaction arriving over the Bitcoin network, which takes around 10 seconds, is the first pass of authenticity testing - it won't work unless the account has the money and the sender has the rights to that account and the nodes forwarding the transaction haven't seen any other spends of that coin since the last block. At that point, doing a double-spend reliably is already hard enough that anyone who can do it probably has much better things to do with the ability than try to skim $20 worth of drinks at a bar.
One confirmation, that is, being included in one block, takes anywhere from a few seconds to 15 minutes, probably averaging 5-7 minutes. With that, it's already virtually impossible to double-spend without having enough mining power to take 51% of the current mining network. That's a bit more hashing power than the entire current mining network combined. That'll earn you hundreds of thousands of dollars a day just doing honest mining, and potential double-spend activity well into the tens of millions or more. Again, why bother with that to rip off a $20 bar tab? Or even a $2,000 bar tab?
Are you sure you understand how double-spends in Bitcoin work? If you did, the right response would not be to double-down and engage in false dichotomies where a single double-spend of any transaction ever is a 100% disaster, and instead, adopt the more nuanced perspective that a few double-spends will not kill the currency, will save vast amounts of computational resources, and users can opt into however much security they require by waiting an appropriate number of confirmations.
So what's happening when I purchase something at a restaurant that accepts bitcoins? It usually takes only a 10-15 seconds for them to accept my transaction. I realize that a confirmation on the blockchain hasn't occurred, so with some hackery it's possible to double-spend - but, it's never been a problem.
Once the major mining pools receive the transaction, it's very unlikely to be double-spent. If you try to purchase something online from a merchant accepting Bitcoin via Coinbase or Bitpay, you'll notice the transaction completes almost instantaneously.
I don't understand where the cost comes from. Can't you double-spend at will until one of your transactions makes it into the blockchain? Until that point, as far as the Bitcoin network is concerned, you haven't actually spent any money. So it seems like you'd have ten minutes or so of double-spending ability, totally free, and only have to start using processing power if you want to extend beyond that ten-minute period (by forking a blockchain that excludes the transaction you intend to double-spend).
My understanding of Bitcoin implementations is pretty vague, though, so I'd welcome correction if this isn't actually how it works.
Not really. The possibility of a short lived double spend is a valid state for the system to be in. What is vanishingly unlikely is a long lived double spend. There are currently no long lived double spends in the block chain, and that means no double spend has ever been successful.
You are making a way bigger deal out of this than it is.
Exchanges can quite easily protect themselves.
All they have to do is increase the confirmation time before they "accept" coins.
The longer you wait, the more secure your coins are. I would suspect that a day is easily enough time to be confident that a double spend won't happen.
Well let's say we do things this way, and I double spend a transaction, sending one to Alice and one to Bob. Suppose Alice waits t seconds after receiving the transaction, and if she doesn't see any double spends in that time, she accepts that the coin is hers and she then sends me something in return.
One second before Alice "confirms" my transaction, I can send out my transaction to Bob. Since my message takes time to propagate through the network, it won't reach Alice soon enough and she will think I've paid her, and she'll send me whatever I was paying for. But other people will see both these transactions within t seconds of each other. They won't know which they should believe is correct, and they might not accept payment from Alice in the future.
edit:
When someone sends you a transaction, it registers more or less immediately. It is only the confirmations in the blockchain (that happen every ~10 minutes) that give you confidence that the coins were not double spent.
> My understanding is that if you don't wait for multiple confirmations, then it's not particularly challenging to double spend bitcoins.
That's incorrect, there is a significant cost associated with executing a double-spend attack. For small transactions, it's uneconomical to mine an alternate chain in order to execute a double-spend attack.
If you trust the miner a little bit, you can assume that a zero-confirmation transaction be part of the common blockchain. Now it's not advisable to do that when selling somebody a Ferrari and letting them drive off, but it's probably less risky than accepting a credit card payment.
Regarding reputation: I don't quite understand the point. You'd just have to sign your tx with a private key that has a corresponding public key with some reputation attached to it. This is pretty independent of bitcoin itself. You could even build a system where you deposit some amount with a third party (or multiple third parties using a MULTISIG tx), which will reimburse the vendor with that amount if a double spend is executed.
At some point, if cryptocurrencies become more established, it might be financially beneficial for one blockchain if another blockchain becomes non-viable.
reply