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 をお使いの方はいるだろうか?

NewLibertyStandard 2010年8月9日 20:26 UTC 原文 ·

difficulty はもう十分に高くなっているので、互換性の維持が困難なら古いコンピューターでのブロック生成サポートを切ってしまっても気にしない。とはいえ、なぜその機能が利用できないのかを説明するフィードバックは、クライアントが必ず提供すべきだ。古いハードウェアでは bitcoin の生成がサポートされない理由を説明するメッセージをポップアップさせるといいかもしれない。

私見だが、SSE は単にクライアントを実行するためではなく、生成のために必要とされるべきだ。

良い指摘だ。SSE2 がなくても生成をオフにすれば動作できるはずだ。

cryptopp/config.h の先頭に以下を追加するのはどうだろうか:

#if !defined(_M_X64) && !defined(x86_64) #define CRYPTOPP_DISABLE_SSE2 1 #endif

これにより 32 ビットビルドで SSE2 が無効になる。(少なくとも GCC または MSVC では)

dkaparis 2010年8月9日 20:57 UTC 原文 ·

私の理解では、問題の define を削除する必要があるのは 64 ビットビルドの場合だけだ。64 ビットアーキテクチャはすでに SSE2 命令のサポートが保証されている。32 ビットビルドはそのフラグを残せばよく、その結果 SSE2 命令を無効化したまま、古いコンピューターとの互換性を保てる。

dkaparis 2010年8月9日 21:02 UTC 原文 ·
サトシ・ナカモトの投稿(2010年8月9日 20:55 UTC)

良い指摘だ。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 プロパティを追加できる。

knightmb 2010年8月10日 00:02 UTC 原文 ·
dkaparisの投稿(2010年8月9日 20:57 UTC)

私の理解では、問題の define を削除する必要があるのは 64 ビットビルドの場合だけだ。64 ビットアーキテクチャはすでに SSE2 命令のサポートが保証されている。32 ビットビルドはそのフラグを残せばよく、その結果 SSE2 命令を無効化したまま、古いコンピューターとの互換性を保てる。

私の意見では、SSE2 をサポートしない古い CPU をコイン生成から除外すべきではない。それらでも依然としてブロック生成において重要な役割を果たせる。SSE2 拡張をサポートしないマシンを多数持っているが、それらは 300〜400 khash/s 程度しか出ないとはいえ、今でも常時ブロックを生成している。

Ground Loop 2010年8月10日 03:38 UTC 原文 ·

ははは!長年の謎がようやく解けた。なぜ自分の 10,000 khash/s の Linux 64 ビットマシンだけが、2 週間経ってもブロックを 1 つも生成しなかったのか。😊

Ground Loop 2010年8月10日 03:47 UTC 原文 ·

確認だが、この修正は SVN 125 に入っているのか?

mizerydearia 2010年8月10日 06:18 UTC 原文 ·
Ground Loopの投稿(2010年8月9日 18:38 UTC)

ははは!長年の謎がようやく解けた。なぜ自分の10,000 khash/sのLinux 64ビットマシンだけが、2週間経ってもブロックを1つも生成しなかったのか。😊

あなただけではない。私は 1ヶ月以上生成していない。

ArtForz 2010年8月10日 09:37 UTC 原文 ·

修正は svn r124 にある。r125 で -maxconnections が追加された。

SVN rev 128:32 ビットで SSE2 を無効化。これは MSVC と GCC でのみ無効化される可能性がある。他のコンパイラーは異なる 64 ビット定義を持っているかもしれない。

SEN-5241 2010年8月14日 14:24 UTC 原文 ·

クライアントには「コイン生成のテスト」機能があるべきだと思う。本質的には、すべてが正しく動作していることを示すために既知のブロックを単に生成するだけのものだ。

NewLibertyStandard 2010年8月14日 14:54 UTC 原文 ·
SEN-5241の投稿(2010年8月14日 14:24 UTC)

クライアントには「コイン生成のテスト」機能があるべきだと思う。本質的には、すべてが正しく動作していることを示すために既知のブロックを単に生成するだけのものだ。

同意する。difficulty 1 のブロック生成をテストできる予備のコンピューターを持っているが、実際にテストすることはない。それを実行するボタンがあれば、自分はやるだろう。