Counterparty Send APIを使ってAssetを送信する
はじめに
前回は、PassPhraseから秘密鍵を取得しました。今回はその秘密鍵を利用してCounterparty Send APIを使ってAssetを送信します。
ただし送信には他にもいくつか準備が必要です。順を追って説明します。
Counterpartyを使ったサービスを開発する人への情報共有を目的とします。
目次
Send API実行
RPC経由ではなく直接counterpartydコマンドを実行します。
"Public key (hexadecimal) or Private key (Wallet Import Format):"が表示されたら秘密鍵を入力してください。
$ counterpartyd send --source "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2" --destination "1GfcF1LSQagv65VQ1n66UAn9NF1TKmepcM" --quantity 1 --asset "XZCOIN" Status: Running v9.49.1 of counterpartyd. Status: Connecting to database. Source not in backend wallet. Public key (hexadecimal) or Private key (Wallet Import Format): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
しばらくすると以下エラーが表示されます。(dbチェックに時間がかかる場合があります。毎回チェックする必要はないのでスクリプトを編集して、該当部分をコメントアウトしても構いません。とりあえずは)
Traceback (most recent call last): File "/home/xcp/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 675, in <module> args.unsigned) File "/home/xcp/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 112, in cli unsigned_tx_hex = util.api(method, params) File "/home/xcp/counterpartyd_build/dist/counterpartyd/lib/util.py", line 66, in api raise RPCError('{}'.format(response_json['error'])) lib.util.RPCError: {'code': -32000, 'data': {'type': 'BitcoindRPCError', 'args': ['Unknown RPC command: `searchrawtransactions`. Either, switch to jmcorgan (recommended), use Insight, or use sochain or blockr.'], 'message': 'Unknown RPC command: `searchrawtransactions`. Either, switch to jmcorgan (recommended), use Insight, or use sochain or blockr.'}, 'message': 'Server error'}
"searchrawtransactions"というRPCコマンドが無いというエラーです。counterpartyd4.7からマルチシグネチャーを取り入れたため、bitcoindにパッチを適用する必要があります。"switch to jmcorgan (recommended)"とはそれを指しています。
bitcoind再インストール(jmcorgan-addrindexパッチ適用バージョン)
(1) bitcoindアンインストール
sudo apt-get remove bitcoind
(2) パッチ適用済みbitcoindインストール
ripplerの説明のコピペになりますが以下を実行してください。
sudo apt-get update -y; sudo apt-get upgrade -y sudo apt-get install wget wget https://www.dropbox.com/s/9v2yxpss1yxhbfx/bitcoin.addrindex_0.9.2-0_amd64.deb sudo apt-get install libboost-chrono-dev libboost-filesystem1.54-dev libboost-program-options-dev libboost-python-dev libboost-system1.54-dev libboost-system-dev libboost-thread1.54.0 -y wget https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin/+files/libdb4.8_4.8.30-trusty1_amd64.deb wget https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin/+files/libdb4.8%2B%2B_4.8.30-trusty1_amd64.deb sudo dpkg -i libdb4.8*.deb wget https://www.dropbox.com/s/9v2yxpss1yxhbfx/bitcoin.addrindex_0.9.2-0_amd64.deb sudo dpkg -i bitcoin.addrindex_0.9.2-0_amd64.deb
(3) 設定ファイル修正
addrindex=1 # この1行を追加してください。
(4) Blockchainデータをreindex
/usr/local/bin/bitcoind -reindex
/usr/local/bin/bitcoind getinfo { "version" : 90200,
バージョンが0.9.2になっているか確認してください。インデックスが完了するまで数時間待ちます。私の環境では6時間かかりました。
API再実行、エラー発生
APIを再実行すると以下エラーが出ます。256bitの秘密鍵ではなく、Wallet Import Format(WIF)が必要になるからです。
raise exceptions.TransactionError('invalid private key')
Private key (Wallet Import Format)取得後、再実行
http://gobittest.appspot.com/PrivateKeyでWIFを取得して再実行したら別のエラーが発生しました。
counterpartyd send --source "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2" --destination "1GfcF1LSQagv65VQ1n66UAn9NF1TKmepcM" --quantity 1 --asset "XZCOIN" Status: Running v9.49.1 of counterpartyd. Status: Connecting to database. Source not in backend wallet. Public key (hexadecimal) or Private key (Wallet Import Format): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Sign and broadcast? (y/N) y Traceback (most recent call last): File "/home/xcp/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 675, in <module> args.unsigned) File "/home/xcp/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 125, in cli signed_tx_hex = bitcoin.sign_tx(unsigned_tx_hex, private_key_wif=private_key_wif) File "/home/xcp/counterpartyd_build/dist/counterpartyd/lib/bitcoin.py", line 585, in sign_tx raise exceptions.TransactionError('Could not sign transaction with pybtctool.') lib.exceptions.TransactionError: Could not sign transaction with pybtctool.
まとめ
Assetの送信はできませんでした。解決策を質問したところいくつか方法があるそうです。次回書きます。
参考
Counterparty Federated Node and counterpartyd with Bitcoin-Qt and addrindex Patch
rippler/btc-jmcorgan-addrindex-v0.9.2.0-fca268c-beta
rippler/btc-jmcorgan-addrindex-v0.9.2.0-fca268c-beta