Web3初心者、開発中に資金を送ったら二度と戻らなくなった件
2025/06/02 公開
はじめに
先日作成したWeb3アプリケーションの話を書く予定でしたが、想定外のトラブルが発生しました。
何が起こったかというと、開発のために送金したウォレットアドレスが、Hardhatで使ったローカルアカウントだったため、
送金した約5000円分のETHが二度と戻ってこなくなったのです。
事件の概要
まず、なぜ送金したのかについてですが、ブロックチェーン開発やテスト専用ネットワーク(Alchemy)を利用するには、
基本的に本番環境用のETHをウォレットに入れておく必要があります。
例えば、以下のようなサイトで、Sepoliaネットワーク用に0.001ETHを受け取るには、事前に少量のETHが必要です。
🔗 Alchemy Ethereum Sepolia Faucet
そこで、私はBraveウォレットで保有していたETHを、Metamaskのあるアドレスへ送金しました。
トランザクション自体は成功し、送金履歴も残っていたので問題ないと思っていました。
しかし、なぜか残高がずっと0ETHのままなのです。😇
Etherscanで該当のアドレスを確認してみると、確かにトランザクション履歴は存在していました。
原因は単純で、送金先のアドレスが、以前Hardhatで使ったローカルアカウントだったからです。
Hardhatは開発時に一時的な秘密鍵をもとにランダムなアカウントを生成します。
そのアカウントをMetamaskにインポートして使っていたのですが、これはローカルノード専用の一時的なアカウント。
つまり、見た目は普通のアドレスでも、実際のブロックチェーン上に存在しないため、資金は永久にアクセスできません…。
完全にやらかしたポイント
私が完全にやらかしてしまったポイントは2つあります。
-
アドレスをただコピペしただけで、「どこで生成したか」を意識していなかったこと。
Metamaskに表示されていれば大丈夫と思い込んでいました。
-
最初は検証用に0.002ETHだけ送っていたのですが、残高が表示されず「ガス代で消えたのか?」と誤解してしまい、
さらに0.01ETH(約4000円相当)を追加送金してしまいました。
教訓
今回の件から得られた教訓は以下の通りです。
- Hardhatのローカルノードで生成されるアカウントは一時的なもの。開発以外で絶対に使ってはいけない。
- テスト中であっても、アドレス管理・秘密鍵の保存は慎重に行うこと。
- 本番環境とテスト環境では、アカウント・ネットワークを明確に分けること。
- Metamask内でも「アカウント名を分ける」など工夫するのがおすすめです。
まとめ
おそらく私のようなミスをする人はあまりいないかもしれません。
ですが、Web3開発では一つのミスがそのまま資産の損失に直結します。
これから開発を始める方は、「送金しようとしているアドレスはどこで生成されたものか?」を
送る前に必ず確認するようにしましょう。