スマートフォンで仮想通貨を採掘する

 近年、ビットコインをはじめとする仮想通貨が話題となることがありますが、遅ればせながら手を出してみました。

 仮想通貨を入手するには、取引所と呼ばれるサイト等で円やドルといった既存の通貨を支払って、仮想通貨に交換する(仮想通貨を購入する)事もできるようですが、本投稿で扱うのはマイニング(或いは採掘)と呼ばれる手段です。

 マイニングは計算機(CPU/GPU/ASIC等)の演算能力を利用して、仮想通貨を入手することができます。お金を払わなくても仮想通貨が手に入るならマイニングを行わない理由は無さそうに一見思えるかもしれません。が、得られる仮想通貨の価値が、ハードウェアへの投資と消費電力に掛かるコストより少ないならば損してることになります。すなわち、仮想通貨を得る対価として円やドルを支払う必要はありませんが、代わりに計算機の演算能力とそれを駆動する電力を提供することになります。

 このような事情から、消費電力当たりの演算能力が高い演算装置がマイニング用途に適していることになります。一般に市販されているものではPC用のGPUが最も強力で、PCのCPUがそれに続く感じのようです。単に古い世代のPCが余っているからといって、それをマイニング用途に用いると電気代で損失を被ることが容易に想像できます。

 ところで、昨今のスマートフォンは高性能化が進んでおり、消費電力も少ないイメージ*1があります。これでマイニングしてみるとどんな感じになるのだろうという興味から、実際にやってみました。

 このジャンルは全くの素人なので、私が誤った認識をしている可能性もありますので悪しからずご了承ください。
 

MinerGate

 検証には(Root化などしていない普通の)Android端末を利用します。
 今回利用してみたのはGoogle Playストアより入手可能な"MinerGate Mobile Miner"というアプリになります。
play.google.com

 MinerGateは複数人で採掘を行うチームのようなもの(マイニング用語でプールと言うらしい)なので、他のプールを利用する場合には使えません。私はマイニング初トライで、他のプールを利用していたわけでもないので、とりあえずMinerGateで始めてみることにしました。
 

初回起動後画面

 既にMinerGateアカウントを持っていれば"LOG IN"をタップします。アカウントを持っていなければ、"SIGN UP"でアカウント作成画面に遷移します。
f:id:kachine:20170627075351j:plain
 

アカウント作成画面

 MinerGateのアカウント登録に使うメールアドレスと、MinerGateアカウントに設定するパスワードを入力して、"SIGN UP & START MINING"をタップします。
f:id:kachine:20170627075403j:plain
 

Monero walletのバナー画面

 怪しげな画面が現れますが、Monero walletの単なる広告のようです。MoneroというのはMinerGateでも採掘可能な仮想通貨の一種で、それを管理するウォレット(財布)アプリの広告ということになります。採掘した仮想通貨を引き出す際にウォレットが必要になりますが、とりあえず今は採掘してみたいだけなので右上の×ボタンで閉じます。
f:id:kachine:20170627075417j:plain
 

メイン画面

 この画面がMinerGate Mobile Minerのメイン画面のようです。中央上部に"ByteCoin"と表示されていますが、その脇の▼をタップすると採掘する仮想通貨の選択ができます。また右上の歯車アイコンをタップすると設定画面に遷移します。中央の再生ボタンを押すとマイニングが開始されます。
f:id:kachine:20170627075430j:plain
 

仮想通貨選択ドロップダウン

 以下の8種類の仮想通貨の採掘に対応しているようです。カッコ内の略称のようなものは仮想通貨記号で、既存の通貨である日本円がJPY、米国ドルがUSD、人民元がCNY…等で表現されるのと同様の記号のようです。

仮想通貨 仮想通貨記号
Bytecoin BCN
Dashcoin DSH
DigitalNote XDN
FantomCoin FCN
Infinium-8 INF8
MonetaVerde MCN
Monero XMR
QuazarCoin QCN

f:id:kachine:20170627075443j:plain
 

設定画面
Thread Count
採掘に使用するスレッド数を指定できます。デフォルトではCPUコア数と同一になっているようです。故にデフォルト設定のままが最も採掘できますが、実用上他のアプリは重すぎて同時に使えません。他のアプリも使いつつ、裏で採掘させたいような場合には、設定値を下げるとよいでしょう。
Only When Charging
充電中のみ採掘させるか、否か(バッテリ駆動でも採掘させる)を指定可能です。
Mine on Low Battery
バッテリ残量が少なくても採掘させるか、否かを指定可能です。
Use Mobile Data
モバイルデータ通信を使用するか、否か(WiFiのみ使用)を指定可能です。

f:id:kachine:20170627075459j:plain
 

WALLET画面

 メイン画面下部の"WALLET"ボタンから遷移できます。各仮想通貨の採掘量と採掘ステータスが表示されるようです。"WALLET"と表現されていますが、いわゆる仮想通貨のウォレットではなく、MinerGateアカウントの残高と採掘ステータス表示画面のようです。
f:id:kachine:20170627075511j:plain
 

GET COINS画面

 メイン画面下部の"GET COINS"ボタンから遷移できます。「紹介用リンクからMinerGateに登録したユーザからMinerGateが得た利益の最大75%を貰える」的な事が書いてあります。MinerGate自体が得られる利益というのは、採掘量に応じたユーザの取り分の1.5%(PPS)または1%(PPLNS)ですので、その最大75%が貰えるということのようです。
f:id:kachine:20170627075524j:plain

 紹介用リンクから登録したユーザにはメリットもデメリットもありませんが、以下に私のリンクを張っておきます。
minergate.com
 

メイン画面(採掘中)

 スクリーンショットはBytecoinを採掘中の画面です。ハッシュレート、share数、経過時間が表示されています。

ハッシュレート
数字が大きい方が多くの採掘のための演算ができていると理解すれば良さそうです。基本的には端末のスペック(と、Thread Count設定値)に依存するので、この値を向上させるためにユーザにできることは端末を冷却すること*2と、バックグラウンドアプリを終了させる位しかありません。
share
ここでいうshareは「共有」っぽい意味よりは、「分け前」や「取り分」と理解すると解りやすく、share数に応じた仮想通貨が手に入るようです。但し、1shareイコール1仮想通貨ではなく、shareは無次元の数です。仮想通貨への換算後の値はアプリでは判らないため、MinerGateのWebからダッシュボードを確認する必要があります。また、得られる仮想通貨の量はPPS(Pay per Share; 手数料1.5%)/PPLNS(Pay per Last N Share; 手数料1%)のいずれを選択するかによっても変わりますが、それもWebからしか変更できないようです。
経過時間
採掘開始からの経過時間がカウントアップされます。

f:id:kachine:20170627075536j:plain
 

採掘結果

 microUSBから給電した状態で、約丸一日稼働させ続けたところ、アプリの表示は、

  • 611 shares found

 となっていました。Webから確認すると、

  • Good shares: 542
  • Bad shares: 69

 で、採掘したBytecoinは

  • 5.88770251 BCN

 の採掘量となったようです。
 円換算レートは時々刻々と変化しますが、1BCN = 0.29378003 JPYとすると、約1.73円相当になります。
 
 なお、採掘中は端末が熱々になるので、外部からファンで空冷していました。スマートフォンを丸一日フル稼働させた場合の電気代がいくらになるのか、試算していませんが利益は出てないと思われます。

 また、24時間365日このような稼働状況に置いた場合、熱などによりバッテリその他内部コンポーネントへのダメージが大きいことも予想されますので、常用には全く適していないと思います。

 バッテリを放電させたいときなどに採掘させて電力を消費させるとか、スマートフォン買い替え前後でどのくらい処理性能が向上したかを図るベンチマーク代わりに使うとか、そういった限定的な用途では実用的かもしれません。
 

検証端末スペック
Processor Snapdragon 615
Core Octacore
Core description Quad-core 1.7 GHz Cortex-A53
Quad-core 1.1 GHz Cortex-A53
Memory 2GB
OS Android 6.0

 Snapdragon615なので、1.7GHz*4 + 1.1GHz*4のいわゆるBig-Little構成なのですが、スレッド数に8を指定しても4を指定しても、ハッシュレートは概ね6~7H/s程度でほぼ変化しないように見えました。この現象が発熱に起因するのか、端末の省電力機能に起因するのか、アプリがBig-Little構成のプロセッサにうまく対応できていないのかは不明ですが、とてもSnapdragon615のパフォーマンスをフルに引き出せていないように思えます。(Big-Littleではない古めのSnapdragon S4 Proを搭載した1.5GHz Quad-coreの端末でも軽く試してみたところ、概ね10H/s程度でしたのでSnapdragon615が下回るのは不自然。)
 



以上。

*1:実際には無駄な電力消費を防ぐための省電力機能が進化している面が大きく、常時フル稼働させるとそれなりの電力は当然喰う。

*2:多くの端末では過熱を検知すると放熱のために自動的に動作クロックが低下し、パフォーマンスが低下する。