なーんて調子に乗ってソロマイニング~とか言ってたけど、Askmonaのトピックで
プランA:Monacoin Wallet ⇒ getworkが廃止されたらしく、うまく掘れない。getworkを無効にするオプションがminerにあれば若しくは… プランB:自分用のPoolを設置 ⇒ Scrypt時代のPoolの作り方はググれば出てくる。今は(Lyra2REv2では)どうなのだろう… プランC:SGMinerやCCMinerを改造し、getworkを使わないようにする。 ⇒ 少なくとも私は技量不足で無理っぽい… プランD:プールからブロック情報だけもらって、Minerに渡す、proxyみたいなものを作る。 ⇒ いや、それで出来るかは知らんけど… そもそも、できないのかな…?ソロマイニング…
とある。Monacoin Walletでやるソロマイニングはダメらしい(笑)getworkってなんだよ(笑)わかんね
で、プランBをちょっとやってみようかな、といった話だ。
結論だけ言えば、成功して、掘り当てる事もできた。けれど、構築当時の様子をそのまま記録、というのをやりそこねてしまったので、記憶から書き出している。細かい所にミスがあるかもしれないけど、そのへんは悪しからず。
長くなるので続きから。
いつも使ってるWindow7の上に、VirtualBoxを使ってUbuntu 14.04 64bitをインストール。省略。(何も難しいことはしてなくて、unityウザいからcinnamonに切り替えたくらい)
monacoin.orgからLinux 64bitなバイナリを拾ってきていい感じにセットアップ。
今回は、
[bash]
$ cat ~/.monacoin/monacoin.conf
server=1
daemon=1
rpcuser=mona
rpcpassword=hoge
rpcallowip=127.0.0.1
rpcport=9332
[/bash]
といった感じ。
ここではv0.10.40を使っているけど、特に意味はない。一度「0.10.40以上を要求するザマス」って言われたから使っているだけ。ただ、node.jsはバージョンによって挙動がだいぶ違うらしい(だからnvmなんていうものが使われるんだけど)ので、もしかしたら最近のバージョンではダメかもね。
[bash]
$ sudo apt-get install git curl build-essential libssl-dev
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ . ~/.nvm/nvm.sh
$ nvm install v0.10.40
######################################################################## 100.0%
Now using node v0.10.40 (npm v1.4.28)
$ node -v
v0.10.40
$ npm -v
1.4.28
[/bash]
毎度指定するの面倒なので~/.bashrcに追記
[bash]
$ vi ~/.bashrc
$ cat ~/.bashrc | grep nvm
. ~/.nvm/nvm.sh
nvm use v0.10.40
[/bash]
RAMにデータベースを置いておける感じ(たぶん)。MPOSではデータベース(MySQLとか)にデータを保管していくけど、それをUNOMP(NOMPもかな?)ではメモリの中におく。後述するpool_configの中でmposModeという設定項目があるけど、恐らくこれを有効にするとRedisじゃなくてSQLの方にデータを置くようになるんじゃないかな。(未確認)
Redisはppaにあるようだったので今回はそれを使わせてもらう。
[bash]
$ sudo add-apt-repository ppa:chris-lea/redis-server
$ sudo apt-get update
$ sudo apt-get install redis-server
[/bash]
一応動作確認をする。
[bash]
$ redis-server &
~ログが流れる~
$ redis-cli ping
PONG
[/bash]
よろしい(たぶん)
事前準備も終わったしUNOMPを触る。
[bash]
$ cd ~
$ git clone https://github.com/UNOMP/unified-node-open-mining-portal.git unomp
$ cd unomp
[/bash]
公式のREADME.mdには、ここでnpm updateせえよって書いてあるんだけど、このままだとlyra2rev2に対応してくれないので、修正をする。
[bash]
~略~
"dependencies": {
"merged-pooler": "git://github.com/upgradeadvice/node-merged-pool",
"dataformat": "",
"log4js": "",
~略~
[/bash]
要は、merged-poolerの値を*から上記リポジトリに変更する。
さらに、値が多少異なっているので、https://github.com/visvirial/node-stratum-pool/commits/masterを参考にmultiplierらへんを修正する。
適時、$ npm updateする。(dependenciesを書き換える→npm update→multiplierの値修正、という流れがよさそう?node.jsの知識が足りていないのでいつが適時かは不明)
unomp/config.json.exampleを編集してunomp/config.jsonとして保存する
siteTitle -> お好きにどうぞ?(たぶん)
port -> 1024以下だと、rootじゃないとポート開けないらしいので適当に変える、もしくは最後にちゃんとrootで実行する(今回は8080にした)
stratumHost -> 構築後、unompのページ、Getting Startedに表示されるStratum Hostの値。多分好きに決めていい
unomp/coins/monacoin.jsonを編集する
[bash]
$ cat ~/unomp/coins/monacoin.json
{
"name": "Monacoin",
"symbol": "MONA",
"algorithm": "lyra2re2"
}
[/bash]
要はalgorithmをscryptからlyra2re2に変更するってだけ。
unomp/pool_config/litecoin.json.exampleを編集してunomp/pool_config/monacoin.jsonとして保存する
enabled -> true
coin -> monacoin.json
auxes -> 不要、”auxes”: [ ], ってなるまで中身消した
address -> monacoindのアドレス。monacoin-cli getaccountaddress “” みたいな感じで得られたものを
rewardRecipients -> プール運営者等への寄付についての設定。不要。
paymentProcessing
minimumPayment -> 払い出しする最小値
daemon -> ~/.monacoin/monacoin.confで設定したrpcuser/pass等をうまい具合に突っ込む
ports
好きなポート番号を使おう
diff -> 初期diff
あとはそれらしく(必要な感じに)編集
daemons
さっきのdaemonと同じで良い
バックアップとしてここに複数設定できる
p2p, mposModeはenabledをfalseのままで(無効にしたまま)
[bash]
$ cd ~/unomp
$ node init.js
[/bash]
[caption id=”attachment_118” align=”alignnone” width=”300”] それらしく動いてるっぽいじゃん[/caption]
ちょっと我慢できなくてハッシュ突っ込んでるのはご愛嬌
[bash]
$ cpuminer -a lyra2rev2 -o stratum+tcp://192.168.0.9:3032 -u [報酬を受け取りたいmonacoinアドレス] -p x
[/bash]
別に難しいことはなくて、
アルゴリズムでlyra2rev2を指定する(minerによってはlyra2re2とか表記のブレがある)
URLは今回のUbuntuシステムのIPアドレス。
ユーザIDに、報酬を受け取りたいアドレスを記入しておく。つまりユーザ登録は不要。
パスワードは何でもいいはず。
勿論、適切にポートを開放してやれば外からでもハッシュを突っ込める。例えば stratum+tcp://tea-soak.org:3032 みたいな感じで。かなりそれらしくなってきて、興奮するね。(クラウドマイニングでハッシュ突っ込んだ時はポート開いてたからこのURLは生きてたけど、今はもう閉じてます)
[caption id=”attachment_119” align=”alignnone” width=”300”] 掘れました。わーい[/caption]
Pending Blocksが1になってますね。120の承認を経てConfirmed Blocksに移ります。
ハッシュレートが50MH/sとかになってるのは、しょぼいGPUでひっそりとやるのがじれったくてクラウドパワーを放り込んだだけ。
https://bchain.info/MONA/block/d4514bc0bc196101eae3540fef22c8f4c67527e0731c4970914955d1d69c3306
実際に掘り当てたブロックはこちら。pool_config/monacoin.jsonで設定しておいたアドレスへきちんと50MONA新規発行されているのがわかる。
https://bchain.info/MONA/tx/48114aa1e494522aec1b7a206bde3725282358802573a9d031c43b39653a896d
GPU、クラウドパワーの2つのアカウント(2つのアドレス)で採掘していた、そのシェアに応じて配当されている。
以上。