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 をお使いの方はいるだろうか?
difficulty はもう十分に高くなっているので、互換性の維持が困難なら古いコンピューターでのブロック生成サポートを切ってしまっても気にしない。とはいえ、なぜその機能が利用できないのかを説明するフィードバックは、クライアントが必ず提供すべきだ。古いハードウェアでは 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 のブロック生成をテストできる予備のコンピューターを持っているが、実際にテストすることはない。それを実行するボタンがあれば、自分はやるだろう。