testnetで使用するBTCとXCPを入手する
はじめに
前回bitcoindをtestnetに接続しましたが。今回はその環境で利用するアドレス、BTC・XCPなどの準備について書きます。
目次
アドレス作成
ビットコインアドレス作成
$ bitcoind --datadir=/home/xcp/.bitcoin-test getnewaddress mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m
BTC、XCP入手
BTC入手
TP's TestNet Faucetにアクセスして作成したビットコインアドレスを入力してください。
blockrでアドレスの残高が確認できます。
$ bitcoind --datadir=/home/xcp/.bitcoin-test listaddressgroupings [ [ [ "mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m", 0.12000000, "" ] ] ]
XCP入手
XCPはBTCをburnすることで入手できます。(現在burnできるのはtestnetだけです)
注意testnetではcounterpartyのバージョンが上がるとBTC以外のアセットは初期化されます。XCPも初期化対象です(どうして?)。そこは考慮してburnしてください。
curl http://127.0.0.1:14000/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":"create_burn", "params":{"source":"mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m", "quantity":"10000000"}}' ..sign、broadcastは省略。ブロードキャスト後のtx_hashは以下です。 {"result": "d909777307219876f6f2244a24a24a1fe72cb8bd49e9f9db3283afcc2e55d374", "id": 0, "jsonrpc": "2.0"}
blockrでトランザクションを確認できます。(blockrのUI/UXすごく良い。理解しやすい)
残高を確認するとBTCがburnされ減っています。その分XCPが生成されていることが分かります。
$ bitcoind --datadir=/home/xcp/.bitcoin-test listaddressgroupings [ [ [ "mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m", 0.01990000, "" ] ] ]
curl http://127.0.0.1:14000/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": "mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m"}}}' {"result": [{"address": "mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m", "quantity": 14991974826, "asset": "XCP"}], "id": 0, "jsonrpc": "2.0"}
XCP送信テスト
最後にXCP送信テストを行います。送信先はcounterpartydの別インスタンス(testnet.counterwallet.io)に対して送信します。
testnet.counterwallet.ioでアカウントを作成してください。
自分のインスタンスからtestnet.counterwallet.ioに対して送金します。
curl http://127.0.0.1:14000/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":"create_send", "params":{"source":"mo1kgfktQfRaLMR5SvehDMHLa9Cu7xJp4m", "destination":"n2MxM8syUWd7qtN9CsN3DcPZWt4T946Dho", "quantity":5000000000, "asset":"XCP"}}' ..sign、broadcastは省略。ブロードキャスト後のtx_hashは以下です。 {"id": 0, "jsonrpc": "2.0", "result": "52ab4f28ae70c31f6692240ebd747405e3bc348ab1b3832c5a16446e80e7faed"}
curl http://127.0.0.1:14000/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": "n2MxM8syUWd7qtN9CsN3DcPZWt4T946Dho"}}}' {"id": 0, "jsonrpc": "2.0", "result": [{"address": "n2MxM8syUWd7qtN9CsN3DcPZWt4T946Dho", "asset": "XCP", "quantity": 5000000000}]}
50XCPが送信できていることが確認できます。
まとめ
今回はtestnetでのBTC、XCPの入手と送信を行いました。数万円単位のアセットを気楽に送信できるのが良いです。ただし、Confirmationの時間がmainnetの場合平均10分ですが、testnetの場合はそれ以上(20分)ぐらいかかります。
burnした時のXCP/BTCのレートが現在と異なる気がします。もしかしたら過去の時点で固定されているのかもしれません。確認してアップデートします。
参考
mainnetでburnすると"too late"エラーが発生します。
$ curl http://127.0.0.1:4000/api/ --user rpc:xcppw1234 -H 'Content-Type: application/json; chapplication/json, text/javascript' --data-binary '{"jsonrpc":"2.0", "id":0, "method":"create_burn", "params":{"source":"1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy", "quantity":10000000}}' {"id": 0, "jsonrpc": "2.0", "error": {"code": -32000, "data": {"args": [["too late"]], "message": "['too late']", "type": "ComposeError"}, "message": "Server error"}}