仮想通貨のマイニングをやってみた
GPGPU(General-purpose computing on graphics processing units)を使った、HPC(high-performance computing)環境の検証を集中的におこなう機会があったので、その空き時間を使って仮想通貨を掘って(マイニングして)みました。
- マイニングとは
- マイニングの方法
- プールマイニングをおこなうには
- 環境作成
- マイニングツールのインストール
- 使用するGPGPU
- マイニング結果
- GPGPUの稼働状況とスペック
- マイニングは儲かるのか
- 結論
マイニングとは
マイニングは仮想通貨の取引内容を確定させる行為となります。
仮想通貨の取引では、暗号化された大量なデータが流れます。
その取引の確定をおこなう為には膨大な計算を処理しなくてはならないため、高い計算能力を持ったハードウェアが必要となります。
現在では CPU ではなく、マイニングに専用化された RISC(Reduced Instruction Set Computer)が利用されているようですが、そんな立派なものは持っていませんので、CPU よりかは高処理がおこなえる GPGPU を使用しました。
マイニング自体は誰かがやらないといけない処理なので、代わりにおこなうことで報酬が貰えます。
その報酬がどれくらいなのか、また、RISCほどではないにしても、GPGPU もそこそこなお値段ですので、どれくらいの費用対効果があるのかも検証したいと思います。
マイニングの方法
マイニングには以下の手法があります。
- ソロマイニング
- プールマイニング
- クラウドマイニング
仮想通貨の基盤となるブロックチェーンのルールとして、PoW(Proof of Work)というのがあるため、一番早くマイニング作業を終えた者だけが承認され、報酬を受け取れます。
よっぽど高速かつ膨大なデータをやり取りできるハードウェアがあればソロマイニング(一人でマイニング)にチャレンジするのもアリですが、猛者が集うマイニングの世界に一人で挑んでも、ずっとマイニング出来ずに電気代だけかかる可能性が高い、というか絶対そうなります。
ということで、今回は複数のマイニング参加者が協力してマイニングする「プールマイニング」とします。
クラウドマイニングは、クラウドファンディングのように、事業者にお金を出してマイニングを任せるという方式になります。今回は自分でマイニングしたかったので対象外。
プールマイニングをおこなうには
まず最初におこなうことは、どんな仮想通貨をマイニングするかを確定することです。
私は適当に決めました。イーサリアム(ETH)です。特に理由はなく、何となく、、、
本当は以下の決め方がいいようです。
- マイニングする環境(CPU?NVIDIA?Ryzen?・・・)
- マイニングする通貨(BTC?ETH?LSK?・・・)
- 1,2 に対応・最適化されたツールを提供しているマイニングプール
- 通貨を扱っている交換業者
私の場合は 1 と 2 が決まっていたので、
3. 1,2 に対応・最適化されたツールを提供しているマイニングプール
→ NVIDIAでETHがマイニングできるツールを提供している「nanopool」
4. 通貨を扱っている交換業者
→ ETHの交換取引所の1つである「Coincheck」(たまたま口座開設してただけ)
交換取引所にてマイニングする通貨のウォレット(財布)を作成する必要があります。
Coincheck的には「Ethereum入金用アドレス」になります。
上記以外にも選択肢はありますので、是非いろいろと試してみてください。
今回はとりあえずこれで事前準備は完了です。
環境作成
検証環境の OS は CentOS 7.9 と Ubuntu 20.04 でおこないました。
マイニング環境は簡単にできます。
基本的には CentOS も Ubuntu も以下の手順となります。
- OSインストール
- GPGPUドライバインストール
- CUDA(Compute Unified Device Architecture) インストール
ドライバと CUDA は、CUDA Toolkit をインストールすれば同時に入りますので、そちらを利用しました。
CUDA ToolKit は以下よりダウンロードできます。
CUDA Toolkit でインストールする際は、nouveau ドライバを無効にし忘れてインストールが途中で止まっても、コンソールには詳細なエラーメッセージが表示されないので、そこだけは忘れずに。
マイニングツールのインストール
ダウンロードしてファイル展開するだけです。
Nanopool が提供しているツールは、Git にあります。
今回の検証環境は少し古いCUDAバージョン(11.0)でしたので、nanominer v1.13.1 以前のバージョンを選択する必要がありました。
基本的には対応GPUが増えているだけでなく、処理速度も向上しているの最新バージョンを選択した方が良さそうです。
ダウンロードしたマイングツール(nanominer-linux-x.x.x.tar.gz)を展開すると、config.ini がありますので、以下のように修正します。
wallet = <交換所で指定されたウォレットのアドレス> ; (Optional) Rig (worker) name. rigName = <適当に> pool1 = eth-jp1.nanopool.org:9999 pool2 = eth-asia1.nanopool.org:9999 pool3 = eth-us-east1.nanopool.org:9999 pool4 = eth-us-west1.nanopool.org:9999
あとは起動するだけ。
# ./nanominer _ _ __ __ _ _ __ ___ _ __ ___ (_)_ __ ___ _ __ | '_ \ / _` | '_ \ / _ \| '_ ` _ \| | '_ \ / _ \ '__| | | | | (_| | | | | (_) | | | | | | | | | | __/ | |_| |_|\__,_|_| |_|\___/|_| |_| |_|_|_| |_|\___|_| Version 1.10.0 Started EthMan server on port 3333 without a password (read-only mode). Started web interface on port 9090 without a password. CUDA driver version is 11.0, runtime version is 10.0 Single device detected GPU 0 PCI 02:00.0, Platform: CUDA, Name: Quadro P4000, 8119 MB available -------------------Ethash:------------------ Currency: Ethereum Wallet: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Rig name: RIG Email was not set. Hashrate threshold to restart miner is not set Added pool: eth-jp1.nanopool.org:9999 Added pool: eth-asia1.nanopool.org:9999 Added pool: eth-us-east1.nanopool.org:9999 Added pool: eth-us-west1.nanopool.org:9999 Auto pool sorting is disabled Using all GPU devices Memory tweak: 1 -------------Common parameters:------------- Log path: ./logs/ Log is written to file GPU watchdog is enabled Never calling reboot.sh (always restarting the miner in case of errors). Setting up algorithm: Ethash Connecting to pools... Connected to pool: eth-jp1.nanopool.org:9999 | ping: 8 ms. New job from eth-jp1.nanopool.org:9999 | share difficulty = 10000 MH, epoch 356 (3871 MB)
使用するGPGPU
今回使用した GPGPU は NVIDIA の以下になります。
贅沢だ。
マイニング結果
CentOS と Ubuntu ではテスト結果はほとんど変わらなかったので、以下の結果は全てCentOS 環境になります。
Ubuntu 環境は途中から NVIDIA Docker にしてテストを忘れてたのは内緒、、、
マイニング結果
MH/s | share/day | ETH/day (ETH) | 収入/day (円) | |
---|---|---|---|---|
Quadro P4000 | 24.100 | 210.5714286 | 0.001992 | 347.10 |
TITAN V | 52.900 | 440.7142857 | 0.004170 | 726.47 |
Quadro GV100 | 67.300 | 563.8333333 | 0.005335 | 929.42 |
MH/s:ハッシュレートを表し、マイニング速度を示した数値 [nanopoolのログから]
share/day:マイニングが成功した(ナンスを発見した)回数 [検証結果からの1日の平均値]
ETH/day:報酬結果 [検証結果からの1日の平均値]
収入/day:報酬結果から記載時の相場で計算 [1 ETH=$ 1,665.52 / 1 $= ¥104.60]
GPGPUの稼働状況とスペック
マイニング時のGPU稼働状況
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 450.51.05 Driver Version: 450.51.05 CUDA Version: 11.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 TITAN V Off | 00000000:02:00.0 Off | N/A | | 55% 75C P2 127W / 250W | 4329MiB / 12066MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 2980 C ./nanominer 4325MiB | +-----------------------------------------------------------------------------+
GPU-Util は常時100%で、使用メモリは4GB程度。
GPGPUスペック表
CUDA Cores | GPU Max Clock rate (MHz) | Memory (MBytes) | |
---|---|---|---|
Quadro P4000 | 1792 | 1480 | 8120 |
TITAN V | 5120 | 1455 | 12067 |
Quadro GV100 | 5120 | 1627 | 32508 |
GPGPUの稼働状況や、マイニング結果・スペック表を見ると、CUDA Cores数とGPU Max Clock rate値で、マイニング結果が予測できそう。
マイニングは儲かるのか
上記の結果をもとに、費用対効果を調べてみます
マイニングの電気代
消費電力 (W) | 推定電気代/day (円) | |
---|---|---|
Quadro P4000 | 108 | 54.54 |
TITAN V | 127 | 64.13 |
Quadro GV100 | 160 | 80.79 |
マイニングの経費
製品価格 | 3年減価償却/day | |
---|---|---|
Quadro P4000 | 120,000 | 109.59 |
TITAN V | 500,000 | 456.62 |
Quadro GV100 | 1,300,000 | 1187.21 |
※ベースとなるマザーボードや電源等は(面倒なので)含めていません
損益結果
収入/day | 電気代/day | 減価償却/day | 利益/day | 年間利益 | |
---|---|---|---|---|---|
Quadro P4000 | 347.10 | 54.53 | 109.58 | 182.99 | 66,791.35 |
TITAN V | 726.46 | 64.12 | 456.62 | 205.72 | 75,087.80 |
Quadro GV100 | 929.41 | 80.79 | 1187.21 | -338.59 | -123,585.35 |
結論
マイニングやり始めの時には「まったく儲からないな〜」と思いながらデータを見ていたのですが、2020年12月末ごろからの仮想通貨全般の爆上げで、GV100以外は利益が見込めそう。GV100はそもそも用途が違うので、まぁそうなんだという感じです。
Quadro P4000なら初期投資も少ないので安い中古品を買って始めるというのも良いですし、CUDA Cores が多く、そして安価なものも新たに出ていますので、それらの機種を選択し、そしてこのまま Ethereum が値上がりしつつ、円安も加速すればマイニングも小遣い稼ぎにはいいかもですね。
ただし、税金が、、、