分散型仮想通貨取引所「BitShares」の起動までの手順

  • 5
    Like
  • 0
    Comment

BitSharesについて

BitSharesとは、仮想通貨の取引所やウォレット機能などを備えた分散型システムの名称です。

  • 非中央集権的システムであり取引所運営会社がデータ消失してコインが消えたりしない(マウントゴックス事件怖い)
  • OSSとしてシステムが公開されている。
  • GUIで簡単に独自通貨を発行できる。
  • UIはReact

非中央集権的であることが特徴で推されているのですが、独自通貨を簡単に発行できるっていうのも凄いと思いますね。誰でも簡単にICO的なことができるわけですから。

こういった特徴を利用して国内でもICO的に開発資金を募るプロジェクトが生まれています。
最近ICOプラットフォームのcomsaが発表されましたが、BitSharesでなら個人や小規模な団体でも導入できそうです。

https://ninjasoul.net/

マシン要件

OS: Ubuntu16.04
メモリ: 最低8GB以上、できればもっと
CPU: 2コア以上
ディスク: 20GB以上の空きはあった方が良い

注意:
初回起動に非常にCPUを消費するため、クラウドで多コアのハイスペックマシンを借りてすぐに終わらせようと思うと痛い目を見ます。ブロックチェーン処理の性質的なところが原因と思うのですが、基本的にコア数に応じてスケールしません。ですので、コア数を2つ以上増やしても大きな効果は見込めません。

bitshares-coreの起動

bitshares-coreがBitSharesの本体ともいえるサーバー・ソフトウェアです。どの仮想通貨にも似たようなものがあり、bitcoinならbitcoind、monacoinならmonacoindに相当するものです。

https://github.com/bitshares/bitshares-core

たぶんREADME通りに起動しようとしてもうまくいかないです。なのでメモとしてこれを書いています。

OSはUbuntu16.04が推奨されているので、Ubuntu16.04を使う。

1. 必要なファイルをインストール

apt-get install -y wget gcc g++ make automake autoconf cmake git libtool 
libboost-all-dev libssl-dev

2. openssl1.0系の手動インストール

bitshares-coreはopenssl1.1系では動作しません。このため手動インストールする必要があります。

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar zxf openssl-1.0.2l.tar.gz
cd openssl-1.0.2l
CFLAGS=-fPIC ./config shared --prefix=/usr/local/openssl-1.0
sudo make install

3. bitshares-coreのビルド

developブランチは不安定なのでmasterブランチを使うか最新リリースタグをチェックアウトします。
cmakeでさきほどインストールしたopenssl1.0を指定します。
かなり時間がかかります。30分以上かかるかもしれません。

git clone https://github.com/bitshares/bitshares-core.git
cd bitshares-core
git checkout 2.0.170710 && git submodule update --init --recursive

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DOPENSSL_INCLUDE_DIR=/usr/local/openssl-1.0/include \
    -DOPENSSL_SSL_LIBRARY=/usr/local/openssl-1.0/lib/libssl.so \
    -DOPENSSL_CRYPTO_LIBRARY=/usr/local/openssl-1.0/lib/libcrypto.so
make witness_node cli_wallet delayed_node

4. bitsharesノードの起動

初回の起動はブロックチェーンの同期が行われます。これには半日くらいを要し、メモリも初回起動の場合は6.5GBほど使います。
いくつかオプションがついていますが、このオプションなしだと32GBメモリがあっても足りませんでした。
同期が終わるまではCPUをかなり消費します。

./programs/witness_node/witness_node --partial-operations true --max-ops-per-account 100

2回め以降の起動ではメモリ使用量やCPU消費も少なくなります。

注意

  1. witness_nodeはCtrl+Cで止められますが、終了にもかなり時間がかかります。2回Ctrl+Cをするとすぐに止まりますが、次回起動時にまたデータの同期が発生してとてつもない時間を使うことになりますので注意が必要です。

dockerで起動

Dockerfileを作りました。Docker好きな方はこちらで。
VOLUME周りはご自身で設定をお願いします。

https://github.com/dotneet/bitshares-core-docker

APIで通信

こちらのライブラリでbitshares-coreのAPIを簡単に扱うことができます。
BitShares本体の中の人が書いているライブラリでAPIのドキュメントは公式ドキュメント内にあります。

https://github.com/xeroc/python-bitshares

所持している仮想通貨を取得する例

from bitshares.account import Account
account = Account("xeroc")
print(account)
print(account.balances)

通信するにはwitness_nodeに--rpc-endpoint 127.0.0.1:8090にオプションを付けておく必要があります。たぶん。

その他

UIはこちらのリポジトリになっていて、これと合わせれば自分で取引所的なものを開設できそうです。
https://github.com/bitshares/bitshares-ui

そのうちこちらも試してみたいと思います。