Vanity Algorand Address Generation Banner

Struggling to Organize Your Algorand Addresses? Use This Utility to Generate Vanity Addresses

Share this article:

Everybody has had that experience of second guessing yourself after sending a transaction. Did I send to the right address? Did I mistype a character? Why isn’t the transaction showing up in the explorer?

Algorand addresses consist of a random collection of 58 capital letters and numbers. Working with these addresses can be challenging, as they don’t have any meaning. Getting the address wrong by even one character often means that funds are lost forever.

Some wallets allow you to name addresses, but these names are only available in the context of the wallet. There are projects such as Ethereum Name Service which aim to provide a DNS-like mapping from human-readable names to Ethereum addresses, but this service is specific to Ethereum and cannot be used for other chains like Algorand.

Vanity Algorand Addresses Make It Easier

Think about phone numbers from the pre-mobile era.

For most people, phone numbers aren’t meaningful by themselves. Back then, you committed phone numbers to memory in their entirety for family and friends. To introduce more meaning, businesses would often purchase vanity phone numbers that were easy for their customers to remember.

But when it comes to crypto accounts, raw addresses are far too long to remember in their entirety, so users — at best — remember the first few and last few characters.

Much like vanity phone numbers, vanity crypto addresses can be a way to make addresses more meaningful and easier to remember without the need for additional services. We might generate an address that starts with the string “PURE” to show that the account belongs to PureStake, or we might create a 5-letter customer code to help us remember which customer the account is for.

How to Use the Algorand Vanity Address Utility

I’ve created a small utility for generating Algorand vanity addresses. It can be used to generate addresses that start with a specified string. The time taken to generate a given address is dependent on the underlying computer hardware and, most importantly, on the number of characters you specify. 5 or 6 characters is the practical limit for a string that will finish in a reasonable amount of time.

The vanity generator can be downloaded here:
https://github.com/PureStake/api-examples/blob/master/python-examples/algo_vanity.py

It is written in Python and tested on Ubuntu 18.04. It requires python3, pip3, and py-algorand-sdk. It does not require a full Algorand node installation.

If you don’t have pip3 you can install it with:

sudo apt install python3-pip

With pip3 installed you can install py-algorand-sdk:

sudo pip3 install py-algorand-sdk

At this point, you should be able to run the program. Let’s generate an account that starts with “PURE” that we can use as an internal company account. You pass the string you want to look for as an argument to the program.

derek@puredev:~/py$ ./algo_vanity.py PURE
Detected 2 cpu(s)
Found a match for PURE after 2431449 tries in 123.83 seconds
Address: PUREXXP2S2IIOUP7ZSBIVBHOA54ZLYNND5G3YIENSAHJZ5D7AAYSCM7K5E
Private key: noble city arrest oyster pluck tennis toast flip same business drum below flame must lonely gorilla you local turtle desk suspect anger basic abandon upper

Or in the case of customer accounts, lets create a couple numbered accounts of the form CXXXX where XXXX is a customer id. Note that there is no 0 or 1 in Algorand addresses:

derek@puredev:~/py$ ./algo_vanity.py C2222
Detected 2 cpu(s)
Found a match for C2222 after 9893404 tries in 499.07 seconds
Address: C2222YNLSZHZ5PBO7L3UDOK7I5EZISQGSORDRGVSVNXGJNQCSKZDLK6LRE
Private key: swarm famous entry paper pause always magic hire burden aisle attack spring sport custom lend treat client burst decrease dad access pumpkin bulb ability blood
derek@puredev:~/py$ ./algo_vanity.py C2223
Detected 2 cpu(s)
Found a match for C2223 after 17209546 tries in 892.68 seconds
Address: C2223JBUAC43767TEDJCOD3T3N6A6L5ELVGGPSZWENAD7XUYFTMINWK734
Private key: dignity napkin faculty air mean mother crisp party spoon resource hub exhaust stand above logic siren book lock shallow shallow index copper hundred absent bring

The program works by simply brute-force generating address/key pairs over and over until it finds a match. There is no shortcut here, as any shortcut would represent a security problem for someone trying to guess the key for an existing account. The activity is similar to a Proof of Work mining algorithm.

If you use algo_vanity.py to generate vanity addresses make sure you do it on a secure machine, and that you take appropriate security precautions with the generated private keys. The script will take advantage of all the cores it finds on the machine.

Feel free to use algo_vanity.py to generate more meaningful addresses for your business accounts, or maybe just for fun.

Share this article: