BitZenyのマイニングプールを作る!(③stratum-miningの構築)

11月 20, 2017

いよいよ最後、プールマイニングの中枢を担う、stratum-miningの設定です。
下記のコマンドをひたすら入力していきます。

stratumは環境によって出るエラーが特に違うようで、うまくいかない場合もあります。
ubuntu16.04で下記手順で動くことを確認していますが、うまく動かない場合はbitzenyフォーラムなどで症状を報告してみてください。

※以下、cd .. 等は省略しているので必要に応じて入力してください。

・stratum-miningをyescryptに対応させる

$ cd zny_yescrypt_addon/
$ python setup.py install
$ cd stratum-mining-znypatch/
$ cp stratum.patch ../stratum-mining
$ cd ../stratum-mining
$ patch -p1 < stratum.patch

※もしもエラーが出てパッチが当たらない場合はパッチファイルの先頭3行を消す。
(debian 7の時はエラーが出た。ubuntu16.04の場合は問題なく当たった)

・stratum-miningを最新化

$ cd stratum-mining
$ git submodule init
$ git submodule update
$ cd externals/litecoin_scrypt/
$ python setup.py install #おそらく不要だが念のためにやっておく

・setup.pyをubuntu16.04用に書き換える。cat の行はファイルを作っているので、viでEOFまでの内容を作っても良い。

$ cd stratum-mining/externals/stratum
$ cat > setup.py
#!/usr/bin/env python
#from distribute_setup import use_setuptools
#use_setuptools()
#python setup.py sdist upload
from setuptools import setup
from stratum import version
setup(name=’stratum’,
version=version.VERSION,
description=’Stratum server implementation based on Twisted’,
author=’slush’,
author_email=’info@bitcion.cz’,
url=’http://blog.bitcoin.cz/stratum’,
packages=[‘stratum’,],
py_modules=[‘distribute_setup’,],
zip_safe=False,
install_requires=[‘twisted’, ‘ecdsa’, ‘pyopenssl’, ‘autobahn’,]
)
EOF

# python setup.py install #ここでエラーが出るがそのまま続行

※コピペするとsetup.py内の「’」が違う文字列に置き換わるようです。すいませんが個別に直してくださいm(__)m

引数がおかしいとエラーが出る時もあるが、これをやっておくと次に進める。(何度か構築してるが、手順によって出なかったり、出たりする…)

$ cp /conf/config_sample.py /conf/config.py

・設定ファイルに必要なウォレットアドレスを取得する

$ bitzeny-cli getaccountaddress “”

bitzenydを起動したユーザで実行する。
Zから始まるアドレスをメモっておく。
必ず “” を指定する。他のアカウント名はmposが対応してない。

# vi /conf/config.py

・stratum-miningの設定変更箇所

CENTRAL_WALLET = ‘bitzenydのウォレットアドレス’ # Local coin address where money goes

COINDAEMON_TRUSTED_HOST = ‘localhost’ #
COINDAEMON_TRUSTED_PORT = 9252 #bitzenyd-port
COINDAEMON_TRUSTED_USER = ‘zeny-user’ #bitzenyd rpcユーザ名
COINDAEMON_TRUSTED_PASSWORD = ‘SOMETHINGRANDOMPASS’ #rpc-pass

COINDAEMON_ALGO = ‘zny_yescrypt’ #zny_yescryptを指定

LISTEN_SOCKET_TRANSPORT = 19666 #stratumで利用する任意のポート。このポートを空ける

DB_MYSQL_HOST = ‘localhost’ #DBのホスト名
DB_MYSQL_DBNAME = ‘mpos’ #mposで利用するDB名。stratumがこのDBに書き込みます。
DB_MYSQL_USER = ‘mposuser’
DB_MYSQL_PASS = ‘SOMETHINGRAMDOMPASSWORD’ #mysqlのパスワード
DB_MYSQL_PORT = 3306

POOL_TARGET = 0.1 # プール難易度。まずは0.1で様子を見る。

・ポートを空ける(他https,http,mysqlやsshやsmtpなど必要に応じて)

# ufw allow 19666
# ufw enable

・stratumを起動する
1点バグがあるので直す。

# vi /usr/local/lib/python2.7/dist-packages/stratum-0.2.13-py2.7.egg/stratum/websocket_transport.py

from autobahn.websocket を from autobahn.twisted.websocket に

$ twistd -ny launcher.tac

ログが表示されるので、最初のほうに######YESCRIPT SUPPORT#####と表示されたらOK
パッチがあたってなかったり、設定のzny_yescrypt を zeny_yescriptとか、typoしてると #######SHA32 SUPPORT#######と表示される

お疲れさまでした!ここまで来たらほぼ完成です!
次回は動作確認とメール設定などを解説しますが、ここまでの内容でプール構築は完了しています。
先に進みたい人はmposでユーザとワーカを作成して、マイニングプールの動作確認を実施してみてください。

参考にさせていただいたページ:
モナーコイン@gikopool:https://www59.atwiki.jp/gikopool/pages/19.html
github stratum-mining:https://github.com/Crypto-Expert/stratum-mining/issues/90
QuickStartGuide mpos on ubuntu16.04:https://88plug.com/crypto-mining/quickstart-guide-mpos-on-ubuntu-16-04/