Vanitygen: Difference between revisions

From Bitcoin Wiki
Jump to navigation Jump to search
TheRealSteve (talk | contribs)
provisionally deleting references to e.g. vanity pool
 
(19 intermediate revisions by 8 users not shown)
Line 1: Line 1:
'''Vanitygen''' is a command-line vanity bitcoin address generator.


If you're tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.
'''Warning''': Refrain from utilizing Vanitygen on live websites. Using Vanitygen on websites is not recommended, as there is a high likelihood that these '''platforms might store the generated address's key''', putting your results and coins at risk of being stolen. For a more secure approach, consider employing Vanitysearch by Jean Luc Pons, an open-source and trusted alternative available on GitHub.
Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjO.
Alternatively, vanitygen can be used to generate random addresses offline.


Vanitygen accepts as input a pattern, or list of patterns to search for, and produces a list of addresses and private keys.  Vanitygen's search is probabilistic, and 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 illustrates a session of vanitygen. It is typical, and takes about 10 sec to finish, using a Core 2 Duo E6600 CPU on x86-64 Linux:
'''Vanitygen''' was the first command-line vanity Bitcoin address generator. A few other vanity address generators exist 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. For example, you could create an address that starts '1Satoshi' and ask people to send Bitcoin to 1SatoshiHHqnDPRSfiZ5GXJ8Gk9dbjO.
 
Vanity address programs accept as input a pattern (e.g. 1Bitcoin) and create 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 the computer, whether it is using CPU or GPU, and if you get lucky.
 
The example below (from 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 21:
</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.  Oclvanityminer can be used to automatically claim bounties on sites such as [[User:ThePiachu|ThePiachu]]'s [[Vanity Pool]].
Vanitygen includes components to perform address searching on a CPU (vanitygen) and OpenCL-compatible GPU (oclvanitygen). Both can be built from source and are included in the Windows binary package. Also included is oclvanityminer, the vanity address mining client.  


Current version: 0.22
Current version: 0.22.


Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here]. PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].
Windows x86+x64 binaries [https://github.com/downloads/samr7/vanitygen/vanitygen-0.20-win.zip here]. PGP signature [http://insight.gotdns.org/~samr7/vanitygen-0.20-win.zip.asc here].


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 BitCoinTalk]
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). Solution is to change line 459 in oclengine.c from: return quirks; to: return quirks & ~VG_OCL_AMD_BFI_INT;
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 BitCoinTalk discussion].
 
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 X?
The table below shows the key search rate one can expect from different hardware. The last five examples, which use 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 [https://github.com/JeanLucPons/VanitySearch VanitySearch] address generator.


'''Keysearch Rates'''
'''Keysearch Rates'''
Line 51: Line 57:
| || nVidia GeForce GTX 970 || 38 Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg11851273#msg11851273]
| || nVidia GeForce GTX 970 || 38 Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg11851273#msg11851273]
|-
|-
| Core i7-4702MQ 2.2Ghz || || 1.09 Mkey/s ||
| Core i7-4702MQ 2.2GHz || || 1.09 Mkey/s ||
|-
|-
| Core i7-4702MQ 2.2Ghz || GeForce GT750M || 5.38 Mkey/s ||
| Core i7-4702MQ 2.2GHz || GeForce GT750M || 5.38 Mkey/s ||
|-
|-
| || AMD Radeon r9 280x || 25-35 Mkey/s ||
| || AMD Radeon r9 280x || 25-35 Mkey/s ||
|-
| || Sapphire Radeon HD 7970  || 28Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg12269936#msg12269936]
|-
| || AMD Radeon HD 5870 || 30 Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg12262017#msg12262017]
|-
| || Asus Strix GTX 970 || 40Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg12269936#msg12269936]
|-
| || nVidia GeForce GTX 780 Ti (3GB 384-bit GDDR5) || 50-60 Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg11944467#msg11944467]
|-
| 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]
|}
|}


As vanitygen performs a lot of large integer arithmetic, running it in 64-bit mode makes a huge difference in key search rate, easily a 50% improvement over 32-bit mode.  If you are using a 64-bit edition of Windows, and not using a GPU, be sure to use vanitygen64.exe.
== Difficulty of finding a vanity address ==
 
The difficult of discovering a Bitcoin 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.
Radeon 58XX outperforms Radeon 69XX by a very comfortable margin.  Oclvanitygen is sensitive to integer multiply throughput, and Radeon 58XX can multiply concurrently with other operations.  At similar clocks, a hobbled Radeon 5830 will outperform a Radeon 6970.
 
In custom builds, CPU performance will be less than expected if the OpenSSL library is an older version (<1.0.0d) or is not built with the appropriate optimizations enabled.
 
== Difficulty of finding a vanity ==
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.
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 72: Line 92:
| 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 located 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 thus the 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 82: Line 102:
| 1QLbz8 || 837,596,142 ||  
| 1QLbz8 || 837,596,142 ||  
|-
|-
| 1aaaaa || 15,318,045,009 || Well after various pivots and subsequently more difficult.
| 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, leading numbers 1 (one) is especially difficult.
| 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 vanitygen to try to attack addresses ==
== Using 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. 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.
You might think that you would be able to find the private key for a given address by running a vanity address generator. 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 one million keys per second.
 
Note that many GPU implementations currently (March 2020) allow up to 1,000 Mkeys/s (or more). For example [https://vanitygen.net/ VanityGen] uses [https://github.com/JeanLucPons/VanitySearch VanitySearch] to search more than 7,000 Mkeys/s.
 
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 121: Line 150:
| 1BitcoinEaterAddressDontSend || 1.6209E+47 || 3.3E+33 or 3.3 decillion years.
| 1BitcoinEaterAddressDontSend || 1.6209E+47 || 3.3E+33 or 3.3 decillion years.
|}
|}
== Outsourcing vanity address generation ==
The standard way to generate a vanity address is to calculate it yourself by downloading the program and then running it on your system. 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]]. A good idea is to use [https://vanitygen.net/ bitcoin address generation].


== See also ==
== See also ==

Latest revision as of 20:11, 11 March 2024

Warning: Refrain from utilizing Vanitygen on live websites. Using Vanitygen on websites is not recommended, as there is a high likelihood that these platforms might store the generated address's key, putting your results and coins at risk of being stolen. For a more secure approach, consider employing Vanitysearch by Jean Luc Pons, an open-source and trusted alternative available on GitHub.


Vanitygen was the first command-line vanity Bitcoin address generator. A few other vanity address generators exist 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. For example, you could create an address that starts '1Satoshi' and ask people to send Bitcoin to 1SatoshiHHqnDPRSfiZ5GXJ8Gk9dbjO.

Vanity address programs accept as input a pattern (e.g. 1Bitcoin) and create 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 the computer, whether it is using CPU or GPU, and if you get lucky.

The example below (from 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 a CPU (vanitygen) and OpenCL-compatible GPU (oclvanitygen). Both can be built from source and are included in the Windows binary package. Also included is oclvanityminer, the vanity address mining client.

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

The table below shows the key search rate one can expect from different hardware. The last five examples, which use 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 address

The difficult of discovering a Bitcoin 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 located 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 thus the 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.

Using a vanity address generator to try to attack addresses

You might think that you would be able to find the private key for a given address by running a vanity address generator. 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 one million keys per second.

Note that many GPU implementations currently (March 2020) allow up to 1,000 Mkeys/s (or more). For example VanityGen uses VanitySearch to search more than 7,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 vanity address generation

The standard way to generate a vanity address is to calculate it yourself by downloading the program and then running it on your system. 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. A good idea is to use bitcoin address generation.

See also