Exploring Bitcoin vanity addresses

Bitcoin payment addresses are around 30 character strings of cryptographic gobbledygook. However, if you expend a little processing power, and you could get a slightly less meaningless string that humans might appreciate a bit more than a purely random address.

I’ve been asked more times for my Bitcoin address by people and services than the number of transactions I’ve ever received with the web’s favorite crypto-currency. I’ve had a Bitcoin address on my tip jar page for a few months, but I only received about 0,15 USD in a single tiny transaction.

I’ve estimated the transaction fee of that transaction to have been at least twice the amount transferred. (Bitcoin isn’t suitable for microtransactions, something I explored a bit more thoroughly for credit card transactions last month.)

I publish an Bitcoin address for this site there mostly because people asked for it (and because I can use any funds received to play/test with Bitcoin software). I thought I’d try to make the address itself a little more appealing to the inner geek I suspect many Bitcoin users more to the inner geek of Bitcoin users by hashing out a vanity address for myself:

1CTRLTiPsApiTUd5Eq5HswjQZF8yWiuJS4

Functionally, a readable Bitcoin address, or vanity address, makes no difference what so ever.

The above vanity address, like any other Bitcoin address, is a base-58 encoded representation of a cryptographic key pair. The main difference is that I wasted 13 hours of processing power and electricity to generate a fancy address with two recognizable words instead of the normal random address. Note that you can’t a vanity address with a long string as the computational difficulty gets exponentially more difficult.

My first attempt at creating a specific vanity address for myself took about 4-minutes for the phrase “CTRL”. That first attempt unfortunately also contained a derogatory term for the female genitalia. The odds of the C-word appearing in any Bitcoin address along are astronomical, and it should have been even less likely to happen in an address with a reduced length for random characters.

Needles to say, I’d to restart and let the hashing run for 19 hours which yielded about six thousand other candidates. After making sure that it didn’t contain any offensive words, I landed on an address that had the word “tips” immediately after my brand pattern. I felt quite lucky to get that one by random chance.

This incidence reminded me of a recent episode where the Australian Bureau of Statistics had to issue an apology for a barcode that contained the word “BUMSEX. The barcode was found on a postal vote for the Australian national marriage equality vote.

All things considered, I’d say it’s more important that you check that any Bitcoin addresses you generate and publish for human consumption don’t contain any possibly offensive terms than that you spend time and resources generation a vanity address.

Run it your address through a dictionary before publishing it anywhere, and run it through a human or two for an address that will be widely circulated (such as an address for a donation pledge).

A vanity Bitcoin address can be a cute design detail. However, your priorities should be a little different if you’re to investing time in creating an address for wide circulation.

Users are likely to copy-and-paste a Bitcoin wallet into their wallet software to perform the actual transaction. This can introduce errors if the user hasn’t fully selected the full address, and only got a partial address.

Most wallet software will warn the user about an invalid address. The user could also have malware on their devices that looks for Bitcoin addresses on the clipboard, and replaces them with their own addresses ones they’re being pasted.

You can help people identify such issues themselves by having a recognizable word or pattern at the end of the address rather than at the front. This increases the chance that people will spot that the address they pasted into their software is different from the address they meant to copy.

Assuming the person looks for the end and beginning of the string, which they must do to select and copy it, they’re can also notice words like “PAY” or even a common abbreviation like “WWW”. If that pattern is missing or gone when they paste it into their wallet software, they might notice the mistake right away when they expected to see the same pattern they saw seconds earlier. Any pattern that draws attention to the end of the wallet address can be a beneficial.

How to make a Bitcoin vanity address

In order to make your Bitcoin vanity address, you’ll need a wallet software that can import private keys from their key hashes. Bitcoin Core and its derivatives support this feature, but not all other wallets have support for importing private keys. Check your wallet software’s documentation before investing any time in creating a custom payment address.

To do the actual cryptographic work required for the address generation, I used a software project called vanitygen. The project page has all the information you need to get it going. As its impossible to deterministic generate a desired hash-outcome, the software will just try and try and try again until it finds a desired pattern.

Depending on your luck, processing power, and the complexity/length of the desired pattern — this could take anywhere from minutes to millennia. Make sure you start with a short phrase to test that it’s working before waiting a week for a longer/fancier result.

There are online services that can do this for you for a small fee, but you should perform address generation yourself to ensure you remain in control of the private key that unlocks your fancy new vanity address.

Once the vanitygen program is done, you’ll have a public vanity address and a private key string. You can now import the private key into your Bitcoin wallet software. The import process adds the private key required to confirm your ability to decrypt and spend funds sent to the vanity address to your wallet.

You may want to print your private key for backup purposes, but be sure to store it securely — whether physically or digitally. Anyone who gets hold of your private key also has access to all funds stored on the public vanity address.

Using the Bitcoin Core software, you can open the debug console from the Help menu: Debug Window. If you’ve locked your wallet, you’ll need to lookup a tutorial on how to unlock it or type “help” to learn how to do it. From the debug console, you can import your vanity address’ private key into your wallet with the following two commands:

importprivatekey "privatekey" "My label"
validateaddress "1vanityaddress"

The first command can take several minutes to complete. The second command isn’t strictly necessary, but it will show a reassuring confirmation that you’ve imported and taken control of your vanity address. You won’t see your new vanity address anywhere else in the Bitcoin Core user interface before it has received funds; at which point it will show up in the transactions log.

If you enjoyed this article, or simply have too much Bitcoin burning in your digital wallet – please feel free to send some to the address included at the top of the article to support my writing.