Jan 9, 2018

I get this question a lot. Today, I answered it at Quora.com. But, here, in the Lifeboat Blog, I have more bandwidth to elaborate.

Question:

What if I make a typo when sending Bitcoin. The recipient address may be invalid or it may belong to another individual. —But there is a third possibility. Couldn’t it be a valid address, but without any wallet that can receive it? I bet the blockchain catches these errors —Right? Will I always get my money back?

But let’s look at this a bit closer. A little knowledge goes a long way!

Incidentally, this answer gets into some gritty, esoteric details. It may lead you to believe that cryptocurrency is complicated, risky or not worthwhile. But, it only seems this way. With any new technology, standards and practices gradually flow into gadgets, apps and services. Early televisions required an expert operator. The next generation of owners dealt with vertical hold, contrast and antennae bolted onto the chimney. If your older than 55, you schlepped to a pharmacy with Dad to test a dozen or more vacuum tubes, just to find out if the circuitry was getting weak.

No one does these things anymore. TVs are flat and with a perfect picture. They are almost as easy to use as a toaster. (Except for the five remotes needed to choose a source and set up the sound! These ridiculous gadgets are only now being replaced with voice control and other smart technologies).

Back to square one: Can you send money to an invalid Bitcoin address due to a typing error? If you do, will you get it back?

It is not likely that you would do so in a hundred lifetimes. But if you succeed at creating what appears to be a valid address, you are screwed. Only a hundred million trillionths of valid addresses will ever have a wallet behind it. The blockchain does not record the creation of wallets. No one can know if there is anyone with the address and the keys to the apparently valid wallet address that you sent money into.

Addresses transfer things from one place to another. You enter a street address into your GPS expecting to be transported to a location. But, with everything else, an address moves value or sensitive information. So, let’s start with an absolute, inviolate rule: Never type an “address” into any system!

Instead, cut & paste the address from the source or—at least—from the message that delivered it. After all, you don’t want a note to your lover ending up on the mobile phone of your boss.

But you didn’t ask about best practices—you asked about checksums…

1. Invalid Address (No wallet could exist for what you typed)

Bitcoin addresses include a 32 bit checksum, which makes the possibility of typing a valid address by mistake about 1 in 4.3 billion. So don’t worry, a mistyped address will be caught by your own wallet or service, before anyone even peeks at the blockchain.

But what if—somehow—you manage to enter an address that seems valid (it passes the checksum test), but there is not yet a wallet created with that address?

2. Address Appears Valid (But there is no wallet, or they belong to the wrong person)

You might think that the transaction gets staged, but eventually fails, because the wallet address is unlikely to have ever been created. But there is a problem with that theory: Wallets can be created off-line and remain dormant for years. The block chain does not know which wallet addresses exist. It only knows which appear to be valid addresses.

For this reason, sending bitcoin to an address that is entered in proper form, but does not belong to anyone will result in permanent loss. Technically, the money exists, but no one has the private keys to spend it. Any effort to recover the loss would better be spent on a good therapist and searching for a job in the sunset years of your life.

It would be nice if you could create a wallet that matched the receiving address. Sadly, this is impossible, because wallets are created through a random one-way process.

This ends an answer to a straightforward question. But, now, let’s have some fun…

Let’s figure out what are the chances that someone actually does have a wallet that matches a valid address that you typed by accident. (After all, you already beat odds of 1-in-4.3 billion by typing an address that satisfied the checksum!)

A Bitcoin wallet address is a string of 34 characters (letters and numbers).* From the full set of 10 digits and of 52 upper/lower case western characters, four are excluded to reduce the chance of entry error (O, 0, I, L). This means that the number of possible wallet addresses is 5834 = 1060 *

The human brain has between 100 and 1000 trillion synapses. Yet, 1060 is:

More than the synapses in all brains of every animal that ever lived

More than every atom in our planet, solar system and galaxy

More than—Well, you get the point!

Even if everyone on earth creates a new Bitcoin wallet every single minute and all wallets are valid for life, the chances of accidentally typing the valid address of another user is very nearly zero.

* Interesting caveats and notes:

Bitcoin addresses are currently generated via an algorithm called RIPE-MD160. This further limits the number of possible wallet addresses to 2160 = 1.4×1048). But this reduction is caught when sending, because the checksum uses the same algorithm to validate against a properly formed address.

Checksums aren’t just for catching a typing error. In addition to 34-character addresses, Bitcoin supports 33 characters and even some 26 character addresses. The checksum ensures that shorter addresses are not actually longer addresses that with leading zeros (transcribed as blanks) or that have dropped a digit.