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

Counterpartyd create_dividend APIを使って配当する(独自アセットで支払う)

f:id:yzono:20141227010741j:plain

はじめに

前回は自分で作成したアセット"XZCOIN"の売り注文を自分のサーバーで実行して、その注文が自分のサーバーだけでなく、別のcounterpartydインスタンス(counterwallet.io)に反映されていることを確認しました。このデジタル分散型取引(Asset exchange)はCounterpartyが提供する革新的な機能の一つです。

今回はCounterpartyが持つ別の機能"配当(dividend payments)"について書きます。今回使用するアセットは"XSTAR"です。

目次

  • 使用するアドレスと残高
  • create_dividend API実行
  • 結果確認

使用するアドレスと残高

配当を実行するアドレス *XSTARのオーナー

(ビットコインインスタンス)自分のサーバー

(ビットコインアドレス)1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy

(保有しているアセット)

$ 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": [{"asset": "XCP", "quantity": 120900000, "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}, {"asset": "XSTAR", "quantity": 70, "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}, {"asset": "XZCOIN", "quantity": 99495, "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}], "id": 0, "jsonrpc": "2.0"}

配当を受け取るアドレス(1)

(ビットコインインスタンス)自分のサーバー

(ビットコインアドレス)1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ

(保有しているアセット)

$ 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": "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ"}}}'

{"result": [{"asset": "XSTAR", "quantity": 10, "address": "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ"}, {"asset": "XZCOIN", "quantity": 101, "address": "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ"}], "id": 0, "jsonrpc": "2.0"}

配当を受け取るアドレス(2)

(ビットコインインスタンス)counterwallet.io

(ビットコインアドレス)17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2

(保有しているアセット)

$ 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": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}}}'

{"result": [{"asset": "XCP", "quantity": 138480000, "address": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}, {"asset": "XSTAR", "quantity": 20, "address": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}, {"asset": "XZCOIN", "quantity": 202, "address": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}], "id": 0, "jsonrpc": "2.0"}

アセット保有者のリスト

Asset Info XSTAR

*実行した時の状態です。

{
status: "success",
message: "XSTAR asset holders",
totalcount: "3",
data: [
    {
        address: "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy",
        balance: "0.0000007",
        percentage: "70.0000000000"
    },
    {
        address: "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2",
        balance: "0.0000002",
        percentage: "20.0000000000"
    },
    {
        address: "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ",
        balance: "0.0000001",
        percentage: "10.0000000000"
    }
]
}

create_dividend 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":"create_dividend", "params":{"source":"1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy", "asset":"XSTAR", "dividend_asset":"XSTAR", "quantity_per_unit":10000000}}'

...unsign_transactionが表示されますので、create_order時と同様にsign、broadcastしてください。途中は省略してブロードキャスト時のレスポンスです。

{"result": "8e2668fd6208b3fb00b42bda2914eefe2f93afadad5cd38d8478d50c7fd6ae9a", "id": 0, "jsonrpc": "2.0"}

結果確認

トランザクション確認

blockscan

配当を実行するアドレス *XZCOINのオーナー

(ビットコインインスタンス)自分のサーバー

(ビットコインアドレス)1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy

(保有しているアセット)

$ 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": [{"asset": "XCP", "quantity": 120860000, "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}, {"asset": "XSTAR", "quantity": 67, "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}, {"asset": "XZCOIN", "quantity": 99495, "address": "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy"}], "id": 0, "jsonrpc": "2.0"}

配当を受け取るアドレス(1)

(ビットコインインスタンス)自分のサーバー

(ビットコインアドレス)1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ

(保有しているアセット)

$ 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": "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ"}}}'

{"result": [{"asset": "XSTAR", "quantity": 11, "address": "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ"}, {"asset": "XZCOIN", "quantity": 101, "address": "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ"}], "id": 0, "jsonrpc": "2.0"}

配当を受け取るアドレス(2)

(ビットコインインスタンス)counterwallet.io

(ビットコインアドレス)17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2

(保有しているアセット)

$ 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": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}}}'

{"result": [{"asset": "XCP", "quantity": 138480000, "address": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}, {"asset": "XSTAR", "quantity": 22, "address": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}, {"asset": "XZCOIN", "quantity": 202, "address": "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2"}], "id": 0, "jsonrpc": "2.0"}

アセット保有者のリスト

Asset Info XSTAR

*実行した時の状態です。

{
status: "success",
message: "XSTAR asset holders",
totalcount: "3",
data: [
    {
        address: "1A31xhRp9FyQZXG57hXczaVLkH5Dm3m9jy",
        balance: "0.00000067",
        percentage: "67.0000000000"
    },
    {
        address: "17sdLuNtD7ZpFCVZ3Doz58fwxFF6i6CKk2",
        balance: "0.00000022",
        percentage: "22.0000000000"
    },
    {
        address: "1KMdf7VWLEBdCo9iwmtpW7kJaSzSAUz2zJ",
        balance: "0.00000011",
        percentage: "11.0000000000"
    }
]
}

まとめ

XSTAR1アセットに対して、10000000XSTAR送られていることが分かります。今回は独自のアセットで配当しましたが、次回はXCPで支払うケースをやります。

捕捉

Counterparty (XCP)-カウンターパーティ