Re: エラー - 助けてください!

参加者: Theymos

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」として無視する。ブロックを生成するたびに、アンチウイルスによってすぐに破壊されるが、その承認はブロックインデックスに何らかの理由で保持されている。