MSVC ビルドと SHA-256

2 件のメッセージ BitcoinTalk サトシ・ナカモト, BlackEye 2010年7月18日 — 2010年7月25日

OpenSSL には、SHA256 のブロックハッシュの低レベルな生の部分だけを行うインターフェースは無い。SHA256 は、データを特定のフォーマットのバッファーで包むところから始まる。我々のように 1~2 ブロックしかハッシュしない場合、バッファーの準備は実際のハッシュ処理よりも一桁長い時間がかかる。これは数 KB~数 MB のデータをハッシュするケースで時間が均されるように想定されているからだ。BitcoinMiner では、バッファーを一度フォーマットして使い回している。

もし我々のものより速い SHA256 コード(MinGW/GCC 環境)が見つかったら、本当にありがたい!(ただしライセンスには気をつけてほしい)我々が使っているのは試してみた唯一のものなので、改善の余地は十分にある。

これを書いた 2年以上前は、SHA1 の実装は猛烈に速いものが多数あったが、SHA256 はあまり注目されていなかった。それから時間も経っているので、より良いものが出ている可能性は高い。当時の最速の SHA1 と比べて SHA256 はかなり遅く、私が思っていたほどの速度差で済むようなものではなかった。SHA256 が SHA1 より一定程度遅いのは当然だが、私が見たほどではないはずだ。

(スレッドの名前を変えてしまったが許してほしい。SHA-256 の最適化は私がいつも忘れがちな重要事項なので)

BlackEye 2010年7月25日 原文 · 個別ページ

Crypto++ 5.6.0 の SHA256 機能を Bitcoin に統合することができた。SSE2 アセンブリコードを使った最速の SHA256 だ。Bitcoin がブロックハッシュ関数にアライメントされていないデータを送っていたため、MOVDQA 命令を MOVDQU に変更する必要があった。

現時点では、Crypto++ 5.6.0 の SHA256 機能を使うのが正しい方向だと思う。

http://www.filedropper.com/bitcoin-033