Y

testnetで使用するBTCとXCPを入手する

f:id:yzono:20141230182053j:plain

はじめに

前回bitcoindをtestnetに接続しましたが。今回はその環境で利用するアドレス、BTC・XCPなどの準備について書きます。

目次

  • アドレス作成
  • BTC、XCP入手
  • 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"}

blockrトランザクションが確認できます。

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"}}

Testnet

TP's TestNet Faucet

Bitcoin Testnet on Blockr.io

How do I get XCP on Counterparty testnet?

18 Myths about Counterparty