LinuxでXPをPosマイニングする(CUI版)

##目的
PoS通貨であるXPをWindows環境でマイニングしている…のですが
なかなか自宅PCをフルタイム稼働させるのが難しい
そこでクラウドサーバ上でフルタイム稼働させれないかと
思い立ったのがきっかけです。

Qt wallet(GUI版)よりメモリを喰わないかなーという理由で今回はGUI版でなくCUI版のものを使用しました。
~~でも、やってみた結果Windows版よりメモリ喰ってる~~

##最終ゴール
Linuxでフルタイムマイニングして、Windowsでコインの送金やマイニング状況をチェックしたい！

##準備
・Linuxマシン
OS ubuntu 14.04(64-bit)

・スペック
クラウドサーバ(今回はIDCFクラウド)
1CPU x 1.6 GHz / 2GB RAM (light.S2)
※1GBだとギリギリなので

ソースコード
https://github.com/eXperiencePoints/XPCoin



##自動ビルドスクリプトを使ってインストール
マシンの準備は割愛します

・libdbインストール

任意のディレクトリでコマンド実行

```bash:console
# sudo apt-get install software-properties-common
# sudo apt-get update
# sudo apt-get install libdb4.8-dev libdb4.8++-dev
```

・自動ビルドスクリプトを実行

 
/usr/localでコマンド実行 (ほかのところでも大丈夫かと)

```bash:console
# cd /usr/local
# wget https://github.com/eXperiencePoints/XPCoin/releases/download/1.0.0/XPd-linux-compile-from-source.sh
```

続けて

```bash:console
# sudo sh ./XPd-linux-compile-from-source.sh
```

こんな感じのwarningがいくつか出ますがたぶん大丈夫。

```
main.h:961:24: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
         if (nHeight >= 0 || fTestNet)
                        ^
```

もし、エラーが出たりしても、
解消したうえで再び XPd-linux-compile-from-source.sh を実行すればOK

以下のディレクトリが作成されます
/usr/local/XPCoin/

##初回起動
```bash:console
# /usr/local/XPCoin/src/XPd
```
すぐにCtrl+Cで停止してOK

##XP.confの編集

/root/.XP というディレクトリが作成されているので
そのディレクトリのXP.confファイルを編集

daemonを0から1に

```bash:console
#(0=off, 1=on) daemon - run in the background as a daemon and accept commands
daemon=1
```
##Windows版walletから移行

※新規に始める方は飛ばしてください

**!!注意!!**
>wallet.datはUSBメモリなどにバックアップ(コピー)を取得してください。
なくなると二度とXPは返ってきません。

Windows版walletは終了してください。
あとは、↓のフォルダごとzipしてしまいます。
C:\Users\\<ユーザ>\AppData\Roaming\XP

##Linuxに展開

※これも新規に始める方は飛ばしてください

SCP等でzip(今回はxp_start.zip)したファイルをLinuxの適当なところにコピー、展開

```bash:console
# unzip xp_start.zip -d /root/tmp
```

ブロックチェーンの情報を移行

```bash:console
# cp -p xp_start/XP/blk0001.dat /root/.XP
# cp -p xp_start/XP/blkindex.dat /root/.XP
# cp -p xp_start/XP/peers.dat /root/.XP
# cp -p xp_start/XP/database/log.* /root/.XP/database
```
walletの情報を移行

```bash:console
# cp -p xp_start/XP/wallet.dat /root/.XP
```

##レッツ マイニング！

```bash:console
# /usr/local/XPCoin/src/XPd
```
walletを暗号化している場合は、以下のコマンドで鍵を外します。

```bash:console
# /usr/local/XPCoin/src/XPd walletpassphrase ********* 999999 true
```

*********に自分のwalletパスフレーズを入れてください
999999は鍵を外す有効期間(秒)、trueはマイニングのみのための引数です

コマンドに成功すれば、何も表示されません
一応、以下の方法で確認できます。

```bash:console
# /usr/local/XPCoin/src/XPd getinfo | grep unlocked_until
```
「"unlocked_until" : 」に、0でない数字が入っていればOKです。
どうやら、unix時間が入るようで、再びロックされるまでの期間です。(未確認)

##動いているかの確認方法は？

debug.logを確認してください。
エラーが起きていればdb.logに出るようです。

こんな感じのログが出力されていて

```bash:debug.log
SetBestChain: new best=xxxxxxxxxxxxxxxx  height=xxxxxxxx  trust=xxxxxxxxxxxx  blocktrust=xxxxxxxxx  date=DD/MM/YY HH:MM:SS
```

最後のdateが現在の時間付近であれば問題ないかと。
ちなみにdateはUTCらしく、日本時間-9時間表記です。

##ステークできているかの確認は？

一番素早く・わかりやすいのは、以下のサイトに自分のwalletアドレスを入れて確認する方法です。
何より出先からも確認できるのがいい
https://chainz.cryptoid.info/xp/

ステークできていれば、Details for AddressのStakedに表示されます。
また、Transactionsにも表示されます。
![stake.png](https://qiita-image-store.s3.amazonaws.com/0/221131/8e26d2e4-f9d6-c3eb-de53-3c4026df7015.png)
↑こんな感じのマークがつく

またはdebug.logに以下のメッセージが出る

```bash:debug.log
CheckStake() : new proof-of-stake block found
...
AddToWallet xxxxxxxxxx  new
```
あとは、コマンドから

```bash
/usr/local/XPCoin/src/XPd listtransactions
```

categoryがstakeのトランザクションを探す？

##Windows版 ウォレットで情報を確認したい...

※Windowsのwallet.datは念のためバックアップ
※Windows版walletは終了する

Linuxのwallet.datをWindows版のwallet.datに上書きしてください
これで問題なく起動できます。
CoinAgeやMintProbabilityを確認するときはこの方法をとってます

#最後に

XPのコミュニティは活発に活動してます！興味のある方はぜひ:grinning:

XP Discord日本語コミュニティ
https://discord.gg/byc8pnM

参加してwalletつくればAirDropもらえるよ╭( ･ㅂ･)و̑