ビットコイン・インスティテュート

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

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