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 と同じく
qpzry9x8
gf2tvdw0
s3jn54kh
ce6mua7l
- 使用する文字は bech32 と同じく
- error correcting checksum になっているので多少であれば自動で修正できるのだと思うが、限度があるので期待しすぎないようにしよう
- Python3 での checksum 算出とチェックコード
参考
- 開発日記
関連ページ
writer: hiro99ma