Linux 64ビット用バージョン0.3.8.1アップデート
バージョン0.3.6でCrypto++ 5.6.0 SHA-256に切り替えた際に、Linux 64ビットビルドで生成が壊れていた。64ビットバイナリを更新したバージョン0.3.8.1がSourceForgeに公開されている。
ダウンロード:http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download
0.3.8以降の将来のバージョンではSSE2が必要になる可能性がある。これが問題になるPentium 3以前のCPUをお使いの方はいるだろうか?
難易度はもう十分に高くなっているので、互換性の維持が困難なら古いコンピューターでのブロック生成サポートを切ってしまっても気にしない。とはいえ、なぜその機能が利用できないのかを説明するフィードバックは、クライアントが必ず提供すべきだ。古いハードウェアではbitcoinの生成がサポートされない理由を説明するメッセージをポップアップさせるといいかもしれない。
私見だが、SSEは単にクライアントを実行するためではなく、生成のために必要とされるべきだ。
良い指摘だ。SSE2がなくても、生成をオフにすれば動かせると思う。
cryptopp/config.hの先頭に以下を追加するのはどうだろうか:
#if !defined(_M_X64) && !defined(x86_64) #define CRYPTOPP_DISABLE_SSE2 1 #endif
これにより32ビットビルドでSSE2が無効になる。(少なくともGCCまたはMSVCでは)
私の理解では、問題のdefineを削除する必要があるのは64ビットビルドの場合だけだ。64ビットアーキテクチャはすでにSSE2命令のサポートが保証されている。32ビットビルドはそのフラグを残せばよく、その結果SSE2命令を無効化したまま、古いコンピューターとの互換性を保てる。
良い指摘だ。SSE2がなくても、生成をオフにすれば動かせると思う。
cryptopp/config.hの先頭に以下を追加するのはどうだろうか:
#if !defined(_M_X64) && !defined(x86_64) #define CRYPTOPP_DISABLE_SSE2 1 #endif
これにより32ビットビルドでSSE2が無効になる。(少なくともGCCまたはMSVCでは)
そう、ただmakefileで指定する方がいい。そうすれば、古いCPUを気にしない人は、ソースをいじらずにフラグを外すだけでSSE2サポートを有効にしてコンパイルできる。
CMakeビルドにも、それ用のCMakeプロパティを追加できる。
私の理解では、問題のdefineを削除する必要があるのは64ビットビルドの場合だけだ。64ビットアーキテクチャはすでにSSE2命令のサポートが保証されている。32ビットビルドはそのフラグを残せばよく、その結果SSE2命令を無効化したまま、古いコンピューターとの互換性を保てる。
私の意見では、SSE2をサポートしない古いCPUをコイン生成から除外すべきではない。それらでも依然としてブロック生成において重要な役割を果たせる。SSE2拡張をサポートしないマシンを多数持っているが、それらは300〜400 khash/s程度しか出ないとはいえ、今でも常時ブロックを生成している。
ははは! たしかにこれで、前からの謎の説明がつきそうだ。なぜ自分の10,000 khash/sのLinux 64ビットマシンだけが、2週間経ってもブロックを1つも生成しなかったのか。😊
確認だが、この修正はSVN 125に入っているのかな?
ははは! たしかにこれで、前からの謎の説明がつきそうだ。なぜ自分の10,000 khash/sのLinux 64ビットマシンだけが、2週間経ってもブロックを1つも生成しなかったのか。😊
あなただけではない。私は1ヶ月以上生成していない。
SVN rev 128:32ビットでSSE2を無効化。これはMSVCとGCCでのみ無効化される可能性がある。他のコンパイラーは異なる64ビット定義を持っているかもしれない。
クライアントには「コイン生成のテスト」機能があるべきだと思う。本質的には、すべてが正しく動作していることを示すために既知のブロックを単に生成するだけのものだ。
クライアントには「コイン生成のテスト」機能があるべきだと思う。本質的には、すべてが正しく動作していることを示すために既知のブロックを単に生成するだけのものだ。
同意する。difficulty 1のブロック生成をテストできる予備のコンピューターを持っているが、実際にテストすることはない。それを実行するボタンがあれば、自分はやるだろう。