Yenten:CentOS 6.9でウォレットを動かす

仮想通貨のYentenの公式ウォレット「Yenten Core」のデーモンをCentOS 6.9で動かす方法です。本記事ではサーバとして動作することを前提としています。
※ソフトウェアのインストール・実行は自己責任です。特に仮想通貨はお金の絡むことなので、十分にお気をつけください。また基本的なことは知っている、もしくは調べられる人向けに書いているため、コマンドなど細かく説明していません。
作成日:2017/12/12
更新日:2018/01/22

<環境>

  • マシン:VMware Workstation Player上
  • OS:CentOS release 6.9 (Final) 64bit
  • Yenten Core:1.3.1

https://github.com/conan-equal-newone/yenten
https://github.com/conan-equal-newone/yenten/releases

CentOS 7では本記事の内容ではYentenのconfigure処理でエラーとなります。

公式ウォレットをソースコードからビルドする

1-1. ビルド環境構築(yum標準リポジトリ)

~ $ sudo yum install gcc gcc-c++ kernel-devel
~ $ sudo yum install libtool automake autoconf
~ $ sudo yum install pkgconfig
~ $ sudo yum install python-devel
~ $ sudo yum install wget

 
ライブラリは個別にビルドし、/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
~/db-4.8.30.NC/build_unix $ cd ../../

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
~/openssl-1.0.2n $ cd ../

※1.1.0系のOpenSSLは別のOSで試したときにエラーとなりました。

1-4. Boost(1.65.1)のインストール

~ $ 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
~/boost_1_65_1 $ cd ../

※1.66.0はウォレットのmake時にエラーとなりました。

1-5. Yenten Coreのビルド

ビルドしたファイルの出力先は/home/wallet/yentenとします。

~ $ wget https://github.com/conan-equal-newone/yenten/archive/1.3.1.tar.gz
~ $ tar xvzf 1.3.1.tar.gz
~ $ cd yenten-1.3.1/
~/yenten-1.3.1 $ ./autogen.sh
~/yenten-1.3.1 $ LD_LIBRARY_PATH=/home/wallet/common/lib \
LIBS="-lssl -lcrypto -lrt" \
CPPFLAGS=-I/home/wallet/common/include \
LDFLAGS=-L/home/wallet/common/lib \
SSL_CFLAGS=-I/home/wallet/common/include \
SSL_LIBS=-L/home/wallet/common/lib \
CRYPTO_CFLAGS=-I/home/wallet/common/include \
CRYPTO_LIBS=-L/home/wallet/common/lib \
PKG_CONFIG_PATH=/home/wallet/common/lib/pkgconfig \
PKG_CONFIG_LIBDIR=/home/wallet/common/lib \
./configure --prefix=/home/wallet/yenten \
--enable-upnp-default --without-gui --disable-tests \
--with-boost=/home/wallet/common \
--with-boost-libdir=/home/wallet/common/lib
~/yenten-1.3.1 $ make
~/yenten-1.3.1 $ make install
~/yenten-1.3.1 $ ls -l /home/wallet/yenten/bin
合計 99960
-rwxr-xr-x. 1 wallet wallet 22906774  1月 22 15:09 2018 yenten-cli
-rwxr-xr-x. 1 wallet wallet 79448719  1月 22 15:09 2018 yentend

補足

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

~ $ export LD_LIBRARY_PATH=/home/wallet/common/lib
~ $ ./yentend
~ $ ./yenten-cli stop

もしくは

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yentend
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli stop

Yentenを起動する

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

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

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yentend
Error: To use the "-server" option, you must set a rpcpassword in the configuration file:
/home/wallet/.yenten/yenten.conf
It is recommended you use the following random password:
rpcuser=yentenrpc
rpcpassword=54nkQD5JC8A2N6PAUYYRzpR1ghkZLuZJVNEyKRYcHd59
(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 "Yenten Alert" admin@foo.com

2-2. yenten.confの作成

/home/ユーザ名/.yenten配下にデータが作成されたため、設定ファイルのyenten.confを作成します。rpcxxxの部分は自分の環境に合わせてください。
1時間経っても同期が始まらない場合は、下記サイトよりノードのIPアドレスを取得し、addnodeを設定してください。
https://cryptoservices.net/en/nodes-yenten

~ $ vi /home/ユーザ名/.yenten/yenten.conf
rpcuser=user
rpcpassword=pass
rpcallowip=127.0.0.1
rpcport=11100
daemon=1
server=1
gen=0
addnode=追加ノードIPアドレス

2-3. Yentenの起動

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

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yentend
Yenten server starting
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli getinfo
{
    "version" : 1030100,
    "protocolversion" : 70006,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 0,
    "timeoffset" : 0,
    "connections" : 0,
    "proxy" : "",
    "difficulty" : 0.00006103,
    "testnet" : false,
    "keypoololdest" : 1516601896,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00001000,
    "errors" : ""
}

ウォレットを停止するには、yenten-cli stopを実行します。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli stop
Yenten server stopping

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

ウォレット(wallet.dat)を暗号化するには、yenten-cli encryptwalletを実行します。
※暗号化すると送金等一部の処理に暗号化時に指定したパスフレーズが必要となりますのでご注意ください。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli encryptwallet "passphrase"
wallet encrypted; Yenten server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup.

暗号化後にはYentenが停止するため、再度起動が必要です。
正しく暗号化されたことを確認するため、yenten-cli walletpassphrase でウォレットのパスワードロックを一時的に解除します。エラーが出力されなければ成功です。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yentend
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli walletpassphrase "passphrase" 10

2-5. 受け取り用のアドレスを作る

yenten-cli getnewaddress で受け取り用のアドレスを作ります。

~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli getnewaddress ikuyani
Yh5Q12DsQsF6xPaQXByPdh3HcyjfYgZEz2
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./yenten-cli getaddressesbyaccount ikuyani
[
    "Yh5Q12DsQsF6xPaQXByPdh3HcyjfYgZEz2"
]

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