BitZenyのマイニングプールを作る!(①bitzenydの導入)

11月 11, 2017

■最初に
この記事では、下記ソフトのインストールは取り扱いません。別途インストールを行ってください。(必要なタイミングは記載します。)
・Webサーバ (nginx,apacheなど)
・smtpサーバ(postfix,qmailなど)
・SSLの対応(Let’s encryptなどを利用する)
また、要求される技術水準としては、上記サーバやSSLの設定ができるレベルになります。これができるぐらいだと、構築はスムーズにできると思います。全部知らなくても、勉強として構築しながら覚えていくのもいいかも。

では、早速構築に入ります。
まず第一段階として、bitzenydを導入します。

全体の導入順はbitzenyd → mpos → stratum-mining の順になります。

■ソースコード・ライブラリ類のインストール
先に必要なものを手に入れておきます。
※環境はUbuntu16.04(64bit)を想定

・ライブラリ類のインストール

# aptitude install build-essential libtool autotools-dev autoconf libssl-dev libboost-all-dev pkg-config git    (コンパイルに必要なライブラリ等)
# aptitude install python-twisted python-mysqldb python-dev python-setuptools python-memcache python-simplejson   (stratum-miningに必要なライブラリ)
# pip install –upgrade pip   (←upgradeの前はハイフン2つ)
# easy_install -U distribute   (pythonライブラリのインストール)
# pip install autobahn
# aptitude install libdb5.3-dev libdb5.3++-dev

※berkeley-db4.8を利用する場合はここでインストールを実施。具体的な方法はこの記事の一番下、追記部分を参照。

■MPOS/Stratum/BitZenyのソースコード入手

$ git clone https://github.com/MPOS/php-mpos.git mpos
$ git clone https://github.com/ahmedbodi/stratum-mining.git stratum-mining
$ git clone https://github.com/ahmedbodi/stratum.git
$ git clone https://github.com/bitzeny/bitzeny.git bitzenyd
(下記2つでstratumをzny_yescriptに対応させる)
$ git clone https://github.com/bitzeny/zny_yescrypt_python.git zny_yescrypt_addon
$ git clone https://gist.github.com/9db1723161bc2650a1b1.git stratum-mining-znypatch

・stratum-mining-znypatch内にあるパッチファイルにミスタイプがあり、これを直す

if settings.COINDAEMON_ALGO == ‘zny_yesscrypt‘:

⇒zny_yescriptに

■bitzenydをビルドする

$ cd bitzenyd

・ubuntu 16.04の場合、下記ソースの修正が必要

$ vi src/rpcrawtransaction.cpp

299行目
変更前:

const CScriptID& hash = boost::get<const CScriptID&>(address);

変更後:

const CScriptID& hash = boost::get<CScriptID>(address);

※const と & を削る

・インストール

$ ./autogen.sh
$ ./configure –without-miniupnpc –without-gui –disable-tests –with-incompatible-bdb
$ make

# cp src/bitzenyd /usr/bin
# cp src/bitzeny-cli /usr/bin

■bitzenydを設定する
・起動させる

$ bitzenyd -daemon

(ここでconfigがないと一度エラーが表示されます)
・設定ファイルを作る
起動させた際に新しく作られたディレクトリに移動

$ cd ~/.bitzeny/
$ vi bitzeny.conf

// 設定ファイルを編集

server=1
rpcallowip=localhost #プールをひとつのサーバで運用する場合はこれで良い。
#ソロマイニングのテストをする場合はrpcallowip=* (IPが決まってるならそのIP)として、一時的に外からアクセスできるようにする。
rpcuser=zenyuser
rpcpassword=SOMETHINGRANDOMPASS #ここはランダムなパスワードに変える。記憶する必要はない。

設定が終わったら起動させます。

# bitzenyd -daemon

同期が始まります。かなり時間とCPUを使います。
現在の同期の状況は

# bitzenyd getinfo

でblocksの欄で確認できます。ここがgetinfoする度に増えて行くことがわかると思います。

※本記事を作成するに辺り、下記の記事を参考にさせて頂きました。貴重な情報本当にありがとうございます。
http://zakki.mona-digest.net/?p=84 【雑記】MPOS+stratum-miningによるマイニングプール構築法1
http://bitzeny.cswiki.jp/index.php?%EF%BC%B0%EF%BC%A3 暗号通貨BitZenyまとめWiki

次回は、MPOSの構築について記載します。
MPOSはphpベースのwebアプリです。同期中にphp(5 or 7)、httpサーバ&SSLの対応、smtpサーバ、DBサーバを導入しましょう。
※本記事ではapache2,postfix,mysql5.7,php7 での導入を前提にします。

■2017/11/08補足:

berkeley-db4.8で作りたい場合は下記のコマンドを追加で実施。

※Bitzenyが作られた頃と今のDBライブラリが異なる為、違う方法で作られたウォレットにバックアップの復元が出来ない…という問題が生ずることがあります。

wget http://download.oracle.com/berkeley-db/db-4.8.30.zip
unzip db-4.8.30.zip
cd db-4.8.30
cd build_unix/
../dist/configure –prefix=/usr/local –enable-cxx
make
make install