4

I had 3 Bitcoins stored on my PC and I had a backup image of my PC. I restored my PC on another computer from the image and I had 3 Bitcoins on that computer also. I spent 5 Bitcoins as a test, and it worked. What just happened?

  • 5
    Can you be more precise about what you mean by "it worked"? – Greg Hewgill Jan 7 '15 at 19:46
  • 2
    You just made a double spend attack, but the transactions will be reverted as soon the network detect it. That's why is recommended wait for one confirmation at least. – Felipe Jan 7 '15 at 20:38
  • 2
    Can you give us the address(es) where you sent the bitcoin? – Mark S. Jan 8 '15 at 0:25
  • 1
    Wait, so it's that straightforward? I always thought/assumed it was pretty technically difficult to send double spent coins and/or malleable blocks? ie using raw Txns sent manually. – Wizard Of Ozzie Jan 8 '15 at 0:26
  • 2
    Can you send us the bitcoin addresses so we can look at them on a site like blockchain.info to determine what the network actually did with the transactions – Mark S. Jan 8 '15 at 23:22
11

It's like two people holding on to the same $20 bill and each of them saying, "see, I have 20 dollars!".

Bitcoins can be spent/accessed by anyone that has the private key to unlock them. If two computers have the same private key stored, then they can both access the bitcoins. If one wallet spends the bitcoins, the other wallet will show them as spent as well, just like one person spending the $20 bill means it is gone for the other person.

  • So basically what your saying is it is possible to scam 2 different websites by using the same Bitcoins on both of them, right? – kirill2485 Jan 8 '15 at 23:18
  • 4
    Sort of. If both of the websites accept transactions with zero confirmations and they both happen to see the transaction that was sent to them before the transaction (sending the same coins) to the other site, then you possibly could. Most places don't accept zero-conf transactions, though, and you can't exactly control how transactions propagate. – morsecoder Jan 9 '15 at 15:37
7

As another analogy, it is like taking your bank statement, showing a $1000 balance, and making a copy of it, and thinking you now have a total of $2000 in two accounts. You don't; you are counting the same money twice.

If both computers' client software is in sync, then if you spend the coins on one computer, the other computer will also show them as spent. If you send coins from one wallet to the other, the destination wallet will show that you sent coins to yourself, and your balance will not increase.

If each wallet does show a total balance of 3 bitcoins, and they correspond to coins in the same addresses, then there should be no way to spend a total of 5 bitcoins. Indeed, there should be no way to get either client to even show that you have 5 bitcoins. It's not clear exactly what you mean when you say that you spent 5 bitcoins; for us to be sure of what happened, you would need to explain in detail exactly what you did.

If you spend coins from both wallets in quick succession, you may be able to create two different transactions that attempt to spend the same coins. This is called a double spend. However, only one of those transactions will be confirmed, so you can't actually get goods or services for both transactions, unless the other party is foolish enough not to wait for confirmations.

1

This occurrence has it's own name and there are lots of resources about this problematic aspect of bitcoins: https://en.bitcoin.it/wiki/Double-spending

The Bitcoin police is on the way to your house right now.

1

When you say you spent 5 BTC as a test, do you mean you sent off transactions worth 5 BTC? You essentially just tried to double spend and the blockchain is going to reject one of those.

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.