nostter用にイケてるpublic keyを探したい

にわかに認知度が高まりつつあるnostter、みなさんそろそろアカウントくらいは作ってみましたか?
青い鳥がいつの間にかラテン文字1文字にトランスフォームしてから結構な時間が経ちましたが、未だにTwitterにツイートとか言っちゃう人たちのために、日夜いろいろな技術が公開されたりなんだりされています。

nostter
https://nostter.app

ちなみに私はこんな記事を書いておきながら、public keyを探すだけ探して満足してNostrプロトコルで動くさまざまなSNSはやっていません…。

アカウントの仕組みにときめく

nostterはサービス側が管理、提供してくれるIDとパスワードという仕組みではなく、公開鍵と秘密鍵の2つ(正確にはそうじゃないのでしょうがとりあえずユーザーにはそう見える)でアカウントを管理しています。
その2つの情報の上にアカウント名や表示名を載せ、ひとつのユーザーとして存在させています。
この他にもサーバーの仕組みなど裏側のシステム的な事情はXともMastodonとも異なるらしいのですが、とりあえずユーザーとしてはソーシャル・ネットワーキング・サービスなんだな、と認識できます。

と、ここまでは私の聞きかじりの知識で、今から本題です。
先程の公開鍵と秘密鍵ですが、中身としては63文字の英数字です。この仕様についてもインターネットでちゃんと調べればへ~そういう仕組みなんだ、と勉強になる情報をたくさん閲覧できますが、私は技術者ではないのでここでは無視します。

npub1qp99dh07vt9ns262p49mx9h97ew2w7kqna5djjtzgrysrvntkpzs2mcu6q

私が適当に作ったアカウントの公開鍵

公開鍵は名前の通り公開される情報で、こいつが言うなればIDみたいな動きをしてくれます。(見た目としては)
npub1までが共通で、その先はユーザーごとに異なります。

私はこの公開鍵はランダムに生成されるもので、ここをなんか自分の好きな文字列にする、みたいなことはできないんだろうな~と思っていました。
思っていたのですが、ふと先日nostterの存在を思い出して改めて調べてみたら、公開鍵はなんと自分で探すことができるらしい。

参考:
Nostrでシャレた公開鍵を使う
https://zenn.dev/koalaonsen/articles/d6841265df1aac

そちらのブログで紹介されているプログラムを見て、私はひとり叫びました。
「これ…Million Seekerじゃん!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!」

説明しよう!Million Seekerとは!
2ちゃんねる(当時)で実装されていた「トリップ」を探せるツールのことである!!!!
(現在は手に入りませんがインターネットの海には漂っていると思います)

正直、正直興奮しました。これに興奮できるのはしたらば掲示板とかそういうところにハマったことがある人だけだと思いますが、とりあえず興奮したんです。記憶の底からMilllion Seekerが出てきて自分でも驚きました。

使い方

私がMillion Seekerを思い出して興奮しているだけの記事はさすがにサムすぎるので、参考にさせていただいたブログで紹介されているranaというプログラムの使い方をご紹介します。
参考元ではエンジニアの方向けに書かれているので、ここでは初めてRustだのの環境を導入する部分から書いていきます。

なお、私の環境はWindows 11なのでそれを前提にしています。

Rustをインストールする

下記のリンクから「はじめる」に進み、Rustupをダウンロードします。

https://www.rust-lang.org/ja
(記事公開時点ではバージョン 1.75.0として配布されています)

rustup-init.exeをダウンロードしたら、それを起動してインストールを進めます。
コマンドプロンプトのような画面が立ち上がるので、1 と入力してEnterを叩きます。

1を入力した状態

あとは待っているだけで各種プログラムのインストールが進んでいきます。
このスクリーンショットでは載せていませんが、画面の上の方にインストール先のディレクトリも示されています。デフォルトでは 「C:\Users\ユーザー名のフォルダ」 にインストールされます。
私はこれを読まずに先に進めたので、どこにインストールしたか分からなくなり無駄に10分探し回ることになりました。

ranaをインストールする

ここまででRustの環境がインストールできました。
ここからはコマンドプロンプト (cmd.exe)を使用していきます。

コマンドプロンプトが立ち上がったら、ranaをインストールします。

cargo install rana

と入力してEnterを叩くとインストールが始まります。
このインストールが終われば準備完了です。
ちなみに、rana自体は「C:\Users\ユーザー名のフォルダ\.cargo\bin」の中にあります。

念のため一度コマンドプロンプトを再起動しつつ、いよいよ公開鍵を探し(マイニング)ていきます。
いざ探し出すとCPU稼働率が100%になる(特別設定しなければ全コアを使う)ので、何か作業を平行している場合には作業をやめるかまた後で探すかのどちらかを選ぶとよいと思います。

いざマイニングへ

ここで今更重要な情報ですが、この公開鍵はすべての英数字を使えるわけではありません。
使用できるのはBech32というエンコード方式で使用される文字だけで、

a c d e f g h j k l m n p q r s t u v w x y z 0 2 3 4 5 6 7 8 9

のみです。つまりb i o 1の4文字は使用できません。
iも1も使えないので「イ」っぽい表現はかなりやりにくいです。lを代用するくらいしかない。oは0で代用されることが多そうですね。bは…なんだろうね。これはこういうものなのでどんなに文句があろうと使えないものは使えません。

マイニングにあたっては、公開鍵の先頭(npub1のすぐ後ろ)の文字列か、末尾の文字列のどちらかの場所で検索できます。というかそれが一番需要がありますよね。

先頭で探したい場合はコマンドプロンプトに、

rana --vanity-n-prefix=探したい文字列

末尾で探したい場合はコマンドプロンプトに、

rana --vanity-n-suffix=探したい文字列

を入力してEnterを押下すればそのまま動き出します。
この画面になっていれば進んでいます。タスクマネージャーを起動してみるとrana.exeがCPUを異常に使っているのが分かります。

がんばれCPU(Intel 第9世代)

ちなみに、Bech32に含まれていない文字を使ってマイニングしようとするとちゃんとエラーを吐いてくれるので、無駄に一晩PCを動かしてた…みたいなことにはなりません。

私の環境では、6文字までなら現実的な時間で見つかりそうでした。
6文字だと1時間くらいで1つ見つかる、みたいな感じで、7文字だと4時間稼働させても出てきませんでした。一晩置いといたら出てくるかもしれませんが、CPUが常に95℃(使用率ではなくマジの温度)になるのでやめておきました。

見つかるとこんな感じで結果を吐き出してくれます。
テキストファイルなどには残らないので、自分でコピー&ペーストするまで画面を消さないように注意してください。

これはサンプル用に「xxxx」の4文字を検索した結果です。3秒で1つヒットしてますね。

無事にメモができたら、コマンドプロンプトをそのまま閉じればマイニングも終わります。
閉じるまで動き続けるので、CPUが燃えない内に終わらせるとよいと思います。

あとは各クライアントで秘密鍵 (Nsec private key)を入力すればログインできるはずです。

終わりに

この記事はMillion Seekerという単語を令和に使いたいがために書いた記事です。nostterとかNostrとかすべてどうでもよくて(よくないけど)とにかくMillion Seekerというツールの名前を令和に言及したかっただけです。お疲れ様でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です