HDウォレットと導出パスの解説(BIP44)
目次
暗号資産ウォレットをセットアップして12語のシードフレーズを受け取ると、その単一のバックアップはウォレットが今後作成するすべてのアカウントへのアクセスを提供します — Bitcoin、Ethereum、Solana、その他のサポートされるすべてのチェーンで。これを可能にするメカニズムはHDウォレットと呼ばれ、使用するアドレスのシステムは導出パスによって管理されます。
このガイドでは、HDウォレットが1つのシードを無制限の鍵に変換する仕組み、m/44'/60'/0'/0/0のような導出パスの実際の意味、そしてウォレットやブロックチェーン間を移動する際にパスを正しく設定することがなぜ重要かを説明します。
HDウォレットとは?¶
HDはHierarchical Deterministic(階層的決定論的)の略です。この用語は2012年に公開されたBIP32仕様に由来し、単一のルートから暗号鍵ペアのツリーを導出する方法を定義しています。
階層的とは、鍵がツリー構造で組織されることを意味します — 親鍵が子鍵を生成でき、子が孫を生成できます。ツリーは必要に応じて深く分岐できます。
決定論的とは、プロセスが再現可能であることを意味します。同じルート(マスターシード)が与えられれば、標準に従うすべてのウォレットで毎回同じ鍵のツリーが生成されます。
HDウォレット以前は、新しいアドレスごとに別個のランダムな秘密鍵を生成してバックアップする必要がありました。100のアドレスを生成すれば100のバックアップが必要でした。1つでも漏れれば、その資金は失われました。HDウォレットはこの問題を解消しました。シードを一度バックアップすれば、ウォレットが将来導出するすべての鍵はすでにそのバックアップでカバーされています。
ツリーのルートはBIP39シードフレーズから来ます。ニーモニックはPBKDF2を通じて512ビットバイナリシードに変換されます(BIP39完全解説で説明)。512ビットシードはマスター秘密鍵(256ビット)とマスターチェーンコード(256ビット)に分割されます。この2つが一緒にツリー全体が成長するルートを形成します。
m/44'/60'/0'/0/0の構造¶
導出パスは、ツリー内の特定の鍵を識別するアドレスです。コンピュータのファイルパスのように見え、各セグメントはどのブランチをたどるかを示します。
最初のEthereumアドレスの標準パスであるm/44'/60'/0'/0/0を解読しましょう:
m / 44' / 60' / 0' / 0 / 0
│ │ │ │ │ │
│ │ │ │ │ └── アドレスインデックス (0 = 最初のアドレス)
│ │ │ │ └────── チェンジ (0 = 外部/受信, 1 = 内部/お釣り)
│ │ │ └─────────── アカウント (0 = 最初のアカウント)
│ │ └───────────────── コインタイプ (60 = Ethereum)
│ └──────────────────────── 目的 (44 = BIP44標準)
└──────────────────────────── マスターキー (ツリーのルート)
各レベルの分析:¶
m — マスターキー。すべての導出パスはここから始まります。シードから直接導出されたルートです。
44' — 目的。数字44はこのパスがマルチアカウント、マルチコインウォレットのためのBIP44標準に従うことを示します。アポストロフィ(または')はこれが「強化」導出であることを示します。つまり、親公開鍵だけでは子鍵を計算できず、秘密鍵が必要です。これはセキュリティ対策です。
60' — コインタイプ。各暗号資産にはSLIP-44によって番号が割り当てられています(以下で詳述)。Ethereumは60です。Bitcoinは0です。Solanaは501です。このレベルが、1つのシードが鍵の衝突なく複数のブロックチェーンにサービスできるようにします。
0' — アカウントインデックス。ウォレット内の別々のウォレットと考えてください。アカウント0がデフォルトです。別の目的 — 例えば貯蓄と支出 — のためにアカウント1を使用できます。ほとんどのユーザーはアカウント0を超えることはありません。
0 — チェンジレベル。BitcoinのUTXOモデルで、0は外部(受信)アドレス、1は内部(お釣り)アドレスを意味します。Ethereumは同じ方法でお釣りアドレスを使用しませんが、互換性のためにレベルが保持されています。
0 — アドレスインデックス。新しいアドレスを生成するために増加する最後の数値です。インデックス0が最初のアドレス、インデックス1が2番目、というように続きます。ウォレットは新しい受信アドレスを要求するたびにこの値を増加させます。
BIP44とSLIP-44コインタイプ¶
BIP44は上記の導出パス構造を標準化しました。2014年に公開され、固定5レベルの階層でBIP32の鍵導出を構築しました:目的 / コインタイプ / アカウント / チェンジ / アドレスインデックス。
SLIP-44(Satoshi Labs Improvement Proposal 44)はコインタイプ番号のレジストリを維持しています。各ブロックチェーンに一意の整数が割り当てられ、同じシードが異なるチェーンに対して完全に異なる鍵を生成します。一般的な割り当ては次のとおりです:
| コインタイプ | ブロックチェーン | デフォルトパス |
|---|---|---|
| 0 | Bitcoin | m/44'/0'/0'/0/0 |
| 2 | Litecoin | m/44'/2'/0'/0/0 |
| 60 | Ethereum(およびEVMチェーン) | m/44'/60'/0'/0/0 |
| 144 | XRP | m/44'/144'/0'/0/0 |
| 195 | Tron | m/44'/195'/0'/0/0 |
| 501 | Solana | m/44'/501'/0'/0' |
| 9006 | Avalanche (C-Chain) | m/44'/60'/0'/0/0 |
Avalanche C-Chainがコインタイプ60(Ethereumのタイプ)を使用していることに注目してください。C-ChainがEVM互換で同じアドレス形式を共有しているためです。Polygon、Arbitrum、Optimism、Baseも同様で、すべてm/44'/60'/0'/0/0を使用します。つまり、同じEthereumアドレスがこれらすべてのネットワークで有効です。
MetaMaskにPolygonやArbitrumを追加するとアドレスがEthereumアドレスと同じになる理由はこれです。すべて同じパスから導出されます。区別は鍵導出レベルではなく、ネットワーク(チェーンID)レベルで行われます。
異なるチェーン、異なるパス¶
EVMチェーンがEthereumのパスを共有する一方、非EVMチェーンは独自の規約を使用し、その違いが重要です。
Bitcoinパス¶
Bitcoinは複数のアドレス形式を経て進化し、それぞれに独自の導出標準があります:
| 標準 | パス | アドレスタイプ | プレフィックス |
|---|---|---|---|
| BIP44 | m/44'/0'/0'/0/0 |
レガシー (P2PKH) | 1... |
| BIP49 | m/49'/0'/0'/0/0 |
Nested SegWit (P2SH-P2WPKH) | 3... |
| BIP84 | m/84'/0'/0'/0/0 |
Native SegWit (bech32) | bc1q... |
| BIP86 | m/86'/0'/0'/0/0 |
Taproot | bc1p... |
ほとんどの現代Bitcoinウォレットはトランザクション手数料が低いBIP84(native SegWit)をデフォルトにしています。シードをウォレットで復元して資金が表示されない場合、ウォレットが間違った導出パスをスキャンしている可能性があります。ウォレット設定でBIP84からBIP44(またはその逆)に切り替えるのが通常の解決策です。
Solanaパス¶
Solanaはsecp256k1の代わりにed25519を使用するため、導出が構造的に異なります。標準パスはm/44'/501'/0'/0'で、4つのレベルすべてが強化('で示される)されています。一部のSolanaウォレットはm/44'/501'/0'やm/44'/501'を使用し、具体的なパスはウォレットアプリケーションによって異なります。PhantomとSolflareは異なる規約を使用しており、移行時に混乱を引き起こす可能性があります。詳しいガイドはSolanaウォレット生成ガイドをご覧ください。
XRPとTron¶
XRPはコインタイプ144とパスm/44'/144'/0'/0/0を使用します。Tronはコインタイプ195とm/44'/195'/0'/0/0を使用します。どちらもBitcoinやEthereumのようにsecp256k1を使用しますが、アドレスエンコーディングが異なります。
BIP84 vs BIP44:Bitcoinに複数の標準がある理由¶
Bitcoinを使用したことがあれば、一部のアドレスが1で、一部が3で、最新のものがbc1qで始まることに気づいたかもしれません。これは見た目だけの違いではありません — 各形式は異なる導出標準とスクリプトタイプに対応しています。
BIP44 (m/44'/0'/...)はレガシーP2PKHアドレス(1...形式)を生成します。元のBIP32導出Bitcoinパスでした。現在も機能しますが、トランザクションあたりのブロックスペースが大きくなります。
BIP49 (m/49'/0'/...)はnested SegWit P2SHアドレス(3...形式)を生成します。古いウォレットとの後方互換性を維持しながらSegWitの手数料節約を提供する過渡的な形式でした。
BIP84 (m/84'/0'/...)はbech32エンコーディングを使用するnative SegWitアドレス(bc1q...形式)を生成します。標準トランザクションに最も効率的な形式で、ほとんどの現代ウォレットのデフォルトです。
重要な洞察は、3つの形式すべてが同じシードフレーズから導出できることです。12の単語は変わりません。変わるのは導出パスの目的レベル:44、49、84です。3つすべてをサポートするウォレットは、資金を見つけるために各パスをスキャンします。
Bitcoinウォレットを生成または復元する際は、ウォレットがデフォルトで使用する導出標準を常に確認してください。予想と異なるアドレス形式が表示される場合、ウォレットが異なるBIP標準を使用している可能性が高いです。Bitcoinアドレス形式の詳細については、暗号資産アドレス形式の解説をご覧ください。
ステップバイステップの鍵導出¶
シードフレーズから使用可能なEthereumアドレスまでの完全な導出は次のとおりです:
ステップ1:ニーモニックからシードへ¶
12語のニーモニックは2,048回の反復と「mnemonic」(オプションのパスフレーズ付き)ソルトでPBKDF2-HMAC-SHA512を通じて処理されます。出力は512ビットのバイナリシードです。
ステップ2:シードからマスターキーへ¶
512ビットシードは「Bitcoin seed」キーでHMAC-SHA512を通じて処理されます(この文字列はターゲットブロックチェーンに関係なく使用されます)。左256ビットがマスター秘密鍵になります。右256ビットがマスターチェーンコードになります。
ステップ3:マスターキーから子鍵へ¶
マスターキーから始まり、導出パスの各レベルが子鍵導出(CKD)関数を実行します。強化子('で示される)の場合、親秘密鍵とチェーンコードが子インデックスとともにHMAC-SHA512に入力されます。結果は新しい(子)秘密鍵とチェーンコードです。
通常の(非強化)子の場合、秘密鍵の代わりに親公開鍵が使用されます。これが監視専用ウォレットを可能にします — 秘密鍵なしに公開鍵とアドレスを導出できます。
ステップ4:秘密鍵から公開鍵へ¶
導出の最終レベルで、子秘密鍵は楕円曲線乗算を通じて公開鍵に変換されます。Ethereumの場合、secp256k1曲線を使用します。演算は:公開鍵 = 秘密鍵 * Gで、Gは曲線の生成点です。
ステップ5:公開鍵からアドレスへ¶
公開鍵はハッシュされてブロックチェーンアドレスを生成します。Ethereumの場合、公開鍵はKeccak-256でハッシュされ、最後の20バイト(40個の16進文字)が0xプレフィックス付きアドレスになります。Bitcoinの場合、SHA-256に続いてRIPEMD-160を経て、アドレスタイプに応じてBase58Checkまたはbech32エンコーディングが適用されます。
SafeSeedのEthereum Address GeneratorまたはBitcoin Address Generatorで、シードからアドレスまでの全プロセスを確認できます。
なぜこれが実際に重要なのか¶
導出パスの理解は学問的なものだけではありません。実際に重要な具体的な状況があります:
- 異なるソフトウェアでウォレットを復元する。 LedgerからTrezorへ、またはMetaMaskから別のウォレットに移行する場合、導出パスが一致することを確認してください。同じシードで異なるパスを使うと、異なるアドレスと見かけ上欠落した資金が生じます。
- 複数チェーンへのアクセス。 シードフレーズはすでにPolygon、Arbitrum、その他のEVMチェーンをカバーしています — すべてEthereumのコインタイプ60を使用します。別途のバックアップは不要です。
- 欠落した資金のデバッグ。 Bitcoinシードを復元して残高が表示されない場合、ウォレット設定でBIP44、BIP49、BIP84パスを切り替えてみてください。
- 特定目的のアドレス生成。 アカウントインデックス(3番目のレベル)を増やすことで、論理的に分離されたウォレットを作成できます — 日常支出用と長期保管用 — すべて同じシードフレーズから。
導出パスシステムは、単一のシードフレーズをマルチチェーン、マルチアカウントウォレットに変換するものです。現代の暗号資産セルフカストディを強力かつポータブルにするインフラストラクチャ層です。これを理解すれば、ウォレット、チェーン、アドレス形式の間を自信を持って移動できます。