仮想通貨のNEETCOIN(ニートコイン)の公式ウォレットのデーモンをCentOS 6.9で動かす方法です。本記事ではサーバとして動かします。
CentOS 6.9のyumリポジトリで管理されるパッケージのバージョンが一部対応しておらず、その分は個別にインストールしています。CentOS 7以降ではまた違ってくると思います。
※ソフトウェアのインストール・実行は自己責任です。特に仮想通貨はお金の絡むことなので、十分にお気をつけください。また基本的なことは知っている、もしくは調べられる人向けに書いているため、コマンドなど細かく説明していません。
<環境>
https://github.com/NEETCOINProject/NEETCOIN/
https://github.com/NEETCOINProject/NEETCOIN/archive/v1.01.tar.gz
ソースコードからNEETCOINをビルドする
1-1. yumで揃うパッケージのインストール
~ $ sudo yum install gcc gcc-c++ kernel-devel ~ $ sudo yum install libtool automake autoconf ~ $ sudo yum install pkgconfig ~ $ sudo yum install pkgconfig ~ $ sudo yum install qrencode-devel
ここからはyumでインストールしたパッケージとバッティングするのが嫌なので、/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.1.0系のOpenSSLは別のコインでmake時にエラーとなりました。
1-4. Boost(最新)のインストール
~ $ wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz ~ $ tar xvzf boost_1_65_1.tar.gz ~ $ cd boost_1_65_1/ ~/boost_1_65_1 $ ./bootstrap.sh ~/boost_1_65_1 $ ./b2 --prefix=/home/wallet/common link=static runtime-link=static install
1-5. MiniUPnP(1.9)のインストール
~ $ wget https://github.com/miniupnp/miniupnp/archive/miniupnpc_2_0.tar.gz ~ $ tar xvzf miniupnpc_1_9.tar.gz ~ $ cd miniupnp-miniupnpc_1_9/miniupnpc ~/cd miniupnp-miniupnpc_1_9/miniupnpc $ make ~/cd miniupnp-miniupnpc_1_9/miniupnpc $ INSTALLPREFIX=/home/wallet/common make install
※2.0のMiniUPnPは別のコインでmake時にエラーとなりました。
1-6. NEETCOINのビルド
今回はバージョン1.01のtar.gzをダウンロードしますが、2点変更が必要です。
~ $ 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 $ vi makefile.unix # for boost 1.37, add -mt to the boost libraries LIBS += \ -Wl,-B$(LMODE) \ -l boost_system$(BOOST_LIB_SUFFIX) \ -l boost_filesystem$(BOOST_LIB_SUFFIX) \ -l boost_program_options$(BOOST_LIB_SUFFIX) \ -l boost_thread$(BOOST_LIB_SUFFIX) \ -l db_cxx$(BDB_LIB_SUFFIX) \ -l ssl \ -l crypto ↓ # for boost 1.37, add -mt to the boost libraries LIBS += \ -Wl,-B$(LMODE) \ -l boost_system$(BOOST_LIB_SUFFIX) \ -l boost_filesystem$(BOOST_LIB_SUFFIX) \ -l boost_program_options$(BOOST_LIB_SUFFIX) \ -l boost_thread$(BOOST_LIB_SUFFIX) \ -l db_cxx$(BDB_LIB_SUFFIX) \ -l ssl \ -l crypto \ -l rt ~/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 \ BOOST_INCLUDE_PATH=/home/wallet/common/include \ BOOST_LIB_PATH=/home/wallet/common/lib \ make -f makefile.unix ~/NEETCOIN-1.01/src $ ls -l NEETCOINd -rwxrwxr-x 1 wallet wallet 63034580 12月 28 13:01 2017 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. NEETCOINの初回起動(エラー)
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=GWakuB5dtoAxWQSKyzsic3skKW5rfUuHFiMX6XGShUC5 (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. NEETCOINの起動
設定ファイル作成後に再度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" : 13732, "timeoffset" : -3, "moneysupply" : 2162209.03397533, "connections" : 16, "proxy" : "", "ip" : "xx.xx.xx.xx", "difficulty" : { "proof-of-work" : 0.52413324, "proof-of-stake" : 0.00026379 }, "testnet" : false, "keypoololdest" : 1514434241, "keypoolsize" : 101, "paytxfee" : 0.00010000, "mininput" : 0.00000000, "errors" : "" }
ウォレットを停止するには、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 password ~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./NEETCOINd
参考になりましたらNEETCOINを寄付していただけると幸いです。
NEETCOINアドレス:NNvsfCvrJqrxTAKLqRL6kYzcWkPCwfjZqw