大量のBitcoinを失った
詳細は以下の通り。
- 取引所で時間をかけて9,000 BTCを購入した。
- Debianのライブ版Linuxディストリビューション上で動作しているクライアントに送金した。
- ウォレットファイルをUSBメモリーにバックアップした。
- 自分自身に1 BTCを送金した。
- 確認が完了する前にクライアントを閉じた。
- システムをシャットダウンした(メモリーにロードされていたシステムディスクが消去され、./bitcoinフォルダーも消えた)
- システムを再起動した。
- 古いwallet.datファイルを./bitcoinフォルダーにコピーした。
- いくつかの確認の後、残高は1 BTCとなり、見覚えのないアドレスに8,900 BTCを送金したというトランザクションが表示されていた。
- フォーラムのスレッドで同様の問題を経験した人がいると読んだが、それは別のアドレスにコインを送ってから古いウォレットファイルをリロードして二重支払いを試みた場合にのみ発生しているようだった。
何かできることはないかな?
8,900が送金されたとされるアドレスは持っているが、古いウォレットファイルは完全に失われている。
ありがとう。
Stone Man
FAQに、トランザクションのたびにバックアップを取るよう警告を追加しました。ところで、バックアップを取る前にクライアントを止める必要はあるんですか? それだと少し不便ですね。自動バックアップがあれば確かに便利でしょう。
サトシが以下の投稿でこれに対する保護策を提案していたと思う:
SNサトシ・ナカモトの投稿(2010年7月17日16:27 UTC)新しいアドレスが必要な時に使用するために、事前に作成したアドレスのストックをウォレットにキューしておくべきだ。それほど大きくないので、たくさん持っておいても問題ない。これにより、誰かがバックアップを取った後に新しいアドレスを要求し、それで大きな支払いを受け取るケースもより一般的にカバーできる。あるタイプのアドレス需要が他のタイプのために枯渇しないように、別々のキューを設けるべきかもしれない。
アドレスは通常の場所に作成・保存されるが、「作成済み・未使用」アドレスの別のリストにも記載される。アドレスが要求されると、未使用キューの先頭のアドレスが渡され、新しいアドレスが作成されて末尾に追加される。
ブロック読み込みコードには、wallet.datをコピーした人のケースを修復するために作られた何らかの再スキャンがある。ウォレットが復元されたために忘れられた、既に受信済みのブロック内の受信支払いを再発見するケースを再スキャンが処理できるか確認する必要がある。
すべてのコインがリスクにさらされるとは初耳だ。トランザクションに関与するコインの塊(以前受け取ったトランザクション)だけだと思っていた。合計残高ではなく。おっと。
対策として、ウォレットを手動で5つの新しいウォレットに分散して分割した。これで常にリスクにさらされるのは1つだけだ。
すべてのコインがリスクにさらされるとは初耳だ。トランザクションに関与するコインの塊(以前受け取ったトランザクション)だけだと思っていた。合計残高ではなく。おっと。
前の理解が正しかった。彼のすべてのコインが失われた理由は、最初に9000すべてを自分自身に送金し、単一のTxInに統合したからだ。そのステップを省略して直接自分に1を送っていれば、1を超える以前受け取った最小の支払いだけを失っていただろう。
クライアントはTxInとTxOutをユーザーにもっとうまく伝える必要があると思う。混乱させずにそれをどうやるかはわからないが、クライアントがどのコインを送金するかの選択には、プライバシー、安全性、セキュリティに関する現実的な影響がある。
GLGround Loopの投稿(2010年8月11日17:31 UTC)すべてのコインがリスクにさらされるとは初耳だ。トランザクションに関与するコインの塊(以前受け取ったトランザクション)だけだと思っていた。合計残高ではなく。おっと。
前の理解が正しかった。彼のすべてのコインが失われた理由は、最初に9000すべてを自分自身に送金し、単一のTxInに統合したからだ。そのステップを省略して直接自分に1を送っていれば、1を超える以前受け取った最小の支払いだけを失っていただろう。
クライアントはTxInとTxOutをユーザーにもっとうまく伝える必要があると思う。混乱させずにそれをどうやるかはわからないが、クライアントがどのコインを送金するかの選択には、プライバシー、安全性、セキュリティに関する現実的な影響がある。
待ってくれ、また混乱してきた。この驚きの本質は、Bitcoinがトランザクション一回ごとに「ウォレットを空にする」ようにプログラムされているということだと思っていた。私が読んだ説明によると、ウォレットのアドレスAから外部のアドレスBにコインを送る場合、実際にはアドレスAからコインが残らず送出され、アドレスBに向かわない分は自分のアドレスCに送られる。つまり、9000枚の中から1枚だけ支払う場合でも、1枚を相手に送り、8999枚を新しいアドレスの自分自身に送ることになる。
言い換えれば(私が混乱していなければ)、トランザクションを行うたびに、バックアップ済みの古いウォレットアドレスは空にされることになる。
Lエリック・スワンソンの投稿(2010年8月11日17:57 UTC)GLGround Loopの投稿(2010年8月11日17:31 UTC)すべてのコインがリスクにさらされるとは初耳だ。トランザクションに関与するコインの塊(以前受け取ったトランザクション)だけだと思っていた。合計残高ではなく。おっと。
前の理解が正しかった。彼のすべてのコインが失われた理由は、最初に9000すべてを自分自身に送金し、単一のTxInに統合したからだ。そのステップを省略して直接自分に1を送っていれば、1を超える以前受け取った最小の支払いだけを失っていただろう。
クライアントはTxInとTxOutをユーザーにもっとうまく伝える必要があると思う。混乱させずにそれをどうやるかはわからないが、クライアントがどのコインを送金するかの選択には、プライバシー、安全性、セキュリティに関する現実的な影響がある。
待ってくれ、また混乱してきた。この驚きの本質は、Bitcoinがトランザクション一回ごとに「ウォレットを空にする」ようにプログラムされているということだと思っていた。私が読んだ説明によると、ウォレットのアドレスAから外部のアドレスBにコインを送る場合、実際にはアドレスAからコインが残らず送出され、アドレスBに向かわない分は自分のアドレスCに送られる。つまり、9000枚の中から1枚だけ支払う場合でも、1枚を相手に送り、8999枚を新しいアドレスの自分自身に送ることになる。
言い換えれば(私が混乱していなければ)、トランザクションを行うたびに、バックアップ済みの古いウォレットアドレスは空にされることになる。
私の理解では、送りたい枚数以上のコインを持つアドレスを見つけ(または複数のアドレスを組み合わせ)、おつりを新しいアドレスに送る。
つまり、もし彼が1000、2000、2500、3500のアドレスを持っていたとすると、そのうちの一つ(最小のもの?)を選び、1枚を送り、残りを新しい自分のアドレスに送り返す。この場合、全てを失うことはなく、その一つのアドレスにあった残りだけを失う。
どうやら彼はコインが入ったアドレスを1つしか持っていなかったようだ。おそらく取引所から一度にまとめて取得したからだろう。そうでなければ、なぜ全てを失うのか分からない。
なるほど、注意深く読み直し、参照されたスレッドを確認して、ようやく詳細を理解した。Bitcoinが各トランザクションで「ウォレットを空にする」のではなく、コインの送信に使用されたアドレスを完全に空にするのだ。この特定のケースでは、ユーザーが以前に9000枚のコインをまとめて自分自身に送っており、結果としてすべてのコインが単一のアドレスに保持されていた。
私が見る限り、GUIクライアントからは、残高のどのコインがどのアドレスに保持されているかの情報を取得する方法がないようだ。アドレスが「本当に重要」なものであることを考えると、その情報は価値があるかもしれない。
「ウォレット」は自分専用の銀行のようなものだ。 多くの異なる口座が含まれている。(Bitcoinではこれをアドレスと呼ぶ)
各アドレスにはそれに関連付けられた残高、つまりどれだけのお金が入っているかがある。 ウォレットの残高は、ウォレット内のすべてのアドレスの残高の合計だ。
トランザクションを実行すると、必要な出力額を構成するのに十分なアドレスが空にされるが、各アドレスを完全に空にする必要があるため、余りが出ることが多く、その場合「おつり」が新しいアドレスに戻される。
このケースでは、Stone Manが700以上のアドレスからすべてのお金を1つのアドレスに送るトランザクションを行ったため、お金が入ったアドレスが1つだけのウォレットになった。
そのアドレス/口座は1BTCのトランザクションの一部として空にされ、8999のおつりは秘密鍵を紛失した新しいアドレスに返された。
もし全てのコインを1つのアドレスにまとめていなければ、失うコインはずっと少なかっただろう。
この話の教訓は「すべての卵を一つのカゴに入れるな」かもしれない。
Ggrideconの投稿(2010年8月11日21:08 UTC)私が見る限り、GUIクライアントからは、残高のどのコインがどのアドレスに保持されているかの情報を取得する方法がないようだ。アドレスが「本当に重要」なものであることを考えると、その情報は価値があるかもしれない。
そうだ、現在のGUIではどのアドレスにどの残高があるかを確認することはできない。
「非常に重要な」情報だと思う。 また、トランザクションの送信元となるアドレスを選択できることも重要だと思う。
これはウォレットの比喩がまずい例だ。
FAQに、トランザクションのたびにバックアップを取るよう警告を追加しました。ところで、バックアップを取る前にクライアントを止める必要はあるんですか? それだと少し不便ですね。自動バックアップがあれば確かに便利でしょう。
バックアップの数秒前(5秒程度)以内に何もしなかったり、支払いを受けたりしなければ、クライアントを停止せずにバックアップを取ることができる。
Ggrideconの投稿(2010年8月11日20:46 UTC)待ってくれ、また混乱した。驚きの本質は、Bitcoinがトランザクションのたびに毎回「ウォレットを空にする」ようプログラムされていることだと思っていた。
いや、通常は各トランザクションでウォレットを空にするわけではない。金額に近くなるように合計できる最小のコインセットを使う。この場合、残念ながらそのウォレットには9000 BTCの単一の「紙幣」が入っており、1 BTCと8999 BTCのお釣りを得るために崩す必要があった。
クライアントに、各アカウントに保管されているアドレスと金額を表示する「アカウント」タブを設けるべきだと強く推奨している人々に、自分の声も加えたい。
そこは、バックアップ機能や注意書き、警告を追加するのに自然な場所になる。
クライアントに、各アカウントに保管されているアドレスと金額を表示する「アカウント」タブを設けるべきだと強く推奨している人々に、自分の声も加えたい。
そこは、バックアップ機能や注意書き、警告を追加するのに自然な場所になる。
この提案に2番目(3番目、4番目……何番目でも)として賛同する。これは経理的にも非常に助かる。
それから、stone manさん、うわあ、お悔やみを言うよ。
ではまた。
アカウントだけでなく、自分のウォレットにどの「紙幣」が入っているか、入出金の個別のトランザクション、すべての詳細を見られる総合的な台帳ビューまで、ぜひ全体を見渡せるようにしたい。今のUIは少し子供向けに単純化されすぎている気がする。初期採用者の大半は、合計残高だけでなく、その仕組み自体に興味を持っている。
ほんのBTC 0.02だけの意見だが。