There is a
vanitygen utility (check out exploitagency's version which is improved fork of samr7's version) which can give you the estimates how long it takes to find the private key for the given pattern (see:
vg_output_timing_console()). Some special cases (like repeated characters) are more difficult than the other.
The difficult of finding a vanity address depends on its exact structure (leading letters and numbers) and how likely such an output is given the algorithms involved, which can consist of several pivots where the difficulty suddenly changes. bitcoin wiki
Here is the table which can be found at bitcoin wiki page which provides estimate times for cracking private keys for the given address patterns:
The example table below shows how an increasingly complex vanity affects the difficulty and average time required to find a match only for that vanity, let alone the full address, for a machine capable of looking through 1 million keys per second.
Using vanitygen you might think that you would be able to find the private key for a given address. In practice, this is considered impossible.
Let's create the following
unspendable bitcoin address:
$ unspendable.py 23456789A123456789A12345678
vanitygen I can calculate the performance on my machine (>240 Kkey/s):
$ vanitygen -q -k -o/dev/null 1
[241.29 Kkey/s][total 2880199][Found 11618]
Note: Above was tested on MacBook Pro (2.3GHz Intel Core i7, 16GB 1600MHz DDR3).
Furthermore, it can calculate the estimated time when looking for specific patterns, e.g.
to find first 5 characters out of 26-35 (few seconds):
$ vanitygen -q -k -o/dev/null 12345
[698.17 Kkey/s][total 8192][Prob 0.2%][50% in 4.5s]
6 first characters out of 26-35 (few minutes):
$ vanitygen -q -k -o/dev/null 123456
[701.39 Kkey/s][total 51712][Prob 0.0%][50% in 4.3min]
7 characters out of 26-35 (few hours):
$ vanitygen -q -k -o/dev/null 1234567
[471.87 Kkey/s][total 8192][Prob 0.0%][50% in 6.3h]
8 characters out of 26-35 (few weeks):
$ vanitygen -q -k -o/dev/null 12345678
[658.82 Kkey/s][total 2548480][Prob 0.0%][50% in 10.8d]
9 characters out of 26-35 (few years):
$ vanitygen -q -k -o/dev/null 123456789
[572.50 Kkey/s][total 1631744][Prob 0.0%][50% in 2.0y]
10 characters out of 26-35 (a century):
$ vanitygen -q -k -o/dev/null 123456789A
[630.48 Kkey/s][total 118528][Prob 0.0%][50% in 104.2y]
11 characters out of 26-35 (few millennia)
$ vanitygen -q -k -o/dev/null 123456789A1
[579.78 Kkey/s][total 17348352][Prob 0.0%][50% in 6571.6y]
12 characters out of 26-35 (hundreds of millennia):
vanitygen -q -k -o/dev/null 123456789A12
[751.61 Kkey/s][total 6720512][Prob 0.0%][50% in 294013.9y]
13 characters out of 26-35 (thousands of millennia, few million of years):
$ vanitygen -q -k -o/dev/null 123456789A123
[666.93 Kkey/s][total 3886080][Prob 0.0%][50% in 1.921802e+07y]
14 characters out of 26-35 (billion of years):
$ vanitygen -q -k -o/dev/null 123456789A1234
[817.44 Kkey/s][total 3994880][Prob 0.0%][50% in 9.094109e+08y]
15 characters out of 26-35 (50 billion of years):
$ vanitygen -q -k -o/dev/null 123456789A12345
[784.31 Kkey/s][total 4633856][Prob 0.0%][50% in 5.497420e+10y]
... 28 characters (decillion of years if you're lucky)
$ vanitygen -q -k -o/dev/null 123456789A123456789A12345678
[910.34 Kkey/s][total 2723072][Prob 0.0%][50% in 3.981113e+33y]
It's worth to note, that the above-generated address has 34 bytes, but the first character is just the network identifier (for bitcoin it's usually
3), and the last 4 bytes is just a checksum. For more details about the address, see this bitcoin wiki page.
For sure keysearch rate can be increased by using a better GPU or multiple of CPUs (see:
-t), but still, the estimates can be huge.
For example, here is the table of keysearch rates at bitcoin wiki page:
And here are few reports from users for different GPUs:
- i7 8700K - ~3Mkey/c
- GTX 980TI (v1.42) - ~73Mh
- GTX 1050ti - ~23 Mkey/c
- GTX 1070 - ~50Mhkey/s
- GTX 1080ti - ~108 Mkey/c
Source: List of supported GPU's (GH-46).