CounterpartydをさくらVPSにインストールしてAPIを実行する
はじめに
CounterpartydをさくらインターネットVPSにインストールしてCounterpartyAPIを実行するまでの手順です。
Counterpartyを使ったサービスを開発する人への情報共有を目的とします。
Counterpartyで何ができるのか知りたい人は、ビットコインを語ろう2.0を読むとわかりやすいです。
※注意 セットアップ時に使用するIDとパスワードは運用時は変更してください。
目次
- さくらインターネットVPS契約、Ubuntuインストール
- Bitcoind、Counterpartydインストール
- API実行
さくらインターネットVPS契約、Ubuntuインストール
Counterpartyは、LinuxではUbuntuのみをサポートしているためUbuntu環境を用意します。今回はさくらインターネットVPSを契約して、Ubuntuをカスタムインストールします。
(1) さくらVPSの1Gタイプを契約
※ 2週間は無料で利用できますが、無料お試し期間中は帯域制限があるためブロックチェーンの同期が遅くなります。
※ ブロックチェーンを保存するため少なくとも100GBはある方が良いです。
(2) UbuntuをカスタムOSインストール
さくらインターネットのマニュアルに従いOSインストールしてください。途中でユーザーを作成しますが、ユーザー名は"xcp"にしてください。
Bitcoind、Counterpartydインストール
(1) Bitcoindインストール、bitcoind実行(ブロックチェーン同期実行)
cd ~ sudo apt-get install software-properties-common python-software-properties sudo add-apt-repository ppa:bitcoin/bitcoin sudo apt-get update sudo apt-get install bitcoind mkdir -p ~/.bitcoin/ echo -e "rpcuser=rpc\nrpcpassword=1234\nserver=1\ndaemon=1\ntxindex=1" > ~/.bitcoin/bitcoin.conf
bitcoind
bitcoind getinfo | grep blocks
ここの数字と一致すれば同期完了です。同期完了まで待ちます。
さくらVPS1Gタイプの場合のBitcoinブロックチェーンの同期時間は2日以上かかりました...
tail -f /home/xcp/.bitcoin/debug.log
debug.logにログは出力されます。
(2) Counterpartydインストール、Counterpartyd実行
cd ~ sudo apt-get -y update sudo apt-get -y install git-core python3 git clone https://github.com/CounterpartyXCP/counterpartyd_build ~/counterpartyd_build cd ~/counterpartyd_build sudo python3 setup.py --with-bootstrap-db
counterpartyd server
以下は起動時のエラー例です。
$ counterpartyd server Status: Running v9.49.1 of counterpartyd. Status: Checking version. Traceback (most recent call last): File "/home/xcp/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 648, in <module> util.version_check(bitcoin.get_block_count()) File "/home/xcp/counterpartyd_build/dist/counterpartyd/lib/bitcoin.py", line 65, in get_block_count return int(util.rpc('getblockcount', [])) File "/home/xcp/counterpartyd_build/dist/counterpartyd/lib/util.py", line 1059, in rpc raise BitcoindRPCError(str(response.status_code) + ' ' + response.reason) lib.util.BitcoindRPCError: 401 Authorization Required
Bitcoindとの接続が正しくありません。以下ファイルを修正してください。
/home/xcp/.config/counterpartyd/counterpartyd.conf
$ counterpartyd server Status: Running v9.49.1 of counterpartyd. Status: Checking version. Status: Acquiring lock. Status: Connecting to database. Traceback (most recent call last): File "/home/xcp/counterpartyd_build/dist/counterpartyd/lib/util.py", line 376, in connect_to_db raise exceptions.DatabaseError('Integrity check failed.') lib.exceptions.DatabaseError: Integrity check failed. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/xcp/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 660, in <module> db = util.connect_to_db() File "/home/xcp/counterpartyd_build/dist/counterpartyd/lib/util.py", line 379, in connect_to_db except exceptions.DatabaseIntegrityError: AttributeError: 'module' object has no attribute 'DatabaseIntegrityError'
SqlitedbのIntegrity checkが失敗しています。以下のようにdbファイルを作り直してください。
$ sqlite3 mydata.db ".dump" | sqlite3 new.db
API実行
$ curl http://127.0.0.1:4000/api/ --user rpc:xcppw1234 -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json, text/javascript' --data-binary '{"jsonrpc":"2.0","id":0,"method":"get_running_info"}'
{"id": 0, "jsonrpc": "2.0", "result": {"db_caught_up": true, "version_major": 9, "version_revision": 1, "running_testnet": false, "running_testcoin": false, "bitcoin_block_count": 288792, "last_block": {"block_time": 1418729720, "ledger_hash": "396e6c9be5b6e99dacc8a0f1cc1213812bc0ae552b0ce457d41327d90c9846df", "previous_block_hash": "0000000000000000001e79a361bb06c861ec527e9d57e3cdf176b6fdb0784e4b", "block_hash": "000000000000000008a3b7780f566e2f8ddb1378f758cee28e6857bf4cf57c3b", "txlist_hash": "e3abb6ae9f22e51afcfab5c7da1067ae3a6815c29c369cdfed26876975fae6ee", "block_index": 334553, "difficulty": "40007470271.2713"}, "last_message_index": 479193, "version_minor": 49}}
まとめ
BitcoinにはBlockchain.infoやcoinbaseなどが便利なAPIを提供しています。 Counterpartyでは同様のサービスとしてBlockscanがありますが、アセットの残高を見るなど参照系のAPIしか提供していません。今後のインフラ整備に期待です。
今回はさくらVPSを利用しましたが、ブロックチェーンの同期に時間がかかりました。AWSを使いセットアップ時はスペックの高いインスタンスを使うなどすれば短縮できるかもしれません。
またAPIを試すだけならtestnetを利用したり、counterparty.ioが提供しているホストを使えばよいかもです。
私もまだ分からないことばかりで。間違い等のご指摘頂けると助かります。
参考URL
Build Counterpartyd http://counterparty.io/docs/build-system/
ビットコインを語ろう2.0 http://coinandpeace.hatenablog.com/
さくらのVPS http://vps.sakura.ad.jp/
blockscan https://www.blockscan.com/