generated at
NIP-06

>Basic key derivation from mnemonic seed phrase

ニーモニックシードフレーズからの基本的な鍵導出

hr
仕様

BIP39 はニーモニックシードワード(mnemonic seed words)の生成と、そこからバイナリシードを導き出すのに用いられる。
BIP32は、鍵導出パス m/44'/1237'/0'/0/0 で秘密鍵を導出するのに用いられる。
SLIP44のNostrの項目に従う

これは、基本的な・通常の・単一鍵クライアントのためのデフォルトである。
他の種類のクライアントは、その目的のために趣向を凝らした他の導出方法を使ってもよい。

hr
解説

Nostrのイベントに署名するための秘密鍵の導出について定めたNIP。

ニーモニック(12、24単語のリスト)から階層決定的に沢山の秘密鍵を導出する方法を規定したものがBIP39とBIP32。
ユーザはニーモニックを控えておけば秘密鍵を格納したウォレットを削除してもニーモニックから秘密鍵を復元できる利点がある。このようにして導出した秘密鍵から楕円曲線secp256k1にしたがって公開鍵を算出する。NIP-01

ビットコインに限らず仮想通貨では送金の度に署名検証のため公開鍵がブロックチェーン上に記録される。ビットコインにおいては将来公開鍵から秘密鍵を特定できるリスク、同じ鍵(=アドレス)を使うことでプライバシーが毀損されるリスクを回避するため、一度使ったものは使用せず新しい鍵を使うことが推奨される。いちいち鍵導出の度にランダムな値を作るとバックアップが大変すぎるので、BIP39と32で階層決定的に導出することでこのUXを向上させている。tanakei

NIP-06には記載はないが鍵導出パスの規定がBIP44にある。
導出パスはこのようになっている。各項目の詳細については上記BIP参照。
master / BIP44なので44 / coin type / account / internal(1) or not internal(0) / index
SLIP44で該当仮想通貨がどのcoin typeの値を取るかリスト化されている。
Nostrプロトコル設計者fiatjafが2021年12月にPRしてた。規定しておけば既存のライブラリやモジュールを活用できるね。

ビットコイン技術者によるBIP32の解説

正直、このNIPが何を意味するのか、何のためにあるのかよく分かっていないjiftechnify
ビットコイン周辺の技術知識がある方に解説をお願いしたい…

対応クライアント
Snort (2023/3/11に対応)
12単語固定のUIであるから、エントロピーは128bitsでなければならない?h3y6e