Solana CLIで作成したDevnet用のウォレットアドレスをPhantom Walletにインポートする方法が載っていなくてハマったため、そのときのメモ。
Agenda
環境
- Mac Big Sur 11.6
- solana-cli 1.8.0
- Microsoft Edge 95.0.1020.44
- Edge拡張機能 Phantom 0.12.0.1
やりたいこと
Solana CLIで作成したウォレットアドレス($ solana address)をPhantomにインポートして、Phantom上でトランザクションが閲覧できようにしたい。
ポイント
PhantomのPrivate KeyはBASE58だが、SolanaのPrivate KeyはKeypairというUINT8(英数字だけ)になっている。そのため、データ型をあわせる必要がある。
全体的な流れとしては、PhantomのPrivate Key(BASE58)をコピーして、BASE58→UINT8に変換したあと、SoalanaのKeypair(UINT8)にペーストするだけ。
対応方法
STEP1. PhantomのPrivate Key取得
Phantomで取り込みたいウォレットアドレスのPirvate Keyをコピーする。
STEP2. データ型を変換
【注意】便利なサイトがあったが、2022/2/8時点で利用できなくなったため、エンコード・デコードのプログラムを以下に設置しました。ちょっと手間になりますが、値を書き換えてnodeで実行すれば変換できます。
備忘録用
以下はサイトが復活したときのために念のため残しておきます。
(いまは使えなくなっているため、基本的に上記のGitHubソースコードをお使いください)
以下のサイトで変換ができる。非常に使いやすいUI。
N⦾n-fungible Matrix
Private Keyを入力フォームにペーストしてDECODEする。
STEP3. Solana Keypairに入力
Keypair Pathの場所を表示する。
$ solana config get
Config File: /Users/user/.config/solana/cli/config.yml
RPC URL: http://localhost:8899
WebSocket URL: ws://localhost:8900/ (computed)
Keypair Path: /Users/user/.config/solana/id.json
Commitment: confirmed
viでファイルを開いて、変換済みUINT8のデータに差し替える。
$ vi /Users/user/.config/solana/id.json
最後にウォレットアドレスを表示して、Phantomのアドレスと一致しているか確認。
$ solana address
HXtBm8XZbxaTt41uqaKhwUAa6Z1aPyvJdsZVENiWsetg
メモ
逆のやり方(Soalana CLIのウォレットアドレスをPhantomにインポート)は試していなが、keypairを UINT8→BASE58に変換してから、Phantom上でPirvate Keyをインポートすればいけそう。変換ツールが見つからず検証できず。
PhantomでLocalnetに切り替えると残高表示できない課題
Solanaでローカルのテスト用ブロックチェーンサーバーを起動してから、Phantomにアクセスすると、ローディング中のまま残高表示できない。
$ solana-test-validator
原因はわからなかったが、PhantomでChange NetworkをDevnetに切り替えてから、すぐにLocalnetに再度切り替えると、残高表示できる。この状態であれば、Phantom上で送金も可能。
(操作イメージは以下の再生ボタンで確認できます)
ただし、取引履歴は表示されるときと、されないときがある。動作が不安定なため、LocalnetはSolana CLIでの利用がおすすめ。なお、DevnetとTestnetはPhantom上でも正常に動作するため、Localnetだけ気をつける必要あり。