Why ‘Vanity’ Bitcoin Addresses Are Not Useless After All
In the BitCoin whitepaper, there is explicit instruction never to reuse a BitCoin address. But it’s also possible to create custom, or “vanity” addresses that are easier to recognize and remember. As time went on, we were warned they could in fact be a privacy and security concern. In this article we examine the details, and look at some new situations where vanity addresses can be useful.
From the original whitepaper:
“As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.”
Despite this instruction, the phenomenon of vanity addresses emerged. If you are unfamiliar with vanity addresses, I will give a brief explanation. A vanity address is a BitCoin address generated, containing (partly) specific human-readable text. As an example, I have produced a BitCoin address with “bitcoin” as text in it below.
The rule that we should not reuse BitCoin addresses makes for better security, and it helps with privacy. Once you understand this principle, it also makes reading transactions on a block explorer a lot easier.
Let’s look at a random transaction on a block explorer. The person in this example made a transaction from the BitCoin address shown on the left. This BitCoin address currently has a balance of 0.38105621 BSV (input 1) and makes a payment of 0.049 BSV to an address shown on the right (output 1). The change of 0.33205394 BSV is transferred to a new address (output 2), and not to the BitCoin address from which it originated.
I had to make a few assumptions for this explanation, and this shows exactly how this system serves privacy. Given that this is just a transaction, randomly chosen, I have no idea who these addresses belong to and what this payment exactly is. In fact, I have no idea what output is the payment and what output is change. Maybe both outputs are payments. Only the people involved in this transaction can provide a definitive answer to what kind of transaction it is. BitCoin provides transparency for the people involved and provides privacy so that the rest of the world cannot snoop around into your finances.
So should you never use a vanity address? Well maybe a few exceptional use cases exist for which you do want to let the world see and track all transactions. As an example, for a specific charity, a vanity address could be used. A vanity address might help if public oversight is wanted because it is human readable. But for sending funds BitCoin addresses in general make for a horrible user experience. Having to enter a long series of random letters and numbers by hand provides certainty that mistakes will be made. That is why people created simpler methods such as QR-codes, Handles or Paymail to avoid ever having to deal with bitcoin addresses.
The vanity address as prefix
But BitCoin is not just a simple payment system. It can also be used to operate applications. To identify transactions applicable to a specific software application, we use something called a prefix or protocol namespace. A prefix is a little data included in a BitCoin transaction and used as a unique identifier. To avoid namespace collision issues, @_unwriter made a tool called Bitcom.
Bitcom is a tool that can be used by developers to create a bitcoin address to be used as a protocol namespace. You can prove your ownership of the protocol namespace by signing it with your private key.
It is not necessary to use Bitcom. You could also generate a BitCoin address yourself in any other way and use that as the prefix for your application. So, if you could use any address, then you could also use a vanity address. Why? It makes it more identifiable for humans to read when looking at it on a block explorer.
To keep this bitcoin address secure, follow these steps: Send a micro-transaction (dust) to the BitCoin address to include it on the blockchain as a valid address. If the address is never used to spend, the key set of this BitCoin address remains secure. If needed, you could use the private key to prove ownership of your namespace.
The vanity address as (M)URL
The MetaNet is a protocol that allows for on-chain data to be usefully related, handled, and distributed by network peers in an internet-like model. The MetaNet is much like the internet but with data integrity, authenticity, and validity secured by the blockchain and proof-of-work mining.
The MetaNet protocol allows us to create a structure, a hierarchy of different transactions that contain MetaNet data. We establish relations between various BitCoin transactions by using a BitCoin address as an identifier. By signing the private key, you can link transactions with data elements (edges) to a top-level domain (node). To locate data, such as a website, on the internet, we use a Uniform Resource Locator (URL) better known as the “web address”. To find MetaNet data, we will use a MetaNet URL (MURL).
Since MetaNet uses BitCoin addresses, and BitCoin addresses are not human-readable objects, this makes it hard for users to find content. However, the MetaNet protocol has a solution for this.
You could create vanity addresses which include a plaintext prefix that can be interpreted directly by a user.
Although we initially discarded the use of vanity addresses, the concept now proves new usefulness as a prefix for applications and as MURL for the MetaNet protocol.