比特币地址都是以1开头的一串“乱码”,为了挑个比较顺眼的地址,你是否新建过一排地址然后在里面挑挑选选?
其实有一个软件可以帮助你更方便地拥有个性化的BTC地址,例如以“123456”开头的地址 “123456jWebYP9tanj2taQfNvRVMNGjCYAd”
这个软件就是本文的主角:vanitygen!
1.简介:
这是一个批量生成地址并挑出符合要求地址的软件,一个普通的CPU可以每秒随机产生几十K到几百K的私钥和对应的地址,直到产生一个符合我们要求的地址为止。
2.软件下载:
这个软件有各种操作系统的版本,windows版本的可以从这里下载(目前最新版本是0.22,想要更新版本还是去作者发布页去找找。)
https://github.com/downloads/samr7/vanitygen/vanitygen-0.22-win.zip 如果感觉这样产生的地址不安全,这是个开源软件,可以下载源代码自己研究、修改、编绎。
3. 使用方法:
以windows版本为例,其它版本用法相通。
下载了一个压缩包“vanitygen-0.22-win.zip”解压之后里面会有五个可执行(.exe)文件,其中分别是用CPU和GPU来运算碰地址的,且分别有32位系统的和64位系统的。同样的CPU,64位运算效率比32位的高;GPU运算比CPU效率高,假如你的显卡支持opencl,还是用GPU来运算,这速率提高是以数量级来算的,具体根据你的实际情况选择一个合适的。下面以32位CPU运算程序“vanitygen.exe”为例:
这个软件是没有可视化操作界面的,全是在命令行下运行。所以第一步就是打开命令行窗口,“开始”-“运行”输入“cmd”。然后可以用“cd”命令进入到vanitygen程序所在的目录。也可以直接把“vanitygen.exe”拖曳到命令行窗口。
例如我的拖曳之后就显示:
C:\Documents and Settings\Administrator>C:\tmp\vanitygen-0.22-win\vanitygen.exe
3.1 普通用法
我在后面加上参数 “1234”,表示我要筛选一个1234开头的地址,
C:\Documents and Settings\Administrator>C:\tmp\vanitygen-0.22-win\vanitygen.exe 1234
回车后几乎一瞬间就碰到一个以1234开头的地址了:
Difficulty: 78508
Pattern: 1234
Address: 12346rxjzNAuhwoEwUwSPrLqQj2BnJYHBV
Privkey: 5JwRjNKhJcnyoLJXXWyXYkAgbADaWwV7ZKTRDmFFzxuXvvMQGYv
第一行是难度,第二行是我们限定筛选条件,第三行是碰到的地址,第四行就是私钥。如果你要起用这个地址,就要备份、保存好私钥再启用这个地址,千万别泄漏私钥。
随着指定字串的加长,难度是呈指数增长的,如果我指定的是字母,那么忽略大小写可以降低难度,忽略大小写用参数 -i
vanitygen 18p2p
Difficulty: 4476342
Pattern: 18p2p
Address: 18p2pcpBZebWDyF5fzi8zSXpXCZg4LeNRo
Privkey: 5Jp8x99TvF2A87hZfqWcqjTa1k1n7QWSJkcjoUavCXNrHG2wY2z
vanitygen -i 18p2p
Difficulty: 1119085
Pattern: 18p2p
Address: 18P2PQgNZdHbnMb7Ys6ysNb7BBC1gzUoTG
Privkey: 5JGHpt2Ye5tXBRXn8vQ1xnvtdQXp22i4tTjwKqWRGzyo4wPoxj1
PS1:软件运算起来之后CPU都占满了,卡得其它事几乎干不了,这时可以调出“任务管理器”找到vanitygen.exe进程,右键-“设置优先级”调到“低”,这样就不会那么卡了。也可以用 -t 参数来指定线程,例如你是4核心的CPU,用 vanitygen -t 3 18p2p 即是用3线程进行工作,CPU就不会全占用,但速率会降为原来的75%左右。
PS2:随时可以在命令行界面按 Ctrl+C 组合键退出运算。
PS3:要把命令窗口里面的文字复制下来,可以点击右键选“标志”,然后左键圈选所要的文字,在圈选块里点右键,就复制到了,在其它地方可以粘贴出来。
3.2 文艺用法
如果我不喜欢“1234”开头的,我想要“333”结尾的,那要怎么办?vanitygen支持正则表达式筛选(用-r参数),所以这些要求都不在话下。但是用正则筛选的话,效率会降到三分之一左右。正则表达式的具体用法可以搜索一下,下面举几个例子来简单说明一下。
以333结尾的地址:vanitygen -r 333$
包含"xxx"的地址:vanitygen -r xxx
以11开头且以11结尾的地址: vanitygen -r \b11(\w*)11$
以4个数字开头的地址: vanitygen -r \b\d{4}
以3个数字结尾的地址: vanitygen-r \d{3}$
以3个数字再接"22"结尾的地址: -r \d{3}22$
特别注意:BTC地址有些字符是不能用的:字母大写"O"、"I"和小写"l"和数字"0"是不会出现的,以普通用法进行运算碰撞的话,会提示这些字符不能用,而且会提示大概多久可以撞到一个符合条件的地址,但如果以-r参数进行正则筛选的话,不会有这些提示的,例如你用“vanitygen -r 0$”想选一个以数字0结尾的地址,那么它会兢兢业业地碰运气,但不会有结果。同样的,指定开头的话,一定要以数字1开头。
3.3 进阶用法
一般来说,上面的用法足够我们选一个不错的地址来用,但是如果我要选一个1234567为前缀的地址,按照提示,大概要七八个小时会有50%的概率碰上一个,我当然不会守着电脑等,但我怕离开之后它找到一个符合要求的地址,然后在我回来前电脑掉电了,那不可惜?这时候用 -o 参数可以把碰到的地址保存到文件里。
vanitygen -o c:\add.txt 1234
这样找到1234前缀的地址就会保存到C盘下的add.txt文件的结尾,这是追加的,不会覆盖,运行多次就会保存多个地址。
当然也可以配合 -r 参数
vanitygen -o c:\add.txt -r 222$
但是如果我想算出一批以18p2p开头的地址呢?能不能自动完成,不用一个个输入?用 -k 参数可以持续地运算。
vanitygen -k -o c:\add.txt 18p2p
这样可以不停地运算,把碰到的地址全保存到指定文件里。
3.4 专家用法
凯撒的事归凯撒,电脑的事归电脑。
别以为上面就用法的到头了,后面还可以有其它玩法。比如说我算一个1234567前缀的地址
vanitygen -o c:\add.txt 1234567
Difficulty: 15318045009
[349.68 Kkey/s][total 2963712][Prob 0.0%][50% in 8.4h]
根据提示,运算8个小时大概会有50%的概率碰上,国庆长假期间我外出游玩,打算让电脑帮我碰出一套以五个1到五个9结尾的地址,剩下的时间运算一个1234567前缀的地址后电脑自动关机。
这还是有办法的,要配合 BAT批处理文件。新建一个文本文件,“文件”-“另存为”,保存类型选“所有文件”,然后文件名以“.bat”结尾保存到vanitygen的目录下之后,再对 bat文件进行编辑。
在bat文件里输入
vanitygen -o c:\add.txt -r 11111$
vanitygen -o c:\add.txt -r 22222$
……中间的内容省略……
vanitygen -o c:\add.txt -r 99999$
vanitygen -o c:\add.txt 1234567
shutdown -s -t 200
这样运行批处理文件就会依次运算碰出并保存一套五个同数字结尾的地址和一个1234567前缀的地址之后关闭电脑。最后一句命令是倒数200秒关机。
当然,上面这种用法并不科学,因为在碰11111$的过程中如果碰到22222结尾的地址,会被丢掉,有个 -f 参数可以解决这个问题。在运行目录下建立一个 patten.txt ,在里面输入条件内容,前缀格式与正则格式不能存在同一个文件里,假如我们要一批前缀为 12345、13579 、1LoveU的地址,那就就在 patten.txt 文件里分三行依次输入这三个前缀,保存。
vanitygen -f patten.txt -o addr.txt
用上面的命令,在碰到三种前缀中的任一种都会保存下来。
如果是用正则表达式筛选,我们最好用另一个文件如patten1.txt ,内容每行输入一个正则条件如:
11111$
22222$
33333$
然后运行带 -r 参数的命令 vanitygen -f patten1.txt -o addr.txt -r
碰三种符合条件之一结尾的地址就会保存下来,配合 -k 参数可以持续运算碰地址。
当然用-k参数,就不会停下来执行后面的命令,也不会自动关机,也不能刚好弄一套1到9结尾的地址,但我们可以提高运算次数如运行50次,在里面应该很大机会可以得到一整套地址了。
再次提醒,要避开“0”、“O”、"I"、“l”这些字符,不然等你国庆后回来电脑还在拼命碰那个不可能出现的地址。
如果对产生地址的随机种子数不放心,我们还可以用 -s 指定随机数种子。
C盘下建立一个文本文件seed.txt,随便输入一些内容后保存。
vanitygen -s c:\seed.txt -r 11111$
用上面这命令就可以用自己的种子产生随机数来生产地址了。
vanitygen运算地址是用碰的方式,所以能碰到一个你需要的地址,完全是一个概率问题,所以就不存在进度,也就不存在运算了80%没碰到,还剩下20%肯定可以碰到这种说法。
所以你可以建立一个bat文件内容来碰你需要的地址如:
vanitygen -k -o c:\add.txt 1234567
电脑要作其它用途的时候就关掉vanitygen,电脑空闲时就运行bat批处理文件,碰到的话就会自动保存起来。
3.5 其它用法
还有其它用法?是的,这个软件虽然只支持命令行,但确实玩法很多很多。这个程序就是个瑞士军刀,它不但能碰BTC地址,还能碰Namecoin、Litecoin、PPC的地址。
举几个例子:
Namecoin(NMC)的地址:
用 -N 参数可以碰一个Namecoin(NMC)的地址:
vanitygen -N N123
这样可以得到一个 N123开头的地址,根据提示,还可以以M开头,
vanitygen -N MyLove
这样几分钟也可以碰到一个MyLove开头的NMC地址,其它玩法同BTC地址。
Litecoin(LTC)地址:
用 -X 48 参数可以碰一个LTC地址:
vanitygen -X 48 LLL
这样可以得到一个LLL开头的LTC地址,实际在使用时,许多L开头的组合被拒绝,而且提示也是BTC地址不能以1开头,估计是软件bug,想用Love开头就不行。
PPC地址:
用 -X 55 参数可以碰一个PPC地址:
vanitygen -X 55 PPP
可以得到一个PPP开头的PPC地址。
以上这些要注意,不同币地址对一些字母的规定不同,使用正则碰撞之前要摸索一下,免得挑一个不存在的字符碰了半天啥也没捞到。
4.导入私钥
挑选完心仪的地址之后,备份好私钥之后就可以启用地址了。如何导入私钥,下面以bitcoin-qt客户端及Multibti客户端为例。
bitcoin-qt客户端:
客户端的菜单栏“帮助”->“调试窗口”->“控制台”,然后在命令输入框输入
walletpassphrase <交易密码> <秒数>
上面这是临时解锁钱包的命令,如果你的钱包没有设置交易密码,可以忽略上面这条命令,直接输入下面的命令:
importprivkey <私钥> <地址描述> false
命令参数之间用空格隔开,地址描述可以随便填,说明一下最后一个参数“false”,如果是新启用的地址,就用“false”参数。如果是一个有BTC的地址,可以用“true”参数,这样导入之后客户端会“刷新”一下,把里面的余额算出来,这个过程会比较久,容易被误认为程序死了。
Multibti客户端:
这个导入私钥就更简单了,把你要导入的私钥用文本文件保存起来,一行一个私钥,然后把扩展名改为“key”,例如myadd.key。
然后在Multibit客户端里选中要导入私钥的钱包,在菜单栏上选“工具”-“导入私钥”。在界面里选中myadd.key文件,会自动识别有多少个私钥,点导入之后就完成了。
5.结束语
既然这个软件这么好用,我用它来碰某个地址如何?例如 1933phfhK3ZgFQNLGSDXvqCn32k2buXY8a 这个地址上有超过11万BTC,我把地址输入之后vanitygen提示太长,然后罢工,那我缩短一些好了,逐步减掉后面的字符,减了6个之后vanitygen 1933phfhK3ZgFQNLGSDXvqCn32k2 终于肯工作了。难度是这样的:
Difficulty: 2794725737275825531787289201741966674434639341
[327.37 Kkey/s][total 481536][Prob 0.0%][50% in 1.876402e+032y]
需要1.8乘以10的32次方年才有50%的机会碰到一个缺少六位一致的地址,地球的年龄大约是4.6乘以10的9次方年,宇宙的年龄大约是1.3乘以10的10次方年,不算了,算多了都是泪啊。
不知道矿机能不能用来碰地址,随着算力的疯涨,前期的矿机慢慢会没有挖矿价值,如果能用来碰地址那倒是个不错的运用,冷天开矿机来供暖同时碰地址,一举两得。
人总喜欢一些独特个性的东西,拥有一个比较特别的地址也是一件不错的事情,你喜欢什么样的地址,碰到什么样的地址不妨拿出来秀一秀,提醒:千万别秀出私钥啊。