エラー - 助けてください!
自分のビットコインクライアントに次のエラーが表示されている:
「Warning: displayed transactions may not be correct! you may need to upgrade, or other nodes may need to upgrade」
ビットコインクライアントがエラー状態にある。約 13,000 BTC を保有していた。これらのコインを別のコンピューターに転送しようとしたが、上記のエラーが発生した。ブロックの転送ができず、生成されるブロックが無効(invalid)となっている。どうすればよいのか?
Dhaw が debug.log ファイルのいくつかを送ってくれた。見られた症状:
- ほとんどのファイルで、ブロック数が 1698 で「スタック」している。
- 1 つのファイルではそれ以降のブロックを受け入れたが、Bitcoin 再起動後に 1698 に戻った。
- 1698 以降に受信するブロックはおそらく無効と見なしている。実際のブロック拒否は見ていないが(自動トリムで削除され続ける)、debug.log には自分が有効と認識していないブロックに対する「block xxx have」メッセージが大量にある。
- 実際のピアに接続されている。IRC への接続に成功し、
-addnodeで自分にも接続できた。自分の側で、彼がgetblocksメッセージを正常に送信していることを確認した。
Dhaw は詐欺師ではなく、何らかのバグの被害者だとほぼ確信している。推測では、Bitcoin 再起動のたびにブロックデータベースが破損している。
彼は「ブラジルポルトガル語」を話す。翻訳者がいると助かる。
Dhaw はこれらのコインをすべて自分のマシンで生成した。
残念ながら、バグか Dhaw のネットワーク接続の何らかの異常により、すべて別のブロックチェーンで生成されていた。
Bitcoin クライアントは、最後のブロックチェックポイントまでのすべてのブロックを持つまで、コイン生成を許可すべきではない。
Dhawがdebug.logファイルのいくつかを送ってくれた。見られた症状:
- ほとんどのファイルで、ブロック数が1698で「スタック」している。
- 1つのファイルではそれ以降のブロックを受け入れたが、Bitcoin再起動後に1698に戻った。
- 1698以降に受信するブロックはおそらく無効と見なしている。実際のブロック拒否は見ていないが(自動トリムで削除され続ける)、debug.logには自分が有効と認識していないブロックに対する「block xxx have」メッセージが大量にある。
- 実際のピアに接続されている。IRCへの接続に成功し、
-addnodeで自分にも接続できた。自分の側で、彼がgetblocksメッセージを正常に送信していることを確認した。
クライアントがネットワークから受信したブロックを拒否するには何が必要か? これがわかれば逆算して、なぜ新しいブロックをすべて拒否したいのかを突き止められる。メインチェーンの 1699 以前にクライアントが同意しないトランザクションがあるはずだ。
いずれにせよ、彼が生成した何千もの Bitcoin は、彼だけが参加しているチェーンの分岐で生成されたものなので、メインチェーンでは無価値だ。その分岐の唯一の参加者なので、5分ごとに 50 を生成していただろう。もう一つの不思議は、なぜ 1698 で止まったのかだ。難易度を再計算した時に、5分ごとに 1 ずつ増え始めるはずなのだが。
クライアントがネットワークから受信したブロックを拒否するには何が必要か? これがわかれば逆算して、なぜ新しいブロックをすべて拒否したいのかを突き止められる。メインチェーンの 1699 以前にクライアントが同意しないトランザクションがあるはずだ。
1699 に同意しないはずだが、それは空のブロックだ。それに同意しない理由はないはずだ。
私の仮説:
彼のアンチウイルスが一定サイズ以降のファイルを切り捨てている。これにより、ブロックデータベースが 1698 で制限され(そしてそれ以降のブロックを破損のために拒否している可能性がある)。ただし、ブロックインデックスは切り捨てられていない(短いため)ので、実際には持っていないブロックを「already have」として無視する。ブロックを生成するたびに、アンチウイルスによってすぐに破壊されるが、その承認はブロックインデックスに何らかの理由で保持されている。
Dhawがdebug.logファイルのいくつかを送ってくれた。見られた症状:
彼は難易度1.0 で無効なブロックを生成していた。blk0001.dat または blkindex.dat ファイルに破損したエントリがあるはずだ。blk*.dat を削除して再ダウンロードさせるだけで済む。
安全ロックダウンが問題を検出し、受け入れられないより長いチェーンが存在することを確認したため「警告:表示されているトランザクションが正しくない可能性があります!」と表示していた。安全ロックダウンは生成を停止することはできない。そうすると攻撃の可能性を生み出してしまうからだ。
ギャビン・アンドレセンの投稿(2010年10月22日 05:25 UTC)Bitcoin クライアントは、最後のブロックチェックポイントまでのすべてのブロックを持つまで、コイン生成を許可すべきではない。
良いアイデアだ。チェックポイントブロック 74000 より前では生成しないように変更した。
彼は難易度1.0で無効なブロックを生成していた。blkindex.datファイルに破損したtxindexエントリがあるはずだ。blk*.datを削除して再ダウンロードさせるだけでよい。
彼はすでにそれをやったが、すぐに同じ問題が発生した。おそらくアンチウイルスの問題だろう。
わかった。再ダウンロードしても本当にブロック 1698 を超えられないなら、もっと不可解な領域だ。
はい、ウイルス対策ソフトウェア、あるいはルーターやファイアウォールがバイト列のパターンマッチングを行い、それを検閲している可能性がある。
knightmb の blk*.dat を入手して、それでその時点を通過できるかどうか確認すると参考になるだろう。
jimbobwayの投稿(2010年10月23日 18:16 UTC)dhaw、どのウイルス対策やスパイウェア対策ソフトを使っているのか?
AVG ANTIVIRUS
AVG Virus Vault に行って、AVG が何を検出したか確認してくれ。
それで今は?? =( 3ヶ月以上を失う?
少しでも気が楽になるか分からないが、もし過去数ヶ月の間、本物のチェーン上で作業していたとしても、あなたが手に入れたのは数百枚程度だっただろう。あなた個人のチェーンの難易度は、本物の難易度よりずっと低かったからだ。