NEETCOIN:Raspberry Piでウォレットを動かす

仮想通貨のNEETCOIN(ニートコイン)の公式ウォレットのデーモンをRaspberry Piで動かす方法です。公式のGitHubにてLinux版のQTが公開されていますが、ラズパイのX上で動かなかったのと、サーバ用途のためデーモンとして動かしたいため自分でビルドが必要です。
なお取引が活発になるとウォレットのデータサイズも大きくなるため、低容量のMicroSDでの運用はオススメしません。
※ソフトウェアのインストール・実行は自己責任です。特に仮想通貨はお金の絡むことなので、十分にお気をつけください。また基本的なことは知っている、もしくは調べられる人向けに書いているため、コマンドなど細かく説明していません。

<環境>

  • 型番:Raspberry Pi 3 Model B
  • OS:Rasbian Stretch
  • バージョン:1.01

https://github.com/NEETCOINProject/NEETCOIN/
https://github.com/NEETCOINProject/NEETCOIN/archive/v1.01.tar.gz

ソースコードからNEETCOINをビルドする

1-1. apt-getで揃うパッケージのインストール

~ $ sudo apt-get update
~ $ sudo apt-get install build-essential
~ $ sudo apt-get install libtool autotools-dev autoconf
~ $ sudo apt-get install libboost-all-dev
~ $ sudo apt-get install pkg-config
~ $ sudo apt-get install libminiupnpc-dev
~ $ sudo apt-get install libqrencode-dev

OpenSSLをapt-getでインストールしないのは、Rasbian Stretchの標準のOpenSSL 1.1.0でコンパイルエラーとなるためです。

ここからはapt-getでインストールしたパッケージとバッティングするのが嫌なので、/home/wallet/commonに仮想通貨用のライブラリを配置します。

1-2. Berkeley DB 4.8のインストール

~ $ wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
~ $ tar xvzf db-4.8.30.NC.tar.gz
~ $ cd db-4.8.30.NC/build_unix/
~/db-4.8.30.NC/build_unix $ ../dist/configure --prefix=/home/wallet/common --enable-cxx
~/db-4.8.30.NC/build_unix $ make
~/db-4.8.30.NC/build_unix $ make install

1-3. OpenSSL(1.0.2系最新)のインストール

~ $ wget https://www.openssl.org/source/openssl-1.0.2n.tar.gz
~ $ tar xvzf openssl-1.0.2n.tar.gz
~ $ cd openssl-1.0.2n/
~/openssl-1.0.2n $ ./config --prefix=/home/wallet/common --openssldir=/home/wallet/common/openssl -fPIC shared
~/openssl-1.0.2n $ make
~/openssl-1.0.2n $ make install

1-4. NEETCOINのビルド

今回はバージョン1.01のtar.gzをダウンロードしますが、1点変更が必要です。

  • src/leveldb/build_detect_platformに実行権限を追加する

※ビルド中にエラーとなる場合は「Raspberry Piでウォレットビルド中にエラーとなる場合」を参照

~ $ wget https://github.com/NEETCOINProject/NEETCOIN/archive/v1.01.tar.gz
~ $ tar xvzf v1.01.tar.gz
~ $ cd NEETCOIN-1.01/src/
~/NEETCOIN-1.01/src $ chmod +x leveldb/build_detect_platform
~/NEETCOIN-1.01/src $ OPENSSL_INCLUDE_PATH=/home/wallet/common/include \
OPENSSL_LIB_PATH=/home/wallet/common/lib \
BDB_INCLUDE_PATH=/home/wallet/common/include \
BDB_LIB_PATH=/home/wallet/common/lib \
make -f makefile.unix
~/NEETCOIN-1.01/src $ ls -l NEETCOINd
-rwxr-xr-x 1 wallet wallet 62337384 Dec 27 19:52 NEETCOINd

補足

今回のように任意の場所にライブラリを配置し、かつ、/etc/ld.so.confにパスを通さない場合、NEETCOINを起動する際には環境変数LD_LIBRARY_PATHにライブラリのパスを設定しなければなりません。

~ $ export LD_LIBRARY_PATH=/home/wallet/common/lib
~ $ ./NEETCOINd
~ $ ./NEETCOINd stop

もしくは

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd stop

NEETCOINを起動する

2-1. NEETCOINdの初回起動(エラー)

NEETCOINdを実行するとNEETCOINのデーモンが起動しますが、設定ファイルが無いため、エラーになります。ただ初回起動時にデータのディレクトリを作成するため、エラーでもよいので起動します。
※初回起動は時間がかかります。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd
Error: To use NEETCOINd, you must set a rpcpassword in the configuration file:
 /home/wallet/.NEETCOIN/NEETCOIN.conf
It is recommended you use the following random password:
rpcuser=NEETCOINrpc
rpcpassword=8dsgkNhSqDRrje1hqf4i2m15UYY9VBJ3Tf6FjqQDHo9j
(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 "NEETCOIN Alert" admin@foo.com

2-2. NEETCOIN.confの作成

/home/ユーザ名/.NEETCOIN配下にデータが作成されたため、設定ファイルのNEETCOIN.confを作成します。rpcxxxの部分は自分の環境に合わせてください。

~ $ vi /home/ユーザ名/.NEETCOIN/NEETCOIN.conf
rpcuser=user
rpcpassword=pass
rpcallowip=127.0.0.1
rpcport=9782
daemon=1
server=1
gen=0

2-3. NEETCOINdの起動

設定ファイル作成後に再度NEETCOINdを実行します。実行後は起動したことを確認するため、NEETCOINd getinfoを実行します。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd
NEETCOIN server starting
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd getinfo
{
    "version" : "v1.0.0.0-g32a928e",
    "protocolversion" : 60013,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "newmint" : 0.00000000,
    "stake" : 0.00000000,
    "blocks" : 27,
    "timeoffset" : 0,
    "moneysupply" : 2100700.72896872,
    "connections" : 2,
    "proxy" : "",
    "ip" : "xx.xx.xx.xx",
    "difficulty" : {
        "proof-of-work" : 0.00029448,
        "proof-of-stake" : 0.00024414
    },
    "testnet" : false,
    "keypoololdest" : 1514406840,
    "keypoolsize" : 101,
    "paytxfee" : 0.00010000,
    "mininput" : 0.00000000,
    "errors" : ""
}

NEETCOINを停止するには、NEETCOINd stopを実行します。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd stop
NEETCOIN server stopping

2-4. ウォレットの暗号化

ウォレット(wallet.dat)を暗号化するには、NEETCOINd encryptwalletを実行します。実行後にはNEETCOINが停止するため、再度起動が必要です。暗号化すると送金等一部の処理にパスワードが必要となります。
Linux上ではコマンド履歴が残るため、Windowsで暗号化したwallet.datをLinuxへアップロードして使う、.bash_historyを削除するなど対策をすることをおススメします。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd encryptwallet パスワード
wallet encrypted; NEETCOIN server stopping, restart to run with encrypted wallet.  The keypool has been flushed, you need to make a new backup.
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd

 
参考になりましたらNEETCOINを寄付していただけると幸いです。
NEETCOINアドレス:NNvsfCvrJqrxTAKLqRL6kYzcWkPCwfjZqw