FPGA×仮想通貨 (初出:技術書典5)

FPGA×仮想通貨 ~FPGAで仮想通貨マイニング~

仮想通貨の原点ともいえるBitcoin のマイニング処理の FPGA による高速化にチャレンジしながら、 FPGA で処理を高速化とは一般的にどういうことをするのかや、Bitcoin のマイニングとはどのような処理なのかや、マイニング処理の FPGA ( HW )化をどのように行うのか・行ったのかなどについて解説を行っています。

初版発行 技術書典5 (2018/10/08)  B5 66ページ。

電子データ(内容は書籍版同じ)をBOOTH様にて販売中

追加資料

https://d-rissoku.net/G05/FPGA_Cryptocurrency_Appendix.pdf

「FPGA で高速化」と言いながら、どれだけ高速にマイニング処理ができるようになったのか本文に記載していないことに気づいて後付けで執筆したものです。

ソースコード

本文中に出てくるソースコード と 本文で詳細の説明ができなかったPYNQのCPU上で動作させるbitcoin_minerを操作してマイニングを行うコードを以下のGitHubで公開中です。

https://github.com/BOSUKE/fpga_x_cryptocurrency

PYNQ-Z1のJupyter Notebookからbitcoin_minerのテスト

https://github.com/BOSUKE/fpga_x_cryptocurrency/jupyter_notebooks 参照

同人誌4.2.4節に記載したシミュレーションと同じ入力を実機(PYNQ-Z1に実装したbitcoin_miner)に与えて、シミュレーションと同じ結果(Nonce = 0xf4f23773)が得られていることが分かります。

bitcoin_minerを利用してマイニングを実施

同人誌に記載した通りネットワークからのお題の入手などはPYNQ-Z1のCPU部分(PS)で実現し、FPGA部分(PL)でマイニング(Nonceの探索)を行います。

PS部分のプログラムには、cpuminer-multi というソフトウエアを改造して利用することにしました。
改造した cpuminer-multi は、https://github.com/BOSUKE/cpuminer-multiにおいてあります。
sha256dのマイニングに対して、bitcoin_minerを利用するように改造しています。具体的な利用法は、https://github.com/BOSUKE/cpuminer-multi を参照してください。

なお、オリジナルのコードに対してbitcoin_minerを操作するために改造した内容は、 https://github.com/tpruvot/cpuminer-multi/compare/linux…BOSUKE:linuxで確認できます。