MSTR Cat

ブロックチェーン/レベル IV · プロトコルを深く知る/4.3 カストディとプライバシー/レッスン 1

HDウォレット(BIP32、BIP44、BIP84、BIP86)

1つのシードから鍵のツリーを導出する

用意するものテストモード(テストネットまたはシグネット)のウォレット(実際のシードは決して使わないこと)導出パスを表示できるHDウォレットまたはツールノート

問い

  1. 1つのシードから、一意で復元可能な秘密鍵を実質的に無制限に生成できるのは、どのような仕組みによるのでしょうか?
  2. 漏洩した子秘密鍵1つと親の拡張公開鍵がそろうだけで、非強化ブランチ内のすべての鍵が露呈してしまうのはなぜでしょうか?
  3. 手数料効率の観点から、レガシーのP2PKHアドレスとネイティブSegWitやTaprootのアドレスを分ける構造上の違いは何でしょうか?

探究

  1. 2012年にPieter Wuilleが提案したBIP32以前は、ウォレットは新しいアドレスごとにランダムな鍵ペアを生成していました。ウォレットをバックアップするには秘密鍵を1つ残らず個別に保存する必要があり、バックアップファイルを1つでも失えば、そのファイルに対応する資金は復元できなくなりました。BIP32は、単一のマスターシードから決定論的な鍵のツリーを導出することで、この仕組みを変えました。現在では資金の履歴全体がその1つのシードに結び付けられています。シードは通常128ビットまたは256ビットのエントロピーから生成され、12語または24語として書き留められます。
  2. 導出パスはBIP44(2014年)で定義された構造 `m / purpose' / coin_type' / account' / change / index` に従います。アポストロフィは強化導出を示します。これは重要なセキュリティの仕組みです。非強化導出では、攻撃者が親の拡張公開鍵(xpub)と任意の子秘密鍵1つの両方を入手すると、親の秘密鍵を数学的に算出できてしまいます。強化導出はこのつながりを断ち切ります。漏洩した子秘密鍵とxpubを組み合わせても、親の秘密については何も明らかになりません。
  3. BIP44は、1つの階層内で複数の通貨を扱えるよう、最初の3つのレベルを標準化しました。`purpose'` レベルは規格を示します(例:BIP44なら44、BIP84なら84)。`coin_type'` レベルは資産を区別するもので、ビットコインはインデックス0です。これにより、1つのシードで鍵を混在させることなく異なる暗号資産を管理できます。`account'` レベルは資金を個別のアカウントに分け、各アカウントはそれぞれ独自のチェンジチェーンを持ちます。拡張公開鍵(xpub)は通常、この階層で導出されます。
  4. BIP84は、`bc1q` で始まるネイティブSegWitアドレス向けに規格を更新したもので、purposeを84に定めています。これらのアドレスは、ウィットネスデータがトランザクションのウェイト計算で割り引かれて手数料が下がるため、レガシー形式より効率的です。導出パスは `m / 84' / 0' / account' / change / index` となります。たとえば、アカウント0の最初の外部アドレスは `m/84'/0'/0'/0/0` で導出されます。この構造により、サーバーは秘密鍵に一切触れることなく、xpubから受取用アドレスを生成できます。
  5. BIP86は、2021年にAva ChowがTaproot向けに策定した別の導出規格で、purposeを86に定め、`bc1p` で始まるシングルキーのTaprootアドレスを導出します。BIP86が対象とするのは、スクリプトツリーを持たないシングルキーのTaprootアウトプットです。TaprootのキーパスはMuSig2の鍵のような集約鍵も保持できるため、マルチパーティウォレットのアウトプットも、オンチェーン上ではこれらのシングルキーのアウトプットとまったく同じに見えることがあります。
  6. ウォレットは使用済みアドレスを検出するために先読みスキャンを行い、通常は1つのチェーン上で未使用アドレスが20個連続した時点(「ギャップリミット」)でスキャンを止めます。その範囲でトランザクションが見つからなければ、ウォレットはそのアカウントに存在する鍵をすべて発見したとみなします。この仕組みを確かめるには、最新のHDウォレットを開き、導出パスの設定を探してください。purpose、コインタイプ、アカウント、チェンジ、インデックスの各レベルを特定します。同じシードから2つの異なるパスを導出し、それぞれ別の鍵が生成される一方で、元のニーモニックから完全に復元できることを確認してください。

重要な事実

  • BIP32は、1つのマスターシードから決定論的な子鍵のツリーを導出します。
  • 強化導出(`'` で示される)は、子秘密鍵とxpubが漏洩した場合でも、親鍵の漏洩を防ぎます。
  • BIP44のパス構造は `m / purpose' / coin_type' / account' / change / index` です。
  • purpose 84はネイティブSegWitアドレス(`bc1q`)に対応し、レガシー形式よりも手数料効率に優れています。
  • purpose 86はシングルキーのTaprootアドレス(`bc1p`)に対応します。
  • ウォレットは通常、未使用アドレスが20個連続した時点(ギャップリミット)でスキャンを停止します。

演習 九・六・三・一

9集める異なるウォレットや規格で使われている導出パスを9つ挙げてください。それぞれについて、purpose(目的)、コインタイプ、アドレス形式を書き留めてください。
6まとめるスクリプトタイプに基づいて、9つを6つのカテゴリーに分類してください:レガシーP2PKH、ネステッドSegWit、ネイティブSegWit、Taproot、マルチ通貨、その他。
3絞り込む6つを、ウォレット開発者がある導出パスを別の導出パスより選ぶ3つの理由に絞り込んでください。
1結晶化する強化導出が、子鍵を通じたマスター鍵の露出をどのように防ぐのかを、1文で説明してください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS