エラー - 助けてください!
自分のビットコインクライアントに次のエラーが表示されている:
「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クライアントは、最後のブロックチェックポイントまでのすべてのブロックを持つまで、コイン生成を許可すべきではない。
Quote from: theymos on October 21, 2010, 10:00:26 PM
Dhawがdebug.logファイルのいくつかを送ってくれた。見られた症状:
- ほとんどのファイルで、ブロック数が1698で「スタック」している。
- 1つのファイルではそれ以降のブロックを受け入れたが、Bitcoin再起動後に1698に戻った。
- 1698以降に受信するブロックはおそらく無効と見なしている。実際のブロック拒否は見ていないが(自動トリムで削除され続ける)、debug.logには自分が有効と認識していないブロックに対する「block xxx have」メッセージが大量にある。
- 実際のピアに接続されている。IRCへの接続に成功し、-addnodeで自分にも接続できた。自分の側で、彼がgetblocksメッセージを正常に送信していることを確認した。
Dhawは詐欺師ではなく、何らかのバグの被害者だとほぼ確信している。推測では、Bitcoin再起動のたびにブロックデータベースが破損している。
彼は「ブラジルポルトガル語」を話す。翻訳者がいると助かる。
クライアントがネットワークから受信したブロックを拒否するには何が必要か? これがわかれば逆算して、なぜ新しいブロックをすべて拒否したいのかを突き止められる。メインチェーンの1699以前にクライアントが同意しないトランザクションがあるはずだ。
いずれにせよ、彼が生成した何千ものBitcoinは、彼だけが参加しているチェーンの分岐で生成されたものなので、メインチェーンでは無価値だ。その分岐の唯一の参加者なので、5分ごとに50を生成していただろう。もう一つの不思議は、なぜ1698で止まったのかだ。難易度を再計算した時に、5分ごとに1ずつ増え始めるはずなのだが。
Quote from: joe on October 23, 2010, 08:09:17 AM
Quote from: theymos on October 21, 2010, 10:00:26 PM
Dhawからいくつかのdebug.logファイルを送ってもらった。見られた症状:
- ほとんどのファイルで、ブロック数が1698で「止まって」いる。
- 1つのファイルではそれを超えるブロックを受け入れたが、Bitcoin再起動後に1698に戻った。
- 1698以降に受信するブロックはおそらく無効と見なしている。実際のブロック拒否は確認できていないが(自動トリムで削除され続ける)、debug.logには明らかに有効と認識していないブロックの「block xxx have」メッセージが満載だ。
- 実際のピアに接続している。IRCへの接続は成功し、-addnodeで私にも接続できた。彼がgetblocksメッセージを正常に送信していることを自分の側で確認した。
クライアントがネットワークから受信したブロックを拒否するには何が必要か? これがわかれば逆算して、なぜ新しいブロックをすべて拒否したいのかを突き止められる。メインチェーンの1699以前にクライアントが同意しないトランザクションがあるはずだ。
いずれにせよ、彼が生成した何千ものBitcoinは、彼だけが参加しているチェーンの分岐で生成されたものなので、メインチェーンでは無価値だ。その分岐の唯一の参加者なので、5分ごとに50を生成していただろう。もう一つの不思議は、なぜ1698で止まったのかだ。難易度を再計算した時に、5分ごとに1ずつ増え始めるはずなのだが。
1699に同意しないはずだが、それは空のブロックだ。それに同意しない理由はないはずだ。
私の仮説:
彼のアンチウイルスが一定サイズ以降のファイルを切り捨てている。これにより、ブロックデータベースが1698で制限され(そしてそれ以降のブロックを破損のために拒否している可能性がある)。ただし、ブロックインデックスは切り捨てられていない(短いため)ので、実際には持っていないブロックを「already have」として無視する。ブロックを生成するたびに、アンチウイルスによってすぐに破壊されるが、その承認はブロックインデックスに何らかの理由で保持されている。
Quote from: theymos on October 21, 2010, 10:00:26 PM
Dhawがdebug.logファイルのいくつかを送ってくれた。見られた症状:
- ほとんどのファイルで、ブロック数が1698で「スタック」している。
- 1つのファイルではそれ以降のブロックを受け入れたが、Bitcoin再起動後に1698に戻った。
- 1698以降に受信するブロックはおそらく無効と見なしている。実際のブロック拒否は見ていないが(自動トリムで削除され続ける)、debug.logには自分が有効と認識していないブロックに対する「block xxx have」メッセージが大量にある。
- 実際のピアに接続されている。IRCへの接続に成功し、-addnodeで自分にも接続できた。自分の側で、彼がgetblocksメッセージを正常に送信していることを確認した。
Dhawは詐欺師ではなく、何らかのバグの被害者だとほぼ確信している。推測では、Bitcoin再起動のたびにブロックデータベースが破損している。
彼は「ブラジルポルトガル語」を話す。翻訳者がいると助かる。
彼は難易度1.0で無効なブロックを生成していた。blk0001.datまたはblkindex.datファイルに破損したエントリがあるはずだ。blk*.datを削除して再ダウンロードさせるだけで済む。
安全ロックダウンが問題を検出し、受け入れられないより長いチェーンが存在することを確認したため「警告:表示されているトランザクションが正しくない可能性があります!」と表示していた。安全ロックダウンは生成を停止することはできない。そうすると攻撃の可能性を生み出してしまうからだ。
Quote from: gavinandresen on October 22, 2010, 02:25:14 PM
Dhawはこれらのコインをすべて自分のマシンで生成した。
残念ながら、バグかDhawのネットワーク接続の何らかの異常により、すべて別のブロックチェーンで生成されていた。
Bitcoinクライアントは、最後のブロックチェックポイントまでのすべてのブロックを持つまで、コイン生成を許可すべきではない。
良いアイデアだ。チェックポイントブロック74000より前では生成しないように変更した。
Quote from: satoshi on October 23, 2010, 06:22:49 PM
Quote from: theymos on October 21, 2010, 10:00:26 PM
Dhawがdebug.logファイルのいくつかを送ってくれた。見られた症状:
- ほとんどのファイルで、ブロック数が1698で「スタック」している。
- 1つのファイルではそれ以降のブロックを受け入れたが、Bitcoin再起動後に1698に戻った。
- 1698以降に受信するブロックはおそらく無効と見なしている。実際のブロック拒否は見ていないが(自動トリムで削除され続ける)、debug.logには自分が有効と認識していないブロックに対する「block xxx have」メッセージが大量にある。
- 実際のピアに接続されている。IRCへの接続に成功し、-addnodeで自分にも接続できた。自分の側で、彼がgetblocksメッセージを正常に送信していることを確認した。
Dhawは詐欺師ではなく、何らかのバグの被害者だとほぼ確信している。推測では、Bitcoin再起動のたびにブロックデータベースが破損している。
彼は「ブラジルポルトガル語」を話す。翻訳者がいると助かる。
彼は難易度1.0で無効なブロックを生成していた。blk0001.datまたはblkindex.datファイルに破損したエントリがあるはずだ。blk*.datを削除して再ダウンロードさせるだけで済む。
安全ロックダウンが問題を検出し、受け入れられないより長いチェーンが存在することを確認したため「警告:表示されているトランザクションが正しくない可能性があります!」と表示していた。安全ロックダウンは生成を停止することはできない。そうすると攻撃の可能性を生み出してしまうからだ。
Quote from: gavinandresen on October 22, 2010, 02:25:14 PM
Dhawはこれらのコインをすべて自分のマシンで生成した。
残念ながら、バグかDhawのネットワーク接続の何らかの異常により、すべて別のブロックチェーンで生成されていた。
Bitcoinクライアントは、最後のブロックチェックポイントまでのすべてのブロックを持つまで、コイン生成を許可すべきではない。
良いアイデアだ。チェックポイントブロック74000より前では生成しないように変更した。
彼はすでにそれをやったが、すぐに同じ問題が発生した。おそらくアンチウイルスの問題だろう。
わかった。再ダウンロードしても本当にブロック1698を超えられないなら、もっと不可解な領域だ。
はい、ウイルス対策ソフトウェア、あるいはルーターやファイアウォールがバイト列のパターンマッチングを行い、それを検閲している可能性がある。
knightmbのblk*.datを入手して、それでその時点を通過できるかどうか確認すると参考になるだろう。