NIP-19: Bech32エンコードエンティティ
NIP-19はNostr識別子を共有するための人間に優しいフォーマットを定義します。これらのbech32エンコード文字列は表示と共有に使用されますが、プロトコル自体では使用されません(プロトコルはhexを使用)。
なぜBech32か?
生のhex鍵はコピー時にエラーが発生しやすく、視覚的に区別しにくいです。Bech32エンコーディングは人間が読めるプレフィックスとチェックサムを追加し、どのタイプのデータを見ているかすぐに分かるようにします。
基本フォーマット
これらは生の32バイト値をエンコードします:
- npub - 公開鍵(あなたのアイデンティティ、共有しても安全)
- nsec - 秘密鍵(秘密に保つ、署名に使用)
- note - イベントID(特定のイベントを参照)
例: hexのpubkey 3bf0c63f...はnpub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6になります。
共有可能識別子
これらはTLV(Type-Length-Value)エンコーディングを使用してメタデータを含みます:
- nprofile - リレーヒント付きプロフィール(クライアントがユーザーを見つけるのに役立つ)
- nevent - リレーヒント、作成者pubkey、kindを含むイベント
- naddr - アドレス指定可能イベント参照(pubkey + kind + dタグ + リレー)
これらは発見の問題を解決します: 誰かがノートIDを共有したとき、クライアントはどのリレーがそれを持っているかをどうやって知るのでしょうか?識別子にリレーヒントをバンドルすることで、共有リンクがより信頼性の高いものになります。
実装に関する注意
- 人間用インターフェースのみにbech32を使用: 表示、コピー/ペースト、QRコード、URL
- プロトコルメッセージ、イベント、NIP-05レスポンスにbech32フォーマットを使用しない
- すべてのプロトコル通信はhexエンコーディングを使用する必要がある
- nevent/nprofile/naddrを生成する際は、発見性向上のためリレーヒントを含める
主要ソース:
言及箇所:
関連項目: