読者です 読者をやめる 読者になる 読者になる

Counterparty Send APIを使ってAssetを送信する(再)

f:id:yzono:20141224043035j:plain

はじめに

以前、Assetを送信の試みて失敗しましたが、再チャレンジして成功しましたので今回はそのことについて書きます。

目次

  • 現在の環境構成
  • 前回の失敗の原因
  • Bitcoinアドレス生成
  • Counterwallet.ioから生成したアドレスにAssetを送信
  • Counterpartyd Send APIを使ってAssetを送信

現在の環境構成

現在私の環境には、"counterpatyd"と"counterblockd"が動いており、"counterwallet"は動いていません。"counterwallet"は、公式のcounterwalletを利用しています。

前回の失敗の原因

前回はcounterwallet.ioで生成したpassphraseから秘密鍵を取り出し、それを利用してアセットの送信を試みましたが、フォーラムで問い合わせたところ、できなそうです。(pybtctoolのバグかも.. と書いている人がいますが不明です)

今回はもっとシンプルに、自分のbitcoindでBitcoinアドレスを生成して、そこにAssetを送信して、その後に送り返すテストをやります。

Bitcoinアドレス生成

Bitcoinアドレス生成

$ bitcoind getnewaddress
1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy

Counterwallet.ioから生成したアドレスにAssetを送信

公式のcounterwalletから生成したアドレスに対してアセットを送信してください。

送信後、残高を確認してください。

$ 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_balances", "params":{"filters": {"field": "address", "op": "==", "value": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}}}'

{"result": [{"quantity": 10, "asset": "XZCOIN", "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}]

Counterpartyd Send APIを使ってAssetを送信

Assetの送信には送金手数料分のビットコインが必要になります。送信元のアドレスにビットコインを準備してください。以下コマンドで残高が確認できます。

$ bitcoind listreceivedbyaddress 0 true

counterpartyd sendコマンドで、トランザクションの作成、サイン、ブロードキャストが行われます。

counterpartyd send --source "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy" --destination "1GfcF1LSQagv65VQ1n66UAn9NF1TKmepcM" --quantity 1 --asset "XZCOIN"
Status: Running v9.49.1 of counterpartyd.
Status: Connecting to database.
Transaction (unsigned): 0100000001049f9f3b33f4442d6b8df92c4da13d37256c36811a7b37fd59f73937275d6772000000001976a914631ac3fdba7d888adc1a8e928092e95eed08341f88acffffffff03771e0000000000001976a914abd71c855a0d15d2fe83c66da0ed52c7b2d81f1f88ac771e000000000000695121033f7be9aef4217f4664e8019784f3c22940aab3656aeaa64435cbaa4337b92315210237b7c575d95a6255bff974b1bca903dfbd55d7457d1a48ae08cc99ca46e4c55c2102d87f26c0a4a56e0172516cdf7139f383d93e76d17455b66f45e41404a93643d353ae42a90200000000001976a914631ac3fdba7d888adc1a8e928092e95eed08341f88ac00000000
Sign and broadcast? (y/N) y
Transaction (signed): 0100000001049f9f3b33f4442d6b8df92c4da13d37256c36811a7b37fd59f73937275d6772000000006a47304402206fdd056aec4d967baf3677739ad30c56af7e3a4cf8dafb56f2376bb3b114c5b202205c5d63aaaba20784158078bff2089787d583329d926c5a1081704df8e17c2be7012102d87f26c0a4a56e0172516cdf7139f383d93e76d17455b66f45e41404a93643d3ffffffff03771e0000000000001976a914abd71c855a0d15d2fe83c66da0ed52c7b2d81f1f88ac771e000000000000695121033f7be9aef4217f4664e8019784f3c22940aab3656aeaa64435cbaa4337b92315210237b7c575d95a6255bff974b1bca903dfbd55d7457d1a48ae08cc99ca46e4c55c2102d87f26c0a4a56e0172516cdf7139f383d93e76d17455b66f45e41404a93643d353ae42a90200000000001976a914631ac3fdba7d888adc1a8e928092e95eed08341f88ac00000000
Hash of transaction (broadcasted): ac2e92b74008f048d94c29b51ef8caf96b267af07677c8bfe7bb0fb0bf99fa7e

"method":"get_balances"コマンドで確認すると残高が"10"から"9"に減っていることがわかります。

$ 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_balances", "params":{"filters": {"field": "address", "op": "==", "value": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}}}'

{"jsonrpc": "2.0", "id": 0, "result": [{"address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy", "asset": "XZCOIN", "quantity": 9}]}

まとめ

CounterpartydのAction/Write APIにはSend以外にも多数あります。次回投稿します。

参考

Original Bitcoin client/API calls list