0.3.8でBitcoin生成が壊れた?
何か問題が発生しているのではないかと疑い始めていた。システムがコインの生成をやめたように見えたからである。1日あたり約1ブロックだったのが、1週間でゼロになった。
IRCでArtForzが、空のウォレットディレクトリで互いにのみ接続された2つのノードだけの隔離テストネットを実行してみることを提案した。クアッドコアのシステムを2台用意してセットアップした。合計8000 khash/秒以上のハッシュレートでありながら、約90分間ブロックが1つも生成されていない。これは問題の証拠と言えるだろうか、それともさらなる不運に過ぎないのだろうか?
システムはLinux 64ビットで、1台はIntelクアッドQ6600、もう1台はAMDクアッドPhenom II 940である。
SSE2はわずか2%の高速化しか追加せず、互換性の問題に見合わないと判断した。より安全なオプションを選ぼうとしていた。
Crypto++が実行時にSSE2を使用するかどうかを決定しているようには見えない。ブロックカウントパラメータを決定するためにSSE2を検出する箇所が1つあるが、SSE2関連の部分はすべてコンパイル時の#ifdefであり、実行時にどのように切り替わるかわからない。見ている場所が間違っているのかもしれない。
すべてのmakefileでSSE2を有効にすべきだろうか? 64ビットでコンパイルする人がいる場合はそうしなければならないようだ。
Linux 0.3.8リリースの64ビット部分を再コンパイルする。
再ビルドした64ビット版のLinux用0.3.8.1をアップロードした。難易度1でテストを実行し、ブロックが生成された。