Lean Engineer

リーンエンジニア〜効率的に実験しながら、技術を学ぶブログ

GPUでイーサリアムをマイニング!Dockerでサクサク掘るよ

 イーサリアムが欲しくなったので、GPUマシンで掘る方法について調べて、掘ってみた。

NVIDIAのGPUで動くDockerfileをビルドする

 DockerfileはAnthony-Tatowicz/nvidia-dockerを利用する(CUDAのバージョンが7.5と古いため、手動ビルドした方が本当はいいかも→参考

git clone https://github.com/Anthony-Tatowicz/docker-ethminer

cd docker-ethminer
nvidia-docker build .
nvidia-docker images
docker tag <image id> kasajei/ethminer:latest

マイニングプール(nanopool)を利用する

 自分だけで掘ってると掘れたときはラッキーだが、掘れる確率が下がるので、マイニングプールを利用して、みんなで頑張る。今回はETHを掘りたいので、nanopoolETHを利用する。

 nanopoolのヘルプを見ると、日本のリージョンeth-jp1.nanopool.orgがあるので、これを利用する。

マイニングする

$ nvidia-docker run -it kasajei/ethminer -S <nanopoolのエンドポイント>:9999 -O <ウォレットハッシュ>.<ワーカー名>/<メールアドレス>

 普通にやると、Out of memoryが出て動かない。まずは、GPUのメモリを疑う。issues/150を参考に、--dag-load-mode sequentialを使ってみる。

 $ nvidia-docker run -it kasajei/ethminer -S <nanopoolのエンドポイント>:9999 -O <ウォレットハッシュ>.<ワーカー名>/<メールアドレス> --dag-load-mode sequential

 これで、動かない場合は、しょぼいGPUが刺さっていて、そいつがOut of memoryしているケースがある。ので、強いGPUだけ使うようにする。--cuda-devicesで利用するGPUを指定できる。

$ nvidia-docker run -it kasajei/ethminer -S <nanopoolのエンドポイント>:9999 -O <ウォレットハッシュ>.<ワーカー名>/<メールアドレス> --dag-load-mode sequential --cuda-devices 0  # 0番目のGPUが強い場合

 他にも、Out of memoryになるケースとして、メモリが足りないことissues/437もあるようだ。こちらも対応してみたが、効果があったかどうかはわからない。対策はこちらを参考。

 nanopoolで掘ったETHはhttps://eth.nanopool.org/account/自分のウォレットハッシュで確認できる。

ちなみに、僕のウォレットは0x97e7320814444F5f5274d78b1Ba1E2df5Ec8680fです。この記事が参考になったらETH送ってもらえると喜びます。