I sent bitcoins to an address, but I think I made a typo when I copied it. Where did these bitcoins go. Can I get them back?
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.
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).
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.
Bitcoin Addresses contain a check-value: extra data added on computed as a function of the rest so that mistakes are unlikely to be acceptable addresses. 1x and 3x addresses use a 32-bit cryptographic hash for their check value and as a result any given well formatted random address has roughly a 1 in 2^32 chance of being accepted.
But when users make mistakes they don't generally produce random strings they tend to make typos where a small number of characters are replaced with alternatives which are visually similar, audibly similar, keyboard-position similar, or case variations. Transposition of adjacent characters is also more likely than random errors. 1x/3x addresses are designed with one improvement to likely errors: the base58 charset excludes a number of visually similar characters.
On average one of these likely errors is also only going to be accepted 1 in 2^32 times, but sometimes a given address is more vulnerable since the detection performance is only an average. E.g. you could have an address where there are one or more different places where a likely mistake could be made. This isn't a practical concern, since these cases are unlikely, but it's an area that could be improved on.
BIP173 introduced BC1x style addresses (also called bech32). BC1 addresses use a smaller character set that doesn't have mixed case which completely eliminates one major cause of transcription errors. Like base-58 the bech32 character set also excludes some visually confusing characters (in addition to all the mixed case cases).
BC1 addresses also have a check value, but it is 30 bits instead of 32-bits. The 30-bit check in BC1 addresses, although shorter, is radically stronger than the old approach because it is constructed out of an error correcting code instead of a cryptographic hash.
The construction for BC1 addresses guarantees that up to 4 character errors or 4 transpositions in an address are always detected. 5 errors are also always detected if they're all made among the most visually similar remaining characters. For more errors than are guaranteed the false acceptance rate approaches 1 in 2^30 as the number of errors goes up.
The error correction code based design of bech32 also means that applications can hint to users what characters they got wrong without a computationally expensive brute force search.
When we designed BIP173 we felt that 30-bits of protection against random errors was probably overkill, but we didn't want to have error detection performance that was much worse than the old standard in any major respect.
If you model the user as making random mistakes and entering, say, 2.5% of the characters wrong on average (so one mistake expected per entered address) then bech32 gives that user protection better on average than a 39 bit random hash (so 1 in 2^39 wrong addresses they enter will be falsely accepted). Being more careful pays off too: if the user's error rate is reduced to 0.1% the rate of accepted bad addresses drops to 1 in 2^60).
This graph shows the effective protection level as a function of the user's error rate for Bech32, a 32-bit hash (like 1x addresses), and alternative error correcting code which we could have ended up with if we hadn't taken so much care in designing bech32:
BC1 address also avoid errors in another way: People sometimes lose funds because a number of reckless/scammy altcoins have copied Bitcoin address format, so you can accidentally send bitcoins to an altcoin address. For the moment this doesn't apply to BC1 address, and the prefix beginning with 'BC' hopefully will reduce the odds of it in the future. (Though sadly, it's become trendy for more scammy cryptocurrencies to call themselves 'bitcoin' now, so perhaps not.)
Improved error detection is just one of many reasons users should prefer BC1 addresses these days.
A merchant could offer their own local bitcoin processor to connect a client to, if the transaction is innaccurate, they could "undo" it and simply not transmit the transaction to the Bitcoin Network.
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.