Solana CLIとPhantomウォレットでアドレスが一致しない原因と対処法

Solana CLI で作成したシードフレーズを Phantom ウォレットにインポートしてもアドレスが一致しないのは、導出パス(derivation path)が異なるためだ。Phantom 側で CLI と同じ導出パスを指定すれば、元のアドレスが表示されるようになる。

なぜシードフレーズをインポートしたのにアドレスが違うのか

なぜシードフレーズをインポートしたのにアドレスが違うのか

シードフレーズからウォレットアドレスが生成される仕組みには、導出パスというルールが深く関わっている。導出パスとは、シードフレーズから実際の秘密鍵を取り出すための「枝番」のようなものだ。同じシードフレーズを使っても、異なる導出パスを指定すれば、まったく別のアドレスが生成される。

Solana CLI(コマンドラインインターフェース)でバニティアドレスを作成した場合、導出パスは通常 m/44'/501'/0'/0' が使われる。一方、Phantom ウォレットがシードフレーズをインポートする際のデフォルトの導出パスは m/44'/501'/0' であることが多い。この違いによって、表示されるアドレスが変わってしまう。

要は、同じ「合言葉」からでも、どの小部屋を開けるかが違うために、別の金庫が開いてしまう状態だ。

Phantom で正しいアドレスを表示させる手順

Phantom で正しいアドレスを表示させる手順

Phantom ウォレットのUIでは、インポート時の導出パスを手動で切り替えられる。最新の Phantom 拡張機能またはモバイルアプリで、以下の手順を試す。

既存のウォレットを一度削除し、インポートし直す

Phantom に間違ったアドレスが登録されている場合、まずそのウォレットアカウントを削除する必要がある。設定画面から「アカウントの削除」または「ウォレットの削除」を選び、削除を実行する。この操作はブロックチェーン上の資産には影響しない。あくまで端末上の表示を消すだけだ。

インポート時に導出パスを切り替える

  1. Phantom の初期画面で「ウォレットをインポート」をタップする。
  2. シードフレーズ(12語または24語)を入力する。
  3. 次の画面に進むと、画面下部に「詳細設定」または「導出パス」といったオプションが表示される場合がある。ない場合は、上部に小さな歯車アイコンや「カスタムパス」のリンクを探す。
  4. m/44'/501'/0'/0' を入力し、保存する。
  5. インポートを完了すると、CLI で作成したアドレスが表示される。

Phantom のバージョンやデバイスによって UI の文言や導出パスの指定方法が異なることがある。上記の手順で導出パス入力欄が見つからない場合は、公式ドキュメントで最新の操作方法を確認する。

それでもアドレスが合わないときの確認ポイント

それでもアドレスが合わないときの確認ポイント

CLI で実際に使われた導出パスを再確認する

バニティアドレスを作成する際、solana-keygen grind コマンドなどを使った場合、明示的に --derivation-path を指定していなければデフォルトが使われる。しかし、もしカスタムパスを指定していたなら、その値を Phantom 側でも正確に入力しなければならない。

コマンドラインで実行した履歴を確認し、指定した導出パスをメモしておく。

シードフレーズの入力ミスを疑う

手書きのシードフレーズにスペルミスや順序の誤りがあると、当然ながら異なるアドレスが生成される。Phantom への入力時に、単語の間に余分なスペースが入ったり、似た単語(例: “tag” と “trap”)を取り違えたりしていないか、一字一句を確認する。

CLI から直接秘密鍵をエクスポートする方法

CLI から直接秘密鍵をエクスポートする方法

導出パスの指定がうまくいかない場合や、特定のバニティアドレスだけを Phantom で使いたい場合は、秘密鍵を直接インポートする方が確実だ。

CLI でキーペアを復元する

シードフレーズだけが手元にある場合、まず Solana CLI でキーペアを再生成し、秘密鍵をバイト配列として取り出す。

solana-keygen recover 'prompt://?key=0/0' -o recovered-keypair.json

上記のコマンドは、対話式でシードフレーズを入力し、導出パス m/44'/501'/0'/0' に対応するキーペアを recovered-keypair.json として保存する。なお、CLI のバージョンによって prompt:// スキームの動作が異なるため、最新の公式ドキュメントを参照する。

秘密鍵をPhantomにインポートする

生成された recovered-keypair.json には、JSON形式で秘密鍵のバイト配列が格納されている。Phantom ウォレットの「アカウントを追加」または「インポート」から、「秘密鍵」を選び、その配列を貼り付ける。すると、目的のバニティアドレスがそのまま表示される。

この方法なら導出パスの不一致に悩まされることはない。ただし、秘密鍵を扱う際は厳重に取り扱い、インポート後は端末からJSONファイルを安全に削除する。

よくある質問

導出パス m/44’/501’/0’/0′ と m/44’/501’/0′ の違いは何か

どちらも Solana の BIP44 標準に基づくが、末尾の /0' は「アカウントインデックス」の深さを示す。多くのウォレットは最初のアカウントを /0' として扱うが、CLI はデフォルトでさらに一段深い /0' を含むパスを使う。この階層の違いでアドレスが変わる。

Phantom で導出パスの入力欄が見つからない場合はどうするか

一部のバージョンでは、シードフレーズ入力後の画面に「詳細設定」という小さなテキストリンクがある。タップすると導出パスの選択肢が表示される。それでも見つからない場合は、Phantom のサポートページや最新のバージョンアップ情報を確認する。

インポート後に資産が表示されないのはなぜか

正しいアドレスが表示されていても、トークン残高がゼロと表示されるケースは珍しくない。これは単に Phantom がそのトークンを自動検出していないだけのことが多い。トークン一覧画面で「トークンを追加」を選び、該当するトークンのミントアドレスを手動で登録すれば残高が表示される。

CLI で作ったウォレットに資金を送ってしまったが、Phantom で操作できるか

資金はシードフレーズに紐づいているため、上記の手順で正しい導出パスを指定してインポートすれば、そのまま Phantom から送金やステーキングが可能になる。ブロックチェーン上の資産は、どのウォレットソフトを使うかに関係なく、秘密鍵さえ一致すれば操作できる。

この記事のポイント

  • アドレス不一致の原因は、CLI と Phantom の導出パスが異なるため
  • Phantom インポート時に導出パスを m/44'/501'/0'/0' に設定すれば解決する
  • 導出パス入力欄がない場合は、秘密鍵を直接インポートする方法も有効
  • シードフレーズのスペルミスや順序違いもアドレス変化の原因になる
  • 資産が表示されないときはトークンの手動追加を試す
共有:

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)