Homeで作ったスマートホームを自慢したい男たち」でした。大学院を卒業してはやウン年、立派な老害OBとなったik-fibです。最近では、仕事で決済系のことをしつつ、個人では仮想通貨に興味が出てきました。(とはいえ、ここ数日の値動きは激しすぎて頭がおかしくなってきた)そんな仮想通貨について、マイニングプールを自前で作ってみたくなったのでやってみました。マイニングプールとはそもそも、マイニングプールとはなんでしょうか。それを説明するために、仮想通貨のマイニングの仕組みについて簡単に説明します。仮想通貨に使用されているブロックチェーンに新しいブロックを追加するには、だれかがそのブロックを「承認」する必要があります。ほとんどの仮想通貨では、その「承認」を非常に大きな計算量を必要とするようになっており、多くの機器によって日々計算がされています。Importanceなどもありますが、ここでは割愛します)その計算合戦に直接参加することもできますが、多くの仮想通貨のネットワークではすでに大量のユーザー、専用機器による大規模なグループもいるため、小さな計算量しかない個人のPCなどで「承認」を成功させ、報酬をもらえる可能性は高くありません。そのため、基本的に個人等でマイニングに参加する際にはプールに参加する場合が多いです。プールに参加してマイニングを行う場合、そのプール全体で「承認」に取り組み、プールが「承認」に成功したときには、そこまでに貢献した計算量に応じて、報酬が分配されるようになっています。そのため、小さい計算量でもその計算量に応じた報酬を獲得することが可能になっています。現在、仮想通貨には多くの種類があり、それぞれの通過に対して、多くのマイニングプールがすでに存在しています。マイニングプールです。BitZenyは、普通のPCで採掘できる仮想通貨と銘打っており、GPUやASIC(計算用の専用機器)での計算が困難になっています。そのため、個人のPCでも十分マイニングが可能です。(最近、数少ない国産コインであることから、第2のモナコインとして著名な方々にも注目され、採掘難易度は上がっていますが...)マイニングプールに使用するサーバの契約マイニングプールは、様々なユーザーからの計算結果を受け取る必要があるため、ある程度安定したサーバが必要になります。今回は、海外のVPSであるTime4VPSを使用することにしました。Time4VPSを使用する理由としては、以下のような理由からです。(お試しなのでVPSも新しいのを試してみたかったというのが大きい)価格が安い割りと安定しているという話を聞く前から記事を見かけて試してみたかった支払い方法として、クレジットカード・PayPalに加えビットコインでの支払いも可能です。ほとんど、画面の指示通りに登録すれば良いですが、私が少し躓いたところとしては、電話番号登録のところでした。入力しないでくださいと書いてはいますが、これは本当に+だけを省いて、(日本の番号の場合)国際番号の81は付ける必要があります。登録後にSMS認証をする必要があるので、上記と合わせて番号間違い等ないように気をつけましょう。VPSの初期設定をするVPSを契約しただけでは、セキュリティ等が不安なのでそこを設定していきます。基本的には、過去に行ってきたVPSの設定とほぼ同じなので今回は割愛します。16.04でビルドしたときに以下のエラーが出ます。1この問題については、本家bitcoinでも過去のissueで上がっており、対応策もそこから見つかりました。https://github.com/bitcoin/bitcoin/issues/6113https://github.com/dashpay/dash/pull/328以下のdiffのように修正するとビルドできます。redeemScript.end())));(本家にPRは送ったけど、活動ないっぽいし取り込まれない気がする)https://github.com/bitzeny/bitzeny/pull/4また、forkしたリポジトリには、この修正を反映済みです。install等でPATHの通っている箇所にインストールしてください)設定ファイル追加・動作確認bitzenyのビルドが完了したら、設定ファイルを作成します。~/.bitzeny/bitzeny.confserver=1rpcallowip=localhostrpcuser=適当なユーザー名rpcpassword=パスワードaddnode=113.153.209.203addnode=118.241.118.74addnode=119.245.16.219addnode=157.7.222.158addnode=203.178.132.125addnode=220.217.202.90addnode=27.120.112.59addnode=27.96.51.15addnode=58.191.220.12直接rpcでつなげるのは、localhostからだけなので、rpcallowipはlocalhostで問題ありません。Seedより接続先ノードを明示的に追加しています。これで接続したら以下のコマンドでデーモン起動、および動作確認を行います。""}MPOSのインストール次にマイニングプールに各自が参加するポータルであるMPOSをインストールします。mysqlのインストールMPOSはmysqlを使用するので、別途インストールする必要があります。mysql-servermysql5.7の場合、別途以下の設定が必要です。使用するDB・テーブルの作成mposで必要なDBを作成した後、リポジトリに含まれているテーブル情報を読み込ませます。sql/000_base_structure.sqlmpos用のMySQLユーザーの追加mpos用に新しくユーザーを作り、そのユーザーはmposDBしかさわれないように設定します。protected];webサーバのインストール・設定mposはwebサイトとして動作するアプリケーションなので、別途webサーバの設定が必要です。今回はApacheを使用します。php-memcachedそしてmposを/var/www以下に配置してApacheから認識されるようにします。同ディレクトリに新規ファイルとして追加)に記載します。[中略]</VirtualHost>設定ファイルに設定を追加mposにDBの接続用の情報や、マイニングウォレットの情報などを設定します。'ZNY';メール送信を有効にするMPOSでは、ユーザー登録の際にメール認証が必要なので、sendmailやpostfix等でメールを送れるようになっている必要があります。今回はpostfixを使用します。postfix(設定は割愛します)ここまで行えば、設定は完了です。最初に作られたアカウントがadmin権限を自動的に持つようなので、本来であれば自分しか見られない状態にした上で最初にアカウントを作っておくほうが安全かと思います。stratum-miningのインストールstratum-miningは、今回のプールマイニングの要である、複数人でマイニングするプールを管理・処理を行うアプリケーションです。ソースのDLと必要ライブラリのインストールはじめに必要なコードをダウンロードします。stratum-mining-znypatch次にこれらをインストールしていきます。最初にこちらを参考にインストールしていたところ、pythonのライブラリが足りずinstallに失敗したため、必要なものを先にインストールしておきます。以下のissueと似たようなエラーも発生するため、launcher.tacを以下のように修正します。develop各種設定stratumに必要な各種設定を行います。はじめに、設定ファイルに必要なBitZenyのウォレットアドレスを取得します。“”Z*********************************次にサンプルファイルをコピーして設定ファイルの雛形を作成します。stratum-mining/conf/config.pyその後、stratum-mining/conf/config.pyの以下の項目を編集します。プール難易度そして、上記で指定したポートを開放しておきます。19666stratumの修正このままでは起動しないので、/usr/local/lib/python2.7/dist-packages/stratum-0.2.13-py2.7.egg/stratum/websocket_transport.pyを以下のように修正します。launcher.tacこれで起動する...はずです。起動自体は確認したのですが、rpcで接続できているかは未確認です(理由は後述)twistedを更新このまま起動しても、twistedが以下のエラーを出力していました。'frozen'そのため、以下のコマンドでtwistedを最新のものに更新します。git+https://github.com/twisted/twistedただ、このまま更新しただけでも以下のエラーが出ます。WebSocketServerProtocol~/stratum-mining/externals/stratum/stratum/websocket_transport.pyを以下のように修正します。GenericEventHandlermemcachedのインストールと実行stratum-miningがmemcachedを必要としてくるので、インストールします。times以下のコマンドでインストール・有効化を行います。launcher.tacこれで起動します。確認の際は、適当なminerソフトから正常にアクセスできるか確認してみましょう。最終的に外部ユーザーも使える状態にする予定だったので、セキュリティのためhttpsで接続できるようにします。最初にapacheのSSLモジュールを有効化します。sslその後、443ポートで待ち受けるVirtualHostの設定を追加します。アクセスできる状態になっているはずので確認します。Encryptを使用して対応します。総合ポータルにUbuntu16.04のインストールガイド参考のページがあるのでそれを参考にinstall及び有効化を行います。letsencryptletsencryptはTUI画面で対話式に進んでいきますが、画面の指示に従っていれば問題なく完了します。""}上記のようにやっと1/4が終わったというぐらいです。これが終わらないとマイニング自体が始められないので、それの部分が一切チェックできません...後日ブロックのダウンロードが終わったら、改めて続きを執筆&プールも公開します。中途半端で申し訳ありません🙇これで、BitZenyのマイニングプールが完成しました。作成したマイニングプールは↓です。Homeまだ、立てたばかりでいろいろテスト中ですが、もしよろしければご利用ください。(不定期に調整のため止める可能性があります。)こんな半端な記事ですが、もし参考になればこちらに投げ銭いただけるとうれしいです。Core(ウォレット)同期に3年と4週間...ノード追加で即同期を昨日から興味を持って始めたBitZenyマイニング。CPUでマイニング出来る為、高額なGPU(グラボ)を揃えたりせず既存の環境で手軽にマイニング出来るのは本当面白いですね。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。ik-fib東京のどこかの会社のエンジニア基本的に思考も行動もカオスです。WordPress.com.。