はじめに
「EthereScan」とかで不思議なアドレスを見たことはありませんか?
たとえば「OpenSea」の販売スマコンのアドレスは「0x00000000000001ad428e4906ae43d8f9852d0dd6」です。
頭から「0」の文字がずらりと13文字並んでいて、中の人たちの無駄なこだわりを感じることができます。
「物好きな開発者もいるもんだなぁ」
などと呆れつつ、こういった遊び心をちょっと羨ましくも思いました。
なので、Ethereumの秘密鍵をガチャガチャするプログラムを作って、かっこいいアドレスが出るまでひたすら回してみました。
プログラム
下記のリポジトリへあげてあります。
https://github.com/hakumai-iida/PrivateKeyGacha
Ethereumアドレスは秘密鍵から一意に決定されます。
秘密鍵はランダムで生成されますが「いくらでも好きなだけ」作成することができます。
このプログラムは「指定された回数」「秘密鍵を生成」して「アドレスに指定の文字列があるか判定」するとてもシンプルなものです。
環境は「Visual Studio 2022」、ライブラリとしては「Nethereum」を使っています。
回してみた
動作確認として、先頭が「BEEF」、末尾が「FACE」となるアドレスを探すことにしました。
Ethereumのアドレスは40桁の16進数なので、1文字がマッチする確率は「16分の1」となります。
今回テストで探す文字数は8文字なので「16の8乗分の1」=「約42億分の1」の確率でお目当てのアドレスを引ける計算になります。
また、プログラムの指定では「大文字小文字の区別」が可能です。
が、8文字の英数字の場合、42億分の1の確率に「2の8乗=256分の1」が上乗せされて「1兆分の1」を下回る狭き門となるので、今回は大文字小文字を「区別せず」としました。
で、プログラムを走らせて放置すること10日以上。
1,620,276,399連目で当たりました!
1%のガチャに換算すると38連目あたりで引いたことになります。
これは大勝利の部類では!?
自己満足
早速、OpenSeaのプロフィールに設定してみました。
https://opensea.io/ja/BEEF-FaCE
OpenSeaは Ethereumアドレスの先頭4文字+末尾4文字で短縮するのでなかなかイカした感じになりました!
おわりに
通常は味気のない Ethereumアドレスですが、ちょっとした工夫で大きな自己満足を得ることができました。
マシンパワーと忍耐力に自信がある人は 10桁以上の文字数に挑戦してみるのはいかがでしょうか?