Now, take this geeky technology and try finding some more niche appeal. We have technologies like Factom embedding data into the blockchain, SatoshiDice using transaction hashes as gambling randomness and so on. However, I do believe that one of my projects is perhaps the geekiest service in Bitcoin ;).
But first, some theory.
Just like some cars have vanity plates, so can Bitcoin. While some people are satisfied riding in their Bitcoin Priuses:
some of us want to create some nice flairs for our wallets. While it's easy to create an invalid Bitcoin address with any text (such as 1Piachuxxxxxxxxxxxxxxxxxxxy3XorwA), it takes a lot more effort to actually generate an address you can import into a wallet and spend (like 1PiachuEVn6sh52Ez7o6Fymvw54qvQ4RBm). Normally this process would involve generating a lot of addresses and looking for your desired pattern. It is somewhat manageable with GPUs (especially in the pre-ASIC era of GPU mining), a lot of people didn't have the necessary hardware to perform this operation.
Back in the day, those people would result in having to trust someone to generate their key for them and not steal their money in the future. In the Bitcoin world, having to trust someone with your private key is unacceptable, but luckily, the laws of mathematics gave us a solution!
Split-key vanity addresses
Now, things are getting a bit complicated, but I'll try to keep it as simple as possible. If things get too complicated, feel free to skip to next heading.
Bitcoin private keys are essentially really large numbers (lets call it A). Bitcoin public keys are those large numbers multiplied by a Generator (essentially a point in space), which give you your public key point:
A * G = AG
A - private key
G - Generator
AG - public key
Everyone that sends you money knows your AG, but since division in this math space is impossible, they will never guess your private key A from it. All public keys easily map to Bitcoin addresses.
Now, lets say we have another private key B. The following equations hold in the Bitcoin space:
(A+B) * G = AG + AB
A * B * G = AG * B
This means that if you add two private keys, the public key of the sum is identical to if you would have added the public keys together. Same thing with multiplication.
Now, what are the practical uses of this? There are some uses for combining addresses for storing money (especially in pre-multisig era), but the use I want to talk to you about is Vanity Address Mining.
Vanity Address Mining
Given everything explained in the previous heading, we solved our privacy issue from before. Now we have a way to have someone generate us a private key without them knowing our private key. The only information they need is our public key and the pattern we want. They generate us a private key that we combine with our own private key, and we get our vanity address. Because our private key was always secure, we can be certain only we know the private key.
Now, given that the users request vanity addresses with information that can be shared publicly and vanity miners submit results that can also be publicly broadcast, we can start connecting the two in a more methodical fashion without any special concerns for privacy. And this is a role for...
Vanity Pool is a service I created a few years ago to leverage the split-key address creation in the business of vanity address mining. Anyone can go onto the website, request any reasonable vanity pattern to be mined, pay the fee and let the miners do the work for them. The miners would query all the available work and start mining the addresses one by one until they find a solution and cash it in.
Since the service launched, it had helped many people create addresses for themselves and their businesses. Yours can be next! ;)
As it stands, Vanity Pool is one of the geekiest services in Bitcoin. It not only leverages clever cryptographic tricks, has its own mining ecosystem, but also does all of that in a provably secure manner. No private keys are ever exposed.
Vanity Pool is a geeky Bitcoin service that uses ECDSA math in a clever way ;).