Counterpartyd create_dividend APIを使って配当する(独自アセットで支払う)
はじめに
前回は自分で作成したアセット"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"}
アセット保有者のリスト
*実行した時の状態です。
{ 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"}
結果確認
トランザクション確認
配当を実行するアドレス *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"}
アセット保有者のリスト
*実行した時の状態です。
{ 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で支払うケースをやります。