ウォレットの導出パスを解説
導出パスは、シードフレーズからどのアドレスを作成するかをウォレットに指示するものです。m/44'/60'/0'/0/0 のようなパスの仕組みと、残高が見えないときの対処法を解説します。
導出パスとは、m/44'/60'/0'/0/0 のような短いコードで、シードフレーズからどの秘密鍵とアドレスを生成するかをウォレットに正確に指示するものです。同じシードフレーズから何十億もの異なるアドレスを生成でき、パスはその中の1つを選びます。そのため、同じシードでもパスが異なる2つのウォレットは、異なるアドレスと残高を表示します。
シードフレーズを新しいウォレットに復元したら残高が空だった、ということが起こるのはこのためです。実際には資金はブロックチェーン上で完全に安全なままです。導出パスを理解すれば、その恐ろしい瞬間を設定の問題として解決できます。また、より良いバックアップメモを書くのにも役立ちます。
HD ウォレットが1つのシードから多数のアドレスを作る仕組み
古いウォレットは互いに無関係なランダムな鍵を生成しており、それぞれを個別にバックアップする必要がありました。階層的決定性ウォレットはこの問題を解決しました。BIP32 で定義されたこの方式では、すべての鍵を1つのマスターシードからツリー構造で導出します。BIP39 は、そのシードを12語または24語のリスト、つまりあなたがバックアップするシードフレーズに変換する方法を標準化しました。
導出は決定的なので、同じシードと同じパスからは常に同じ鍵が生成されます。だからこそ、バックアップは1つで十分なのです。一方で、ツリーの別の枝を見ているウォレットには、あなたの資金がまったく表示されないことも意味します。さらに詳しくはマルチチェーンウォレットをご覧ください。
導出パスの読み方
BIP44 は共通の構成を定めました。最初の Ethereum アカウントのパス m/44'/60'/0'/0/0 を例に見てみましょう。
| レベル | 値 | 意味 |
|---|---|---|
| m | master | シードから導出されるルート鍵 |
| purpose | 44' | どの規格を使うか(ここでは BIP44) |
| coin type | 60' | どのブロックチェーンか:SLIP-44 レジストリに基づき、Bitcoin は 0、Ethereum は 60 |
| account | 0' | 1つのシードの下で別々のアカウントを持てるようにする |
| change | 0 | 受取用アドレスは 0、お釣り用アドレスは 1(主に Bitcoin) |
| address index | 0 | 個々のアドレス:0、1、2 など |
アポストロフィは強化導出を意味します。これは、漏えいした子鍵から関連する鍵を計算されるのを防ぐセキュリティ機能です。ツールによっては代わりに「h」と表記します。
よく見かけるパス
Bitcoin のアドレスタイプ
Bitcoin はアドレス形式ごとに異なる purpose 番号を使います。
- m/44'/0'/0' – 1 で始まるレガシーアドレス
- m/49'/0'/0' – 3 で始まるネステッド SegWit アドレス
- m/84'/0'/0' – bc1q で始まるネイティブ SegWit アドレス
- m/86'/0'/0' – bc1p で始まる Taproot アドレス
シードを復元しても Bitcoin が表示されない場合は、ウォレットが正しいアドレスタイプをスキャンしているか確認してください。
Ethereum と EVM チェーン
ほとんどの EVM ウォレットは m/44'/60'/0'/0/x を使い、新しいアカウントごとに最後の数字を増やしていきます。一部のウォレットソフトウェアは、過去に m/44'/60'/x'/0/0 のように別のレベルを増やしていました。そのため、ウォレットを乗り換えると2つ目以降のアカウントが「消えた」ように見えることがあります。EVM チェーンは同じアドレス形式を共有しているため、同じパスなら Ethereum でも他の EVM ネットワークでも同じアドレスになります。チェーンごとにウォレットのアドレスが異なって表示される理由もご覧ください。
Solana とその他のチェーン
Solana ウォレットは一般に coin type 501 に基づくパスを使いますが、ウォレットによって時期ごとに異なるバリエーションが使われてきました。そのため、多くのウォレットはインポート時にパスの選択肢を表示します。
復元後に残高が見当たらないときの対処法
- 1慌てず、何も動かさない。資金はアプリの中ではなく、ブロックチェーン上にあります。
- 2アドレスを確認する。復元したウォレットの最初のアドレスを、過去の取引や保存しておいたアドレスと比べます。違っていれば、パスかアドレスタイプの問題です。
- 3パスのオプションを探す。多くのウォレットには、一般的なパスを一覧表示する「詳細設定」「カスタムパス」「インポート」などの設定があります。
- 4元のウォレットのデフォルトを試す。ウォレットのドキュメントには、通常どのパスを使っているかが記載されています。
- 5パスフレーズの有無を確認する。任意のパスフレーズ(「25番目の単語」)を使っていた場合、パスフレーズが異なる、または入力されていないと、まったく別のウォレットになります。パスフレーズの解説をご覧ください。
- 6ツリーのさらに奥を探す。多くのアドレスを使っていた場合は、ウォレットのアドレスのギャップリミットを引き上げるか、アカウントを手動で追加します。
「パスを見つけます」とうたうウェブサイトに、シードフレーズを絶対に貼り付けないでください。正当な復元ツールはオフラインで動作し、「パスファインダー」をうたうサイトの多くはフィッシングページです。
ウォレットがすべてのパスをスキャンしない理由
なぜウォレットは考えられるすべてのパスを自動でチェックしないのか、と疑問に思うかもしれません。ツリーは事実上無限であり、チェックのたびにブロックチェーン上でアドレスを照会する必要があります。これは時間がかかるうえ、照会を行うサービスに、どのアドレスがあなたのものかという情報が漏れる可能性があります。そのためウォレットは限られたデフォルトパスだけをスキャンし、未使用のアドレスが一定数続いたところで停止します。これをギャップリミットと呼びます。
この設計はプライバシーとパフォーマンスの面では理にかなっていますが、一般的でない構成の場合は、復元時にあなたが少し手助けする必要があります。
バックアップメモに書いておくこと
安全に保管したシードフレーズとは別に、次の情報を安全な場所に保管しておくと役立ちます。
- 使ったウォレットソフトウェアまたはハードウェアウォレットと、おおよその時期
- デフォルトを変更した場合は、導出パスまたはアドレスタイプ
- パスフレーズがあるかどうか(ただし、パスフレーズそのものをシードの隣に書かないこと)
- 復元が正しく行われたか確認できるよう、公開受取アドレスを1つ
これらの情報はそれ自体が秘密というわけではありませんが、復元時に何時間も節約できます。全体の流れについては、ウォレット復元の仕組みに関するガイドで解説しています。
まとめ
導出パスとは、シードフレーズから特定のアドレスへたどり着くための地図です。復元したウォレットに何も表示されないとき、その原因はほぼ必ず、資金の消失ではなくパス、アドレスタイプ、パスフレーズの違いです。どのウォレットと設定を使ったかを把握し、参照用に公開アドレスを保管しておき、最悪の事態を想定する前にウォレットの詳細なインポートオプションを試しましょう。
よくある質問
復元したウォレットの残高がゼロと表示されるのはなぜですか?
最も多い理由は、新しいウォレットが元のウォレットとは異なる導出パスやアドレスタイプを使っているため、同じシードフレーズから別のアドレスを生成していることです。元のウォレットがどのパスを使っていたかを確認し、新しいウォレットの詳細設定またはインポート設定でそのパスを選択してください。
導出パスは秘密にすべきものですか?
いいえ。導出パスは標準的で公開された取り決めであり、資金へのアクセス権を与えるものではありません。秘密にしなければならないのは、シードフレーズと(使っている場合は)パスフレーズだけです。使ったパスとウォレットソフトウェアをバックアップと一緒にメモしておくと役立ちますが、シードがわかるものの隣には書かないようにしましょう。
導出パスのアポストロフィにはどんな意味がありますか?
アポストロフィ(h と書かれることもあります)は、強化(hardened)導出のレベルを示します。強化された鍵にはセキュリティ上の性質があり、子の秘密鍵と親の拡張公開鍵を知った人でも、それらを使ってそのレベルの他の鍵を割り出すことはできません。
ウォレットを復元するには導出パスを知っている必要がありますか?
多くの場合はデフォルト設定で問題ありませんが、常にそうとは限りません。あまり一般的でないウォレット、古いバージョン、またはデフォルト以外の設定を使っていた場合は、ウォレット名とパスを記録しておくと、あなた自身や相続人が後で資金を復元する助けになります。そのメモはシードフレーズのバックアップとは別に保管してください。
