新しいgetwork

m0mchilのgetworkを再設計してSVN rev 189(バージョン31601)にアップロードした。

m0mchilの外部ビットコインマイナーのアイデアは多くの問題を解決した。GPUプログラミングは未成熟でコンパイルが難しく、ビルドに追加の依存関係を加えたくなかった。getworkにより、異なるハードウェアやOSに対して異なるプログラムで、これらの問題を個別に解決できる。サーバーファームが単一のBitcoinノードを実行し、残りはgetworkクライアントだけを実行できるのも便利だ。

インターフェースにいくつかの変更がある:

getwork [data]
[data]が指定されていない場合、作業用のフォーマット済みハッシュデータを返す:
“midstate” : データの前半をハッシュした後の事前計算されたハッシュ状態
“data” : ブロックデータ
“hash1” : 2回目のハッシュ用のフォーマット済みハッシュバッファ
“target” : リトルエンディアンのハッシュターゲット
[data]が指定された場合、ブロックの解決を試み、成功した場合はtrueを返す。[data]は”data”フィールドで返されたのと同じ128バイトのブロックデータだが、nonceが変更されている。

注意:

  • 候補を送信した時にはworkを返さない。パラメータなしで呼び出した時のみだ。
  • blockフィールドはdataとhash1に分離された。
  • dataは128バイトで、midstateですでにハッシュされた前半を含む。
  • hash1は常に同じだが、便利のために含まれている。
  • “ThreadRPCServer method=getwork”のログは無効化されている。ログにゴミが多すぎるためだ。