PoSマイニングをしてみよう ~Linux編~

この記事のまとめ:
  • Linux (Ubuntu)環境でのPoSアルゴリズムの仮想通貨のPoS (Proof of Stake)マイニング (※本来はstakingと言います)する方法をまとめています。
背景:

前回、Windows環境でのPoS (Proof of Stake)マイニングのやり方を説明しましたが、今回はLinux (Ubuntu)環境でやってみます。PoSマイニングのやり方は他の仮想通貨と大体同じなので他のPoS通貨でやる場合でも参考になると思います。なお、本記事にはPoSの説明やPoS通貨自身の説明はありませんので興味のある方はご自分で調べてください。

Linuxでの実行はWindowsに比べると少し手間がかかる場合があります

Windowsでのウォレットの実行(PoSマイニングの実行)はconfファイルを作成して、exeファイルを実行するだけでしたが、Linux環境でのウォレットの実行は次のパターンがあります。

  1. コンパイル済みのQT (GUI)実行ファイルがアップロードされていて、そのファイルが動く場合 → confファイルだけを作成すればWindowsのときと同じ動作でOK
  2. 上記が動かない場合、もしくはCLIで動かしたい → ソースコードをコンパイルして実行ファイルを生成する必要あり
    • CLI (コマンドライン動作)で動かす
    • GUI (QT)で動かす

このように、2.の場合、ソースコードをコンパイルする必要があるので少し手間がかかります。今回はより単純なCLIでの手順のみ説明します。なお、GUI (QT)でもできるはずなのですが、私の環境では安定動作ができていません。 また、基本的にはどのPoSコインでも作業はほとんど同じですが、今回はCondensate (Rain)(以下、Rain)を対象に動かしてみます。

マイニングに必要なもの

Windowsのときと同様に、必要なものは24時間稼働しているLinuxマシンです。Ubuntuを対象に説明していきます。

主な手順

Linux環境でPoSマイニングを行うための主な手順は下記の通りです。

  1. Walletのソースコードのダウンロード
  2. Walletのコンパイル
  3. Walletの同期
  4. Walletへ送金
  5. Walletの暗号化とアンロック
1. Walletのソースコードのダウンロード

公式のGithubからソースコードをGitでクローンを作ります。例えば、Rainの場合だと次のようになります。

$ git clone https://github.com/OBAViJEST/rain

なお、以後のコマンドについてはクローンしたディレクトリ配下で実行する場合のコマンドとして認識してください。

2. Walletのコンパイル
パーミッションの変更

このあと、ダウンロードしてきたソースコードをmakeでコンパイルするのですが、makeの中でsrc/leveldb/build_detect_platformというものを実行するようになっていますが、実行権限が与えられていないことがありますので、実行権限を付与します。

$ chmod 755 src/leveldb/build_detect_platform
ソースコードの実行に必要なライブラリのインストール

コンパイルにはいくつかのライブラリが必要になります。

$ sudo apg-get build-essential libssl-dev libdb++-dev libboost-all-dev libqrencode-dev

もし、上記だけで足りない場合は、doc/build-unix.mdに記載されているので確認してみてください。

なお、boostなどマニュアルですでに最新バージョンをインストールしていた場合など、コンパイル対象のソースコードが想定しているバージョンと異なるバージョンのライブラリをインストールしている場合、コンパイルができない可能性があります。 私の場合、boost 1.6.3をマニュアルでインストールしていたのですが、apt-getでインストールできる最新バージョンは1.58です。この違いでコンパイル時にエラーが出てしまいました。 #これに気づくのにかなり時間をかけてしまいました…。

その場合は、makefileを変更してマニュアルでインストールしたライブラリを読み込まないように変更してください。 おそらく、そういったものは/usr/local/include/にあると思ういますので関連するライブラリがないか確認してください。

ソースコードのコンパイル

srcディレクトリで下記を実行します。

$ make -f makefile.unix

コンパイルには数分~数十分ほどかかる場合があります。コンパイルが無事に完了していれば、src/【仮想コイン名】dという実行ファイルがあるはずです。これがwalletの実行ファイルです。例えば、Rainの場合には、src/raindというファイルが生成されます。

トラブルシューティング①:Accumulator.d

コンパイル時に次のようなエラーが出る場合は、下記のコマンドを試してみてください。

zerocoin/Accumulator.cpp:106:1: fatal error: opening dependency file obj/zerocoin/Accumulator.d: No such file or directory compilation terminated. make: *** [obj/zerocoin/Accumulator.o] Error 1

$ mkdir src/obj
$ mkdir src/obj/zerocoin
3. Walletの同期

同期に必要な設定ファイルを作成するために、まずは一度、walletを実行します。walletを起動させるには-daemonオプションを付けて実行します。Rainで実行した時の動作例は下記のようになります。初回のこの実行によって、~/.【仮想コイン名】/に関連ファイルが生成されます(Rainの場合には、~/.rain/)。初回は下記のようにエラーメッセージが出ますがこれは設定ファイルがないことが原因ですのでこれからそれを作っていきます。

$ src/raind -daemon
 
Error: To use raind, you must set a rpcpassword in the configuration file:
 /home/【ユーザー名】/.rain/rain.conf
It is recommended you use the following random password:
rpcuser=rainrpc
rpcpassword=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "rain Alert" admin@foo.com
設定ファイルの作成

上記の実行で作成された~/.【仮想コイン名】/のディレクトリ内に【仮想コイン名】.confという設定ファイルを作成します(Rainの場合には、~/rain/rain.conf)。作成したconfファイルに下記を書き込みます。

rpcuser=【任意のユーザー名】
rpcpassword=【任意のパスワード】

このユーザー名、パスワードはRCP (Remote CoPy)コマンドを行う場合に使用するものですが、LAN内のwalletを起動しているマシンに対して、別のマシンから遠隔でwallet情報を取得したい場合などにしか基本的に使いませんので適当に入力すればよいです。なお、RCPを使用しなくてもこれらの情報がconfファイルに含まれていないと起動時にエラーになってしまうため必ず書き込んでください。

続いて、peer接続を行うノードの情報を書き込んでいきます。最新のpeer接続可能なノードアドレスはCryptopiaなど、取引所のコイン情報から確認ができます。例えば、Rainの場合にはCryptopiaのRainのCoin Informationを開くと、Connection: xx の記載があると思います。これをクリックすると、Condensate (Rain)のNode infoが表示されるはずです。ここに記載されているaddnodeをすべてコピーして先ほどのconfファイルに貼り付けます。

confファイルの編集が終わったら、walletを起動します。すると同期を開始し始めるはずです。初期同期にはしばらく時間がかかります。 peer接続ができているかどうかの確認は、getstakinginfoオプションを付けて実行してenabledの数が0より大きい数字になっているか、getpeerinfoオプションを付けて実行してノード情報が出力されるか、getconnectioncountオプションを付けて実行して0より大きい数字が表示されているか、などで確認できます。 また、同期が完了したかどうかを確認するには、getstakinginfoオプションを付けて実行してenabledの値がtrueになっていれば同期が完了しています。

(参考)実行オプション

helpオプションを付けてwalletの実行ファイルを実行するとすべての実行オプションを確認できます。Rainの場合は下記のように実行します。

$ src/raind help

私はすべてのオプションを把握しているわけではありませんので、本記事では必要最小限のオプションのみ紹介します。

(参考)設定パラメーター

confファイルの設定パラメーターはさまざまあり、一つ一つ紹介されているものがどこにあるのかわかりませんが、下記に一部が記載されていますので参考にご利用ください。なお、下手に余計な設定などを行うとセキュリティリスクを高める原因となる可能性がありますので自己責任で設定を行ってください。

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin
4. Walletへの送金

同期が終わるまでPoSマイニングは開始されませんが、それ以外にwalletにその仮想通貨を送金、を暗号化した上で、アンロックする必要があります。

受信用のwalletアドレスは下記のコマンドで取得できます。<フレーズ>については任意の文字列です。例えば、"0"でも構いません。

$ src/raind getnewaddress <フレーズ>
5. Walletの暗号化とアンロック
暗号化

暗号化をするためには、次のよう(Rainでの一例)にencryptwalletオプションとパスフレーズを付けて実行します。

$ src/raind encryptwallet <パスフレーズ>

なお、暗号化するとwalletが停止されるので-daemonオプションを付けてwalletを起動します。

アンロック

アンロックを行うためには、次のようにwalletpassphraseオプションと先ほど設定したパスフレーズとunixtimeフォーマットのアンロック期限を付けて実行します。

$ src/raind walletpassphrase <パスフレーズ> <unixtimeでのアンロック期限>

なお、unixtimeはこちらなどで調べることができます。

アンロックが正しく行われていれば、getinfoオプションを付けて実行すると、unlocked_untilの値が-1以外の値になっているはずです。

PoSマイニングの確認

上記の準備が整ったら、PoSマイニングができているかを確認します。

getstakinginfoオプションを付けて実行し、stakingの値がtrueになっていれば、PoSマイニングができていますので、時間が経つとともにweightの値が大きくなっていくはずです。

もし、stakingの値がfalseのままの場合、再度上記を手順を確認して間違いがないか確認してみてください。

最後に

以上で設定完了です。もし、この記事が有益だと思われたら下記まで寄付をいただければ幸いです。

BTC: 186QRmRk3Kx6o3cTs4hMTdrYGtvmL55QcJ

ETH: 0xba8d9e42afbf5f8924a5ceee4270f435e4883cb8

LTC: LTFqqwjxXQbRoJHZ3gqYdSKsDokhNYDCCh

(余談)VPSの紹介

PoSマイニングするために24時間マシンを稼働させる必要があります。自前でLinuxサーバーを用意するにはサーバー購入のイニシャルコストだけでなく、ランニングコストとして電気代もかかります。 そのコストも馬鹿にならないため、私は別件で契約していたVPS (Virtual Private Server)を使用してPoSマイニングをしています。安いものでは月々360円以下で使えるものもありますのでいくつか紹介させてください。

NTT PC コミュニケーションズ

国内最安値のVPSサービスで月々360円からレンタルできます。初めての方でも日本語で説明がありますので安心して始められると思います。

Time4VPS

最安で月々€0.99という非常に低価格、かつ海外のVPSサービスですが稼働率が非常に高く、有名なVPSサービスです。海外に拠点があるため遅延時間が大きいですが、英語の説明でも問題なく、安く始めたいという方にはオススメです。私もこのサービスを使用していますが、全く問題ありません。

Time4VPS.EU - VPS hosting in Europe

関連記事

次のような記事も書いています。


今回は以上です。 最後まで読んでいただき、ありがとうございます。


ブログランキング・にほんブログ村へ  ← 気に入っていただければ応援ポチをお願いします!


コメント

このブログの人気の投稿

LinuxでのnVidia GPUのオーバークロック・電力チューニング方法