Vanitygen: Difference between revisions
Mercurytoxic (talk | contribs) No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
'''Vanitygen''' | '''Vanitygen''' was the first example of a command-line vanity Bitcoin address generator. There are a few other vanity address generators including '''Vanitygen-plus''' and '''VanitySearch'''. | ||
If you're tired of the random | If you're tired of the random addresses generated by regular Bitcoin clients, you can use a vanity address program to create a more personalized address. You will add unique flair when you ask people to send bitcoins to 1SatoshiHHqnDPRSfiZ5GXJ8Gk9dbjO. | ||
These vanity address programs accept as input a pattern (e.g. 1Bitcoin) and produce a public address and private key. The amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky. | |||
The example below (from around 2014) illustrates a session of vanitygen. It takes about 10 seconds to create the new public and private keys using a Core 2 Duo E6600 CPU on x86-64 Linux. | |||
Please note that vanitygen is a legacy program and that the information below is provided for historical purposes. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ ./vanitygen 1Boat | $ ./vanitygen 1Boat | ||
Line 16: | Line 17: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen). Both can be built from source, and both are included in the Windows binary package. Also included is oclvanityminer, the vanity address mining client. | Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen). Both can be built from source, and both are included in the Windows binary package. Also included is oclvanityminer, the vanity address mining client. Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]'s [[Vanity Pool]]. | ||
Current version: 0.22 | Current version: 0.22 | ||
Line 24: | Line 25: | ||
Get the source from [https://github.com/samr7/vanitygen GitHub]. Includes Makefiles for Linux and Mac OS X. | Get the source from [https://github.com/samr7/vanitygen GitHub]. Includes Makefiles for Linux and Mac OS X. | ||
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 | Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitcoinTalk] | ||
The latest source doesn't work properly for high-end AMD cards (7XXX and greater). | The latest source doesn't work properly for high-end AMD cards (7XXX and greater). The solution is to change line 459 in oclengine.c from: return quirks; to: return quirks & ~VG_OCL_AMD_BFI_INT; | ||
Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 | Windows x86+x64 binaries that solve this problem plus provide support for compressed keys [https://lifeboat.com/oclvanitygen here]. PGP signature [https://lifeboat.com/oclvanitygen.zip.sig here]. If you have any problems with the binaries, join the relevant [https://bitcointalk.org/index.php?topic=301068.0 BitcoinTalk discussion]. | ||
== Expected keysearch rate == | == Expected keysearch rate == | ||
What key search rate can I expect from hardware | What key search rate can I expect from my hardware? The last five examples using GPU processors were taken from [https://bitcointalk.org/index.php?topic=5112311.msg50823897#msg50823897 DaveF's list of speeds] that can be achieved with the VanitySearch address generator. | ||
'''Keysearch Rates''' | '''Keysearch Rates''' | ||
Line 66: | Line 67: | ||
|- | |- | ||
| Core i5-2500K @ 3.30GHz || AMD RX 480 || 57-64 Mkey/s || With AMD patch [https://nastyfans.org/download/oclvanitygen.txt] | | Core i5-2500K @ 3.30GHz || AMD RX 480 || 57-64 Mkey/s || With AMD patch [https://nastyfans.org/download/oclvanitygen.txt] | ||
|- | |||
| || GeForce GTX 1060 3GB (9x128 cores) Grid(72x128) || 322 Mkey/s || [https://bitcointalk.org/index.php?topic=5112311.msg50823897#msg50823897] | |||
|- | |||
| || GeForce GTX 1080 Ti (28x128 cores) Grid(224x128) || 896 Mkey/s || [https://bitcointalk.org/index.php?topic=5112311.msg50823897#msg50823897] | |||
|- | |||
| || EVGA RTX 2080 XC ULTRA || 1425 Mkey/s || [https://bitcointalk.org/index.php?topic=5112311.msg50823897#msg50823897] | |||
|- | |||
| || GPU #0 Tesla V100-SXM2-16GB (80x64 cores) Grid(640x128) || 1815 Mkey/s || [https://bitcointalk.org/index.php?topic=5112311.msg50823897#msg50823897] | |||
|- | |||
| || GPU #0 GeForce RTX 2080 SUPER (48x64 cores) Grid(384x256) || 2002 Mkey/s || [https://bitcointalk.org/index.php?topic=5112311.msg50823897#msg50823897] | |||
|} | |} | ||
== Difficulty of finding a vanity == | == Difficulty of finding a vanity == | ||
The difficult of finding a vanity address depends on its exact structure (leading letters | The difficult of finding a vanity address depends on its exact structure (what are the leading letters or numbers) and how likely such an output is given the algorithms involved, which can consist of several pivots where the difficulty suddenly changes. | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 82: | Line 87: | ||
| 1AAAAA || 259,627,881 || | | 1AAAAA || 259,627,881 || | ||
|- | |- | ||
| 1QLbz6 || 259,627,881 || This vanity is alphabetically before a major pivot, the [[RIPEMD160]] hash value of 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (address: 1QLbz7JHiBTspS962RLKV8GndWFwi5j6Qr) | | 1QLbz6 || 259,627,881 || This vanity is alphabetically before a major pivot, the [[RIPEMD160]] hash value of 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (address: 1QLbz7JHiBTspS962RLKV8GndWFwi5j6Qr). | ||
|- | |- | ||
| 1QLbz7JHiBTspS962RLKV8GndWE || 2.9597E+45 || | | 1QLbz7JHiBTspS962RLKV8GndWE || 2.9597E+45 || | ||
|- | |- | ||
| 1QLbz7 || 837,596,142 || This vanity is partially after a pivot and difficulty increases | | 1QLbz7 || 837,596,142 || This vanity is partially after a pivot and difficulty increases. | ||
|- | |- | ||
| 1QLbz7JHiBTspS962RLKV8GndWG || 1.6489E+47 || After a major pivot and 59 times as difficult as the 'E' vanity. | | 1QLbz7JHiBTspS962RLKV8GndWG || 1.6489E+47 || After a major pivot and 59 times as difficult as the 'E' vanity. | ||
Line 92: | Line 97: | ||
| 1QLbz8 || 837,596,142 || | | 1QLbz8 || 837,596,142 || | ||
|- | |- | ||
| 1aaaaa || 15,318,045,009 || | | 1aaaaa || 15,318,045,009 || After various pivots and subsequently more difficult. | ||
|- | |- | ||
| 1zzzzz || 15,318,045,009 || | | 1zzzzz || 15,318,045,009 || | ||
|- | |- | ||
| 111111 || 1,099,511,627,776 || A special case | | 1abcdef || 888,446,610,539 || Six characters case sensitive starting with a lower case character. | ||
|- | |||
| 111111 || 1,099,511,627,776 || A special case: leading number 1 (one) is especially difficult. | |||
|- | |||
| 1abcdefg || 51,529,903,411,245 || Seven characters case sensitive starting with a lower case character. | |||
|- | |||
| 1abcdefgh || 2,988,734,397,852,220 || Eight characters case sensitive starting with a lower case character. | |||
|} | |} | ||
== Use of | == Use of a Vanity Address Generator to try to attack addresses == | ||
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. Given that the difficulty increases exponentially the longer your vanity is, so does the average time required to find that vanity. | Using vanitygen (or an equivalent), you might think that you would be able to find the private key for a given address. In practice, this is considered impossible. Given that the difficulty increases exponentially the longer your vanity is, so does the average time required to find that vanity. The 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. | ||
Please note that many GPU implementations currently (March 2020) allow up to 1,000 Mkeys/s (or more). For example [https://www.bitcoinvanityaddress.com/ Bitcoin Vanity Address] uses [https://github.com/JeanLucPons/VanitySearch VanitySearch] to search more than 1,000 Mkeys/s. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 133: | Line 147: | ||
== Outsourcing your Vanity Address generation == | == Outsourcing your Vanity Address generation == | ||
The | The best way to generate a vanity address is to calculate it yourself. However, for longer prefixes, you are unlikely to have enough computational resources or time to calculate them. In these cases, you can outsource your vanity address generation to a [[Bitcoin Vanity Generation Website]]. It is suggested not to provide a full private key; one idea is to use [https://en.bitcoin.it/wiki/Split-key_vanity_address#Address_generation split-key address generation] although some say that this is rather complex. | ||
== See also == | == See also == |
Revision as of 22:52, 27 March 2020
Vanitygen was the first example of a command-line vanity Bitcoin address generator. There are a few other vanity address generators including Vanitygen-plus and VanitySearch.
If you're tired of the random addresses generated by regular Bitcoin clients, you can use a vanity address program to create a more personalized address. You will add unique flair when you ask people to send bitcoins to 1SatoshiHHqnDPRSfiZ5GXJ8Gk9dbjO.
These vanity address programs accept as input a pattern (e.g. 1Bitcoin) and produce a public address and private key. The amount of time required to find a given pattern depends on how complex the pattern is, the speed of your computer, and whether you get lucky.
The example below (from around 2014) illustrates a session of vanitygen. It takes about 10 seconds to create the new public and private keys using a Core 2 Duo E6600 CPU on x86-64 Linux.
Please note that vanitygen is a legacy program and that the information below is provided for historical purposes.
$ ./vanitygen 1Boat
Difficulty: 4476342
Pattern: 1Boat
Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT
Privkey: 5J4XJRyLVgzbXEgh8VNi4qovLzxRftzMd8a18KkdXv4EqAwX3tS
Vanitygen includes components to perform address searching on your CPU (vanitygen) and your OpenCL-compatible GPU (oclvanitygen). Both can be built from source, and both are included in the Windows binary package. Also included is oclvanityminer, the vanity address mining client. Oclvanityminer can be used to automatically claim bounties on sites such as ThePiachu's Vanity Pool.
Current version: 0.22
Windows x86+x64 binaries here. PGP signature here.
Get the source from GitHub. Includes Makefiles for Linux and Mac OS X.
Main discussion at BitcoinTalk
The latest source doesn't work properly for high-end AMD cards (7XXX and greater). The solution is to change line 459 in oclengine.c from: return quirks; to: return quirks & ~VG_OCL_AMD_BFI_INT; Windows x86+x64 binaries that solve this problem plus provide support for compressed keys here. PGP signature here. If you have any problems with the binaries, join the relevant BitcoinTalk discussion.
Expected keysearch rate
What key search rate can I expect from my hardware? The last five examples using GPU processors were taken from DaveF's list of speeds that can be achieved with the VanitySearch address generator.
Keysearch Rates
CPU | GPU | keys/s | Comment |
---|---|---|---|
Core i5 750 @2.67 GHz | nVidia GTS 250 | 1.54 Mkey/s | 110% CPU [1] |
Core2 Duo 6600 | nVidia GTX 285 | 3.5 Mkey/s | 100% CPU / 90% GPU [2] |
Sempron 140 | AMD 5830 | 5.5 Mkey/s | 100% CPU / 60% GPU [3] |
AMD Radeon r7 240 | 4 Mkey/s | [4] | |
Core i7 | AMD 6500M | 4.5 Mkey/s | 98% GPU |
nVidia GeForce GTX 680M | 14-16 Mkey/s | [5] | |
nVidia GeForce GTX 970 | 38 Mkey/s | [6] | |
Core i7-4702MQ 2.2GHz | 1.09 Mkey/s | ||
Core i7-4702MQ 2.2GHz | GeForce GT750M | 5.38 Mkey/s | |
AMD Radeon r9 280x | 25-35 Mkey/s | ||
Sapphire Radeon HD 7970 | 28Mkey/s | [7] | |
AMD Radeon HD 5870 | 30 Mkey/s | [8] | |
Asus Strix GTX 970 | 40Mkey/s | [9] | |
nVidia GeForce GTX 780 Ti (3GB 384-bit GDDR5) | 50-60 Mkey/s | [10] | |
Core i5-2500K @ 3.30GHz | AMD RX 480 | 57-64 Mkey/s | With AMD patch [11] |
GeForce GTX 1060 3GB (9x128 cores) Grid(72x128) | 322 Mkey/s | [12] | |
GeForce GTX 1080 Ti (28x128 cores) Grid(224x128) | 896 Mkey/s | [13] | |
EVGA RTX 2080 XC ULTRA | 1425 Mkey/s | [14] | |
GPU #0 Tesla V100-SXM2-16GB (80x64 cores) Grid(640x128) | 1815 Mkey/s | [15] | |
GPU #0 GeForce RTX 2080 SUPER (48x64 cores) Grid(384x256) | 2002 Mkey/s | [16] |
Difficulty of finding a vanity
The difficult of finding a vanity address depends on its exact structure (what are the leading letters or numbers) and how likely such an output is given the algorithms involved, which can consist of several pivots where the difficulty suddenly changes.
vanity | difficulty | Comment |
---|---|---|
1AAAAA | 259,627,881 | |
1QLbz6 | 259,627,881 | This vanity is alphabetically before a major pivot, the RIPEMD160 hash value of 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (address: 1QLbz7JHiBTspS962RLKV8GndWFwi5j6Qr). |
1QLbz7JHiBTspS962RLKV8GndWE | 2.9597E+45 | |
1QLbz7 | 837,596,142 | This vanity is partially after a pivot and difficulty increases. |
1QLbz7JHiBTspS962RLKV8GndWG | 1.6489E+47 | After a major pivot and 59 times as difficult as the 'E' vanity. |
1QLbz8 | 837,596,142 | |
1aaaaa | 15,318,045,009 | After various pivots and subsequently more difficult. |
1zzzzz | 15,318,045,009 | |
1abcdef | 888,446,610,539 | Six characters case sensitive starting with a lower case character. |
111111 | 1,099,511,627,776 | A special case: leading number 1 (one) is especially difficult. |
1abcdefg | 51,529,903,411,245 | Seven characters case sensitive starting with a lower case character. |
1abcdefgh | 2,988,734,397,852,220 | Eight characters case sensitive starting with a lower case character. |
Use of a Vanity Address Generator to try to attack addresses
Using vanitygen (or an equivalent), you might think that you would be able to find the private key for a given address. In practice, this is considered impossible. Given that the difficulty increases exponentially the longer your vanity is, so does the average time required to find that vanity. The 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.
Please note that many GPU implementations currently (March 2020) allow up to 1,000 Mkeys/s (or more). For example Bitcoin Vanity Address uses VanitySearch to search more than 1,000 Mkeys/s.
vanity | difficulty | average time |
---|---|---|
1B | 22 | < 1s |
1Bi | 1,330 | < 1s |
1Bit | 77,178 | < 1s |
1Bitc | 4,476,342 (4.48E+6) | < 10s |
1Bitco | 259,627,881 (2.6E+8) | 3 minutes |
1Bitcoi | 15,058,417,127 (1.506E+10) | 3 hours |
1Bitcoin | 8.7339E+11 | 1 week |
1BitcoinE | 5.0657E+13 | 1 year |
1BitcoinEa | 2.9381E+15 | 60 years |
1BitcoinEat | 1.7041E+17 | 3,500 years |
1BitcoinEate | 9.8837E+18 | 200,000 years |
1BitcoinEater | 5.7325E+20 | 11,700,000 years |
1BitcoinEaterAddressDontSend | 1.6209E+47 | 3.3E+33 or 3.3 decillion years. |
Outsourcing your Vanity Address generation
The best way to generate a vanity address is to calculate it yourself. However, for longer prefixes, you are unlikely to have enough computational resources or time to calculate them. In these cases, you can outsource your vanity address generation to a Bitcoin Vanity Generation Website. It is suggested not to provide a full private key; one idea is to use split-key address generation although some say that this is rather complex.