Output Descriptors
目次 (最終更新日:2025/09/25)
目的
BIP-32 の HDウォレットや BIP-39 のニモニックだけでは解決できないウォレットに関する問題点を解決する。
Output Descriptors を考案するに至った問題点
- BIP-32 の HDウォレットは鍵を導出するためのしくみである
- BIP-39 はウォレットの秘密鍵を記録しやすくするが、HDウォレットの
mの部分しか復元できない - すべてのウォレットが BIP-32 のあらゆる導出パスをサポートしているとは限らない。BIP-84 のみ、みたいに自アプリがサポートする導出パスのみサポートしていることも多い。
- エクスポートするときも BIP-39 のニモニックだけしかなく、どのウォレットなら復元して使用できるのかなどの情報がない
文法
<SCRIPT>(#<CHECKSUM>)
<SCRIPT>: Script Expressions
<SCRIPT><KEY>- その他
<KEY>: Key Expressions
- (optional) key origin information
[+<fingerprint>+PATH+]<fingerprint>: 8文字のHEX。BIP-32参照。<PATH>: 0個以上の/NUMか/NUMh(hardened)
- HEX形式の鍵…
- 公開鍵
02か03で始まる 66文字のHEX(圧縮公開鍵)。04で始まる 130文字のHEX(非圧縮公開鍵)。
- 秘密鍵
- WIF形式
- 拡張公開鍵 / 拡張秘密鍵
xpubかxprvで始まり、0個以上の/NUMか/NUMh(hardened)が続く- testnet では
tpubやtprvなどになる
- testnet では
- optional で
/*や/*h- BIP-44 などの
m / purpose' / coin_type' / account' / change / address_indexでいうaddress_indexは*になりやすいだろう
- BIP-44 などの
- 公開鍵
hardened は h でも ' (シングルクォーテーション) でもよい。
#<CHECKSUM>: Checksum
- 省略可能
- 省略されているとウォレットが読み込まないかもしれない
- 8文字の英数字
- 使用する文字は bech32 と同じく
qpzry9x8gf2tvdw0s3jn54khce6mua7l
- 使用する文字は bech32 と同じく
- error correcting checksum になっているので多少であれば自動で修正できるのだと思うが、限度があるので期待しすぎないようにしよう
- Python3 での checksum 算出とチェックコード
参考
- 開発日記
関連ページ
writer: hiro99ma