6 Answers
6

Bitcoin is very resistant to typos because the addresses contain a built-in check code. So if you had simply mistyped a few of the letters or numbers in the address, it's unlikely the client would have let you send them. If, however, you pasted in a different and valid address, the coins are already transferred to it permanently. In this scenario, Bitcoin works pretty much like cash--there is no way to get it back after giving it away.

It is highly unlikely, you made a typo and were still able to send coins. There is a difference between an invalid address and an incorrect address.

All bitcoin wallets/clients check if addresses are valid.
Bitcoin addresses are the PubKeyHash encoded in Base58 with a version value and a checksum. The checksum is the leftmost 32 bits of a double hash of the PubKeyHash. The format of the address is often referred to as Base58Checked in technical documents.

Since the checksum is 32 bits the probability of entering an incorrect address that will still decode to an incorrect but valid PubKeyHash is roughly 1 in 4.3 billion. So, on average, 4,294,967,295 out of 4,294,967,296 times a typo will produce an address that is incorrect AND invalid. When decoded the PubKeyHash will not produce the proper checksum, the error will be detected by the client/wallet, and the transaction won't be created.

To actually lose coins to a typo you would need to produce not just any invalid address, but one that is valid but incorrect and the odds of that happening are almost zero.

In that extremely unlikely event (1 in 4.3 billion is 10x less likely than winning the US PowerBall lottery), the transaction will be irreversible and only spendable by the person who has the private key for the incorrect address/pubkey. Given how many private keys are possible, it is almost certain that nobody ever has or ever will have that private keys and the funds will remain forever unspendable.

So, is it correct to think that if you accidentally issued an invalid recipient, shouldn't it be possible to doublespend it back to yourself and get that verified quicker, since it will be rejected by most miners? Or is it actually impossible to send to an invalid address (I thought that was what people did to write messages to the blockchain?)
– Murch♦Aug 23 '13 at 14:39

1

@Murch, It is impossible to send to an invalid address. No (compliant) client will even create the transactions. No (compliant) node will relay the transaction and no (compliant) miner would include it in a block. If a miner did the block would be seen as invalid by all other nodes. When people want to send coins to an address where the key is unknown they make a valid address by computing the proper checksum for the "fake" address they want to send the coins to.
– DeathAndTaxesMar 6 '14 at 20:12

Bitcoin transactions are irreversible. If you were connected to the network when you made the transaction, your coins are lost.

If you weren't connected to the network, you can restore your wallet.dat and start bitcoin with the --rescan option. This will effectively undo the transaction (that hasn't been committed to the blockchain yet).

What if I was connected to the network, but quickly (ie. before my transaction makes it into a block) restore my wallet.dat and --rescan, then spend the same coins again, but with a bigger transaction fee? Is there a chance the new transaction will get mined in preference to the old one?
– Chris MooreFeb 14 '12 at 18:27

1

no, highly unlikely. bitcoin given preference to first transaction seen, any conflicting transactions that come later are ignored and not relayed, even if they have higher fees.
– nanotubeFeb 14 '12 at 20:52

@ChrisMoore: What nanotube said, and of course, if this was possible, it would also be extremely easy to double-spend.
– Meni RosenfeldFeb 15 '12 at 6:28

1

@ChrisMoore - as I understand it, miners are encouraged to give priority to first transactions, but this is not mandate by the protocol.
– ripper234Feb 15 '12 at 7:38

1

If the transaction fee of the 'replacement' transaction was high enough, some miners might be tempted to ignore the first transaction and go for the higher reward I guess. Either way, it's best for recipients of Bitcoin payments to wait for a confirmation if the payment's amount is significant.
– Chris MooreFeb 15 '12 at 7:56

Bitcoin address include checksums, so it is less likely that you made a casual typo and entered a valid bitcoin address. However if the address is valid and also incorrect, then it is likely that the coins are effectively destroyed. You can check the address on the block chain explorer. It may help you determine if the address was a valid address (say a friend's, in the case of pasting the wrong address), or one you may have access to somewhere else.

But because transactions are irreversible, there is no way to "pull" them back or cancel the transaction.

If a service like BitUndo can get enough miners supporting it, it could have a chance (probably not a large one, but some chance) of undoing transactions if you submit your undo request within minutes of the original transaction. This works because if they are able to successfully mine the next block, they can choose to exclude the original transaction and include their refund transaction instead.

Urgh. Bitcoin is what it is for a reason, don't support services like this. The fact that they advertise some random gambling site right in the first bit of text is a huge red flag too.
– GeorgeNov 20 '14 at 15:56

Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).