こんにちわ、ゆあです☆
趣味は糖質制限と筋トレで、ビットバンクではウォレットまわりの開発を中心にやってます(๑˃̵ᴗ˂̵)و
技術ブログ第一弾なので緊張してます!!!
技術ブログをはじめます
ビットバンクで取り扱っている仮想通貨であるモナコインの公開ノード(Monacoind & ElectrumX)を設置しました
electrum-mona.bitbank.cc
tcp 50001
tcp/ssl 50002
今回設置にあたり手順を作ったのでそれをまとめました
※ ElectrumのモナコインクライアントはElectrum-Mona公式ページから取得できます
※ Electrumは有志が作成したオープンソースのウォレットでビットバンクが動作保証するものではありません
そもそもElectrum(エレクトラム)とは?
- 一言で言えばブロックチェーンをダウンロードせずに自分で秘密鍵を管理するタイプのオープンソースなお財布アプリ
- クライアント・サーバーモデル
- クライアントは秘密鍵を保有して残高管理するウォレットと呼ばれる機能を持つ
- クライアントはPC版(Windows/MacOSX/Linux)とモバイル版(android)があります
- サーバーはブロックチェーンを分析してデータベースを構築し残高取得に特化した機能を持つ(秘密情報をサーバーとやり取りしませんがブロックチェーンを持っているので信用は必要)
- サーバーには2つ実装があり、bitcoin用に作られた純正のElectrum-serverとアルトコイン向けに作られたElectrumXがあります
- 信用できるサーバーが安定して稼働していることでElectrumユーザーはウォレット機能に手軽にアクセスできます
ElectrumXの構成要素
モジュール | 説明 |
---|---|
linux | サーバーOS |
python3 | electrumx実行言語 |
rocksdb | facebookが開発したleveldbを改良したデータベース |
monacoind | モナコイン本体 |
実際のインストール手順
概要
- linuxはcentos7を採用します
- python3はiusのリポジトリを使います
- rocksdbはgithubからソースを取得、コンパイル
- monacoinはgithubからソースを取得し、コンパイル
インストール手順
開発に必要なパッケージをインストールします
sudo yum install -y epel-release
sudo yum install -y Development Tools
sudo yum install -y snappy snappy-devel zlib zlib-devel bzip2-libs bzip2-devel cmake make leveldb leveldb-devel gflags-devel
sudo yum install -y boost boost-devel openssl-devel libevent-devel libdb-cxx libdb-cxx-devel
python3をインストールします
- iusリポジトリの登録
- python一式のダウンロード
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
rocksdbのインストール
- githubからソースコードのダウンロード
- pythonモジュールのpython-rocksdbがテストをしたバージョンは5.3と書いてあるので5.3.6をダウンロード
- ソースコードのコンパイルとインストール
git clone -b v5.3.6 https://github.com/facebook/rocksdb.git
cd rocksdb
make shared_lib
sudo make install-shared INSTALL_PATH=/usr
sudo pip3.6 install python-rocksdb
sudo ldconfig
ElectrumXのインストール
- githubからソースコードをダウンロードとインストール
curl https://codeload.github.com/kyuupichan/electrumx/tar.gz/1.1.1 > electrumx-1.1.1.tar.gz
tar zxvf electrumx-1.1.1.tar.gz
cd electrumx-1.1.1
sudo python3.6 ./setup.py install
Monacoindのインストール
- githubからソースコードをダウンロード
- ソースコードのコンパイル(ウォレット機能は使用しないので無効にしています)とインストール
curl https://codeload.github.com/monacoinproject/monacoin/tar.gz/monacoin-0.14.2 > monacoin-monacoin-0.14.2.tar.gz
tar zxvf monacoin-monacoin-0.14.2.tar.gz
cd monacoin-monacoin-0.14.2
./autogen.sh
./configure --disable-wallet
make
sudo make install
設定手順
- 運用はcentos標準のsystemdを利用します
- 外部に公開するTCPのポートは9401,50001,50002です
monacoindの設定
以下の設定ファイルを/etc/systemd/system/monacoin.serviceに設置します
[Unit]
Description=monacoin daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/monacoind -server -txindex=1 -rpcuser=monacoin -rpcpassword=monacoin23130916 -rpcport=9402
WorkingDirectory=/home/centos
KillMode=process
Restart=always
User=centos
Group=centos
[Install]
WantedBy=multi-user.target
electrumxの設定
以下の設定ファイルを/etc/systemd/system/electrumx.serviceに設置します
[Unit]
Description=Electrumx
After=network.target
[Service]
EnvironmentFile=/etc/electrumx.conf
ExecStart=/usr/bin/electrumx_server.py
User=centos
Group=centos
LimitNOFILE=8192
TimeoutStopSec=30min
[Install]
WantedBy=multi-user.target
以下のファイルを/etc/electrumx.confに設置します
COIN = Monacoin
NET = mainnet
DB_DIRECTORY = /home/centos/DB
DAEMON_URL = http://monacoin:monacoin23130916@localhost:9402/
DB_ENGINE = rocksdb
TCP_PORT = 50001
SSL_PORT = 50002
HOST = 0.0.0.0
MAX_SEND = 1024000
SSL_CERTFILE=/etc/electrumx/server.crt
SSL_KEYFILE=/etc/electrumx/server.key
SSL接続用の証明書を作成します
発行元の検証機構がないので自己署名の証明書で大丈夫です
以下のスクリプトで作成します
#!/bin/bash
openssl genrsa 2048 > /tmp/cert.key
openssl req -new -key /tmp/cert.key <<EOF > /tmp/req.csr
JP
Tokyo
Town
Company
Section
EOF
openssl x509 -days 3650 -req -signkey /tmp/cert.key < /tmp/req.csr > /tmp/cert.pem
sudo cp /tmp/cert.pem /etc/electrumx/server.crt
sudo cp /tmp/cert.key /etc/electrumx/server.key
うごかしてみる
systemctlで実行できます
sudo systemctl start monacoin
sudo systemctl start electrumx
実行ログはjournalctl -fで表示できます
journalctl -f -u electrumx
最後に
Electrumの通信プロトコルは以下のURLで公開されているのでウォレットの実装をする場合などには参考になるかと思います
- http://docs.electrum.org/en/latest/protocol.html
- https://github.com/kyuupichan/electrumx/blob/master/docs/PROTOCOL.rst
ーーーーーーーーーー
事業拡大の為、bitbankでは全職種の採用を積極的に行っております!気軽にお問い合わせください!