Ethereumでかっこいいアドレス使いたくない?
突然ですが!
0x111111111117dc0aa78b770fa6a738034120c302
熱心なDeFierの皆さんなら、これだけで何のトークンのアドレスか分かりますよね?🤔
そう、これは1inch.exchangeのガバナンストークン
のアドレスです!1が連続していて、1inchっぽいです。
バニティアドレス
上であげた1inchトークンのように先頭に1が連続したり、特定の文字列が含まれたりするアドレスのことをバニティアドレスと言います。当然、1inchの開発者はこのアドレスを狙ってコントラクトをデプロイしています。えーっ、そんなことできるの!ってお思いの皆さん、出来ますよ。総当たりで!ドヤァ
また、バニティアドレスの例を他にもあげておくと
0x0000000000004946c0e9f43f4dee607b0ef1fa1c - 先頭に0が連続
0xdeadbeafd0f5487efc52ae888ce80d28257434cc - 先頭がdeadbeaf
0x7199120303939131632916865712016200450323 - 全て数字
などがあります。Ethereumのアドレスは16進数なので"特定の文字列"は16進数で表現する必要があるのですが、それはそれでHexSpeakなどで調べるといろいろ出てきて面白いと思います。
前置きが長くなりましたが、このバニティアドレスを作る方法について、1inchの開発者も使っているprofanityというツールと誰でもできるVanity-ETHというサービスについて紹介します。(※1inchのChiトークンのmediumにprofanityの記述があったので、1inchの開発者も使っているという推測です。)
注意事項
秘密鍵が流出する=対応するアドレスの資産を盗むことが可能ということです。本記事であげるツール、サービスを利用する際はツールDL後、サービスアクセス後に「インターネット接続を切る」などの対応をしていただくと安心してバニティアドレスを利用していただけるかと思います。
profanityの使い方
脆弱性が見つかったので利用しないでください
詳細は上記1inchの記事
Congratulations!🎉
何か出力されましたね。
上の画像で出力された1番下の行を見てみましょう。
Private: 0xacf815686f4d08204c94d976a8f4f0acae6bc4ce475c171491d1570c45b382b0
Address: 0x000000000f2ea2446ea24e973355e5aa15c7b2bc
見事、0が9個連続したバニティアドレスが生成できています。Privateというのが生成されたアドレスに対応する秘密鍵です。この秘密鍵をMetaMaskなど任意のウォレットにインポートするとバニティアドレスを使うことができます。
コマンド例
先程入力したのは、先頭に0が連続したバニティアドレスを生成するコマンドでした。コマンドの全てを紹介することは出来ないのでGitHubのExampleについて紹介します。
① ./profanity --leading f
② ./profanity --matching dead
③ ./profanity --matching badXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbad
④ ./profanity --leading-range -m 0 -M 1
⑤ ./profanity --leading-range -m 10 -M 12
⑥ ./profanity --range -m 0 -M 1
- 先頭にfが連続するアドレスを探す
- deadが含まれるアドレスを探す
- badとbadで挟まれたアドレスを探す
- 先頭に0と1が連続するアドレスを探す
- 先頭にa,b,cが連続するアドレスを探す
- 0と1だけで構成されるアドレスを探す
あとはこれを応用すればいいです。ちなみに数字だけで構成されるアドレスを探したいときはこう。
./profanity --range -m 0 -M 9
(中略)
Private: 0x7a205947aca1903b1873219c66675f06d49e8c1c70a42bb0beb12cc771b01810
Address: 0x4452564734923302086371565922376786728470
かっけぇ~!
Vanity-ETHの使い方
Vanity-ETHは「CPUを使ったバニティアドレスジェネレータ」です。利用するには、ここにアクセスしてください。
Vanity-ETHでは、先頭もしくは後尾の文字を指定することができます。使い方は簡単でページをスクロールすると下のスクショのような部分があるので、文字を指定しGenerateを押すだけ。先頭ではなく後ろの文字を指定したい場合はPrefixからSuffixに切り替えてください。
Generateを押すと探索が始まるのですが画面右には探索の難しさが載っていて、この場合は45425アドレスを探索すると50%の確率で0000から始まるアドレスが見つけられるよってことを言っています。1アドレスの探索にどのぐらいの時間がかかるかはCPUや割り当てるスレッド数によるのでGenerateを押すまで分かりません。
自分の環境(Ryzen 5 3600 4スレッド割当)だと、ものの数秒で探索が終わって秘密鍵が表示されます。後はprofanityのときのようにMeatmaskなどに追加すればOK!
2021年はバニティアドレスに移行しよう!
バニティアドレスの何がいいかってEtherscanで見たときに自分のアドレスがぱっと分かるんですよね。例えば、コントラクトに投げてるトランザクションを見たときに
え~、俺のTXどこだ~。先頭が0連続…
あった!!!!!ってなるわけですよ(本当か?)
是非、バニティアドレスに移行してみてはいかがでしょうか?(ちなみに、上のトランザクションは加工による捏造なので悪しからず。)