堺風の頭部

徘徊、カメラ、PC、その他。

Monacoin掘りはじめてみたメモ

 夏場は暑苦しくてやらないんだけれど、むしろ部屋を温めたい冬になると、おもむろにPCに計算させる私である。
 以前からdistributed.netの分散コンピューティングプロジェクトでCPUに演算をやらせていたんだけれども、今年はちょっと気分を変えて、Monacoinの採掘に着手してみた。

 人気がなくなって技術的にも停滞しきっているd.netに比べると、色々事態が動いて面白い。
 BitCoinとかEthereumのような大手仮想通貨なんて、大量のASICやGPUを並べた大規模ファームで掘りまくってるプロの物量に敵うわけもなく、自分で掘った分なんて誤差のように切り捨てられるだけ。
 あまりマイナー過ぎる仮想通貨があっても、それはそれで何の使いみちもなくて不毛。

 Monacoinは、国産だから情報がほぼ日本語。
 元々マニアが集まって遊びで始めたもので、今でも金銭での取引よりは遊びの面がまだ強い。ちょうどいい落とし所かと思う。

 

目次

 

ウォレットをつくった

※ このくだりではElectrum-monaを使ったローカルウォレットの例を書いていますが、オンラインウォレットのMonappyが手軽かもしれません(12月23日追記)

 

 どの仮想通貨でも同じと思うけど、まず自分用のウォレット(財布)を作る。
 何十文字もあるランダム英数字のアドレスが発行されるので、そのアドレスに宛てて仮想通貨を送ったりする。

 例えば、私の受取用アドレスをひとつ晒してみると、 M84ybL3MvQSp4D6KUaxwppa1Wdnr3kiv4x と出た。
 別にこれはログインIDとかパスワードのようなものではないから、晒したってどうということもない。誰かがこのアドレスにMonacoinを送ってくれる可能性は生まれる。

 

 ウォレットを作るには、Monacoinのサイトで、Electrum-monaというのをダウンロード・インストールする。

 普通にインストールすればいいが、途中で「シード」というものを提示される。
 これが自己証明するためのものになるので、大事に保存する。インストーラーも大事に保存しろとしつこくいってくる。

 

 インストールが終わって、少し同期などが済めば、自分のウォレットができて受取用アドレスができている。

f:id:mubouan:20171210104738p:plain

 初期状態では自分の受取アドレス一覧が表示されていないので、「表示」メニューから表示した。
 最初からずらずらと多数作られている。

 Label欄は自分で好きに設定できるので、とりあえず一番上をマイニング用とした。
 マイニングして発掘した成果を、ウォレットのこの受取アドレスで受け取る。

 

マイニングプールに入った

 さてマイニングを始めるのだけど、強力な専用設備でもあるのでなければ、単独で採掘するのは難しい。
 個人レベルのマイナーが集まって、ネット経由で合力して採掘を行って、貢献度に応じて報酬を受け取る、マイニングプールというのに入る。

 Monacoinのマイニングプールはいくつかあるが、名前がトボけてて面白かったので「温水プール」というところに入ることにした。

 

 温水プールのIDを取ってログイン、成果を受け取るためのMonacoinウォレットのアドレスを登録。

 それから、ワーカーというのを作る。
 マイニング用のプログラムを走らせた成果を、温水プールと通信するためのIDとパスワードみたいなもん。
 ワーカーは好きに作れるので、私は参加させる端末ごとに作成した。
 面倒ならひとつだけ作って全部放り込んでも成果はかわらないが、分けておいたら端末ごとの成果の差が見られたり、成果の送信が止まっている=ダウンしている端末が確認できたり。

 

 温水プールは個人の方がやってくれているので、そこまで強力なサーバーではなく、ウェブサイトも少々重い。
 作業中に「Token expired」といわれちゃったりすることもあるが、気にせずやり直す。多くても2回やり直せば通る感じ。
 やり直してるうちに「エラー多いから自動でアカウントロックしたで」といわれたりもしたが、これもメールで確認が来るのですぐ解除できる。

 また、マイニングの結果の一部を温水プールに自動的に寄付することもできる。割合も0.01%から任意に決められる。ゼロにもできる。
 私はちょっと採掘量がなさすぎるので今のところ0.01%だけだけど、GPU入れたりしたら様子見て適当に増やそうかな。

 

マイニングを始めた

 うちでは、Windows 10のPC、Ubuntu 16.04のPC、Androidスマートフォンとでそれぞれ試してみた。

 なお、今回はいずれもCPUでのマイニングで、これはあまり強力に採掘できるものではない。
 個人でも頑張ってる感じの成果を出したいなら、GPUを投入したいところ。ちなみにMonacoinに用いられるLyra2REv2という暗号の場合、RADEONよりGeForceが強力らしい。(他の通貨やd.netのRC5-72など、RADEONが強いケースもある)

 マイニング用のプログラムは、CPUならcpuminer、GeForceならCUDAを使うcudaminer・ccminer、RADEONIntelの内蔵コアなどならOpenCLを使うsgminerを使う。
 ただ、いずれもオープンソースなので、いろんな人がチューニングなどを行ったものが複数あるようだ。結構古いものが出回っていたりもして、どれがいいかなかなか難しい。
 今回私が選んだものも、必ずしもベストを選んでいるかはわからない。一応動いているのは確かだ。

 

Windows 10で掘ってみた

※この段落を書いてからより速いcpuminerを見つけたので、それは後述する

 

github.com

 このcpuminerが、Monacoinに対応する。

Releases · tpruvot/cpuminer-multi · GitHub

 こちらにWindows版バイナリがあるので、ダウンロードする。私が落とした時点ではv1.3.1が最新版だった。

 

 適当なフォルダに展開すると、

  • cpuminer-gw64-avx2.exe
  • cpuminer-gw64-core2.exe
  • cpuminer-gw64-corei7.exe

 の、3つの実行ファイルが展開される。
 avx2は、Core iシリーズの4000番台以後で対応する命令セット。対応しているなら使うと速度が出る。PentiumCeleronでも新しいものは対応する。AMDRyzenからかな。
 corei7は、初代から3000番台までのCore iシリーズで使う。多分SSE4.2あたりを使うものかと。
 core2はそれ以前のCPUで。

 

 このプログラムは、基本的にはコマンドプロンプト上で動かす。
 だから一般的には.batファイルを作って呼び出しているんだけれど、別にショートカットで呼び出してもいい。

cpuminer-gw64-avx2 -a lyra2rev2 -o stratum+tcp://onsui-monacoin.xyz:3032 -u [温水プールのログインID].[ワーカー名] -p [ワーカーパスワード]

 こういう感じのコマンドラインで起動する。

 

f:id:mubouan:20171211133809p:plain

 実行すると、こういう感じでずらずらリザルトが流れてくる。
 上手く行っていれば、そのうち accepted: ~~の行が出てyes!と喜ぶ。
 何か赤字で表示される時は、通信エラーとか、パスワードなどのミスなどがある。チェックしよう。すぐプログラムが閉じる場合なども何かのミス。

 

Ubuntu 16.04で掘ってみた

 ポピュラーなLinux系フリーOSであるUbuntuでも採掘できる。
 Windowsよりは少しだけ難しいが、まあLinux系はこういうものだ。

 使うのは同じtpruvotのcpuminer-multiだが、インストール手順がまるで異なる。
 gitでクローンしてからビルドするだけなので、Linuxに慣れてる人なら簡単にやれるだろう。私は慣れてないから調べながらやる。

 

 まず、gitをインストール。もうやってあるなら不要。
 ネットに繋がった状態で端末(terminal)を開いて、以下のコマンドを入力。

sudo apt install git

 管理者パスワードを聞かれるので入力して、少しインストールするか確認されたらYと答えて待つだけ。

 

 でもって、先にビルドに必要なものをインストールする。

sudo apt install automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++

 これも自動でインストールされる。

 

 そして、gitを使ってcpuminer-multiをクローンする。

git clone https://github.com/tpruvot/cpuminer-multi.git

 こうすると、Ubuntuのユーザーフォルダに cpuminer-multi というフォルダが作られ、そこにファイルがダウンロードされる。

 でもって、これはまだ実行ファイルになってないので、ビルドして実行ファイルにする。

cd cpuminer-multi
./build.sh

 これだけで自動的にビルドされ、cpuminerの実行ファイルができる。

 

 次回からは、実行ファイルを呼び出すだけ。

./cpuminer -a lyra2rev2 -o stratum+tcp://onsui-monacoin.xyz:3032 -u [温水プールのログインID].[ワーカー名] -p [ワーカーパスワード]

 Windowsとほとんど変わらないが、Windows/MS-DOSと違って、カレントディレクトリにある実行ファイルにも./をつけて場所を明示して呼ぶ必要がある。
 毎回パスワード入力もアレなので、シェルスクリプトにしておくなり何なり。

 

 AVX等の命令利用可否については、特に実行ファイルの区別はない。おそらくビルドするときに判断されて、使える命令を使う実行ファイルが作成されるものかと思う。

 

Androidで掘ってみた

play.google.com

 このNeoNeonMinerというアプリが、Lyra2REv2暗号のプールマイニングに対応する、つまりMonacoinを掘れる。

 

f:id:mubouan:20171211140927p:plain

 Settingsタブを、こんな感じに設定しよう。

 で、Mining Statusタブに移って、Startボタンを押せばマイニングが開始される。

 

 なお、BOINCのクライアントなら「充電時のみ実行」「画面オフ時のみ実行」など細かく動作状況を判断してくれるが、NeoNeonMinerはStartしたらお構いなしに動き続ける。
 外に持ち出すときに切り忘れたりすると、すごい勢いで電池がなくなるので注意。

 

マイニングについて

採掘量

 やっぱりCPUマイニングじゃ大した量は掘れない。

 稼働時間がまちまち(寝てる間は止めるなど)だけど、Core i3-6100、Core i7-860、Core i3-380M、A6 Micro-6500T、MT6582M、MT6735を適当に投入して、一日に0.002~0.003Mona程度だろうか。
 1Monaが日本円で1600円くらいなので、5円掘れるかどうかというところか。
 まあ、もとより遊び兼暖房だから別に構わない。

 BitCoinみたいに、掘った後で価値が何千倍何万倍と増えていったらまた話は別だけど、どうだろうな。
 すでに数円だったのが2000円くらいになる、という局面は今年あったらしいが、そういう話を聞いてから飛びついても往々にして遅いものだ。

 

 クライアントで処理速度を見ると、SkylakeのCore i3-6100は、1スレッドあたり60kH/sくらいと表示される。3.7GHzなので、1GHzあたり16.2kH/s/GHzくらいか。
 AVX2が使えないCore i7-860などでは、30kH/sくらいしかない。2.8GHzなので、1GHzあたり10.7kH/s/GHzくらい。

 まあでも、中級クラス以上のGeForceなどを使えば、単位がキロじゃなくてメガになるようなので、やはりCPU掘りはあまり成果の大きいものではない。

 

GPU掘りについて

 うちのタブレットPCは、AMDのA6 Micro-6500Tなんて珍しいAPUが積まれている。
 GCN 2ndアーキテクチャだからそこそこ処理能力もあるはずなのだけど、どうも設定が難しいらしく、sgminerを使ってもCPUと変わらないような速度しか出なかった。
 しかもタブレットがフリーズしたりもしたので、少々恐ろしい。

 

 Intel CPUの内蔵グラフィックも、Skylake世代だとかなり強化されているはずなのだけど、これも今のところMonacoin採掘ではうまく動かない状態で、追求中。
 IntelOpenCL SDKとかは入れてみたのだけど、GPU自体がsgminerから認識されない感じ。

 

 でもって、わりと新しい世代のGPUを使うほうがいいみたいで、どうも古いと起動させるのが難しかったり、設定を追い込んでもいまいちだったりしているようだ。
 逆に新しい世代だと、GeForce GT1030くらいでもCPUをぶっちぎるくらいは叩き出すみたい。少なくともその前のGTX9xx系か750あたりがよさそうだ。
 これは私が買ってみたら試すということで。

 

非力なら専用化したほうがいいかも

※ 少し古い情報です。現在、処理性能に合わせて通信ポートを選ぶことで、difficulty初期値を変えられるように温水プールがアップデートされています。別記事参照のこと。(12月23日追記)

 

 Androidスマホや旧型PCなどの非力な機器を投入する場合は、できるだけ連続稼動させるほうがよさそうだ。

 温水プールから分配される問題には、difficulty(難しさ)がある。
 これは初期値が4なのだけど、CPUだとある程度時間が必要になる難しさ。良いGPUなら多分すぐ。
 最初に届く硬いdiff 4の問題をなんとか解読して返せば、温水プール側が遅さを判断して、もっとdiffの低い問題を届けてくれる。
 Core i3-6100に対しても、diff 0.17とかをよこすくらいだから、CPUでdiff 4がかなりキツい難度なのはあきらかだ。

 タブレットスマホ用のCPUになってしまうと、最初のdiff 4を返して簡単な問題に変更してもらうのに、何時間もかかってしまう。

 

 しかも困ったことに、一旦演算を止めてしまうと、diffが初期化されてまたdiff 4が届いてしまう。
 だから、普段使いのスマホなどで、「充電中だけ」とか間欠的な計算をしていると、diffが調整されずにいつまでも回答を送れない時間が続いてしまう。多分これは解読上の意味がない。

 まあ、うちはもうタッチパネルの状態が悪化して快適に使えない状態になっている古いスマホを1台だけ、常時稼働状態で投入している。これはもう壊れてくれて構わないというか、壊れてくれたほうが捨てる踏ん切りがつくので。

 

Ask Monaと高速化cpuminer

askmona.org

 モナコインファンが集まるコミュニティサイトがある。

 もちろんマイニングをやる人のトピックもあって、そこを見ていたら、各種マイニングツールをより高速化したものが作られていた。

 

【マイナー必見】ソロマイニングに対応したよ【高速化Part2】 - Ask Mona

【マイナー必見】ソロマイニングに対応したよ【高速化Part3】 - Ask Mona

 このへん。

 cpuminer-mod-r8というのをダウンロードさせてもらって、Skylake Core i3-6100のWindows PCに投入してみた。
 すると、これまでスレッドあたり60kH/s程度だったのが、250H/sくらいになった。4スレッドなので、1000kH/sをわずかに超えるくらいのペース。

 AVX2が使えるSkylakeは4倍以上の速度になったが、AVX2の使えないAMD APUでも、SSSE3版を使って2倍くらいの速度になった。
 まあうちのAPUはタブレットのモバイル用で、元々15kH/sが30kH/sになって、4スレッドで120kH/sになるくらいだけど。

 

 こいつは強力だ、と思ってUbuntuにも導入しようとしたが、あいにくビルドが上手く行かず。
 AVX2が使える環境だと問題ないらしいけど、うちのUbuntu環境はどちらもNehalem世代のCore i7/i3。問題回避パッチも配布していたが、ファイルがクラウドから失効していた。

 

 そうなると、UbuntuCore i7-860が必死でファンを回してせいぜい300kH/sしか掘れないのに、WindowsCore i3-6100はクールに1000kH/s掘ってしまう。なんとも。