VanityAddressとは人間が読んだときに意味のある文字の羅列からなるアドレスのことを言うようです。

例えば、ネームスペースを作るときの作成手数料を送るアドレスは

NAMESPACEWH4MKFMBCVFERDPOOP4FK7MTBXDPZZA

ですが、よーくみると先頭が「NAMESPACE」となっています。

こちらはモザイク作成の宛先。

NBMOSAICOD4F54EE5CDMR23CCBGOAM2XSIUX6TRS

こちらも途中ですが「MOSAIC」と入っています。

Vanityとは「虚栄」「うぬぼれの元」などの意味があり、おそらくは人間に特別視されているだけ(何か特別な意味があるという思い込み)で、システム(ブロックチェーンネットワーク)においては何の意味も価値もない、というようなことを示唆しているんじゃないでしょうか。

(nemネットワークにおいてはこれらのアドレスが各役割を担うものとして定義されていますが、全くランダムなアドレスでもよかったはずです。憶測ですが。)

nem-toolchain

このようなアドレスをnem-toolchainで簡単に見つけだすことができます。

「作り出す」ではなく「見つけ出す」と書いたのは、任意のアドレスを作り出すことは不可能なので、欲しいアドレスがでるまで秘密鍵のリセマラ(生成)して見つけ出すからです。

早ければ数秒、数分程度で算出されますが、長いほど時間がかかるでしょうし、永遠に見つからないかもしれません。マシンパワーを積むか、途中で妥協してください。

実行

インストールはQuick Startからどうぞ。

(macかlinuxしか想定されていないようです。Windowsでは別の方法で環境構築が必要そうです。時間があれば追記します)

# TAもしくはTBから始まるアドレス
nem --chain testnet account vanity TA TB

# "_"で文字を指定しない
nem --chain testnet account vanity T_A_B_C

# 特定の文字を含まない(例:A,2,4,6を含まない)
nem --chain testnet account vanity --exclude A246

# TAから始まるアドレスで数字を含まないもの
nem --chain testnet account vanity --no-digits TA

# TCから始まるアドレスを9コ見つける
nem --chain testnet account vanity -n 9 TC

# mainnetのアドレスを生成
nem --chain mainnet account vanity NA

ネットワークの識別文字を含めるので、N(mainnet)、T(testnet)、M(mijin)から始まり、

二文字目はA、B、C、Dである必要があります。

さらに、0、1、8、9の文字はBase32の仕様上、アドレスに現れない(使えない)文字となっています。

その制約の上でほしいアドレスを探してみましょう。

terminal

おおよその予想時間も見積もってくれます。

また、--no-digitsオプションによって数字を含まないアドレスだけに絞ることもできます。

まとめてたくさん出したい場合は -n オプションを指定します。

他にも出力に関するオプションやこれからも機能が追加されるようなのでドキュメントを確認してみてください。

ちなみに作者の寄付アドレスが

NCSY3D-EVBGVX-MEPZWK-TIJWCA-OXL5NE-OLJPHX-LFLD

なんですが、ハイフン区切りの先頭だけを読んでいくと…

N E M T O O Lとなっていますね。

単なるアドレスですが、こういった遊び心を加えることができますね。

もしなにかnemを使ったサービスを考えていたら、ユニークなアドレスを見つけ出してみてはいかがでしょうか。