仮想通貨のZoinの公式ウォレットアプリケーションのデーモンをRaspberry Piで動かす方法です。公式のGitHubにてLinux版のQTが公開されていますが、サーバ用途のためデーモンとして動かしたいため自分でビルドします。
なお取引が活発になるとウォレットのデータサイズも大きくなるため、低容量のMicroSDでの運用はオススメしません。
※ソフトウェアのインストール・実行は自己責任です。特に仮想通貨はお金の絡むことなので、十分にお気をつけください。また基本的なことは知っている、もしくは調べられる人向けに書いているため、コマンドなど細かく説明していません。
<環境>
- 型番:Raspberry Pi 3 Model B
- OS:Rasbian Stretch
- バージョン:0.9.0.2
https://github.com/zoinofficial/zoin
https://github.com/zoinofficial/zoin/archive/v0.9.0.2.tar.gz
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
ソースコードからZoinをビルドする
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. Zoinのビルド
※ビルド中にエラーとなる場合は「Raspberry Piでウォレットビルド中にエラーとなる場合」を参照
~ $ wget https://github.com/zoinofficial/zoin/archive/v0.9.0.2.tar.gz ~ $ tar xvzf v0.9.0.2.tar.gz ~ $ cd zoin-0.9.0.2/src/ ~ /zoin-0.9.0.2/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 ~ /zoin-0.9.0.2/src $ ls -l zoind -rwxr-xr-x 1 wallet wallet 63525548 Dec 28 01:52 zoind
補足
今回のように任意の場所にライブラリを配置し、かつ、/etc/ld.so.confにパスを通さない場合、Zoinを起動する際には環境変数LD_LIBRARY_PATHにライブラリのパスを設定しなければなりません。
~ $ export LD_LIBRARY_PATH=/home/wallet/common/lib ~ $ ./zoind ~ $ ./zoind stop
もしくは
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind ~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind stop
Zoinを起動する
2-1. Zoinの初回起動(エラー)
zoindを実行するとZoinのデーモンが起動しますが、設定ファイルが無いため、エラーになります。ただ初回起動時にデータのディレクトリを作成するため、エラーでもよいので起動します。
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind Error: To use zoind, you must set a rpcpassword in the configuration file: /home/wallet/.zoin/zoin.conf It is recommended you use the following random password: rpcuser=zoinrpc rpcpassword=Byd1diAUxngASUURrDUQnswdAtR3cn2rNZtMU9xCT1xS (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 "Zoin Alert" admin@foo.com
2-2. zoin.confの作成
/home/ユーザ名/.zoin配下にデータが作成されたため、設定ファイルのzoin.confを作成します。rpcxxxの部分は自分の環境に合わせてください。
~ $ vi /home/ユーザ名/.zoin/zoin.conf rpcuser=user rpcpassword=pass rpcallowip=127.0.0.1 rpcport=9882 daemon=1 server=1 gen=0
2-3. Zoinの起動
設定ファイル作成後に再度zoindを実行します。実行後は起動したことを確認するため、zoind getinfoを実行します。
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind Zoin server starting ~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind getinfo { "version" : 90002, "protocolversion" : 90041, "walletversion" : 60000, "balance" : 0.00000000, "unconfirmedbalance" : 0.00000000, "immaturebalance" : 0.00000000, "blocks" : 240, "timeoffset" : 0, "connections" : 1, "proxy" : "", "difficulty" : 0.00026445, "testnet" : false, "keypoololdest" : 1514426400, "keypoolsize" : 101, "paytxfee" : 0.00000000, "mininput" : 0.00001000, "errors" : "" }
Zoinを停止するには、zoind stopを実行します。
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind stop Zoin server stopping
2-4. ウォレットの暗号化
ウォレット(wallet.dat)を暗号化するには、zoind encryptwalletを実行します。実行後にはZoinが停止するため、再度起動が必要です。暗号化すると送金等一部の処理にパスワードが必要となります。
※Linux上ではコマンド履歴が残るため、Windowsで暗号化したwallet.datをLinuxへアップロードして使う、.bash_historyを削除するなど対策をすることをおススメします。
~ $ LD_LIBRARY_PATH=/home/wallet/common/lib ./zoind encryptwallet パスワード wallet encrypted; zoin 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 ./zoind
参考になりましたらZoinを寄付していただけると幸いです。
Zoinアドレス:ZbHgZoC7NKm9JWFgQ18rWaJePUVjYt7AaL