bitcoin core の wallet.dat を「新規作成」し、そこにバックアップしたデータ(利用していたアドレスや残高・取引履歴)をリストアする手順を紹介したページ。
- bitcoin core のパスフレーズをリセットしたい
- 古い Wallet をHD鍵生成に対応させたい
上記のようなコトを行いたい場合、「dumpwallet と importwallet を使い、新しい wallet.dat に以前の取引データをリストアすれば良い」というコトを知ったので、試してみた・・・・というページ。
まえおき長め。(手順のみ読みたい場合はここからジャンプ)
HD鍵生成に未対応な古い Wallet の例
HD鍵生成に未対応な古い Walletデータ は、どんだけ最新のbitcoin core にアップデートしても
▲クリックで拡大
こんなカンジでHD鍵生成は無効なまま。
通常の手順ではHD鍵生成は有効にならない。
という事で、このような古いWallet のアドレスや履歴を残したまま、HD鍵生成に対応させてみよう、というのがこのページの趣旨。
余談だが、二つの Wallet を1つにまとめたい時も、似たような手順でイケるらしい。
→ bitcoin-cliでウォレットのインポート時、所持コインは上書きでなく加算だった - Qiita
補足&注意事項
- bitcoin core 系の Wallet であれば、どの暗号通貨の Wallet でもこの手順が利用できる。
- 待ち時間が長いので、時間に余裕がある時に行うこと
- ミスしたりエキスポートデータを流出させたりすると、最悪の場合コインをすべて失うコトになるので慎重に、かつ自己責任で行うこと。
おことわり
いきなり bitcoin-qt で実行するのは怖かったコトや、送金テストをサクっと実行したかった、という理由で、以下のスクリーンショットは dogecoin-qt でテストした時のものを利用しています。(便宜上bitcoin-qt.exeと表記。bitcoin-qt でも手順は同じ。)
手順ここから
バックアップ→初期化→リストア手順
- バックアップ
Wallet (bitcoin-qt.exe) を起動させる
デバックウインドウ起動
- walletpassphrase 自身が設定したパスワード 60
※ パスワード設定している場合は上記のロック解除コマンドが必要
※ 末尾の「60」は解除される時間の指定(単位:秒) - dumpwallet hoge.dump
※ この場合「hoge.dump」というバックアップファイルが生成される
※ hoge.dump は bitcoin-qt.exe と同じ階層に保存される - 実行時の画像 (Dogecoin-qtの場合)
▲クリックで拡大
コマンド実行時、null が帰ってくるが、キチンと実行されている。 - 実行時の画像 (BCH のbitcoin-qtの場合)
▲クリックで拡大
出力ファイルの保存先がちゃんと表示された。コイン毎に挙動が違うのか…。
- walletpassphrase 自身が設定したパスワード 60
- 初期化
Wallet (bitcoin-qt.exe) を終了し、wallet.dat を削除する - リストア
Wallet (bitcoin-qt.exe) を起動させる (新しい wallet.dat が作成される)
デバックウインドウ起動し以下を実行
以上でバックアップから初期化、リストア終了。
リストア実行後のWallet
- 以前の残高や取引履歴を残したまま。パスフレーズは削除され、HD鍵生成に対応した。
- 入金用アドレスのラベルは残ったが、送金元アドレスに付けたラベルは消えてしまった。(残高ゼロのアドレスのラベルが消えたのかも?)
- 既に使わなくなったアドレスも、しっかりインポートできていた。
▲クリックで拡大
「4年前に残高ゼロとなり、その後 一切使っていなかったアドレス」に入金してみたが、リストア先のWalletでも無事入金を確認できた (つまり古いアドレスもちゃんとインポートできていた)。※残高ゼロのアドレスでもラベルは残っていた。
エラーが出る場合のメモ
- 「Please enter the wallet passphrase with walletpassphrase first.」とエラーメッセージが出る場合
- Wallet が暗号化 (つまりパスワード設定がされている) 場合にこのエラーが出る。
- dumpwallet コマンドの前に「walletpassphrase 自身が設定したパスワード 60」が必要。
- エラー「walletpassphrase Error parsing JSON:」が出る
手順紹介は以上。
以下、このページを書くに至った経緯など。
このページを書くに至った経緯
非常に今更な話なのだけれど、
古くから暗号通貨を利用していて、かつ bitcoin core 系の Wallet を以前のまま利用しているユーザーの場合、「hd keyの生成」は無効化されている。
この場合、X印の付いたHDマークにマウスをホバーさせると・・・・
▲クリックで拡大
こんな感じで「hd key generation is disabled」もしくは「HD鍵生成は無効化されています」というツールチップメッセージが表示される。
hd keyの生成は後から追加された機能のため、それより古い wallet.dat を使っている場合は無効化されるらしいのだ。 (ちなみに HDウォレットが 正式に標準化されたのは、2018年2月リリースのバージョン 0.16から)
しかし、どうやら wallet.dat の初期化を行い、古い wallet.dat の中身をインポートしてやれば古い取引履歴やアドレスを残したまま Wallet のHD化が出来るらしい、と聞いたのでチャレンジしてみた次第。
このページは以上。