I've implemented a sort of "mining pool" for creating vanity addresses with zero needed trust. As to how it is possible, check out these links:https://bitcointalk.org/index.php?topic=81865.msg901491#msg901491http://bitcoin.stackexchange.com/q/3853/323
The main pool is running at:http://vanitypool.appspot.com/
And you might also want to check out:http://gobittest.appspot.com/VanityAllhttps://en.bitcoin.it/wiki/Bitcoin_Address_Utility
So, onwards with the explanations:
The idea is, that you can generate a vanity address without even knowing what private key it will actually belong to. One party grabs a random ECDSA keypair and saves the private key for themselves. They later can issue a request for a vanity address to be created, by supplying the public key form that keypair, their desired pattern and so forth. A person takes with looking for the vanity address is required to brute force random ECDSA private keys, get their corresponding public keys, add them to the provided public key
, and proceed normally with SHA, RIPEMD and base58 until they receive the desired pattern. Then they give the private key they found to the first person, which adds the two private keys in order to get their vanity address. The best thing about it - the person looking for the solution won't know what the resulting private key is! This means that you can outsource your vanity key generation without needing to trust any third party.
An example (available from gobittest website):
We have a private key:
which maps to public key:
and say we want to find a pattern "166". One of the solutions takes a form of a private key
mapping to public key:
If we add the two public keys (like the person looking for the solution would do), we get a public key:
which is equivalent to this address:
If we add the two private keys (like the person requesting the address would), we get:
which maps to the same public key as the sum of the public keys, and thus - to the same address.
Since this is a model that requires basically no trust from any party, I've decided to create this "Vanity Pool" to enable people to easily outsource their vanity address creation, as well as enable people wanting to earn some Bitcoins to use their machines for something different from traditional mining.
The main problem currently, is that there is no software to support mining for such split addresses, and combining them offline. If someone wants to commit to creating such a software, it would be great!
For the time being, the website is up for testing only on testnet. From that I can see there are still some bugs in the system, but it should work as expected.
Any comments, suggestions?
I've created a simple split vanity miner software in Google Go (if you're wondering why I used this weird language - I've been developing Bitcoin-related apps in it for a year for my master thesis). The source code and a Mac executable is available here:https://github.com/ThePiachu/Split-Vanity-Miner-Golang
It is quite slow, checking a couple hundred addresses on my old Macbook Pro, but it can solve some reasonably short patterns. The software is streamlined for the vanity pool, you only need to change the given testnet Bitcoin address to yours and it will do most of the work. It fetches work only during the start, so keep that in mind if you want to run it for longer.
Main Net version is up.
If you want to mine at this pool, please use oclvanityminer created by samr7 (https://bitcointalk.org/index.php?topic=25804
Also, if you are interested, there is a new bounty for split-key vanity address management software: