Bitcoinの暴騰と長期貯蓄の難しさ
Bitcoinといえば、今や言わずと知れた元祖仮想通貨である。このブログで「Bitcoinが気になる」という記事を書いたのがもう14年も前になる。そのころは1BTCが18米ドル前後と書いている。現在(2025年4月)は84000米ドル前後になっている。ものすごい値上がりだ。これが法定通貨だったらとんでもないデフレ経済になってしまっていることだろう。この14年間のあいだ、私も指をくわえてみていたわけではない。Raspberry PiとUSB接続のマイニング専用ASICでマイニングプールに計算能力を提供してちょこちょこと報酬を得たりしていた。でも、掘っている最中は、得られる報酬は1円未満で、電気代や手間を考えると掘れば掘るほど赤字だなという状況だった。それでも、報酬が得られる環境をセッティングするのが楽しかったからまあいいかという娯楽となっていた。それでも得られる報酬が1か月に1satoshi程度になってしまったころ、0になる前に自分から潔く身を引こうと、我がマイニング環境への給電を止めた。
それが、1BTCが1000万円を超えるほどの暴騰を見せた現在、あの報酬が今となってはそこそこの金額になっているのではないかと、ふと気になった。マイニングプールから報酬を振り込んでいたのは、当時Blockchain.infoで運営されていたクラウドウォレットサービスだ。自分のPCにbitcoin coreをインストールしてローカル環境のウォレットに入れておいてもよかったのだが、自分はきっとPCのクラッシュだったり、買い替えに伴う環境移行だったりの際にウォレットを復旧不可能な状態にしてしまうであろうことは、火を見るよりも明らかだと思われた。仕組みのよくわかっていない自分の環境より、プロが運営するサービスのほうが、チェーンのハードフォークやいろいろな変更にも対応してくれたり、適切なセキュリティーでシステム運用してくれるだろうと、そんな風に考えていた。そんな時期が私にもありました。
Blockchain.comにログインしたくてログインしたくて震える
マイニングしていた時から1000倍近くに高騰した今、自分の報酬はいくらだったのか曖昧模糊とした記憶のまま、もしかしたらまとまった額になっているんじゃないかとスケベ心をだしていざ、Blockchain.infoにログインしようとアクセスしてみると、Blockchain.infoは、Blockchain.comへとその名をかえていて、いきなりリダイレクトされてしまった。一通り検索してみてどうやら詐欺ではなさそうだと確認したうえで、気を取り直してログインを試みた。IDとパスワードを入力すると、登録したe-mailに確認メールが来て、そのメールのリンクをクリックするとログインが完了する、はずだった。

なんと、IPアドレスがブロックされているとのたまうではないか。なぜだ。IPアドレスがブロックされているのなら、PPPoEをつなぎなおして違うIPアドレスからアクセスしてはどうかと思ったが、ダメだった。自分のIPアドレスがピンポイントでブロックされているわけではなくもっと広い範囲でブロックがかけられているようだ。
それならVPNを通して、別の国からログインしてはどうか。結論から申し上げるに、それも駄目だ。今度は電話番号がブロックされているといわれる。

これは登録している電話番号がダメだといわれているらしい。電話番号を変更するにはログインする必要があり、ログインするには電話番号を変更しなければならない。そして、問い合わせ窓口のようなものはなさそうだ。詰んだ。
復元用シードからの復元を試みる。
Web検索で色々調べてみたら、Bitcoin日本語情報サイトのFAQでドンピシャの内容を見つけた。
それによると、2024年11月から日本からBlockchain.comへのログインがブロックされているようで、同様にログインできない人は日本中にたくさんいるようだ。私が嫌われたわけではなかった。良かった。放置していただけでそこまで嫌わなくてもいいじゃないかと涙目になっていたが、それを聞いてほっとむでをなでおろした。大胸筋がぴくぴくした。
Blockchain.comでは、万が一ウォレットにアクセスできなくなったときのために、単語12語の復元フレーズや、wallet.aes.jsonというファイルでのバックアップができるようになっていた。私は両方持っていた。パスワードもちゃんとわかる状態だ。これらのバックアップがあれば、Blockchain.comにログインしてウォレットを復元することができるというものだが、要するにこれらを使えばBitcoinのプライベートキー(秘密鍵)が復元できるよということだ。秘密鍵があれば、別のローカルウォレットでウォレットの復元が可能となるのではないか。Bitcoin日本語情報サイトでもいろいろやり方が紹介されていたが、私もバックアップは持っているので復元を試みたいと思う。
12単語のリカバリーフレーズ(シード)による復旧の試み
まずは、Bitcoin用のウォレットとして今まで私は何も考えずにBitcoin coreを使っていたが、ブロックチェーンをすべてローカルに保存するために容量がでかくなってしまう(2025年4月現在で650GBほど)のと、シードからの復元機能をサポートしていないので、今回はElectrumを使ってみた。
Electrumを立ち上げて、新規・復元を選んで、適当なウォレット名をつけ、次へを選択する。

スタンダードなウォレットを選ぶ。

キーストアの画面で、「既存のシードを使用する」を選択する。

テキストボックスに12単語のリカバリーフレーズを入力して、オプションを選択する。

BIP39シードを選択する。

すると、「そんな古いもんで安全基準満たしてないようなもん、使わせたるけど妥協やぞ!」という警告で脅されるが、今回は復旧が目的なので復旧できたら速攻で新しいウォレットへ中身を移動させるつもりなので気にせず次へをクリックする。

そして最後に、ウォレットのアドレスタイプを選択する。ここは古いウォレットの復旧なのでlegacyを選択する。既定のパスはそのままで、もし同じアカウントでウォレットを複数作っていた場合は、最後の0hを1hと増やしていけば復旧できるらしい。

作成するウォレットにパスワードをかけておくと安心だが、このパスワードを忘れると二度とウォレットにアクセスできなくなるので注意が必要だ。今回は復旧用の一時的な避難場所を作るだけなので設定しない。どうせ使い捨てなのでノーガード戦法だ。そしてフィニッシュをクリックしてフィニッシュ。

これで復旧に成功していれば、取引履歴が全部表示されるはずだ!いざ!と気合を入れてみてみれば!空っぽだ!

ウォレットの情報を表示してみると、有効なシードの欄が「誤」になっている。結局のところ、有効なシードじゃなかったから新しいウォレットが普通に作られただけ、ということらしい。選択するパラメータを変えたり、既定のパスの数字を変えてみたりしたが、復旧はできなかった。
というわけで、詳細に手順を説明したが、何の成果も得られませんでした!
wallet.aes.jsonからの復旧の試み
シードからの復旧には失敗したが、あきらめるにはまだ早い。もう一つ、wallet.aes.jsonファイルというblockchain.info時代のバックアップファイルがある。こちらから復旧できればどうということはない。落ち込んでる暇などないのだ。wallet.aes.jsonはその名の通り、AES(Adbanced Encryption Standard)で暗号化されたjson(javascript Object Notation)形式でウォレット情報を記述したファイルだ。復号すればプライベートキーが取り出せるはずだ。しかしどうやって復号するのか。
今回は、BTCRecoverを使う。BTCRecoverは、多種多様なウォレット形式に対応した仮想通貨用のリカバリーツールだ。Python3で記述されていて、GitHubで公開されている。ウォレットのパスワードが分からなくなったり、シードが分からなくなっちゃったりした時に復旧できる。今回は、AESの複合に必要なパスワードは分かっているので、本来の用途とは違うが、ダンプツールだけ利用する。
BTCRecoverのインストールは、公式ガイドに従えばスムーズに終わると思う。特にトラブルなくあっさりと終わった。お手軽でいい。素晴らしい。
GitHubのレポジトリから、https://github.com/3rdIteration/btcrecover/archive/master.zip をダウンロードして展開する。
次に、Python3.8以上のバージョンをインストールする。今回はPython3.13を使用したがエラーなく動かせた。
Pythonをインストールしたら、BTCRecoverを展開したディレクトリにあるrequirements.txtを指定してpipコマンドで必要なライブラリをインストールする。
pip3 install -r requirements.txt
GPUを使ってパスワード解析なんかをしたい場合は、pipで以下もインストールする。今回はしないけどね☆
pip3 install pyopencl
次に、wallet.aes.jsonの複合に必要なパスワードを記述したテキストファイルを作成する。今回は、pList.txtにパスワードを入力して保存した。
そのうえで、以下のコマンドでウォレットの中身をダンプする。pList.txtの中のパスワードが間違っていたら復号に失敗する。パスワードの記憶ががあいまいでいくつか候補がある場合、それらをこのリストに書いて実行すると、どのパスワードが正解か教えてくれる。
python btcrecover.py --wallet ./wallet/wallet.aes.json --passwordlist ./wallet/PList.txt --dump-wallet wallet.dump.txt --dump-privkeys wallet.dump.key.txt
–dump-wallet オプションで指定したファイルにjsonの中身が展開されて、–dump-privkeys に指定したファイルにプライベートキーが出力される。
–dump-wallet で指定したファイルの中身はこんな感じだ。
{
"guid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"sharedKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"options": {
"pbkdf2_iterations": 10,
"fee_policy": 0,
"html5_notifications": false,
"logout_time": 600000,
"tx_display": 0,
"always_keep_local_backup": false,
"transactions_per_page": 30,
"additional_seeds": []
},
"keys": [
{
"addr": "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"priv": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"created_time": 0,
"created_device_name": "javascript_web",
"created_device_version": "1.0",
"privkey_compressed": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"privkey_uncompressed": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
]
}
–dump-privkeysで出力されたファイルはこんな感じ。–dump-wallet の出力のprivkey_compressedとprivkey_uncompressedだ。
Private Keys (For copy/paste in to Electrum) are below...
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
コマンドに成功した場合は、出力の中に作者の仮想通貨アドレスが含まれていて、救出できた仮想通貨の1%でいいから寄付してね!と書いてある。寄付しておこう。シードによる復旧には失敗したが、BTCRecoverによる秘密鍵の抽出には成功した!
Electrumに秘密鍵をレッツ!インポート!
–dump-privkeysで指定したファイルに出力された秘密鍵を、Electrumにインポートすると、ウォレットが復元されるはずだ。先ほどの手順で、「ビットコインアドレスまたは秘密鍵のインポート」を選択する。

テキストボックスに、–dump-privkeysで出力された2行の秘密鍵をペタっとコピペして、あとは前回失敗したウォレット作成と同じ流れでウォレットができる。

そして、待望の中身は!

入ってる!ちょっとだけ入ってる!速攻で、新しいウォレットへ移動しておいた。もうBlockchain.comなんかに預けておけない!引き出しちゃうんだからね!
古のウォレットの価値とセキュリティーの非対称性
今回は見事、10年以上前のウォレットの発掘に成功した。そして大した額が入っていなくて泣いた。だが、今、1BTCを手に入れようと思えば1200万円ほどを用意しなければならないが、このウォレットが使われていた2013年ごろは12万円程度だった。冒頭で述べた記事を書いた2011年頃は2000円程度だった。もっと時をさかのぼれば1BTC4円時代も記憶にある。時間をさかのぼればさかのぼるほどBTCの入手難易度は著しく低下する。これは、古いウォレットであればあるほど、大量のBTCが入っている可能性が高いことを示している。そして、今回の私のように昔作ったウォレットをどうせ1円以下の価値しかないからとか、数千円だからと放置してしまっている例は少なくないと思われる。そして古いウォレットであればあるほど、セキュリティーはあまあまとなっている。闇に蠢く怪しい人たちの標的になっているのだろうなぁと思うわけである。
去年の年末あたりより、日本からのアクセスを突如としてブロックし始めたBlockchain.comにうっかり大量のBTCを預けたままになって取り出せなくなってしまっている人はたくさんいるのではないかと思う。このブログにもずっと投げ銭用のBTCアドレスを載せていたが、実はそのアドレスもBlockchain.comのウォレットのものだった。この記事がそんな人たちの一助となれば幸いである。
見事、高額なBTCが取り出せました暁には、その一部でも以下のアドレスに寄付いただけると嬉しい。
投げ銭用BTCアドレス:bc1qyzhv5cuedjl555n74k6lncmpzv9nfc64ygfgr8