Difference between revisions of "Vanitygen"

From Bitcoin Wiki
Jump to: navigation, search
m
(41 intermediate revisions by 11 users not shown)
Line 1: Line 1:
Vanitygen is a command-line vanity bitcoin address generator.
+
'''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. Add unique flair when you tell people to send bitcoins to 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL. Alternatively, vanitygen can be used to generate random addresses offline.
+
If you're tired of the random, cryptic addresses generated by regular bitcoin clients, you can use vanitygen to create a more personalized address.
 +
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.
 
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 took about 10 sec to finish, using my Core 2 Duo E6600 CPU on x86-64 Linux:
+
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:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
$ ./vanitygen 1Boat
 
$ ./vanitygen 1Boat
Line 24: Line 26:
 
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]
 
Main discussion at [https://bitcointalk.org/index.php?topic=25804.0 BitCoinTalk]
  
For AMD Catalyst 13.1+ you need to run the AMD APP SDK Runtime from Catalyst 12.10 in order to get this program to work. (So all your Catalyst drivers would be brand new except for the SDK Runtime.) This is discussed on [https://github.com/samr7/vanitygen/issues/19 GitHub]. For Linux, use AMD APP SDK 2.7.
+
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;
 
+
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].
Also the latest source doesn't work properly for high-end AMD cards (7xxx). Solution is to change line 457 in oclengine.c from: return quirks; to: return quirks & ~VG_OCL_AMD_BFI_INT;
 
Windows x64+x64 binaries that solve this problem [http://lifeboat.com/oclvanitygen 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 ==
Main article: [[Vanitygen keysearch rate]]
 
 
 
What key search rate can I expect from hardware X?
 
What key search rate can I expect from hardware X?
  
Detailed list forthcoming.  Some ballpark estimates are listed below.
+
'''Keysearch Rates'''
 
+
{| class="wikitable sortable"
Dual-core desktop CPUs, 32-bit mode: 100-250 Kkey/s.
+
|-
Dual-core desktop CPUs, 64-bit mode: 150-450 Kkey/s.
+
! CPU !! GPU !! keys/s !! Comment
Quad-core desktop CPUs, 32-bit mode: 200-400 Kkey/s.
+
|-
Quad-core desktop CPUs, 64-bit mode: 300-750 Kkey/s.
+
| Core i5 750 @2.67 GHz || nVidia GTS 250 || 1.54 Mkey/s || 110% CPU [https://bitcointalk.org/index.php?topic=25804.msg378820#msg378820]
NVIDIA GT200 GPUs: up to 6.5 Mkey/s
+
|-
  AMD Radeon 58XX, 68XX GPUs: up to 23.5 Mkey/s.
+
| Core2 Duo 6600 || nVidia GTX 285 || 3.5 Mkey/s || 100% CPU / 90% GPU [https://bitcointalk.org/index.php?topic=25804.msg378114#msg378114]
AMD Radeon 69XX GPUs: up to 19.5 Mkey/s.
+
|-
 +
| Sempron 140 || AMD 5830 || 5.5 Mkey/s || 100% CPU / 60% GPU [https://bitcointalk.org/index.php?topic=25804.msg378114#msg378114]
 +
|-
 +
| || AMD Radeon r7 240 || 4 Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg11872747#msg11872747]
 +
|-
 +
| Core i7 || AMD 6500M || 4.5 Mkey/s || 98% GPU
 +
|-
 +
| || nVidia GeForce GTX 680M || 14-16 Mkey/s || [https://bitcointalk.org/index.php?topic=25804.msg11882134#msg11882134]
 +
|-
 +
| || 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 || GeForce GT750M || 5.38 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]
 +
|}
  
 
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.
 
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.
Line 50: Line 74:
 
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.
 
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.
  
== Vanity addresses for other crypto-coins ==
+
== Difficulty of finding a vanity ==
While all bitcoin addresses start with a "1" (one), some other crypto-coins use different address name spaces. Vanitygen (as of version 0.22) can be used to produce vanity addresses for these crypto coins as well (but not for [http://bitmessage.org bitmessage] addresses), by using the "-X" option. The following list provides some example command line calls and also indicates the address range for the respective coin:
+
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"
Generate '''Bitcoin''' (BTC), '''Devcoin''' (DVC), '''Freicoin''' (FRC), '''Terracoin''' (TRC) addresses:
+
|-
$ ./vanitygen -X 0 1 -k
+
! vanity !! difficulty !! Comment
or simply just
+
|-
$ ./vanitygen 1 -k
+
| 1AAAAA || 259,627,881 ||
 
+
|-
Generate '''Novacoin''' (NVC) addresses:
+
| 1QLbz6 || 259,627,881 || This vanity is alphabetically before a major pivot, the [[RIPEMD160]] hash value of 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (address: 1QLbz7JHiBTspS962RLKV8GndWFwi5j6Qr)
$ ./vanitygen -X 8 4 -k
+
|-
$ ./vanitygen -X 8 4D -k
+
| 1QLbz7JHiBTspS962RLKV8GndWE || 2.9597E+45 ||
$ ./vanitygen -X 8 4Z -k
+
|-
$ ./vanitygen -X 8 4a -k
+
| 1QLbz7 || 837,596,142 || This vanity is partially after a pivot and difficulty increases
$ ./vanitygen -X 8 4d -k
+
|-
 
+
| 1QLbz7JHiBTspS962RLKV8GndWG || 1.6489E+47 || After a major pivot and 59 times as difficult as the 'E' vanity.
Generate '''Feathercoin''' (FTC) addresses:
+
|-
$ ./vanitygen -X 14 6 -k
+
| 1QLbz8 || 837,596,142 ||
$ ./vanitygen -X 14 6d -k
+
|-
$ ./vanitygen -X 14 6z -k
+
| 1aaaaa || 15,318,045,009 || Well after various pivots and subsequently more difficult.
$ ./vanitygen -X 14 7 -k
+
|-
$ ./vanitygen -X 14 71 -k
+
| 1zzzzz || 15,318,045,009 ||
$ ./vanitygen -X 14 72 -k
+
|-
$ ./vanitygen -X 14 73 -k
+
| 111111 || 1,099,511,627,776 || A special case, leading numbers 1 (one) is especially difficult.
 
+
|}
Generate '''Anoncoin''' (ANC) addresses:
 
$ ./vanitygen -X 23 A -k
 
$ ./vanitygen -X 23 AF -k
 
$ ./vanitygen -X 23 AZ -k
 
$ ./vanitygen -X 23 Aa -k
 
$ ./vanitygen -X 23 Af -k
 
 
 
Generate '''Chinacoin''' (CNC) addresses:
 
$ ./vanitygen -X 28 C -k
 
$ ./vanitygen -X 28 CG -k
 
$ ./vanitygen -X 28 CZ -k
 
$ ./vanitygen -X 28 Ca -k
 
$ ./vanitygen -X 28 Cf -k
 
 
 
Generate '''Digitalcoin''' (DGC) addresses:
 
$ ./vanitygen -X 30 D -k
 
$ ./vanitygen -X 30 D5 -k
 
$ ./vanitygen -X 30 D9 -k
 
$ ./vanitygen -X 30 DA -k
 
$ ./vanitygen -X 30 DU -k
 
 
 
Generate '''Litecoin''' (LTC) addresses:
 
$ ./vanitygen -X 48 L -k
 
$ ./vanitygen -X 48 LK -k
 
$ ./vanitygen -X 48 LZ -k
 
$ ./vanitygen -X 48 La -k
 
$ ./vanitygen -X 48 Li -k
 
 
 
Generate '''Namecoin''' (NMC) addresses:
 
$ ./vanitygen -X 52 M -k
 
$ ./vanitygen -X 52 Mv -k
 
$ ./vanitygen -X 52 Mz -k
 
$ ./vanitygen -X 52 N -k
 
$ ./vanitygen -X 52 N1 -k
 
$ ./vanitygen -X 52 N9 -k
 
$ ./vanitygen -X 52 NA -k
 
$ ./vanitygen -X 52 NK -k
 
 
 
Generate '''PPCoin''' (PPC) addresses:
 
$ ./vanitygen -X 55 P -k
 
$ ./vanitygen -X 55 P8 -k
 
$ ./vanitygen -X 55 P9 -k
 
$ ./vanitygen -X 55 PA -k
 
$ ./vanitygen -X 55 PX -k
 
 
 
Generate '''YaCoin''' (YAC) addresses:
 
$ ./vanitygen -X 77 X -k
 
$ ./vanitygen -X 77 Xz -k
 
$ ./vanitygen -X 77 Y -k
 
$ ./vanitygen -X 77 Y1 -k
 
$ ./vanitygen -X 77 Y9 -k
 
$ ./vanitygen -X 77 YA -k
 
$ ./vanitygen -X 77 YP -k
 
 
 
Generate '''BBQcoin''' (BQC) addresses:
 
$ ./vanitygen -X 85 b -k
 
$ ./vanitygen -X 85 bC -k
 
$ ./vanitygen -X 85 bZ -k
 
$ ./vanitygen -X 85 ba -k
 
$ ./vanitygen -X 85 bc -k
 
 
 
Generate '''Ixcoin''' (IXC) addresses:
 
$ ./vanitygen -X 138 x -k
 
$ ./vanitygen -X 138 xX -k
 
$ ./vanitygen -X 138 xZ -k
 
$ ./vanitygen -X 138 xa -k
 
$ ./vanitygen -X 138 xv -k
 
  
Generally, to find out the address format of a given crypto-coin (i.e. the number after the -X option of vanitygen) one can use this service:
+
== Use of vanitygen to try to attack addresses ==
    <nowiki>http://darkgamex.ch:2751/q/decode_address/<Address></nowiki>
+
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.
Example: Take any Litecoin address, e.g. "LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp", and submit this URL:
+
{| class="wikitable"
    http://darkgamex.ch:2751/q/decode_address/LNipKabgGoTPnzhxsyFwTZdjVSXybjWucp
+
|-
The browser output will be:
+
! vanity !! difficulty !! average time
    30:265dcf8616a9723d3b4ba35c246b041e20013597
+
|-
The '''30''' is Litecoin's address format in hex (!), i.e. 30 (hex) = 48 (decimal), i.e. use '''-X 48''' in vanitygen to generate Liteoin addresses.
+
| 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.
 +
|}
  
Some related info here: https://en.bitcoin.it/wiki/List_of_address_prefixes
+
== Outsourcing your Vanity Address generation ==
 +
The safest option to calculate your vanity address is always to calculate it yourself. Though for larger patterns, you might not have enough resources or time to calculate this. In this case you can choose to outsource your vanity address generation to a [[Bitcoin Vanity Generation Website]]. In this case you always have to be very careful and you have to make sure you never trust your full private key to any third party. The best and safest manner how to outsource this vanity address generation is by using [https://en.bitcoin.it/wiki/Split-key_vanity_address#Address_generation split-key address generation].
  
 
== See also ==
 
== See also ==
* [[Firstbits]]
 
 
* [[Bitcoin Vanity Generation Website]]
 
* [[Bitcoin Vanity Generation Website]]
  
 
[[Category:Vanity address]]
 
[[Category:Vanity address]]

Revision as of 06:08, 8 August 2016

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. 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 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). 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 hardware X?

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]

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.

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.

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 Well after various pivots and subsequently more difficult.
1zzzzz 15,318,045,009
111111 1,099,511,627,776 A special case, leading numbers 1 (one) is especially difficult.

Use of vanitygen 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.

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 safest option to calculate your vanity address is always to calculate it yourself. Though for larger patterns, you might not have enough resources or time to calculate this. In this case you can choose to outsource your vanity address generation to a Bitcoin Vanity Generation Website. In this case you always have to be very careful and you have to make sure you never trust your full private key to any third party. The best and safest manner how to outsource this vanity address generation is by using split-key address generation.

See also