【雑記】MPOS+stratum-miningによるマイニングプール構築法1

そろそろ書こうかな・・・と思い立ったこともあり、割と放置していたプールの構築を今回から何回かに分けて扱います。

 

そもそもマイニングプールとは?

マイニングプールとは何なのか?という事をあらためて説明しなければならないほどご存じない方は少ないかと思われますが、簡単に言えば「共同で採掘を行い、成果物をシェアする機構」がプールです。

これを読まれている方はプールに興味を持つくらいですから、おそらく単独でのマイニングを行った経験もあると思います。 それを思い出してもらえればわかりますが、マイニングは掘りあてたもの勝ちであり、掘りあてられなかった人には基本何も配られません。
Bitcoin等をはじめとする多くのコインは、現在単体でマイニングを行っても報酬を手に入れる事が非常に難しい状態となっています。  ゆえにプールという機構が誕生しました。

マイニングプールの役割は、主に参加者の提出するハッシュの取りまとめと反映、それぞれの貢献度の算出、そして採掘成功時に報酬を各個人に分配して支払うという3つとなります。 これらを行っているということを片隅にでも置いておくとどれが何をしているかがわかるかと思います。

 

まずは事前準備から

さて、ではプール構築を・・・と行きたいところですが、その前に今回の解説にあたっての注意と構築の対象をまずまとめます。

  • Debian/Ubuntuを対象に構築の解説を行いますので、あらかじめご了承ください。(ここでは既にOSインストールが済んでいるものとして話を進めます。)
  • プールの構築としてはmona(scrypt),kuma(quark),zeny(yescrypt)を対象とします。 その他要望があれば追加するかもしれません。
  • ルート権限が必要なコマンドは「#」にて、その必要がないコマンドは「$」で示しますので、該当部分は適宜sudoやsuを行ってください。
  • 今回解説中ではパッケージ管理ツールとして「aptitude」を使用します。 標準では「apt-get」のみがインストールされているUbuntuでは適宜読み替えるかaptitudeの導入をしてください。(インストールは「apt-get install aptitude」にて)

では早速プール構築+各種coindコンパイル等に必要なパッケージの導入から行います。 導入は以下のコマンドにて行います。

# 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に必要なライブラリ群)
# easy_install -U distribute   (pythonライブラリの追加インストール)//setuptoolsとの統合があったためコマンド検証中

また、そのほかにもwebサーバーやバックで稼働するdbサーバー等も必要となりますが、こちらはMPOSを扱う時にあらためて扱います。

そのほかにも「libdb-dev」と「libdb++-dev」の導入が必要になりますが、導入しているDebian/Ubuntuのバージョンによって使用可能なバージョンが異なります。 インストールは以下のコマンドで可能ですが、別途添付するリストを参照して自分が使用しているOSバージョンを踏まえたものをインストールしてください。

# aptitude install libdbXX-dev libdbXX++-dev (XX部分を番号に置き換えてください)

ディストリ名 バージョン番号 dbバージョン
Debian jessie(8.x)系 5.3
Debian wheezy(7.x)系 5.1
Debian squeeze(6.x)系 LTSサポート中 4.8
Ubuntu trusty(14.04LTS)
utopic(14.10)
vivid(15.04)
5.3
Ubuntu precise(12.04LTS) 5.1
Ubuntu lucid(10.04LTS)サポート終了 4.8

これらの導入で必要なパッケージの準備は完了です。

 

必要なソフトウェア群をgithubから取って来てみよう

では次にプール構築に必要なものをgithubに取りに行きましょう。 githubとはgitバーション管理システムを利用してのソフトウェア開発を行うことが可能なwebサービスで、bitcoinをはじめ今回利用するソフトウェアの開発の場ともなっています。

では順番に必要な物を取得していきましょう。 今回のプール構築において必要になる物は以下のものです。

  • MPOS(マイニングプールフロントエンド)
  • stratum-mining(ハッシュ管理サーバー)
  • 各種coind(mona,kuma,zeny etc…)

これらソフトウェアのソースをgithubから取得していきます。 取得は以下のコマンドにて可能です。

$ git clone [コピー元のURL] [コピー先となるローカルのフォルダ名(省略可)]

それでは実際にそれぞれ取得していきましょう。 なお取得の際は現在いるディレクトリに保存されるため、保存したい場所で以下のコマンドを実行するようにしてください。(どこかにsrcディレクトリを作成してまとめておくといいかもしれません)

$ git clone https://github.com/MPOS/php-mpos.git mpos
$ git clone https://github.com/Crypto-Expert/stratum-mining.git stratum-mining-cexp (現在これら2つのstratumに関し脆弱性検証中)
$ git clone https://github.com/ahmedbodi/stratum-mining.git  stratum-mining-ahme

次に各種coindのソースを取得します。

$ git clone https://github.com/monacoinproject/monacoin.git monacoind   (monacoinプール構築の場合)
$ git clone https://github.com/kumacoinproject/kumacoin.git kumacoind   (kumacoinプール構築の場合)
$ git clone https://github.com/bitzeny/bitzeny.git bitzenyd   (bitzenyプール構築の場合)

bitzenyのプール構築の場合は以下も追加で取得しておきます。

$ 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」内にあるstratum.patchには1か所「yesscrypt」とミスタイプをしている箇所があるのでこの部分を「yescrypt」にあらかじめ修正しておきましょう。

if settings.COINDAEMON_ALGO == ‘zny_yesscrypt‘:

以上でgitからの取得は終了です。

 

今後は今回取得したソフトウェア群のコンパイルや設定などを行っていきます。 まず次回は各種coindのコンパイルを予定していますのでしばしお待ちを。

Author Profile

monaf
mona digestの管理人でもあります。 こちらは向こうでは外れてしまうような内容を中心にお送りしてまいります。

monacoin:MMditkELuURZgDPduLDLGYArA15G7nWFo3
kumacoin:KHtxC7CdYUUfXLEEprxoN8re58ckhNbSwb
ringo:RVQNKVMRcJ8dCH687zQo3nDUN7JXgoRdid
bitzeny:ZboAKf49TpBg5ef9vSXxNbajmyyjZNNCat

About Author

monaf
mona digestの管理人でもあります。 こちらは向こうでは外れてしまうような内容を中心にお送りしてまいります。 monacoin:MMditkELuURZgDPduLDLGYArA15G7nWFo3 kumacoin:KHtxC7CdYUUfXLEEprxoN8re58ckhNbSwb ringo:RVQNKVMRcJ8dCH687zQo3nDUN7JXgoRdid bitzeny:ZboAKf49TpBg5ef9vSXxNbajmyyjZNNCat

2 Comments

  1. ぽかぽか

    はじめまして!とても親切でわかりやすい解説参考になります!
    今、nomp+mposでbitzenyのプールサーバー構築しようとしているのですが、mposをbitzeny(yescrypt)に対応させる方法が分からず詰まっています。
    もし、対応方法ご存知でしたら教えていただけるととても助かります!

    Reply
    1. monaf (Post author)

      いえいえ、多少参考になったのであれば幸いです。
      なお、MPOSは通常sha256とscryptしか想定していないため、当方では基本的には影響がないということもありscryptのまま使用する方法を取っています。

      参考になるかわかりませんが、もしわからない点があればまた質問してください。

      Reply

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です